106 lines
2.4 KiB
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;
|
|
}
|
|
}
|