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 users = Collections.synchronizedMap(new HashMap()); /** * 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 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; } }