From 4cd07128b3c031e0390ad50c61968774f14ef6f3 Mon Sep 17 00:00:00 2001 From: Mike Phares Date: Wed, 1 Jun 2022 10:45:58 -0700 Subject: [PATCH] Testing Storage Paths --- .editorconfig | 5 +- EDA Viewer/.vscode/settings.json | 3 + EDA Viewer/Singleton/Background.cs | 455 +++++++++--------- .../Singleton/Helper/BackgroundEDA - A.cs | 1 + .../Singleton/Helper/BackgroundEdaDCP.cs | 2 +- EDA Viewer/Singleton/Helper/Common.cs | 6 +- 6 files changed, 238 insertions(+), 234 deletions(-) create mode 100644 EDA Viewer/.vscode/settings.json diff --git a/.editorconfig b/.editorconfig index b48db8a..046ef9f 100644 --- a/.editorconfig +++ b/.editorconfig @@ -80,8 +80,9 @@ dotnet_diagnostic.CA1825.severity = warning # CA1823: Avoid zero-length array al dotnet_diagnostic.CA1829.severity = warning # CA1829: Use Length/Count property instead of Count() when available dotnet_diagnostic.CA1834.severity = warning # CA1834: Consider using 'StringBuilder.Append(char)' when applicable dotnet_diagnostic.IDE0001.severity = warning # IDE0001: Simplify name -dotnet_diagnostic.IDE0002.severity = warning # Simplify (member access) System.Version.Equals("1", "2"); Version.Equals("1", "2"); -dotnet_diagnostic.IDE0005.severity = warning # Using directive is unnecessary using System.Text; +dotnet_diagnostic.IDE0002.severity = warning # Simplify (member access) - System.Version.Equals("1", "2"); Version.Equals("1", "2"); +dotnet_diagnostic.IDE0005.severity = warning # Using directive is unnecessary +dotnet_diagnostic.IDE0047.severity = warning # IDE0047: Parentheses can be removed dotnet_diagnostic.IDE0060.severity = warning # IDE0060: Remove unused parameter dotnet_naming_rule.abstract_method_should_be_pascal_case.severity = warning dotnet_naming_rule.abstract_method_should_be_pascal_case.style = pascal_case diff --git a/EDA Viewer/.vscode/settings.json b/EDA Viewer/.vscode/settings.json new file mode 100644 index 0000000..4ec39be --- /dev/null +++ b/EDA Viewer/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "cSpell.enabled": false +} \ No newline at end of file diff --git a/EDA Viewer/Singleton/Background.cs b/EDA Viewer/Singleton/Background.cs index 14e4680..11b4e0b 100644 --- a/EDA Viewer/Singleton/Background.cs +++ b/EDA Viewer/Singleton/Background.cs @@ -264,7 +264,7 @@ public class Background : Models.Properties.IBackground, IBackground, IDisposabl if (!addFile && fileName.Length > ticksLength) { MatchCollection matches = regex.Matches(fileName); - foreach (Match match in matches) + foreach (Match match in matches.Cast()) { if (_Stop) break; @@ -525,7 +525,7 @@ public class Background : Models.Properties.IBackground, IBackground, IDisposabl } } - private Stream ToStream(string @this) + private static Stream ToStream(string @this) { MemoryStream? stream = new(); StreamWriter? writer = new(stream); @@ -535,7 +535,7 @@ public class Background : Models.Properties.IBackground, IBackground, IDisposabl return stream; } - private T? ParseXML(string @this, bool throwExceptions) where T : class + private static T? ParseXML(string @this, bool throwExceptions) where T : class { object? result = null; try @@ -554,13 +554,8 @@ public class Background : Models.Properties.IBackground, IBackground, IDisposabl return result as T; } - private void DataCollectionPlans(AppSettings appSettings, string edaDataCollectionPlansLastRun, string cSharpFormat, string oracleFormat) + private void EvaluateRows(string workingDirectory, Dictionary>>> rows) { - object _Lock = new(); - bool _ShuttingDown = false; - bool dev = appSettings.Server.Contains("_ec_"); - Dictionary>>> rows = new(); - // //int moduleinstancetypename = 0; int unitname = 1; //int modulename = 2; @@ -571,243 +566,247 @@ public class Background : Models.Properties.IBackground, IBackground, IDisposabl int containermodifieddate = 7; int containerconfiguration = 8; int configurationmodifieddate = 9; + // + string csv; + string? xml; + string json; + string text; + string html; + Common common; + string emptyAPC; + string fileName; + object _Lock = new(); + string? modifiedDate; + string edaObjectFile; + string goldDirectory; + string replace = "$$$"; + string edaObjectDirectory; + DateTime lastModifiedDate; string objectTypeDirectory; - string workingDirectory = string.Concat(@"\\", appSettings.Server, @"\EC_EDA"); - // () + DateTime containerModifiedDate; + PDSFConfiguration? configuration; + DateTime configurationModifiedDate; + JsonSerializerOptions jsonSerializerOptions = new() { WriteIndented = true }; + foreach (KeyValuePair>>> databaseElement in rows) { - object @object; - string? @string; - int fieldCount; - List row; - string decrypted; - string connectionName; - string connectionString; - StringBuilder sql = new(); - Array objectTypes = Enum.GetValues(typeof(ModuleInstanceTypeName)); - List> connections = new(); - if (dev) + if (_Stop) + break; + emptyAPC = string.Concat(workingDirectory, @"\", databaseElement.Key, @"\EmptyAPC.xlsx"); + foreach (KeyValuePair>> tableNameElement in databaseElement.Value) { - connectionName = @"DEV"; - connectionString = Helper.Background.EDADatabase.GetEdaDevelopment(); - decrypted = RijndaelEncryption.Decrypt(appSettings.IFXEDADatabasePassword, appSettings.Company); - connectionString = string.Concat(connectionString, decrypted, ";"); - connections.Add(new Tuple(connectionName, connectionString)); - } - else - { - connectionName = "Staging"; - connectionString = Helper.Background.EDADatabase.GetEdaStaging(); - decrypted = RijndaelEncryption.Decrypt(appSettings.ECEDADatabasePassword, appSettings.Company); - connectionString = string.Concat(connectionString, decrypted, ";"); - connections.Add(new Tuple(connectionName, connectionString)); - connectionName = "Production"; - connectionString = Helper.Background.EDADatabase.GetEdaProduction(); - connectionString = string.Concat(connectionString, decrypted, ";"); - connections.Add(new Tuple(connectionName, connectionString)); - } - foreach (Tuple connection in connections) - { - if (_ShuttingDown) + if (_Stop) break; - rows.Add(connection.Item1, new Dictionary>>()); - foreach (ModuleInstanceTypeName objectType in objectTypes) + objectTypeDirectory = string.Concat(workingDirectory, @"\", databaseElement.Key, @"\", tableNameElement.Key); + foreach (List rowItem in tableNameElement.Value) { - if (_ShuttingDown) + if (_Stop) break; - if (string.IsNullOrEmpty(edaDataCollectionPlansLastRun)) + //foreach (var item in rowItem) + // Print(item.ToString()); + //if (!rowItem[containername].ToString().Contains("Plan_Pdsf_Health_Cp2Mg")) + // if (!rowItem[unitname].ToString().Contains("HGCV1") || !rowItem[containername].ToString().Contains("Plan_Pdsf")) + // continue; + modifiedDate = rowItem[containermodifieddate].ToString(); + if (string.IsNullOrEmpty(modifiedDate)) + continue; + containerModifiedDate = DateTime.Parse(modifiedDate); + modifiedDate = rowItem[configurationmodifieddate].ToString(); + if (string.IsNullOrEmpty(modifiedDate)) + continue; + configurationModifiedDate = DateTime.Parse(modifiedDate); + if (containerModifiedDate < configurationModifiedDate) + lastModifiedDate = configurationModifiedDate; + else + lastModifiedDate = containerModifiedDate; + goldDirectory = string.Concat(objectTypeDirectory, @"\", rowItem[unitname], @"\", rowItem[containername], @"\Gold"); + if (!Directory.Exists(goldDirectory)) + _ = Directory.CreateDirectory(goldDirectory); + edaObjectDirectory = string.Concat(objectTypeDirectory, @"\", rowItem[unitname], @"\", rowItem[containername], @"\", rowItem[configurationstate], @"\", rowItem[configurationproductivestate], @"\", lastModifiedDate.ToString("yyyy-MM-dd_"), new TimeSpan(lastModifiedDate.Ticks - new DateTime(lastModifiedDate.Year, lastModifiedDate.Month, lastModifiedDate.Day).Ticks).TotalSeconds); + if (!Directory.Exists(edaObjectDirectory)) + _ = Directory.CreateDirectory(edaObjectDirectory); + edaObjectFile = string.Concat(edaObjectDirectory, @"\", rowItem[unitname], " ", rowItem[containername], " - ", replace, " - ", rowItem[configurationstate].ToString(), " ", rowItem[configurationproductivestate].ToString()); + xml = rowItem[containerconfiguration].ToString(); + if (string.IsNullOrEmpty(xml)) + continue; + lock (_Lock) { - objectTypeDirectory = string.Concat(workingDirectory, @"\", connection.Item1, @"\", objectType); - if (!Directory.Exists(objectTypeDirectory)) - _ = Directory.CreateDirectory(objectTypeDirectory); - else - edaDataCollectionPlansLastRun = new DirectoryInfo(objectTypeDirectory).LastWriteTime.ToString(cSharpFormat); - } - if (!rows[connection.Item1].ContainsKey(objectType)) - rows[connection.Item1].Add(objectType, new List>()); - using (Oracle.ManagedDataAccess.Client.OracleConnection oracleConnection = new(connection.Item2)) - { - _ = sql.Clear(); - oracleConnection.Open(); - _ = sql.Append(" select v.moduleinstancetypename, v.unitname, "). - Append(" v.modulename, v.containername, v.configurationstate, "). - Append(" v.configurationproductivestate, v.containermodifiername, "). - Append(" v.containermodifieddate, v.containerconfiguration, v.configurationmodifieddate "). - Append(" from veditconfiguration v "). - Append(" where v.moduleinstancetypename = '").Append(objectType.ToString()).Append("' "); - //Append(" and v.containerversion in ('4.80', '4.111') "); - if (!string.IsNullOrEmpty(edaDataCollectionPlansLastRun)) - _ = sql.Append(" and greatest(v.containermodifieddate, v.configurationmodifieddate) >= to_date('").Append(edaDataCollectionPlansLastRun).Append("', '").Append(oracleFormat).Append("') "); - //Print(sql.ToString()); - using Oracle.ManagedDataAccess.Client.OracleCommand oracleCommand = new(sql.ToString(), oracleConnection); - using Oracle.ManagedDataAccess.Client.OracleDataReader oracleDataReader = oracleCommand.ExecuteReader(); - fieldCount = oracleDataReader.FieldCount; - while (oracleDataReader.Read()) + fileName = string.Concat(edaObjectFile.Replace(replace, "Raw"), ".xml"); + File.WriteAllText(fileName, xml); + try + { File.SetCreationTime(fileName, lastModifiedDate); File.SetLastWriteTime(fileName, lastModifiedDate); } + catch (Exception) { } + common = new Common(ModuleInstanceTypeName.Pdsf, rowItem[unitname], rowItem[containername], rowItem[configurationstate], rowItem[configurationproductivestate]); + configuration = ParseXML(xml, throwExceptions: true); + if (configuration is null) + continue; + common.Update(configuration); + json = JsonSerializer.Serialize(configuration, configuration.GetType(), jsonSerializerOptions); + if (common?.UnitName is null) + continue; + fileName = string.Concat(edaObjectFile.Replace(replace, "Partial"), ".csv"); + File.WriteAllText(fileName, common.ParametersAsCsv); + try + { File.SetCreationTime(fileName, lastModifiedDate); File.SetLastWriteTime(fileName, lastModifiedDate); } + catch (Exception) { } + fileName = string.Concat(edaObjectFile.Replace(replace, "Partial"), ".json"); + File.WriteAllText(fileName, json); + text = Helper.Background.EdaDCP.GetText(edaObjectFile, common, json); + fileName = string.Concat(edaObjectFile.Replace(replace, "Partial"), ".txt"); + File.WriteAllText(fileName, text); + try + { File.SetCreationTime(fileName, lastModifiedDate); File.SetLastWriteTime(fileName, lastModifiedDate); } + catch (Exception) { } + html = Helper.Background.EdaDCP.GetEdaObjectToHtml(edaObjectFile, common); + fileName = string.Concat(edaObjectFile.Replace(replace, "Partial"), ".html"); + File.WriteAllText(fileName, html); + try + { File.SetCreationTime(fileName, lastModifiedDate); File.SetLastWriteTime(fileName, lastModifiedDate); } + catch (Exception) { } + xml = Helper.Background.EdaDCP.GetEdaObjectToDMSGridFormat(edaObjectFile, common, useAlias: false); + fileName = string.Concat(edaObjectFile.Replace(replace, "DMSGridFormat"), ".xml"); + File.WriteAllText(fileName, xml); + try + { File.SetCreationTime(fileName, lastModifiedDate); File.SetLastWriteTime(fileName, lastModifiedDate); } + catch (Exception) { } + xml = Helper.Background.EdaDCP.GetEdaObjectToDMSGridFormat(edaObjectFile, common, useAlias: true); + fileName = string.Concat(edaObjectFile.Replace(replace, "DMSGridFormat - Alias"), ".xml"); + File.WriteAllText(fileName, xml); + try + { File.SetCreationTime(fileName, lastModifiedDate); File.SetLastWriteTime(fileName, lastModifiedDate); } + catch (Exception) { } + csv = Helper.Background.EdaDCP.GetEdaObjectToAPCParameter(edaObjectFile, common); + fileName = string.Concat(edaObjectFile.Replace(replace, "APCParameter"), ".csv"); + File.WriteAllText(fileName, csv); + try + { File.SetCreationTime(fileName, lastModifiedDate); File.SetLastWriteTime(fileName, lastModifiedDate); } + catch (Exception) { } + csv = Helper.Background.EdaDCP.GetEdaObjectToAPCRunKeyNumber(edaObjectFile, common); + fileName = string.Concat(edaObjectFile.Replace(replace, "APCRunKeyNumber"), ".csv"); + File.WriteAllText(fileName, csv); + try + { File.SetCreationTime(fileName, lastModifiedDate); File.SetLastWriteTime(fileName, lastModifiedDate); } + catch (Exception) { } + fileName = string.Concat(edaObjectFile.Replace(replace, "APC"), ".xlsx"); + if (File.Exists(emptyAPC) && !File.Exists(fileName)) { - if (_ShuttingDown) - break; - row = new List(); - for (int c = 0; c < fieldCount; c++) - { - @object = oracleDataReader.GetValue(c); - row.Add(@object); - if (@object is null) - continue; - @string = @object.ToString(); - //if (@string.Length < 128) - // _Log.Debug(@string); - } - rows[connection.Item1][objectType].Add(row); + File.Copy(emptyAPC, fileName); + try + { File.SetCreationTime(fileName, lastModifiedDate); File.SetLastWriteTime(fileName, lastModifiedDate); } + catch (Exception) { } } - }; - } - } - } - if (rows.Any()) - { - string csv; - string? xml; - string json; - string text; - string html; - Common common; - string emptyAPC; - string fileName; - string? modifiedDate; - string edaObjectFile; - string goldDirectory; - string replace = "$$$"; - string edaObjectDirectory; - DateTime lastModifiedDate; - DateTime containerModifiedDate; - PDSFConfiguration? configuration; - DateTime configurationModifiedDate; - JsonSerializerOptions jsonSerializerOptions = new() { WriteIndented = true }; - foreach (KeyValuePair>>> databaseElement in rows) - { - if (_ShuttingDown) - break; - emptyAPC = string.Concat(workingDirectory, @"\", databaseElement.Key, @"\EmptyAPC.xlsx"); - foreach (KeyValuePair>> tableNameElement in databaseElement.Value) - { - if (_ShuttingDown) - break; - objectTypeDirectory = string.Concat(workingDirectory, @"\", databaseElement.Key, @"\", tableNameElement.Key); - foreach (List rowItem in tableNameElement.Value) - { - if (_ShuttingDown) - break; - //foreach (var item in rowItem) - // Print(item.ToString()); - //if (!rowItem[containername].ToString().Contains("Plan_Pdsf_Health_Cp2Mg")) - //if (!rowItem[unitname].ToString().Contains("XRD04") || !rowItem[containername].ToString().Contains("Plan_Pdsf")) - // continue; - modifiedDate = rowItem[containermodifieddate].ToString(); - if (string.IsNullOrEmpty(modifiedDate)) + if (!common.StoragePaths.Any()) continue; - containerModifiedDate = DateTime.Parse(modifiedDate); - modifiedDate = rowItem[configurationmodifieddate].ToString(); - if (string.IsNullOrEmpty(modifiedDate)) - continue; - configurationModifiedDate = DateTime.Parse(modifiedDate); - if (containerModifiedDate < configurationModifiedDate) - lastModifiedDate = configurationModifiedDate; - else - lastModifiedDate = containerModifiedDate; - goldDirectory = string.Concat(objectTypeDirectory, @"\", rowItem[unitname], @"\", rowItem[containername], @"\Gold"); - if (!Directory.Exists(goldDirectory)) - _ = Directory.CreateDirectory(goldDirectory); - edaObjectDirectory = string.Concat(objectTypeDirectory, @"\", rowItem[unitname], @"\", rowItem[containername], @"\", rowItem[configurationstate], @"\", rowItem[configurationproductivestate], @"\", lastModifiedDate.ToString("yyyy-MM-dd_"), new TimeSpan(lastModifiedDate.Ticks - new DateTime(lastModifiedDate.Year, lastModifiedDate.Month, lastModifiedDate.Day).Ticks).TotalSeconds); - if (!Directory.Exists(edaObjectDirectory)) - _ = Directory.CreateDirectory(edaObjectDirectory); - edaObjectFile = string.Concat(edaObjectDirectory, @"\", rowItem[unitname], " ", rowItem[containername], " - ", replace, " - ", rowItem[configurationstate].ToString(), " ", rowItem[configurationproductivestate].ToString()); - xml = rowItem[containerconfiguration].ToString(); - if (string.IsNullOrEmpty(xml)) - continue; - //continue; - lock (_Lock) + foreach (string? storagePath in common.StoragePaths) { - fileName = string.Concat(edaObjectFile.Replace(replace, "Raw"), ".xml"); - File.WriteAllText(fileName, xml); - try - { File.SetCreationTime(fileName, lastModifiedDate); File.SetLastWriteTime(fileName, lastModifiedDate); } - catch (Exception) { } - common = new Common(ModuleInstanceTypeName.Pdsf, rowItem[unitname], rowItem[containername], rowItem[configurationstate], rowItem[configurationproductivestate]); - configuration = ParseXML(xml, throwExceptions: true); - if (configuration is null) + if (string.IsNullOrEmpty(storagePath) || !Directory.Exists(Path.GetPathRoot(storagePath))) continue; - common.Update(configuration); - json = JsonSerializer.Serialize(configuration, configuration.GetType(), jsonSerializerOptions); - if (common?.UnitName is null) + if (Directory.Exists(storagePath)) continue; - fileName = string.Concat(edaObjectFile.Replace(replace, "Partial"), ".csv"); - File.WriteAllText(fileName, common.ParametersAsCsv); - try - { File.SetCreationTime(fileName, lastModifiedDate); File.SetLastWriteTime(fileName, lastModifiedDate); } - catch (Exception) { } - fileName = string.Concat(edaObjectFile.Replace(replace, "Partial"), ".json"); - File.WriteAllText(fileName, json); - text = Helper.Background.EdaDCP.GetText(edaObjectFile, common, json); - fileName = string.Concat(edaObjectFile.Replace(replace, "Partial"), ".txt"); - File.WriteAllText(fileName, text); - try - { File.SetCreationTime(fileName, lastModifiedDate); File.SetLastWriteTime(fileName, lastModifiedDate); } - catch (Exception) { } - html = Helper.Background.EdaDCP.GetEdaObjectToHtml(edaObjectFile, common); - fileName = string.Concat(edaObjectFile.Replace(replace, "Partial"), ".html"); - File.WriteAllText(fileName, html); - try - { File.SetCreationTime(fileName, lastModifiedDate); File.SetLastWriteTime(fileName, lastModifiedDate); } - catch (Exception) { } - xml = Helper.Background.EdaDCP.GetEdaObjectToDMSGridFormat(edaObjectFile, common, useAlias: false); - fileName = string.Concat(edaObjectFile.Replace(replace, "DMSGridFormat"), ".xml"); - File.WriteAllText(fileName, xml); - try - { File.SetCreationTime(fileName, lastModifiedDate); File.SetLastWriteTime(fileName, lastModifiedDate); } - catch (Exception) { } - xml = Helper.Background.EdaDCP.GetEdaObjectToDMSGridFormat(edaObjectFile, common, useAlias: true); - fileName = string.Concat(edaObjectFile.Replace(replace, "DMSGridFormat - Alias"), ".xml"); - File.WriteAllText(fileName, xml); - try - { File.SetCreationTime(fileName, lastModifiedDate); File.SetLastWriteTime(fileName, lastModifiedDate); } - catch (Exception) { } - csv = Helper.Background.EdaDCP.GetEdaObjectToAPCParameter(edaObjectFile, common); - fileName = string.Concat(edaObjectFile.Replace(replace, "APCParameter"), ".csv"); - File.WriteAllText(fileName, csv); - try - { File.SetCreationTime(fileName, lastModifiedDate); File.SetLastWriteTime(fileName, lastModifiedDate); } - catch (Exception) { } - csv = Helper.Background.EdaDCP.GetEdaObjectToAPCRunKeyNumber(edaObjectFile, common); - fileName = string.Concat(edaObjectFile.Replace(replace, "APCRunKeyNumber"), ".csv"); - File.WriteAllText(fileName, csv); - try - { File.SetCreationTime(fileName, lastModifiedDate); File.SetLastWriteTime(fileName, lastModifiedDate); } - catch (Exception) { } - fileName = string.Concat(edaObjectFile.Replace(replace, "APC"), ".xlsx"); - if (File.Exists(emptyAPC) && !File.Exists(fileName)) - { - File.Copy(emptyAPC, fileName); - try - { File.SetCreationTime(fileName, lastModifiedDate); File.SetLastWriteTime(fileName, lastModifiedDate); } - catch (Exception) { } - } - if (!common.StoragePaths.Any()) - continue; - foreach (string? storagePath in common.StoragePaths) - { - if (string.IsNullOrEmpty(storagePath) || !Directory.Exists(Path.GetPathRoot(storagePath))) - continue; - if (Directory.Exists(storagePath)) - continue; - _ = Directory.CreateDirectory(storagePath); - } + _ = Directory.CreateDirectory(storagePath); } } - try - { Directory.SetLastWriteTime(objectTypeDirectory, DateTime.Now); } - catch (Exception) { } } + try + { Directory.SetLastWriteTime(objectTypeDirectory, DateTime.Now); } + catch (Exception) { } } } } + private void DataCollectionPlans(AppSettings appSettings, string edaDataCollectionPlansLastRun, string cSharpFormat, string oracleFormat) + { + int fieldCount; + object @object; + string? @string; + List row; + string decrypted; + string connectionName; + string connectionString; + StringBuilder sql = new(); + string objectTypeDirectory; + bool dev = appSettings.Server.Contains("_ec_"); + List> connections = new(); + Array objectTypes = Enum.GetValues(typeof(ModuleInstanceTypeName)); + string workingDirectory = string.Concat(@"\\", appSettings.Server, @"\EC_EDA"); + Dictionary>>> rows = new(); + if (dev) + { + connectionName = @"DEV"; + connectionString = Helper.Background.EDADatabase.GetEdaDevelopment(); + decrypted = RijndaelEncryption.Decrypt(appSettings.IFXEDADatabasePassword, appSettings.Company); + connectionString = string.Concat(connectionString, decrypted, ";"); + connections.Add(new Tuple(connectionName, connectionString)); + } + else + { + connectionName = "Staging"; + connectionString = Helper.Background.EDADatabase.GetEdaStaging(); + decrypted = RijndaelEncryption.Decrypt(appSettings.ECEDADatabasePassword, appSettings.Company); + connectionString = string.Concat(connectionString, decrypted, ";"); + connections.Add(new Tuple(connectionName, connectionString)); + connectionName = "Production"; + connectionString = Helper.Background.EDADatabase.GetEdaProduction(); + connectionString = string.Concat(connectionString, decrypted, ";"); + connections.Add(new Tuple(connectionName, connectionString)); + } + foreach (Tuple connection in connections) + { + if (_Stop) + break; + rows.Add(connection.Item1, new Dictionary>>()); + foreach (ModuleInstanceTypeName objectType in objectTypes) + { + if (_Stop) + break; + if (string.IsNullOrEmpty(edaDataCollectionPlansLastRun)) + { + objectTypeDirectory = Path.Combine(workingDirectory, connection.Item1, objectType.ToString()); + if (!Directory.Exists(objectTypeDirectory)) + _ = Directory.CreateDirectory(objectTypeDirectory); + else + edaDataCollectionPlansLastRun = new DirectoryInfo(objectTypeDirectory).LastWriteTime.ToString(cSharpFormat); + } + if (!rows[connection.Item1].ContainsKey(objectType)) + rows[connection.Item1].Add(objectType, new List>()); + using (Oracle.ManagedDataAccess.Client.OracleConnection oracleConnection = new(connection.Item2)) + { + _ = sql.Clear(); + oracleConnection.Open(); + _ = sql.Append(" select v.moduleinstancetypename, v.unitname, "). + Append(" v.modulename, v.containername, v.configurationstate, "). + Append(" v.configurationproductivestate, v.containermodifiername, "). + Append(" v.containermodifieddate, v.containerconfiguration, v.configurationmodifieddate "). + Append(" from veditconfiguration v "). + Append(" where v.moduleinstancetypename = '").Append(objectType.ToString()).Append("' "); + //Append(" and v.containerversion in ('4.80', '4.111') "); + if (!string.IsNullOrEmpty(edaDataCollectionPlansLastRun)) + _ = sql.Append(" and greatest(v.containermodifieddate, v.configurationmodifieddate) >= to_date('").Append(edaDataCollectionPlansLastRun).Append("', '").Append(oracleFormat).Append("') "); + //Print(sql.ToString()); + using Oracle.ManagedDataAccess.Client.OracleCommand oracleCommand = new(sql.ToString(), oracleConnection); + using Oracle.ManagedDataAccess.Client.OracleDataReader oracleDataReader = oracleCommand.ExecuteReader(); + fieldCount = oracleDataReader.FieldCount; + while (oracleDataReader.Read()) + { + if (_Stop) + break; + row = new List(); + for (int c = 0; c < fieldCount; c++) + { + @object = oracleDataReader.GetValue(c); + row.Add(@object); + if (@object is null) + continue; + @string = @object.ToString(); + //if (@string.Length < 128) + // _Log.Debug(@string); + } + rows[connection.Item1][objectType].Add(row); + } + }; + } + } + if (rows.Any()) + EvaluateRows(workingDirectory, rows); + } + } \ No newline at end of file diff --git a/EDA Viewer/Singleton/Helper/BackgroundEDA - A.cs b/EDA Viewer/Singleton/Helper/BackgroundEDA - A.cs index 2de0b53..d55eeef 100644 --- a/EDA Viewer/Singleton/Helper/BackgroundEDA - A.cs +++ b/EDA Viewer/Singleton/Helper/BackgroundEDA - A.cs @@ -122,6 +122,7 @@ public partial class PDSFConfigurationSettings } /// + [System.Xml.Serialization.XmlArrayItem("Path", IsNullable = false)] public string[] StoragePaths { get => this.storagePathsField; diff --git a/EDA Viewer/Singleton/Helper/BackgroundEdaDCP.cs b/EDA Viewer/Singleton/Helper/BackgroundEdaDCP.cs index f89c5dd..c79c20d 100644 --- a/EDA Viewer/Singleton/Helper/BackgroundEdaDCP.cs +++ b/EDA Viewer/Singleton/Helper/BackgroundEdaDCP.cs @@ -29,7 +29,7 @@ public partial class Background _ = result.Append("").Append("Configuration Productive State").AppendLine(""); _ = result.Append("").Append("LogisticsEquipmentAlias").AppendLine(""); _ = result.Append("").Append("Source").AppendLine(""); - _ = result.Append("").Append("StoragePath").AppendLine(""); + _ = result.Append("").Append("StoragePath(s)").AppendLine(""); _ = result.Append("").Append("StartTimeFormat").AppendLine(""); _ = result.Append("").Append("Filename").AppendLine(""); _ = result.AppendLine(""); diff --git a/EDA Viewer/Singleton/Helper/Common.cs b/EDA Viewer/Singleton/Helper/Common.cs index ead545f..856df66 100644 --- a/EDA Viewer/Singleton/Helper/Common.cs +++ b/EDA Viewer/Singleton/Helper/Common.cs @@ -88,11 +88,11 @@ public class Common LogisticsEquipmentAlias = configuration.DataCollection.Logistics.EquipmentAlias; //if (LogisticsEquipmentAlias == "R47-PLC") //{ } - foreach (PDSFConfigurationDataCollectionLogisticsAttribute item in (from l in configuration.DataCollection.Logistics.Attributes orderby l.Use descending, l.Order select l)) + foreach (PDSFConfigurationDataCollectionLogisticsAttribute item in from l in configuration.DataCollection.Logistics.Attributes orderby l.Use descending, l.Order select l) LogisticsAttributes.Add(new string[] { item.Use.ToString(), item.Order.ToString("000"), item.Key, item.Placeholder }); foreach (PDSFConfigurationDataCollectionLogisticsColumn item in configuration.DataCollection.Logistics.Columns) LogisticsColumns.Add(new string[] { item.ID.ToString(), item.Prefix }); - foreach (PDSFConfigurationDataCollectionParameter1 item in (from l in configuration.DataCollection.VirtualParameters orderby l.Use descending, l.Order select l)) + foreach (PDSFConfigurationDataCollectionParameter1 item in from l in configuration.DataCollection.VirtualParameters orderby l.Use descending, l.Order select l) { if (string.IsNullOrEmpty(item.Alias) && !string.IsNullOrEmpty(item.Conditions.ConditionModel.Name)) { @@ -109,7 +109,7 @@ public class Common Parameters.Add(new string[] { item.Use.ToString(), item.Order.ToString("000"), item.FullName, item.Alias, item.HardWareId, item.Description, string.Empty, true.ToString(), (configuration.DataCollection.Logistics.Columns.Length + 1 + item.Order).ToString("000") }); } } - foreach (PDSFConfigurationDataCollectionParameter item in (from l in configuration.DataCollection.Parameters orderby l.Use descending, l.Order select l)) + foreach (PDSFConfigurationDataCollectionParameter item in from l in configuration.DataCollection.Parameters orderby l.Use descending, l.Order select l) { if (string.IsNullOrEmpty(item?.Alias) && !string.IsNullOrEmpty(item?.Conditions?.ConditionModel?.Name)) {