public void testQuery()
 {
     mQuery = CloudDBZoneQuery.where (new AndroidJavaClass(bookInfoClass)).equalTo("id", 1);
     executeQuery("author is cedric");
     mQuery = CloudDBZoneQuery.where (new AndroidJavaClass(bookInfoClass)).notEqualTo("author", "cedric");
     executeQuery("author is not cedric");
     mQuery = CloudDBZoneQuery.where (new AndroidJavaClass(bookInfoClass)).greaterThan("price", 11.0);
     executeQuery("price > 11.0");
     mQuery = CloudDBZoneQuery.where (new AndroidJavaClass(bookInfoClass)).greaterThanOrEqualTo("price", 11.0);
     executeQuery("price >= 11.0");
     mQuery = CloudDBZoneQuery.where (new AndroidJavaClass(bookInfoClass)).lessThan("publishTime", new Date((long)1607500800));
     executeQuery("publishTime < 1607500800");
     mQuery = CloudDBZoneQuery.where (new AndroidJavaClass(bookInfoClass)).lessThanOrEqualTo("price", 24.0);
     executeQuery("price <= 24.0");
     mQuery = CloudDBZoneQuery.where (new AndroidJavaClass(bookInfoClass)).@in("author", new string[] { "cedric" });
     executeQuery("cedric in author");
     mQuery = CloudDBZoneQuery.where (new AndroidJavaClass(bookInfoClass)).beginsWith("author", "ce");
     executeQuery("author beginsWith ce");
     mQuery = CloudDBZoneQuery.where (new AndroidJavaClass(bookInfoClass)).endsWith("author", "ic");
     executeQuery("author endsWith ic");
     mQuery = CloudDBZoneQuery.where (new AndroidJavaClass(bookInfoClass)).contains("author", "dr");
     executeQuery("author contains dr");
     mQuery = CloudDBZoneQuery.where (new AndroidJavaClass(bookInfoClass)).isNull("author");
     executeQuery("author isNull");
     mQuery = CloudDBZoneQuery.where (new AndroidJavaClass(bookInfoClass)).isNotNull("author");
     executeQuery("author isNotNull");
     mQuery = CloudDBZoneQuery.where (new AndroidJavaClass(bookInfoClass)).orderByAsc("author");
     executeQuery("author by asc");
     mQuery = CloudDBZoneQuery.where (new AndroidJavaClass(bookInfoClass)).orderByDesc("author");
     executeQuery("author by desc");
     mQuery = CloudDBZoneQuery.where (new AndroidJavaClass(bookInfoClass)).limit(1, 0);
     executeQuery("limit 1 by 0");
 }
        public void deleteBookInfo()
        {
            if (mCloudDBZone == null)
            {
                TestTip.Inst.ShowText("CloudDBZone is null, try re-open it");
                return;
            }
            mQuery = CloudDBZoneQuery.where (new AndroidJavaClass(bookInfoClass));
            Task queryTask = mCloudDBZone.executeQuery(mQuery, CloudDBZoneQuery.CloudDBZoneQueryPolicy.POLICY_QUERY_FROM_CLOUD_ONLY);

            queryTask.addOnSuccessListener(new HmsSuccessListener <CloudDBZoneSnapshot <BookInfo> > ((snapshot) => {
                mObjectList = snapshot.getSnapshotObjects();

                BookInfo bookInfo = mObjectList.get(3);
                Task deleteTask   = mCloudDBZone.executeDelete(bookInfo);
                deleteTask.addOnSuccessListener(new HmsSuccessListener <int> ((cloudDBZoneResult) => {
                    TestTip.Inst.ShowText("delete " + cloudDBZoneResult + " records");
                })).addOnFailureListener(new HmsFailureListener((exception) => {
                    TestTip.Inst.ShowText("delete bookinfo failed: " + exception.toString());
                }));

                List <BookInfo> list = new List <BookInfo> ();
                list.add(mObjectList.get(4));
                list.add(mObjectList.get(5));
                Task deleteTask2 = mCloudDBZone.executeDelete(list);
                deleteTask2.addOnSuccessListener(new HmsSuccessListener <int> ((cloudDBZoneResult) => {
                    TestTip.Inst.ShowText("delete " + cloudDBZoneResult + " records");
                })).addOnFailureListener(new HmsFailureListener((exception) => {
                    TestTip.Inst.ShowText("delete bookinfo failed: " + exception.toString());
                }));
            })).addOnFailureListener(new HmsFailureListener((exception) => {
                TestTip.Inst.ShowText("Query book list from cloud failed: " + exception.toString());
            }));
        }
        public void executeAverageQuery()
        {
            if (mCloudDBZone == null)
            {
                TestTip.Inst.ShowText("CloudDBZone is null, try re-open it");
                return;
            }
            mQuery = CloudDBZoneQuery.where (new AndroidJavaClass(bookInfoClass));
            Task queryTask = mCloudDBZone.executeAverageQuery(mQuery, "price", CloudDBZoneQuery.CloudDBZoneQueryPolicy.POLICY_QUERY_FROM_CLOUD_ONLY);

            queryTask.addOnSuccessListener(new HmsSuccessListener <double> ((result) => {
                TestTip.Inst.ShowText("query average price: " + result);
            })).addOnFailureListener(new HmsFailureListener((exception) => {
                TestTip.Inst.ShowText("query average price failed: " + exception.toString());
            }));
        }
 public void addSubscription()
 {
     if (mCloudDBZone == null)
     {
         TestTip.Inst.ShowText("CloudDBZone is null, try re-open it");
         return;
     }
     try {
         CloudDBZoneQuery snapshotQuery = CloudDBZoneQuery.where (new AndroidJavaClass(bookInfoClass))
                                          .equalTo("shadowFlag", true);
         mRegister = mCloudDBZone.subscribeSnapshot(snapshotQuery,
                                                    CloudDBZoneQuery.CloudDBZoneQueryPolicy.POLICY_QUERY_FROM_CLOUD_ONLY, mSnapshotListener);
         TestTip.Inst.ShowText("Add subscription success");
     } catch (System.Exception e) {
         TestTip.Inst.ShowText("subscribeSnapshot: " + e.Message);
     }
 }
        public void executeUnsyncQuery()
        {
            if (mCloudDBZone == null)
            {
                TestTip.Inst.ShowText("CloudDBZone is null, try re-open it");
                return;
            }
            var tag = "Unsync";

            mQuery = CloudDBZoneQuery.where (new AndroidJavaClass(bookInfoClass));
            Task queryTask = mCloudDBZone.executeQueryUnsynced(mQuery);

            queryTask.addOnSuccessListener(new HmsSuccessListener <CloudDBZoneSnapshot <BookInfo> > ((snapshot) => {
                TestTip.Inst.ShowText("ExecuteQueryUnsynced.");
                processQueryResult(snapshot, tag);
            })).addOnFailureListener(new HmsFailureListener((exception) => {
                TestTip.Inst.ShowText("ExecuteQueryUnsynced failed: " + exception.toString());
            }));
        }
        public void testTransaction()
        {
            Transaction.Function f = new Transaction.Function((t) => {
                try {
                    mQuery        = CloudDBZoneQuery.where (new AndroidJavaClass(bookInfoClass)).equalTo("bookName", "testTransaction");
                    var queryList = t.executeQuery(mQuery);
                    TestTip.Inst.ShowText("Transaction success:  " + queryList.toArray().Length);


                    t = t.executeDelete(queryList);
                    TestTip.Inst.ShowText("Transaction success:  " + queryList.toArray().Length);
                } catch (System.Exception e) {
                    TestTip.Inst.ShowText("Transaction fail:  " + e.Message);
                    return(false);
                }
                return(true);
            });
            TestTip.Inst.ShowText("Run Transaction.");
            mCloudDBZone.runTransaction(f);
        }