Mekanism-tilera-Edition/src/main/java/com/jadarstudios/developercapes/user/GroupManager.java

94 lines
2.4 KiB
Java
Raw Normal View History

2020-12-28 18:53:55 +01:00
/**
* 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 java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
2023-01-22 17:18:34 +01:00
import com.jadarstudios.developercapes.DevCapes;
import com.jadarstudios.developercapes.cape.CapeManager;
2020-12-28 18:53:55 +01:00
/**
* All groups have to be managed
2023-01-22 17:18:34 +01:00
*
2020-12-28 18:53:55 +01:00
* @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();
}
}
2023-01-22 17:18:34 +01:00
2020-12-28 18:53:55 +01:00
public void addGroups(Collection<Group> groups) {
2023-01-22 17:18:34 +01:00
for (Group g : groups) {
2020-12-28 18:53:55 +01:00
GroupManager.getInstance().addGroup(g);
}
2023-01-22 17:18:34 +01:00
}
2020-12-28 18:53:55 +01:00
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)) {
2023-01-22 17:18:34 +01:00
DevCapes.logger.error(String.format(
"Group %s could not be parsed because it either is invalid or missing elements.",
name
));
2020-12-28 18:53:55 +01:00
return null;
}
2023-01-22 17:18:34 +01:00
ArrayList users = (ArrayList) usersObj;
String capeUrl = (String) capeUrlObj;
2020-12-28 18:53:55 +01:00
group.cape = CapeManager.getInstance().parse(name, capeUrl);
for (Object obj : users) {
2023-01-22 17:18:34 +01:00
User user = UserManager.getInstance().parse((String) obj, group.cape);
2020-12-28 18:53:55 +01:00
if (user != null) {
group.addUser(user);
}
}
return group;
}
}