Database Relationship
there is a group
DYNAMICGROUPS -> having array of pointers column(members) -> that contains array of user's objectId. Now I want to apply query in DYNAMICGROUPS to get all the details of dynamicGroups and all the object details of individual pointers of members column. Right now I am doing from multiple queries but its creating issue : Synchronous issue code
final ArrayList<TempGroupClass> tempGroupList = new ArrayList<TempGroupClass>();
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereEqualTo("username",
SharedPreferencesClass.getUserName(context));
query.findInBackground(new FindCallback<ParseUser>() {
@Override
public void done(List<ParseUser> arg0, ParseException arg1) {
if (arg1 == null) {
if(arg0.size() > 0) {
Log.d(TAG, "getUpdatedRecordsFromParse");
ParseQuery<ParseObject> query = ParseQuery.getQuery("DynamicGroup");
ArrayList<String> array = new ArrayList<String>();
array.add(arg0.get(0).getObjectId());
query.whereContainedIn("members", array);
query.include("code");
query.include("members");
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> arg0, ParseException arg1) {
if (arg1 == null) {
if (arg0.size() > 0) {
for (int i = 0; i < arg0.size(); i++) {
TempGroupClass temp = new TempGroupClass();
ArrayList<String> friendListArray = new ArrayList<String>();
**<!-- arg0.get(i).getList("members") this is giving me array of pointers now i want object details of every pointer but how ? -->**
// now to get dynamic group members array
// loop through every member and
for (int j = 0; j < arg0.get(i).getList("members").size(); j++) {
// here we are excluding our object id from members id recieved from parse
if (!(SharedPreferencesClass.getUserObjectId(context)
.equalsIgnoreCase(arg0.get(i).getList("members").get(j).toString()))) {
// friendarraylist excluding our objectID
friendListArray.add(arg0.get(i).getList("members").get(j).toString());
}
}
temp.setParseObjectId(arg0.get(i).getObjectId());
temp.setFriendObjectIdList(friendListArray);
// now get information of groups from groupCode
Log.d(TAG,"setFriendObjectIdList size:" + temp.getFriendObjectIdList().size());
/****************now get group code information start *******************/
ParseObject objectCodeObj = new ParseObject("DynamicGroup");
objectCodeObj = arg0.get(i).getParseObject("code");
String groupTitle = objectCodeObj.getString("code");
// Pointor Object value Log.d(TAG,"GROUP CODE STRING :" + groupTitle);
Log.d(TAG, "GROUP CODE EXPIRES TIME :" + objectCodeObj.getDate("expires"));
/*****now get group code information stop ***********/
// loop for testing purpose what we r getting in list
for(int j = 0; j < temp.getFriendObjectIdList().size(); j++) {
Log.d(TAG,"member id:"+temp.getFriendObjectIdList().get(j));
}
temp.setGroupTitle(groupTitle);
temp.setExpires(objectCodeObj.getDate("expires"));
tempGroupList.add(temp);
}
getRecords(tempGroupList);
} else {
Log.d(TAG, "DynamicGroup arg0.size else :" + arg0.size());
}
}
// Log.d(TAG,"returned Group List size 1:" + tempGroupList.size());
}
});
} else {
Log.d(TAG,"user arg0.size:"+arg0.size());
}
}
}
});
if I'm doing like above method then I'm also getting issues in my next query so how should I write my query and get all object details at once and then save in local/temp ArrayList() ?
Table Structure :
DynamicGroup

GroupCode

User Table
