src/main/java/com/jadarstudios/developercapes/user/GroupManager.java
/*
* DeveloperCapes by Jadar
* License: MIT License
* (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE)
* version 4.0.0.x
*/
package com.jadarstudios.developercapes.user;
import com.jadarstudios.developercapes.DevCapes;
import com.jadarstudios.developercapes.cape.CapeManager;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import static com.jadarstudios.developercapes.DevCapes.DEV_CAPE;
/**
* All groups have to be managed
*
* @author jadar
*/
public class GroupManager {
protected static GroupManager instance;
private HashMap<String, Group> groups;
public GroupManager() {
this.groups = new HashMap<String, Group>();
}
public static GroupManager getInstance() {
if (instance == null) {
instance = new GroupManager();
}
return instance;
}
public void addGroup(Group group) {
groups.put(group.name, group);
try {
UserManager.getInstance().addUsers(group.users.values());
CapeManager.getInstance().addCape(group.cape);
} catch (Exception e) {
e.printStackTrace();
}
}
public void addGroups(Collection<Group> groups) {
for (Group g : groups) {
GroupManager.getInstance().addGroup(g);
}
}
public Group getGroup(String capeName) {
return groups.get(capeName);
}
public Group newGroup(String name) {
if (this.getGroup(name) != null) {
return this.getGroup(name);
}
Group group = new Group(name);
return group;
}
public Group parse(String name, Map<String, Object> data) {
Group group = new Group(name);
Object usersObj = data.get("users");
Object capeUrlObj = data.get("capeUrl");
if (!(usersObj instanceof ArrayList) || !(capeUrlObj instanceof String)) {
DevCapes.logger.error(String.format("Group %s could not be parsed because it either is invalid or missing elements.", name));
return null;
}
ArrayList users = (ArrayList)usersObj;
String capeUrl = (String)capeUrlObj;
group.cape = CapeManager.getInstance().parse(name, capeUrl, DEV_CAPE);
for (Object obj : users) {
User user = UserManager.getInstance().parse((String)obj, group.cape);
if (user != null) {
group.addUser(user);
}
}
return group;
}
}