package sync;
import org.json.JSONObject;
import org.json.JSONArray;
import utils.JamConfig;
import utils.JamNetworkManager;
import utils.JamTokenManager;
import sync.JamSyncGroupMemberManager;
import utils.JamNetworkParam;;
public class JamSyncGroupMembers extends JamSyncInterface {
static String API_ODATA_GET_GROUP_MEMBER_URL = "/api/v1/OData/Groups('%1$s')/Memberships?$expand=Member&$select=GroupId,MemberId,Member/Id,Member/FullName,Member/Email";
public JamSyncGroupMembers() {
}
@Override
public void render() {
System.out.println("JamSyncGroupFeeds::Render!");
}
@Override
public void sync(String fromGroupUUID) {
System.out.println(
"\n ##################################################################################################################################################");
System.out.println(" JamSyncGroupMembers::SYNC Start!");
try {
final JamConfig.ConfigInfo fromConfig = JamConfig.getInstance().getFromConfig();
// Set the OAuth token and proxy so that Network layer reuse the same token and proxy
JamTokenManager.getInstance().setTokenFromConfig(fromConfig, fromConfig.adminEmail);
// For each group, get list of member and add them to cache
System.out.println("\n Processing group: " + fromGroupUUID);
final String url = fromConfig.host + String.format(API_ODATA_GET_GROUP_MEMBER_URL, fromGroupUUID);
final JSONObject membersJSON = JamNetworkManager.getInstance().GetRequest(url, new JamNetworkParam());
// Parse Members JSON response
final JSONArray membersListJson = ((JSONObject)membersJSON.get("d")).getJSONArray("results");
System.out.println("\n Members result Count: " + membersListJson.length());
for (int i = 0; i < membersListJson.length(); ++i) {
final JamSyncGroupMemberManager.Member member = new JamSyncGroupMemberManager.Member();
final JSONObject memberJson = membersListJson.getJSONObject(i);
final JSONObject memberInfoObj = (JSONObject)memberJson.get("Member");
member.toGroupUUID = null;
member.toUUID = null;
member.fromUUID = memberJson.getString("MemberId");
member.fromGroupUUID = memberJson.getString("GroupId");
member.fullName = memberInfoObj.getString("FullName");
member.email = memberInfoObj.getString("Email");
System.out.println(" Member: " + member.email);
JamSyncGroupMemberManager.getInstance().AddMember(member);
}
} catch (final Exception e) {
System.out.println("\n JamSyncGroupMembers::Sync error: " + e.getMessage());
e.printStackTrace();
}
System.out.println(" JamSyncGroupMembers::SYNC Done!");
System.out.println(
" ##################################################################################################################################################");
}
}