GroupManager/src/main/java/org/anjocaido/groupmanager/dataholder/UsersDataHolder.java

106 lines
2.4 KiB
Java

package org.anjocaido.groupmanager.dataholder;
import java.io.File;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import org.anjocaido.groupmanager.data.User;
/**
* This container holds all Users loaded from the relevant usersFile.
*
* @author ElgarL
*
*/
public class UsersDataHolder {
private WorldDataHolder dataSource;
private File usersFile;
private boolean haveUsersChanged = false;
private long timeStampUsers = 0;
/**
* The actual groups holder
*/
private final Map<String, User> users = Collections.synchronizedMap(new HashMap<String, User>());
/**
* Constructor
*/
protected UsersDataHolder() {
}
public WorldDataHolder getDataSource() {
return this.dataSource;
}
/**
* @return the timeStampUsers
*/
public long getTimeStampUsers() {
return timeStampUsers;
}
/**
* Note: Iteration over this object has to be synchronized!
*
* @return the users
*/
public Map<String, User> getUsers() {
return users;
}
/**
* @return the usersFile
*/
public File getUsersFile() {
return usersFile;
}
/**
* @return the haveUsersChanged
*/
public boolean HaveUsersChanged() {
return haveUsersChanged;
}
/**
* Resets the Users
*/
public void resetUsers() {
this.users.clear();
}
public void setDataSource(final WorldDataHolder dataSource) {
this.dataSource = dataSource;
// push this data source to the users, so they pull the correct groups data.
synchronized (users) {
for (final User user : users.values())
user.setDataSource(this.dataSource);
}
}
/**
* @param timeStampUsers
* the timeStampUsers to set
*/
public void setTimeStampUsers(final long timeStampUsers) {
this.timeStampUsers = timeStampUsers;
}
/**
* @param haveUsersChanged
* the haveUsersChanged to set
*/
public void setUsersChanged(final boolean haveUsersChanged) {
this.haveUsersChanged = haveUsersChanged;
}
/**
* @param usersFile
* the usersFile to set
*/
public void setUsersFile(final File usersFile) {
this.usersFile = usersFile;
}
}