From 03b670735f356882c8e453b1083558971ed9819c Mon Sep 17 00:00:00 2001 From: Krisztian Olah Date: Fri, 10 May 2024 14:56:23 +0200 Subject: [PATCH] Generic IntializeDataRepository --- .../x_template_x-xae/x_template_x-xae.tsproj | 2 +- .../Technology/Data/ProcessData.TcDUT | 10 +-- .../Technology/Data/TcoEntityBase.TcDUT | 17 +++++ .../Technology/Data/TechnologyData.TcDUT | 9 +-- .../x_template_xPlc/x_template_xPlc.plcproj | 3 + .../t/src/x_template_xOp/App.xaml.cs | 67 +++++++++---------- .../Properties/Localizations.resx | 6 +- 7 files changed, 58 insertions(+), 56 deletions(-) create mode 100644 templates/mts-s-template/t/src/x_template_x-xae/x_template_xPlc/Technology/Data/TcoEntityBase.TcDUT diff --git a/templates/mts-s-template/t/src/x_template_x-xae/x_template_x-xae.tsproj b/templates/mts-s-template/t/src/x_template_x-xae/x_template_x-xae.tsproj index a900ce6..80c2161 100644 --- a/templates/mts-s-template/t/src/x_template_x-xae/x_template_x-xae.tsproj +++ b/templates/mts-s-template/t/src/x_template_x-xae/x_template_x-xae.tsproj @@ -137,7 +137,7 @@ 424de6000000000000007600000028000000100000000e000000010004000000000070000000c30e0000c30e000010000000100000000000ff00ff00ff00ff000000ffff000000ff000000ffff0000008000800080008000000080800000008000000080800080808000c0c0c000ffffff0000000000111111111111111100ffffffffffffff00fffffffffff00ffffffffffffff00ffff00fff00fffffffff00fff00fffffffffffffffffff44f00fffffffffff44f00ffffffffffffffdddddd1111111111dddddd1111111111dddddd1111111111dddddd1111111111dddddd1111111111 424de6000000000000007600000028000000100000000e000000010004000000000070000000c30e0000c30e000010000000100000000000ff00ff00ff00ff000000ffff000000ff000000ffff0000008000800080008000000080800000008000000080800080808000c0c0c000ffffff00000000001111111111111111fffffffffffffffffcfcfcfcfffff00ff4f4f4f4fffff00ffffffffffffffffffffffffffffffffffcfcfcfcfffff00ff4f4f4f4fffff00fffffffffffffffff55555511111111115555551111111111555555111111111155555511111111115555551111111111 - + diff --git a/templates/mts-s-template/t/src/x_template_x-xae/x_template_xPlc/Technology/Data/ProcessData.TcDUT b/templates/mts-s-template/t/src/x_template_x-xae/x_template_xPlc/Technology/Data/ProcessData.TcDUT index fd07e3a..ce74b28 100644 --- a/templates/mts-s-template/t/src/x_template_x-xae/x_template_xPlc/Technology/Data/ProcessData.TcDUT +++ b/templates/mts-s-template/t/src/x_template_x-xae/x_template_xPlc/Technology/Data/ProcessData.TcDUT @@ -3,16 +3,8 @@ "} - _Created : DT; - {attribute clr [RenderIgnore("Control", "ShadowControl")]} - {attribute addProperty Name "<#Modified#>"} - _Modified : DT; {attribute addProperty Name "<#Entity header#>"} EntityHeader : EntityHeader := (Parent := THISSTRUCT); {attribute addProperty Name "<#CU00x#>"} diff --git a/templates/mts-s-template/t/src/x_template_x-xae/x_template_xPlc/Technology/Data/TcoEntityBase.TcDUT b/templates/mts-s-template/t/src/x_template_x-xae/x_template_xPlc/Technology/Data/TcoEntityBase.TcDUT new file mode 100644 index 0000000..ec86d3e --- /dev/null +++ b/templates/mts-s-template/t/src/x_template_x-xae/x_template_xPlc/Technology/Data/TcoEntityBase.TcDUT @@ -0,0 +1,17 @@ + + + + "} + _Created : DT; + {attribute clr [RenderIgnore("Control", "ShadowControl")]} + {attribute addProperty Name "<#Modified#>"} + _Modified : DT; + +END_STRUCT +END_TYPE +]]> + + \ No newline at end of file diff --git a/templates/mts-s-template/t/src/x_template_x-xae/x_template_xPlc/Technology/Data/TechnologyData.TcDUT b/templates/mts-s-template/t/src/x_template_x-xae/x_template_xPlc/Technology/Data/TechnologyData.TcDUT index a0e7a4b..cda261b 100644 --- a/templates/mts-s-template/t/src/x_template_x-xae/x_template_xPlc/Technology/Data/TechnologyData.TcDUT +++ b/templates/mts-s-template/t/src/x_template_x-xae/x_template_xPlc/Technology/Data/TechnologyData.TcDUT @@ -3,15 +3,8 @@ "} - {attribute 'qlik_time_partition:Shift:[Morning]06:00:00-14:00:00;[Afternoon]14:00:00-22:00:00;[Night]22:00:00-06:00:00'} - _Created : DT; - {attribute clr [RenderIgnore("Control", "ShadowControl")]} - {attribute addProperty Name "<#Modified#>"} - _Modified : DT; CU00x : CU00xTechnologicalData := (Parent := THISSTRUCT); END_STRUCT END_TYPE diff --git a/templates/mts-s-template/t/src/x_template_x-xae/x_template_xPlc/x_template_xPlc.plcproj b/templates/mts-s-template/t/src/x_template_x-xae/x_template_xPlc/x_template_xPlc.plcproj index 6d399ad..dc6d437 100644 --- a/templates/mts-s-template/t/src/x_template_x-xae/x_template_xPlc/x_template_xPlc.plcproj +++ b/templates/mts-s-template/t/src/x_template_x-xae/x_template_xPlc/x_template_xPlc.plcproj @@ -287,6 +287,9 @@ Code + + Code + Code diff --git a/templates/mts-s-template/t/src/x_template_xOp/App.xaml.cs b/templates/mts-s-template/t/src/x_template_xOp/App.xaml.cs index 904820d..6f095ee 100644 --- a/templates/mts-s-template/t/src/x_template_xOp/App.xaml.cs +++ b/templates/mts-s-template/t/src/x_template_xOp/App.xaml.cs @@ -40,6 +40,12 @@ namespace x_template_xOp /// public partial class App : Application { + + /// + /// Set this to false to consume the database without writing + /// + private bool IsDataServer { get; set; } = true; + protected override void OnStartup(StartupEventArgs e) { @@ -296,7 +302,6 @@ private static void StartRavenDBEmbeddedServer() } private IAuthenticationService CreateSecurityManageUsingRavenDb() { - var users = new RavenDbRepository(new RavenDbRepositorySettings(new string[] { Entry.Settings.GetConnectionString() }, "Users", "", "")); var groups = new RavenDbRepository(new RavenDbRepositorySettings(new string[] { Entry.Settings.GetConnectionString() }, "Groups", "", "")); var roleGroupManager = new RoleGroupManager(groups); @@ -307,13 +312,13 @@ private IAuthenticationService CreateSecurityManageUsingRavenDb() private void SetUpRepositoriesUsingRavenDb() { var ProcessDataRepoSettings = new RavenDbRepositorySettings(new string[] { Entry.Settings.GetConnectionString() }, "ProcessSettings", "", ""); - InitializeProcessDataRepositoryWithDataExchange(x_template_xPlc.MAIN._technology._processSettings, new RavenDbRepository(ProcessDataRepoSettings)); + IntializeDataRepository(x_template_xPlc.MAIN._technology._processSettings, new RavenDbRepository(ProcessDataRepoSettings),IsDataServer); var TechnologicalDataRepoSettings = new RavenDbRepositorySettings(new string[] { Entry.Settings.GetConnectionString() }, "TechnologySettings", "", ""); - IntializeTechnologyDataRepositoryWithDataExchange(x_template_xPlc.MAIN._technology._technologySettings, new RavenDbRepository(TechnologicalDataRepoSettings)); + IntializeDataRepository(x_template_xPlc.MAIN._technology._technologySettings, new RavenDbRepository(TechnologicalDataRepoSettings),IsDataServer); var ReworklDataRepoSettings = new RavenDbRepositorySettings(new string[] { Entry.Settings.GetConnectionString() }, "ReworkSettings", "", ""); - InitializeProcessDataRepositoryWithDataExchange(x_template_xPlc.MAIN._technology._reworkSettings, new RavenDbRepository(ReworklDataRepoSettings)); + IntializeDataRepository(x_template_xPlc.MAIN._technology._reworkSettings, new RavenDbRepository(ReworklDataRepoSettings),IsDataServer); //Statistics var _statisticsDataHandler = RepositoryDataSetHandler.CreateSet(new RavenDbRepository>(new RavenDbRepositorySettings>(new string[] { Entry.Settings.GetConnectionString() }, "Statistics", "", ""))); @@ -325,8 +330,8 @@ private void SetUpRepositoriesUsingRavenDb() var Traceability = new RavenDbRepositorySettings(new string[] { Entry.Settings.GetConnectionString() }, "Traceability", "", ""); - InitializeProcessDataRepositoryWithDataExchange(x_template_xPlc.MAIN._technology._processTraceability, new RavenDbRepository(Traceability)); - InitializeProcessDataRepositoryWithDataExchangeWithStatistic(x_template_xPlc.MAIN._technology._cu00x._processData, new RavenDbRepository(Traceability), CuxStatistic); + IntializeDataRepository(x_template_xPlc.MAIN._technology._processTraceability, new RavenDbRepository(Traceability),IsDataServer); + InitializeProcessDataRepositoryWithStatistics(x_template_xPlc.MAIN._technology._cu00x._processData, new RavenDbRepository(Traceability), CuxStatistic, IsDataServer); Rework = new ReworkModel(new RavenDbRepository(ReworklDataRepoSettings), new RavenDbRepository(Traceability)); @@ -357,18 +362,17 @@ private IAuthenticationService CreateSecurityManageUsingMongoDb() } - private void SetUpRepositoriesUsingMongoDb() { var ProcessDataRepoSettings = new MongoDbRepositorySettings(Entry.Settings.GetConnectionString(), Entry.Settings.DbName, "ProcessSettings"); - InitializeProcessDataRepositoryWithDataExchange(x_template_xPlc.MAIN._technology._processSettings, new MongoDbRepository(ProcessDataRepoSettings)); + IntializeDataRepository(x_template_xPlc.MAIN._technology._processSettings, new MongoDbRepository(ProcessDataRepoSettings), IsDataServer); InitializeIndexProcessDataRepositoryMongoDb(ProcessDataRepoSettings); var TechnologicalDataRepoSettings = new MongoDbRepositorySettings(Entry.Settings.GetConnectionString(), Entry.Settings.DbName, "TechnologySettings"); - IntializeTechnologyDataRepositoryWithDataExchange(x_template_xPlc.MAIN._technology._technologySettings, new MongoDbRepository(TechnologicalDataRepoSettings)); + IntializeDataRepository(x_template_xPlc.MAIN._technology._technologySettings, new MongoDbRepository(TechnologicalDataRepoSettings), IsDataServer); var ReworklDataRepoSettings = new MongoDbRepositorySettings(Entry.Settings.GetConnectionString(), Entry.Settings.DbName, "ReworkSettings"); - InitializeProcessDataRepositoryWithDataExchange(x_template_xPlc.MAIN._technology._reworkSettings, new MongoDbRepository(ReworklDataRepoSettings)); + IntializeDataRepository(x_template_xPlc.MAIN._technology._reworkSettings, new MongoDbRepository(ReworklDataRepoSettings),IsDataServer); //Statistics var _statisticsDataHandler = RepositoryDataSetHandler.CreateSet(new MongoDbRepository>(new MongoDbRepositorySettings>(Entry.Settings.GetConnectionString(), Entry.Settings.DbName, "Statistics"))); @@ -380,8 +384,8 @@ private void SetUpRepositoriesUsingMongoDb() var Traceability = new MongoDbRepositorySettings(Entry.Settings.GetConnectionString(), Entry.Settings.DbName, "Traceability"); - InitializeProcessDataRepositoryWithDataExchange(x_template_xPlc.MAIN._technology._processTraceability, new MongoDbRepository(Traceability)); - InitializeProcessDataRepositoryWithDataExchangeWithStatistic(x_template_xPlc.MAIN._technology._cu00x._processData, new MongoDbRepository(Traceability), CuxStatistic); + IntializeDataRepository(x_template_xPlc.MAIN._technology._processTraceability, new MongoDbRepository(Traceability), IsDataServer); + InitializeProcessDataRepositoryWithStatistics(x_template_xPlc.MAIN._technology._cu00x._processData, new MongoDbRepository(Traceability), CuxStatistic, IsDataServer); InitializeIndexProcessDataRepositoryMongoDb(Traceability); Rework = new ReworkModel(new MongoDbRepository(ReworklDataRepoSettings), new MongoDbRepository(Traceability)); @@ -429,7 +433,6 @@ public void InitializeIndexProcessDataRepositoryMongoDb(MongoDbRepositorySetting indexOptions.Name = name; var indexKey = Builders.IndexKeys.Descending(p => p._EntityId); mongoDbRepositorySettings.Collection.Indexes.CreateOne(new CreateIndexModel(indexKey, indexOptions)); - } name = "_Created"; @@ -439,8 +442,8 @@ public void InitializeIndexProcessDataRepositoryMongoDb(MongoDbRepositorySetting indexOptions.Name = name; var indexKey = Builders.IndexKeys.Descending(p => p._Created); mongoDbRepositorySettings.Collection.Indexes.CreateOne(new CreateIndexModel(indexKey, indexOptions)); - } + name = "_Modified"; if (!indexes.Exists(i => i.GetElement("name").ToString().Contains(name))) { @@ -448,50 +451,44 @@ public void InitializeIndexProcessDataRepositoryMongoDb(MongoDbRepositorySetting indexOptions.Name = name; var indexKey = Builders.IndexKeys.Descending(p => p._Modified); mongoDbRepositorySettings.Collection.Indexes.CreateOne(new CreateIndexModel(indexKey, indexOptions)); - } - } - /// - /// Initializes s repository for data exchange between PLC and storage (database). - /// - /// Data manager - /// Repository - private static void InitializeProcessDataRepositoryWithDataExchange(ProcessDataManager processData, IRepository repository) - { - repository.OnCreate = (id, data) => { data._Created = DateTime.Now; data._Modified = DateTime.Now; }; - repository.OnUpdate = (id, data) => { data._Modified = DateTime.Now; }; - processData.InitializeRepository(repository); - processData.InitializeRemoteDataExchange(repository); - - } /// Initializes s repository for data exchange between PLC and storage (database). /// /// Data manager /// Repository - private static void InitializeProcessDataRepositoryWithDataExchangeWithStatistic(ProcessDataManager processData, IRepository repository, StatisticsDataController cuxStatistic) + private static void InitializeProcessDataRepositoryWithStatistics(ProcessDataManager processData, IRepository repository, StatisticsDataController cuSytatistics, bool withDataExchange) { repository.OnCreate = (id, data) => { data._Created = DateTime.Now; data._Modified = DateTime.Now; }; - repository.OnUpdate = (id, data) => { data._Modified = DateTime.Now; cuxStatistic.Count(data); }; + repository.OnUpdate = (id, data) => { data._Modified = DateTime.Now; cuSytatistics.Count(data); }; processData.InitializeRepository(repository); - processData.InitializeRemoteDataExchange(repository); + if (withDataExchange) + { + processData.InitializeRemoteDataExchange(repository); + } } + /// - /// Initializes s repository for data exchange between PLC and storage (database). + /// Initializes s or s repository for data exchange between PLC and storage (database). /// /// Data manager /// Repository - private static void IntializeTechnologyDataRepositoryWithDataExchange(TechnologicalDataManager manager, IRepository repository) + private static void IntializeDataRepository(T1 manager, IRepository repository, bool withDataExchange) where T1 : TcoData.TcoDataExchange + where T2 : PlainTcoEntityBase { repository.OnCreate = (id, data) => { data._Created = DateTime.Now; data._Modified = DateTime.Now; }; repository.OnUpdate = (id, data) => { data._Modified = DateTime.Now; }; manager.InitializeRepository(repository); - manager.InitializeRemoteDataExchange(repository); + if (withDataExchange) + { + manager.InitializeRemoteDataExchange(repository); + } } + /// /// Gets the twin connector for this application. /// diff --git a/templates/mts-s-template/t/src/x_template_xPlcConnector/Properties/Localizations.resx b/templates/mts-s-template/t/src/x_template_xPlcConnector/Properties/Localizations.resx index 81815e0..4786799 100644 --- a/templates/mts-s-template/t/src/x_template_xPlcConnector/Properties/Localizations.resx +++ b/templates/mts-s-template/t/src/x_template_xPlcConnector/Properties/Localizations.resx @@ -852,15 +852,15 @@ Average cycle time filter constant + + CU00x + Created Modified - - CU00x - Presure OK