コード例 #1
0
        partial void SaveItem(UIBarButtonItem sender)
        {
            var name = nameField.Text;

            if (string.IsNullOrEmpty(name))
            {
                var alert = new UIAlertView("Error", "Name can not be empty", null, "Dismiss", null);
                alert.DismissWithClickedButtonIndex(0, false);
                alert.Show();
                return;
            }
            var client = FHSyncClient.GetInstance();

            if (Item == null)
            {
                client.Create(RootViewController.DatasetId, new ShoppingItem(name));
            }
            else
            {
                Item.Name = name;
                client.Update(RootViewController.DatasetId, Item);
            }

            Navigate();
        }
コード例 #2
0
 public override void CommitEditingStyle(UITableView tableView, UITableViewCellEditingStyle editingStyle,
                                         NSIndexPath indexPath)
 {
     if (editingStyle == UITableViewCellEditingStyle.Delete)
     {
         FHSyncClient.GetInstance().Delete <ShoppingItem>(DatasetId, _items[indexPath.Row].UID);
         _items.RemoveAt(indexPath.Row);
         tableView.ReloadData();
     }
 }
コード例 #3
0
        private static void SaveItem(ShoppingItem item)
        {
            var client = FHSyncClient.GetInstance();

            if (item.UID == null)
            {
                client.Create(DatasetId, item);
            }
            else
            {
                client.Update(DatasetId, item);
            }
        }
コード例 #4
0
        private void FireSync()
        {
            var client = FHSyncClient.GetInstance();
            var config = new FHSyncConfig();

            client.Initialise(config);
            client.SyncCompleted += (sender, args) =>
            {
                RunOnUiThread(() =>
                {
                    _adapter.SetItems(client.List <ShoppingItem>(DatasetId));
                    _adapter.NotifyDataSetChanged();
                });
            };
            client.Manage <ShoppingItem>(DatasetId, config, null);
        }
コード例 #5
0
        public override async void ViewDidLoad()
        {
            base.ViewDidLoad();
            EditButtonItem.Enabled = false;

            await FHClient.Init();

            var client = FHSyncClient.GetInstance();
            var config = new FHSyncConfig();

            client.Initialise(config);
            client.SyncCompleted += (sender, args) =>
            {
                UIApplication.SharedApplication.InvokeOnMainThread(delegate
                {
                    _items = client.List <ShoppingItem>(DatasetId);
                    TableView.ReloadData();
                });
            };
            client.Manage <ShoppingItem>(DatasetId, config, null);
        }
コード例 #6
0
        public async void TestFHSyncClient()
        #endif
        {
            //clear db
            var setupRes = await FH.Cloud(string.Format("/syncTest/{0}", DATASET_ID), "DELETE", null, null);

            Assert.IsTrue(HttpStatusCode.OK.Equals(setupRes.StatusCode));

            var syncConfig = new FHSyncConfig();

            syncConfig.SyncActive           = false;
            syncConfig.SyncFrequency        = 1;
            syncConfig.AutoSyncLocalUpdates = true;
            syncConfig.SyncCloud            = FHSyncConfig.SyncCloudType.Mbbas;

            //make sure no existing data file exist
            metaDataFilePath = FHSyncUtils.GetDataFilePath(DATASET_ID, ".sync.json");
            dataFilePath     = FHSyncUtils.GetDataFilePath(DATASET_ID, ".data.json");
            pendingFilePath  = FHSyncUtils.GetDataFilePath(DATASET_ID, ".pendings.json");

            TestUtils.DeleteFileIfExists(metaDataFilePath);
            TestUtils.DeleteFileIfExists(dataFilePath);
            TestUtils.DeleteFileIfExists(pendingFilePath);

            Assert.IsFalse(File.Exists(metaDataFilePath));
            Assert.IsFalse(File.Exists(dataFilePath));
            Assert.IsFalse(File.Exists(pendingFilePath));

            syncClient = FHSyncClient.GetInstance();
            syncClient.Initialise(syncConfig);
            syncClient.Manage <TaskModel>(DATASET_ID, syncConfig, null);

            var syncStarted   = false;
            var syncCompleted = false;

            syncClient.SyncStarted += (object sender, FHSyncNotificationEventArgs e) =>
            {
                if (e.DatasetId.Equals(DATASET_ID))
                {
                    syncStarted = true;
                }
            };

            syncClient.SyncCompleted += (object sender, FHSyncNotificationEventArgs e) =>
            {
                if (e.DatasetId.Equals(DATASET_ID))
                {
                    syncCompleted = true;
                }
            };

            var tasks = syncClient.List <TaskModel>(DATASET_ID);

            Assert.AreEqual(0, tasks.Count);

            var newTask = new TaskModel
            {
                TaksName  = "task1",
                Completed = false
            };

            newTask = syncClient.Create(DATASET_ID, newTask);
            //syncConfig.SyncActive = true;
            Assert.IsNotNull(newTask.UID);

            syncClient.ForceSync <TaskModel>(DATASET_ID);

            Thread.Sleep(2000);

            var cloudRes = await FH.Cloud(string.Format("/syncTest/{0}", DATASET_ID), "GET", null, null);

            Assert.IsNull(cloudRes.Error);
            var dbData = cloudRes.GetResponseAsJObject();

            Assert.AreEqual(1, (int)dbData["count"]);
            var taskNameInDb = (string)dbData["list"][0]["fields"]["taskName"];

            Assert.IsTrue(taskNameInDb.Equals("task1"));

            Assert.IsTrue(syncStarted);
            Assert.IsTrue(syncCompleted);

            syncClient.StopAll();
        }
