aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Utilities/Tango.SQLiteGenerator.CLI
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2018-01-25 16:17:55 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-01-25 16:17:55 +0200
commit6a8a50b01383cf724822c3eb0135c1729fb2daed (patch)
treed4af0105f0167c3443370af9dc906d92aea9f740 /Software/Visual_Studio/Utilities/Tango.SQLiteGenerator.CLI
parentdc11398ba5728af943256ca99eba8c9d66e1b6e2 (diff)
downloadTango-6a8a50b01383cf724822c3eb0135c1729fb2daed.tar.gz
Tango-6a8a50b01383cf724822c3eb0135c1729fb2daed.zip
Implemented SQL Server To SQLite Conversion Utility!!!
Added missing synchronization tables to remote synchronization. Updated DAL.Local.
Diffstat (limited to 'Software/Visual_Studio/Utilities/Tango.SQLiteGenerator.CLI')
-rw-r--r--Software/Visual_Studio/Utilities/Tango.SQLiteGenerator.CLI/App.config16
-rw-r--r--Software/Visual_Studio/Utilities/Tango.SQLiteGenerator.CLI/Program.cs79
-rw-r--r--Software/Visual_Studio/Utilities/Tango.SQLiteGenerator.CLI/Properties/AssemblyInfo.cs36
-rw-r--r--Software/Visual_Studio/Utilities/Tango.SQLiteGenerator.CLI/Tango.SQLiteGenerator.CLI.csproj74
-rw-r--r--Software/Visual_Studio/Utilities/Tango.SQLiteGenerator.CLI/packages.config4
5 files changed, 209 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Utilities/Tango.SQLiteGenerator.CLI/App.config b/Software/Visual_Studio/Utilities/Tango.SQLiteGenerator.CLI/App.config
new file mode 100644
index 000000000..92aa00bf9
--- /dev/null
+++ b/Software/Visual_Studio/Utilities/Tango.SQLiteGenerator.CLI/App.config
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+ <configSections>
+ <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
+ <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
+ </configSections>
+ <startup>
+ <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" />
+ </startup>
+ <entityFramework>
+ <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
+ <providers>
+ <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
+ </providers>
+ </entityFramework>
+</configuration> \ No newline at end of file
diff --git a/Software/Visual_Studio/Utilities/Tango.SQLiteGenerator.CLI/Program.cs b/Software/Visual_Studio/Utilities/Tango.SQLiteGenerator.CLI/Program.cs
new file mode 100644
index 000000000..242cdcfa9
--- /dev/null
+++ b/Software/Visual_Studio/Utilities/Tango.SQLiteGenerator.CLI/Program.cs
@@ -0,0 +1,79 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.DAL.Remote.DB;
+using Tango.Settings;
+using Tango.Synchronization;
+using Tango.Synchronization.Conversion;
+
+namespace Tango.SQLiteGenerator.CLI
+{
+ class Program
+ {
+ static void Main(string[] args)
+ {
+ String sqlitePath = args[0];
+
+ sqlitePath = Path.GetFullPath(sqlitePath);
+
+ bool completed = false;
+
+ String connectionString = SettingsManager.Default.DataBase.SQLServerAddress;
+
+ Console.WriteLine("Connecting to " + connectionString + "...");
+
+ connectionString = String.Format("Data Source={0};Initial Catalog=Tango;Integrated Security=SSPI;", connectionString);
+
+ List<SYNC_CONFIGURATIONS> sync_configurations = new List<SYNC_CONFIGURATIONS>();
+
+ using (RemoteDB db = RemoteDB.CreateDefault())
+ {
+ sync_configurations = db.SYNC_CONFIGURATIONS.ToList();
+ }
+
+ SqlConversionHandler handler = new SqlConversionHandler(delegate (bool done, bool success, int percent, string msg)
+ {
+ Console.WriteLine(String.Format("{0} [%{1}]", msg, percent));
+
+ if (done)
+ {
+ if (success)
+ {
+ Console.WriteLine("SQLite database has been generated successfully on " + sqlitePath);
+ Environment.Exit(0);
+ }
+ else
+ {
+ Console.WriteLine("SQLite database generation failed!");
+ Environment.Exit(-1);
+ }
+
+ completed = true;
+ }
+ });
+
+ SqlTableSelectionHandler selectionHandler = new SqlTableSelectionHandler(delegate (List<TableSchema> schema)
+ {
+ List<TableSchema> updated = schema.Where(x => x.TableName.ToLower() != "sysdiagrams").ToList();
+
+ updated
+ .Where(table => sync_configurations.Where(config => (SyncConfiguration)config.SYNC_TYPE == SyncConfiguration.OverwriteLocal).ToList()
+ .Exists(config => config.TABLE_NAME == table.TableName)).ToList().ForEach(x => x.CopyData = true);
+
+ return updated;
+ });
+
+ SqlServerToSQLiteConverter converter = new SqlServerToSQLiteConverter();
+
+ converter.ConvertSqlServerToSQLiteDatabase(connectionString, sqlitePath, null, handler, selectionHandler, null, false, false);
+
+ while (!completed)
+ {
+ Console.ReadLine();
+ }
+ }
+ }
+}
diff --git a/Software/Visual_Studio/Utilities/Tango.SQLiteGenerator.CLI/Properties/AssemblyInfo.cs b/Software/Visual_Studio/Utilities/Tango.SQLiteGenerator.CLI/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..a050c5eff
--- /dev/null
+++ b/Software/Visual_Studio/Utilities/Tango.SQLiteGenerator.CLI/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Tango.SQLiteGenerator.CLI")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Tango.SQLiteGenerator.CLI")]
+[assembly: AssemblyCopyright("Copyright © 2018")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("8a03adc0-991b-4da8-8a19-e1d03f92e81c")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Software/Visual_Studio/Utilities/Tango.SQLiteGenerator.CLI/Tango.SQLiteGenerator.CLI.csproj b/Software/Visual_Studio/Utilities/Tango.SQLiteGenerator.CLI/Tango.SQLiteGenerator.CLI.csproj
new file mode 100644
index 000000000..2e9420527
--- /dev/null
+++ b/Software/Visual_Studio/Utilities/Tango.SQLiteGenerator.CLI/Tango.SQLiteGenerator.CLI.csproj
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{8A03ADC0-991B-4DA8-8A19-E1D03F92E81C}</ProjectGuid>
+ <OutputType>Exe</OutputType>
+ <RootNamespace>Tango.SQLiteGenerator.CLI</RootNamespace>
+ <AssemblyName>sqlitegen</AssemblyName>
+ <TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\Build\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\EntityFramework.6.0.0\lib\net45\EntityFramework.dll</HintPath>
+ </Reference>
+ <Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\EntityFramework.6.0.0\lib\net45\EntityFramework.SqlServer.dll</HintPath>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.ComponentModel.DataAnnotations" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Net.Http" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Program.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="App.config" />
+ <None Include="packages.config" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\Tango.DAL.Remote\Tango.DAL.Remote.csproj">
+ <Project>{38197109-8610-4d3f-92b9-16d48df94d7c}</Project>
+ <Name>Tango.DAL.Remote</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\Tango.Settings\Tango.Settings.csproj">
+ <Project>{d8f1ad85-526a-4f50-b6dc-d437af63d8d8}</Project>
+ <Name>Tango.Settings</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\Tango.Synchronization\Tango.Synchronization.csproj">
+ <Project>{7ada4e86-cad7-4968-a210-3a8a9e5153ab}</Project>
+ <Name>Tango.Synchronization</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/Utilities/Tango.SQLiteGenerator.CLI/packages.config b/Software/Visual_Studio/Utilities/Tango.SQLiteGenerator.CLI/packages.config
new file mode 100644
index 000000000..9256e1591
--- /dev/null
+++ b/Software/Visual_Studio/Utilities/Tango.SQLiteGenerator.CLI/packages.config
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+ <package id="EntityFramework" version="6.0.0" targetFramework="net46" />
+</packages> \ No newline at end of file