package com.jadarstudios.developercapes.user; import com.jadarstudios.developercapes.DevCapes; import com.jadarstudios.developercapes.cape.CapeManager; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Map; /** * @author jadar */ public enum GroupManager { INSTANCE; private HashMap<String, Group> groups; private GroupManager() { this.groups = new HashMap<String, Group>(); } public void addGroup(Group group) { groups.put(group.name, group); try { UserManager.INSTANCE.addUsers(new HashSet<User>(group.users.values())); CapeManager.INSTANCE.addCape(group.cape); } catch (Exception e) { e.printStackTrace(); } } public Group getGroup(String capeName) { return groups.get(capeName); } public Group newInstance(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.INSTANCE.parse(name, capeUrl); for (Object obj : users) { User user = UserManager.INSTANCE.parse(obj, group.cape); if (user != null) { group.addUser(user); } else { continue; } } return group; } }