object - Android Parse.com android allow to get data from table but not for update -


package symca.gescoe.com.sampleparseapp.payment_task;  import android.app.alertdialog; import android.app.dialog; import android.app.progressdialog; import android.content.context; import android.content.dialoginterface; import android.graphics.color; import android.graphics.porterduff; import android.os.bundle; import android.text.inputtype; import android.util.log; import android.view.gravity; import android.view.layoutinflater; import android.view.menu;  import symca.gescoe.com.sampleparseapp.r;   import android.app.activity; import android.view.view; import android.view.view.onclicklistener; import android.view.windowmanager; import android.widget.button; import android.widget.edittext; import android.widget.imageview; import android.widget.linearlayout; import android.widget.relativelayout; import android.widget.textview; import android.widget.toast;  import com.parse.findcallback; import com.parse.getcallback; import com.parse.parseacl; import com.parse.parseexception; import com.parse.parseobject; import com.parse.parsequery; import com.parse.parseuser; import com.parse.savecallback;  import java.util.list;   public class payrent extends activity {      textview ownername, owneremail, ownerproptype, ownerlocation, owneraccountno, renteraccountno;     edittext propid;     int confirmflag = 0;     int rentfinal = 0, mainfinal = 0, totalfinal = 0;      int rent;     int maintenance;     string ownernamestr;     string owneremailstr;     string ownerproptypestr;     string ownerlocationstr;     string owneraccountnostr;     string renteraccountnostr;     string propidstr;     button btnpayrent;     imageview btnconfirm;     int payinterestflag = 1;     progressdialog progressdialog;      string protype, location, email, fname, lname, owneraccount, renteraccount;     string ownerobjid,owneravlbal;     int bhk;      @override     public void oncreate(bundle savedinstancestate) {          super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_pay_rent);  //        parseacl defaultacl = new parseacl(); //       defaultacl.setpublicwriteaccess(true);//------temp           btnconfirm = (imageview) findviewbyid(r.id.btnconfirmidpay);         btnpayrent = (button) findviewbyid(r.id.btnpayrent);         propid = (edittext) findviewbyid(r.id.tvpropidpay);         ownername = (textview) findviewbyid(r.id.tvnamepay);         owneremail = (textview) findviewbyid(r.id.tvemailpay);         ownerproptype = (textview) findviewbyid(r.id.tvproptypepay);         ownerlocation = (textview) findviewbyid(r.id.tvlocpay);         owneraccountno = (textview) findviewbyid(r.id.tvlandaccountnopay);         renteraccountno = (textview) findviewbyid(r.id.tvrenteraccountnopay);           final relativelayout relativelayout = (relativelayout) findviewbyid(r.id.relativelaupropertypay);           btnconfirm.setonclicklistener(new onclicklistener()         {             @override             public void onclick(view v) {                 confirmflag = 1;                 progressdialog = progressdialog.show(payrent.this, "please wait...", "property details loading..");                  string propidstr = propid.gettext().tostring();                  if (!propidstr.equals(""))                 {                       final parsequery<parseobject> query = parsequery.getquery("postadd");                     query.whereequalto("objectid", propidstr);                      query.getfirstinbackground(new getcallback<parseobject>()                     {                         @override                         public void done(parseobject object, parseexception e)                         {                              if (e == null)//-----from post add table--------------                             {                                  email = object.getstring("postemail");                                 bhk = object.getint("bhk");                                 protype = object.getstring("proptype");                                 location = object.getstring("location");                                  rent = object.getint("erent");                                 maintenance = object.getint("emaintainance");                                    //-------------from user table-------                                 parsequery query = parseuser.getquery();                                 query.whereequalto("email", email);                                  query.getfirstinbackground(new getcallback()                                 {                                     @override                                     public void done(parseobject object, parseexception e)                                     {                                         string interest = object.getstring("paymentinterest");                                          if (interest.equals("interested"))                                         {                                             payinterestflag = 0;                                             fname = object.getstring("firstname");                                             lname = object.getstring("lastname");                                             owneraccount = object.getstring("accountno");                                             renteraccount = parseuser.getcurrentuser().getstring("accountno");                                               ownername.settext(fname + " " + lname);                                             owneraccountno.settext(owneraccount);                                             renteraccountno.settext(renteraccount);                                             owneremail.settext(email);                                             ownerlocation.settext(location);                                             ownerproptype.settext(bhk + " " + "bhk " + protype);                                              progressdialog.dismiss();                                         } else                                         {                                             progressdialog.dismiss();                                             payinterestflag = 1;                                             alertdialog.builder alertpayinterest = new alertdialog.builder(payrent.this);                                             alertpayinterest.settitle("not interested!");                                             alertpayinterest.seticon(r.drawable.notonline);                                             alertpayinterest.setmessage("ohhh!!!\nselected add owner not interested in online payment");                                             alertpayinterest.show();                                           }                                      }                                 });                               } else                             {                                 progressdialog.dismiss();                                  propid.seterror("property id not valid!!!");                              }                          }                     });                  }//if                 else {                     progressdialog.dismiss();                     propid.seterror("property id blank");                 }              }         });  //----------------------------------------------------------------------          btnpayrent.setonclicklistener(new onclicklistener()         {             @override             public void onclick(view v)             {                  toast.maketext(getapplicationcontext(), "click rent", toast.length_short).show();                   if ((!propid.gettext().tostring().equals("")) && (confirmflag == 1))                 {                       layoutinflater factory = layoutinflater.from(payrent.this);                     final view textentryview = factory.inflate(r.layout.custom_dialogue_payrent, null);                      final edittext inputrent = (edittext) textentryview.findviewbyid(r.id.edtrentcustom);                     inputrent.setenabled(false);                     final edittext inputmain = (edittext) textentryview.findviewbyid(r.id.edtmaincustom);                     inputmain.setenabled(false);                       imageview imgrent = (imageview) textentryview.findviewbyid(r.id.edtimgrentpay);                     imageview imgmain = (imageview) textentryview.findviewbyid(r.id.edtimgmainpay);                       // toast.maketext(getapplicationcontext(),"rent "+rent,toast.length_short).show();                     inputrent.settext("" + rent);                     inputmain.settext("" + maintenance);                      imgrent.setonclicklistener(new onclicklistener() {                         @override                         public void onclick(view v) {                             inputrent.setenabled(true);                             //inputrent.requestfocus();                          }                     });                      imgmain.setonclicklistener(new onclicklistener() {                         @override                         public void onclick(view v) {                             inputmain.setenabled(true);                         }                     });                       final alertdialog.builder alert = new alertdialog.builder(payrent.this);                     alert.seticon(r.drawable.donation);                     alert.settitle("payment details");                     alert.setview(textentryview);                     alert.setpositivebutton("ok", new dialoginterface.onclicklistener()                     {                         public void onclick(dialoginterface dialog, int whichbutton)                         {                             //-------------positive button                              rentfinal = integer.parseint(inputrent.gettext().tostring());                             mainfinal = integer.parseint(inputmain.gettext().tostring());                             totalfinal = rentfinal + mainfinal;                              //--transaction table-------                             parseobject objtrans = new parseobject("transactions");                             objtrans.put("debtor", renteraccount);//renter                             objtrans.put("creditor", owneraccount);//owner                             objtrans.put("totalamt", totalfinal);                             objtrans.saveinbackground();                             //--------------------------------                               final parsequery<parseobject> querypradip = parsequery.getquery("pay");                             querypradip.whereequalto("accountno", owneraccount);                             querypradip.getfirstinbackground(new getcallback<parseobject>() {                                 public void done(parseobject object, parseexception e) {                                     if (object == null) {                                         log.d("score", "the getfirst request failed."+e.getmessage());                                     } else {                                         log.d("score", "retrieved object.");                                          ownerobjid=object.getobjectid();                                         owneravlbal=object.getstring("availablebal");                                          log.d("oid", ownerobjid);                                         log.d("obal", owneravlbal);                                         toast.maketext(getapplicationcontext(), "ownerid"+ownerobjid+"\naval bal"+owneravlbal, toast.length_long).show();                                            //--------------------update--------------                                            parsequery query = new parsequery("pay");                                         query.getinbackground(ownerobjid, new getcallback()                                         {                                             public void done(final parseobject object, parseexception e)                                             {                                                 if (e == null)                                                 {                                                      object.put("bal", 5000);                                                      object.saveinbackground();                                                     toast.maketext(getapplicationcontext(), "after save in back", toast.length_long).show();                                                      object.saveinbackground(new savecallback()                                                     {                                                         public void done(parseexception e)                                                         {                                                              object.put("availablebal", 7000);                                                             object.saveinbackground();                                                          }                                                     });                                                  }                                                  else                                                 {                                                     e.printstacktrace();                                                     log.e("in update",e.getmessage());                                                 }                                              }                                         });                                      }                                 }                             });                                //---reter table---------------                             parsequery<parseobject> querypay = new parsequery<parseobject>("pay");                             querypay.whereequalto("accountno", renteraccount);                             querypay.getfirstinbackground(new getcallback<parseobject>() {                                 @override                                 public void done(parseobject object, parseexception e) {                                     string availbal = object.getstring("availablebal");                                     string renterid = object.getobjectid();                                      final int remainsbal = integer.parseint(availbal) - totalfinal;                                      log.e("renter", "************" + remainsbal);                                     log.e("renterid", "************" + renterid);                                      //----------------update------------------                                     parsequery queryupdatepay = new parsequery("pay");                                     queryupdatepay.getinbackground(renterid, new getcallback() {                                         @override                                         public void done(parseobject obj, parseexception e) {                                             if (e == null) {                                                  obj.put("availablebal", "" + remainsbal);                                                 log.e("update", "************" + remainsbal);                                                 obj.saveinbackground();                                               } else {                                                 // error...                                             }                                         }                                      });                                 }//done                               });                              }                      });//ok                           alert.setnegativebutton("cancel", new dialoginterface.onclicklistener() {                                 public void onclick(dialoginterface dialog,                                                     int whichbutton) {                                    }                             }                      );                     alert.show();                  } else                 if (propid.gettext().tostring().equals(""))                 {                     propid.seterror("property id blank!");                 }                  if (confirmflag == 0)                 {                     toast.maketext(getapplicationcontext(), "please confirm property id before pay", toast.length_short).show();                 }               }         });       }//oncreate   } 

i able store(simply put using object) data in pay table table when trying update doesn't show change in table.......... same applying current user(renter data) done data,update except current user others users data not update

i not want try , understand such large block of code. in future please try , boil down relevant pieces. however:

  1. looks query right after saving. note saveinbackground() async, starts (as name suggests) contact parse.com , save in background thread. if query depend on object being saved, need wait complete adding savecallback parameter saveinbackground(new savecallback)
  2. if because update fails, again implement savecallback see exception thrown saveinbackground(new savecallback)
  3. you should never able update other user objects own. huge security issue. work around create cloud function using usemasterkey() , call function app.

Comments

Popular posts from this blog

android - MPAndroidChart - How to add Annotations or images to the chart -

javascript - Add class to another page attribute using URL id - Jquery -

firefox - Where is 'webgl.osmesalib' parameter? -