コード例 #7
0
 private static void DeleteItem(ShoppingItem item)
 {
     FHSyncClient.GetInstance().Delete <ShoppingItem>(DatasetId, item.UID);
 }
コード例 #8
0
        public async void TestFHSyncClient()
        #endif
        {
            //clear db
            FHResponse setupRes = await FH.Cloud(string.Format("/syncTest/{0}", DATASET_ID), "DELETE", null, null);
            Assert.IsTrue(HttpStatusCode.OK.Equals(setupRes.StatusCode));

            FHSyncConfig syncConfig = new FHSyncConfig();
            syncConfig.SyncActive = false;
            syncConfig.SyncFrequency = 1;
            syncConfig.AutoSyncLocalUpdates = true;
            syncConfig.SyncCloud = FHSyncConfig.SyncCloudType.MBBAS;

            //make sure no existing data file exist
            metaDataFilePath = FHSyncUtils.GetDataFilePath(DATASET_ID, ".sync.json");
            dataFilePath = FHSyncUtils.GetDataFilePath(DATASET_ID, ".data.json");
            pendingFilePath = FHSyncUtils.GetDataFilePath(DATASET_ID, ".pendings.json");

            TestUtils.DeleteFileIfExists(metaDataFilePath);
            TestUtils.DeleteFileIfExists(dataFilePath);
            TestUtils.DeleteFileIfExists(pendingFilePath);

            Assert.IsFalse(File.Exists(metaDataFilePath));
            Assert.IsFalse(File.Exists(dataFilePath));
            Assert.IsFalse(File.Exists(pendingFilePath));

            syncClient = FHSyncClient.GetInstance();
            syncClient.Initialise(syncConfig);
            syncClient.Manage<TaskModel>(DATASET_ID, syncConfig, null);

            bool syncStarted = false;
            bool syncCompleted = false;

            syncClient.SyncStarted += (object sender, FHSyncNotificationEventArgs e) => {
                if(e.DatasetId.Equals(DATASET_ID)){
                    syncStarted = true;
                }
            };

            syncClient.SyncCompleted += (object sender, FHSyncNotificationEventArgs e) => {
                if(e.DatasetId.Equals(DATASET_ID)){
                    syncCompleted = true;
                }
            };

            List<TaskModel> tasks = syncClient.List<TaskModel>(DATASET_ID);
            Assert.AreEqual(0, tasks.Count);

            TaskModel newTask = new TaskModel()
            {
                TaksName = "task1",
                Completed = false
            };
            newTask = syncClient.Create<TaskModel>(DATASET_ID, newTask);
            //syncConfig.SyncActive = true;
            Assert.IsNotNull(newTask.UID);

            syncClient.ForceSync<TaskModel>(DATASET_ID);

            Thread.Sleep(2000);

            FHResponse cloudRes = await FH.Cloud(string.Format("/syncTest/{0}", DATASET_ID), "GET", null, null);
            Assert.IsNull(cloudRes.Error);
            JObject dbData = cloudRes.GetResponseAsJObject();
            Assert.AreEqual(1, (int)dbData["count"]);
            string taskNameInDb = (string)dbData["list"][0]["fields"]["taskName"];
            Assert.IsTrue(taskNameInDb.Equals("task1"));

            Assert.IsTrue(syncStarted);
            Assert.IsTrue(syncCompleted);

            syncClient.StopAll();
        }