aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Synchronization
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2017-12-03 10:29:17 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2017-12-03 10:29:17 +0200
commit05c7e42a8ce55a21c94338febad593bfbf638655 (patch)
tree5465475f3565da1b724f4cd9bfcc0eb3b67fd167 /Software/Visual_Studio/Tango.Synchronization
parent3a70d596ada24ad6f92f729d564ab29c3e249f06 (diff)
downloadTango-05c7e42a8ce55a21c94338febad593bfbf638655.tar.gz
Tango-05c7e42a8ce55a21c94338febad593bfbf638655.zip
MERGE
Diffstat (limited to 'Software/Visual_Studio/Tango.Synchronization')
-rw-r--r--Software/Visual_Studio/Tango.Synchronization/Local/LocalDBSynchronizer.cs28
-rw-r--r--Software/Visual_Studio/Tango.Synchronization/Local/SqliteDataBase.cs19
-rw-r--r--Software/Visual_Studio/Tango.Synchronization/Remote/RemoteDBSynchronizer.cs41
-rw-r--r--Software/Visual_Studio/Tango.Synchronization/Tango.Synchronization.csproj2
4 files changed, 90 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Tango.Synchronization/Local/LocalDBSynchronizer.cs b/Software/Visual_Studio/Tango.Synchronization/Local/LocalDBSynchronizer.cs
new file mode 100644
index 000000000..ca58686f3
--- /dev/null
+++ b/Software/Visual_Studio/Tango.Synchronization/Local/LocalDBSynchronizer.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tango.Synchronization.Local
+{
+ public class LocalDBSynchronizer
+ {
+ public static void Synchronize(String masterSQLiteFile, String slaveSQLiteFile)
+ {
+ using (LocalDBComparer comparer = new LocalDBComparer(new SQLiteDataBase(masterSQLiteFile), new SQLiteDataBase(slaveSQLiteFile)))
+ {
+ var diffs = comparer.Compare();
+ foreach (var diff in diffs)
+ {
+ diff.Commit();
+ }
+ }
+ }
+
+ public static Task SynchronizeAsync(String masterSQLiteFile, String slaveSQLiteFile)
+ {
+ return Task.Factory.StartNew(() => Synchronize(masterSQLiteFile, slaveSQLiteFile));
+ }
+ }
+}
diff --git a/Software/Visual_Studio/Tango.Synchronization/Local/SqliteDataBase.cs b/Software/Visual_Studio/Tango.Synchronization/Local/SqliteDataBase.cs
index 83a14b493..b3d259e8c 100644
--- a/Software/Visual_Studio/Tango.Synchronization/Local/SqliteDataBase.cs
+++ b/Software/Visual_Studio/Tango.Synchronization/Local/SqliteDataBase.cs
@@ -8,6 +8,7 @@ using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using System.Threading;
namespace Tango.Synchronization.Local
{
@@ -487,6 +488,24 @@ namespace Tango.Synchronization.Local
public void Dispose()
{
_connection.Close();
+ _connection.Dispose();
+ GC.Collect();
+
+ while (true)
+ {
+ try
+ {
+ using (FileStream stream = File.Open(Source, FileMode.Open, FileAccess.Read))
+ {
+ return;
+ }
+ }
+ catch (IOException)
+ {
+ GC.Collect();
+ Thread.Sleep(200);
+ }
+ }
}
}
}
diff --git a/Software/Visual_Studio/Tango.Synchronization/Remote/RemoteDBSynchronizer.cs b/Software/Visual_Studio/Tango.Synchronization/Remote/RemoteDBSynchronizer.cs
new file mode 100644
index 000000000..2cd9e2d41
--- /dev/null
+++ b/Software/Visual_Studio/Tango.Synchronization/Remote/RemoteDBSynchronizer.cs
@@ -0,0 +1,41 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using remote = Tango.DAL.Remote.DB;
+using local = Tango.DAL.Local.DB;
+
+namespace Tango.Synchronization.Remote
+{
+ public class RemoteDBSynchronizer
+ {
+ public static void Synchronize(String sqliteDbFile, String serialNumber)
+ {
+ using (var remoteDB = new remote.RemoteDB("LOCALHOST\\SQLEXPRESS", false))
+ {
+ using (var localDB = new local.LocalDB(sqliteDbFile))
+ {
+ RemoteDBComparer comparer = new RemoteDBComparer(remoteDB, localDB, serialNumber);
+ var diffs = comparer.Compare();
+
+ foreach (var diff in diffs)
+ {
+ diff.Commit();
+ }
+
+ remoteDB.SaveChanges();
+ localDB.SaveChanges();
+ }
+ }
+ }
+
+ public static Task SynchronizeAsync(String sqliteDBFile, String serialNumber)
+ {
+ return Task.Factory.StartNew(() =>
+ {
+ Synchronize(sqliteDBFile, serialNumber);
+ });
+ }
+ }
+}
diff --git a/Software/Visual_Studio/Tango.Synchronization/Tango.Synchronization.csproj b/Software/Visual_Studio/Tango.Synchronization/Tango.Synchronization.csproj
index 36719516a..30208539c 100644
--- a/Software/Visual_Studio/Tango.Synchronization/Tango.Synchronization.csproj
+++ b/Software/Visual_Studio/Tango.Synchronization/Tango.Synchronization.csproj
@@ -69,12 +69,14 @@
<Compile Include="Local\Constants.cs" />
<Compile Include="Local\ExtensionMethods.cs" />
<Compile Include="Local\ILocalDataBase.cs" />
+ <Compile Include="Local\LocalDBSynchronizer.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Local\LocalDBComparer.cs" />
<Compile Include="Diff.cs" />
<Compile Include="DiffAction.cs" />
<Compile Include="Local\SQLiteDataBase.cs" />
<Compile Include="Remote\RemoteDBComparer.cs" />
+ <Compile Include="Remote\RemoteDBSynchronizer.cs" />
<Compile Include="SyncConfiguration.cs" />
</ItemGroup>
<ItemGroup>