i trying records parse. table in parse contains array of pointers; facing difficulties write parse query, first save array of pointers in arraylist, make loop execute query; each loop iteration, want records parse , update local db same next iterations. creating different problems. parse getinbackground not working sequentially.... outer loop executes parse method called due facing problems save values in local db.
public void insertgroupsindb(arraylist<tempgroupclass> temp) { log.d(tag,"insertgroupsindb: temp size:"+temp.size()); for(int = 0;i<temp.size();i++) `//my target make inner query run till no of loop times , each iterations inner parse query run , insert records in db against outer insertion group` { groups grp = new groups(); grp.setgrouptitle(temp.get(i).getgrouptitle()); grp.setgrouptype(temp.get(i).getgrouptype()); grp.setparseobjectid(temp.get(i).getparseobjectid()); long groupinsert = (youindatabase.getinstance(context)).addgroup(grp,context); //} /*try { final countdownlatch latch = new countdownlatch(1);*/ if(groupinsert != -1) { //now insert friends //long friendinsertid = youindatabase.getinstance(context).addfriend(); //now friends members id log.d(tag,"groups inserted successfully:"+groupinsert); final arraylist<integer> list = new arraylist<integer>(); if(temp.get(i).getfriendobjectidlist().size() > 0) { for(int j =0;j<temp.get(i).getfriendobjectidlist().size();j++) { log.d(tag," >>>>>>>>>>>>>>>friend objectid>>>>>>>>>>>>>>:"+temp.get(i).getfriendobjectidlist().get(j)); parsequery<parseuser> query = parseuser.getquery(); query.wherecontainedin("objectid",temp.get(i).getfriendobjectidlist()); query.findinbackground(new findcallback<parseuser>() { @override public void done(list<parseuser> arg0, parseexception arg1) { // todo auto-generated method stub if(arg1 == null) { //log.d(tag,"arg0 size:"+arg0.size()); if(arg0.size() >0) { for(int = 0;i<arg0.size();i++) { log.d(tag,"arg0.size():"+arg0.size()); friend f = new friend(); f.setusername(arg0.get(0).getstring("username")); f.setparseobjectid(arg0.get(0).getobjectid()); f.sethasadded(false); boolean useralreadyexist = youindatabase.getinstance(context).checkuserexistinfriendtable(arg0.get(0).getstring("username")); long friendinsertid = -1; arraylist<integer> list = new arraylist<integer>(); int friendid; if(!useralreadyexist) { // log.d(tag,"friend not exist :"+useralreadyexist); friendinsertid = youindatabase.getinstance(context).addfriend(f); list.add(youindatabase.getinstance(context).findfriendidoflatestrecord()); friendid = youindatabase.getinstance(context).findfriendidoflatestrecord(); } else { //log.d(tag,"friend exist :"+useralreadyexist); //list.add(youindatabase.getinstance(context).getfriendidfromfriendname(arg0.get(0).getstring("username"))); friendid = youindatabase.getinstance(context).getfriendidfromfriendname(arg0.get(0).getstring("username")); } // log.d(tag,"list size 1 :"+list.size()); int latestgroupinsertid = youindatabase.getinstance(context).findgroupidoflatestrecord(); long id = youindatabase.getinstance(context).addfriendinconnection(friendid,latestgroupinsertid); //now update user sethasadded long updatefriendtable = -1; if(id != -1) { updatefriendtable = youindatabase.getinstance(context).updatefriendtable(friendid); } log.d(tag,">>>>updated friend id information:>>>>"); if(updatefriendtable != -1) { friend frienddetails = youindatabase.getinstance(context).getfrienddetailsfromfriendid(friendid); log.d(tag,"friend name:"+frienddetails.getusername()); log.d(tag,"friend:"+frienddetails.getparseobjectid()); log.d(tag,"friend added :"+frienddetails.ishasadded()); log.d(tag,"groupid:"+latestgroupinsertid); } //youindatabase.getinstance(context).get } log.d(tag,"list size 2"+list.size()); } } else { log.d(tag,"arg1 != null:"+arg1.getmessage()); } } }); } // log.d(tag,"list size:"+list.size()); } //latch.countdown(); } /*latch.await(); } catch (illegalargumentexception e) { e.printstacktrace(); } catch (interruptedexception e) { // todo auto-generated catch block e.printstacktrace(); } */ } right now, problem outer loop executes twice 1 after , after loop ends, parse method brings data parse ...due it's updating record in db against last group id ...and it's not inserting records against first groupid how resolve issue? have used technique because failed write query object result of array of pointers using parse.
you use find() should synchronous operation might hold ui. have not used parse yet dont know. or can set below. remove outer , check conditions in callback determine when launch next query.
private int j = 0; private int loopnumber = temp.size(); arraylist<tempgroupclass> temp; //setup temp somewhere else private void doquery() { parsequery<parseuser> query = parseuser.getquery(); query.wherecontainedin("objectid",temp.get(i).getfriendobjectidlist()); query.findinbackground(new findcallback<parseuser>() { @override public void done(list<parseuser> arg0, parseexception arg1) { // todo auto-generated method stub if(arg1 == null) { ... ... else { log.d(tag,"arg1 != null:"+arg1.getmessage()); } //at end call same method start query if loop conditions have not been reached. if(++i < loopnumber) { doquery(); } } }); } }
Comments
Post a Comment