package sync;
import java.util.List;
import java.util.ArrayList;
import java.util.HashMap;
import utils.JamConfig;
import utils.JamTokenManager;
public class JamSyncGroupMemberManager {
// Group info class
public static class Group {
public String name;
public String creatorEmail;
public String fromUUID;
public String toUUID;
}
// Member info class
static public class Member {
public String toGroupUUID = null;
public String toUUID = null;
public String fromGroupUUID = null;
public String fromUUID = null;
public String fullName;
public String email;
public String token = null; // token will be empty until the member is used
}
// Member table
HashMap<String, Member> members = new HashMap<String, Member>();
HashMap<String, Group> groups = new HashMap<String, Group>();
HashMap<String, String> groupss = new HashMap<String, String>();
private static JamSyncGroupMemberManager instance = new JamSyncGroupMemberManager();
private JamSyncGroupMemberManager() {
}
public static JamSyncGroupMemberManager getInstance() {
return instance;
}
public List<Member> getAllMemberEmails(String groupUUID) {
List<Member> membersInGroupList = new ArrayList();
for (Object emailKey : members.keySet().toArray()) {
String key = (String)emailKey;
Member m = members.get(key);
if ((m.fromGroupUUID != null && groupUUID.equals(m.fromGroupUUID)) || (m.toGroupUUID != null && m.toGroupUUID.equals(groupUUID))) {
membersInGroupList.add(m);
}
}
return membersInGroupList;
}
public void SetGroupInfo(Group group) {
groups.put(group.fromUUID, group);
}
public Group getGroup(String fromGroupUUID)
{
return groups.get(fromGroupUUID);
}
// Add member to cache
public void AddMember(final Member member) {
members.put(member.email, member);
}
// Get member by their email
public Member GetMember(final String memberEmail) throws Exception {
if (members.containsKey(memberEmail)) {
final Member member = members.get(memberEmail);
// Only get token when the member is used.
// Not all members are active, so lets not waste tokens
if (member.token == null) {
final JamConfig.ConfigInfo fromConfig = JamConfig.getInstance().getFromConfig();
member.token = JamTokenManager.getInstance().getTokenForMember(fromConfig.host,
fromConfig.proxy,
member.email,
fromConfig.clientId,
fromConfig.clientSecret,
fromConfig.grantType,
fromConfig.samlConfig);
}
return members.get(memberEmail);
}
return null;
}
}