diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2017-12-19 18:52:45 +0200 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2017-12-19 18:52:45 +0200 |
| commit | d9b0b7617864600f690a8202d06b2fb2a64306db (patch) | |
| tree | eca093060ff23172158c90f2c2c1b0d59a42bf6f /Software/Visual_Studio/Tango.Synchronization | |
| parent | cc3bf81fabd005fa74c2b9663589892480f1a6bb (diff) | |
| download | Tango-d9b0b7617864600f690a8202d06b2fb2a64306db.tar.gz Tango-d9b0b7617864600f690a8202d06b2fb2a64306db.zip | |
Started working on 'Synchronization' - Machine Studio module.
Diffstat (limited to 'Software/Visual_Studio/Tango.Synchronization')
3 files changed, 29 insertions, 7 deletions
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<Diff> 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<List<Diff>> SynchronizeAsync(String masterSQLiteFile, String slaveSQLiteFile) { - return Task.Factory.StartNew(() => Synchronize(masterSQLiteFile, slaveSQLiteFile)); + return Task.Factory.StartNew<List<Diff>>(() => { 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(); + } + } + /// <summary> /// Clones a table from another database into this database. /// </summary> 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<Diff> 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<List<Diff>> SynchronizeAsync(String sqliteDBFile, String serialNumber, bool overrideLocal = false) { - return Task.Factory.StartNew(() => + return Task.Factory.StartNew<List<Diff>>(() => { - Synchronize(sqliteDBFile, serialNumber); + return Synchronize(sqliteDBFile, serialNumber, overrideLocal); }); } } |
