From d9b0b7617864600f690a8202d06b2fb2a64306db Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Tue, 19 Dec 2017 18:52:45 +0200 Subject: Started working on 'Synchronization' - Machine Studio module. --- .../Tango.Synchronization/Local/LocalDBSynchronizer.cs | 8 +++++--- .../Tango.Synchronization/Local/SqliteDataBase.cs | 10 ++++++++++ .../Remote/RemoteDBSynchronizer.cs | 18 ++++++++++++++---- 3 files changed, 29 insertions(+), 7 deletions(-) (limited to 'Software/Visual_Studio/Tango.Synchronization') diff --git a/Software/Visual_Studio/Tango.Synchronization/Local/LocalDBSynchronizer.cs b/Software/Visual_Studio/Tango.Synchronization/Local/LocalDBSynchronizer.cs index ca58686f3..c7b6900d6 100644 --- a/Software/Visual_Studio/Tango.Synchronization/Local/LocalDBSynchronizer.cs +++ b/Software/Visual_Studio/Tango.Synchronization/Local/LocalDBSynchronizer.cs @@ -8,7 +8,7 @@ namespace Tango.Synchronization.Local { public class LocalDBSynchronizer { - public static void Synchronize(String masterSQLiteFile, String slaveSQLiteFile) + public static List Synchronize(String masterSQLiteFile, String slaveSQLiteFile) { using (LocalDBComparer comparer = new LocalDBComparer(new SQLiteDataBase(masterSQLiteFile), new SQLiteDataBase(slaveSQLiteFile))) { @@ -17,12 +17,14 @@ namespace Tango.Synchronization.Local { diff.Commit(); } + + return diffs; } } - public static Task SynchronizeAsync(String masterSQLiteFile, String slaveSQLiteFile) + public static Task> SynchronizeAsync(String masterSQLiteFile, String slaveSQLiteFile) { - return Task.Factory.StartNew(() => Synchronize(masterSQLiteFile, slaveSQLiteFile)); + return Task.Factory.StartNew>(() => { return Synchronize(masterSQLiteFile, slaveSQLiteFile); }); } } } diff --git a/Software/Visual_Studio/Tango.Synchronization/Local/SqliteDataBase.cs b/Software/Visual_Studio/Tango.Synchronization/Local/SqliteDataBase.cs index b3d259e8c..add791b19 100644 --- a/Software/Visual_Studio/Tango.Synchronization/Local/SqliteDataBase.cs +++ b/Software/Visual_Studio/Tango.Synchronization/Local/SqliteDataBase.cs @@ -100,6 +100,16 @@ namespace Tango.Synchronization.Local return table; } + public void ClearDataBase() + { + foreach (var table in Tables) + { + var dropCommand = _connection.CreateCommand(); + dropCommand.CommandText = String.Format("DELETE FROM {0};", table.TableName); + dropCommand.ExecuteNonQuery(); + } + } + /// /// Clones a table from another database into this database. /// diff --git a/Software/Visual_Studio/Tango.Synchronization/Remote/RemoteDBSynchronizer.cs b/Software/Visual_Studio/Tango.Synchronization/Remote/RemoteDBSynchronizer.cs index ae39e118b..7abd8ad7e 100644 --- a/Software/Visual_Studio/Tango.Synchronization/Remote/RemoteDBSynchronizer.cs +++ b/Software/Visual_Studio/Tango.Synchronization/Remote/RemoteDBSynchronizer.cs @@ -6,13 +6,21 @@ using System.Threading.Tasks; using remote = Tango.DAL.Remote.DB; using local = Tango.DAL.Local.DB; using Tango.Settings; +using Tango.Synchronization.Local; namespace Tango.Synchronization.Remote { public class RemoteDBSynchronizer { - public static void Synchronize(String sqliteDbFile, String serialNumber) + public static List Synchronize(String sqliteDbFile, String serialNumber, bool overrideLocal = false) { + if (overrideLocal) + { + SQLiteDataBase sqlite = new SQLiteDataBase(sqliteDbFile); + sqlite.LoadTables(); + sqlite.ClearDataBase(); + } + using (var remoteDB = new remote.RemoteDB(SettingsManager.Default.DataBase.SQLServerAddress, false)) { using (var localDB = new local.LocalDB(sqliteDbFile)) @@ -27,15 +35,17 @@ namespace Tango.Synchronization.Remote remoteDB.SaveChanges(); localDB.SaveChanges(); + + return diffs; } } } - public static Task SynchronizeAsync(String sqliteDBFile, String serialNumber) + public static Task> SynchronizeAsync(String sqliteDBFile, String serialNumber, bool overrideLocal = false) { - return Task.Factory.StartNew(() => + return Task.Factory.StartNew>(() => { - Synchronize(sqliteDBFile, serialNumber); + return Synchronize(sqliteDBFile, serialNumber, overrideLocal); }); } } -- cgit v1.3.1