aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Synchronization
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2017-12-19 18:52:45 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2017-12-19 18:52:45 +0200
commitd9b0b7617864600f690a8202d06b2fb2a64306db (patch)
treeeca093060ff23172158c90f2c2c1b0d59a42bf6f /Software/Visual_Studio/Tango.Synchronization
parentcc3bf81fabd005fa74c2b9663589892480f1a6bb (diff)
downloadTango-d9b0b7617864600f690a8202d06b2fb2a64306db.tar.gz
Tango-d9b0b7617864600f690a8202d06b2fb2a64306db.zip
Started working on 'Synchronization' - Machine Studio module.
Diffstat (limited to 'Software/Visual_Studio/Tango.Synchronization')
-rw-r--r--Software/Visual_Studio/Tango.Synchronization/Local/LocalDBSynchronizer.cs8
-rw-r--r--Software/Visual_Studio/Tango.Synchronization/Local/SqliteDataBase.cs10
-rw-r--r--Software/Visual_Studio/Tango.Synchronization/Remote/RemoteDBSynchronizer.cs18
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);
});
}
}