package na.invadedlands.forums.manager;
import na.invadedlands.forums.*;
public class Manager {
protected ManagerHandler handler;
public Manager(ManagerHandler handler) {
this.handler = handler;
}
}
package na.invadedlands.forums.manager;
import na.invadedlands.forums.*;
public class ManagerHandler {
private Forums instance;
private MemberManager memberManager;
public ManagerHandler(Forums instance) {
this.instance = instance;
this.loadManagers();
}
private void loadManagers() {
this.memberManager = new MemberManager(this);
}
public void onDisable() {
this.memberManager.disable();
}
public Forums getForums() {
return this.instance;
}
public MemberManager getMemberManager() {
return this.memberManager;
}
}
package na.invadedlands.forums.manager.managers;
import na.invadedlands.forums.*;
public class MemberManager extends Manager {
public MemberManager(ManagerHandler handler) {
super(handler);
}
public void disable() {
for (Member profile : Member.getProfiles()) {
profile.save();
}
}
public Member getMember(ID id) {
return Member.getByID(id);
}
}
package na.invadedlands.forums.member;
import na.invadedlands.*;
public class Member {
private static Set<Member> profiles;
public static Forums instance;
private ID id;
private String name;
private int activity;
private Settings = settings;
public Member(ID id, boolean cache) {
this.settings = new Settings();
this.id = id;
this.activity = 0;
ForumsMember member = Forums.getForumsMember(id);
if (member != null) {
this.name = member.getName();
}
else {
OfflineForumsMember offlineForumsMember = Forums.getOfflineForumsMember(id);
if (offlineForumsMember != null) {
this.name = offlineForumsMember.getName();
}
}
this.load();
if (cache) {
Member.profiles.add(this);
}
}
public ID getID() {
return this.id;
}
public void load() {
Document document = (Document)Member.instance.getForumsDatabase().getProfiles().find(Filters.eq("id", this.id.toString())).first();
if (document != null) {
if (document.containsKey("activity")) {
this.activity = document.getInteger("activity");
}
if (document.containsKey("recentName")) {
this.name = document.getString("recentName");
}
}
}
public void save() {
Document document = new Document();
document.put("id", this.id.toString());
if (this.name != null) {
document.put("recentName", this.name);
document.put("recentNameLowercase", this.name.toLowerCase());
document.put("recentNameLength", this.name.length());
}
document.put("activity", this.activity);
Member.instance.getForumsDatabase().getProfiles().replaceOne(Filters.eq("id", this.id.toString()), document, new UpdateOptions().upsert(true));
}
public static Member getByID(ID id) {
for (Member profile : Member.profiles) {
if (profile.getID().equals(id)) {
return profile;
}
}
return getExternalByID(id);
}
private static Member getExternalByID(ID id) {
Member profile = new Member(id, false);
return profile;
}
public int getMemberActivity() {
return this.activity;
}
public void setActivity(int activity) {
this.activity = activity;
}
public Settings getSettings() {
return this.settings;
}
public void setSettings(Settings settings) {
this.settings = settings;
}
static {
Member.profiles = new HashSet<Member>();
Member.instance = Forums.getInstance();
}
}