diff --git a/Resources/VersNum.txt b/Resources/VersNum.txt index 166cbfe..5f0d04b 100644 --- a/Resources/VersNum.txt +++ b/Resources/VersNum.txt @@ -1 +1 @@ -0.9.2408.1918 +0.9.2409.1719 diff --git a/SMGen.Data/Data/SelectFamIngParams.cs b/SMGen.Data/Data/SelectFamIngParams.cs index 89a465e..57e681b 100644 --- a/SMGen.Data/Data/SelectFamIngParams.cs +++ b/SMGen.Data/Data/SelectFamIngParams.cs @@ -38,8 +38,11 @@ namespace SMGen.Data return clonedData; } - public override bool Equals(object obj) + public override bool Equals(object? obj) { + if (obj == null) + return false; + if (!(obj is SelectFamIngParams item)) return false; diff --git a/SMGen.Data/Data/SelectFamStatiParams.cs b/SMGen.Data/Data/SelectFamStatiParams.cs index 9132292..51727a2 100644 --- a/SMGen.Data/Data/SelectFamStatiParams.cs +++ b/SMGen.Data/Data/SelectFamStatiParams.cs @@ -38,8 +38,11 @@ namespace SMGen.Data return clonedData; } - public override bool Equals(object obj) + public override bool Equals(object? obj) { + if (obj == null) + return false; + if (!(obj is SelectFamStatiParams item)) return false; diff --git a/SMGen.Data/Data/SelectRulFixParams.cs b/SMGen.Data/Data/SelectRulFixParams.cs index 67ecd69..80c2a1d 100644 --- a/SMGen.Data/Data/SelectRulFixParams.cs +++ b/SMGen.Data/Data/SelectRulFixParams.cs @@ -38,8 +38,11 @@ namespace SMGen.Data return clonedData; } - public override bool Equals(object obj) + public override bool Equals(object? obj) { + if (obj == null) + return false; + if (!(obj is SelectRulFixParams item)) return false; diff --git a/SMGen.Data/Data/SelectSMIn2EvParams.cs b/SMGen.Data/Data/SelectSMIn2EvParams.cs index 9f49578..acb596f 100644 --- a/SMGen.Data/Data/SelectSMIn2EvParams.cs +++ b/SMGen.Data/Data/SelectSMIn2EvParams.cs @@ -38,8 +38,11 @@ namespace SMGen.Data return clonedData; } - public override bool Equals(object obj) + public override bool Equals(object? obj) { + if (obj == null) + return false; + if (!(obj is SelectSMIn2EvParams item)) return false; diff --git a/SMGen.Data/SMGDataContext.cs b/SMGen.Data/SMGDataContext.cs index b822215..a190776 100644 --- a/SMGen.Data/SMGDataContext.cs +++ b/SMGen.Data/SMGDataContext.cs @@ -13,9 +13,6 @@ namespace SMGen.Data { public partial class SMGDataContext : DbContext { - public SMGDataContext() - { } - private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); private IConfiguration _configuration; diff --git a/SMGen.Data/Services/SMGDataService.cs b/SMGen.Data/Services/SMGDataService.cs index 656d977..c615b16 100644 --- a/SMGen.Data/Services/SMGDataService.cs +++ b/SMGen.Data/Services/SMGDataService.cs @@ -368,6 +368,142 @@ namespace SMGen.Data.Services private Dictionary Events_to_send { get; set; } = new Dictionary(); private List States { get; set; } = new List(); private List TranInList2add { get; set; } = new List(); + + + /// + /// Verifica su DB eventi e stati + /// + /// + /// + public async Task DoCheckUnusedEv(FilesClass currFile) + { + await Task.Delay(1); + States.Clear(); + Bits.Clear(); + Events_to_send.Clear(); + Rules.Clear(); + eventsAll.Clear(); + evOk.Clear(); + StatesAll.Clear(); + string lineOk = ""; + // recupero nome file x partire + string filePath = currFile.tempFileName; + FileLinesClass answ = new FileLinesClass(); + string[] lines = File.ReadAllLines(filePath, Encoding.UTF8); + try + { + foreach (var line in lines) + { + lineOk = line.Trim(); + if (!lineOk.StartsWith("#") && !string.IsNullOrEmpty(lineOk) && lineOk.Length >= 3) + { + if (lineOk.Contains("#")) + { + var lineSplit = lineOk.Split("#"); + lineOk = lineSplit[0]; + } + + var sz_tokens = lineOk.Split(":"); + + var sz_temp = sz_tokens[0].Trim(); + switch (sz_temp) + { + case "$DEFINITIONS": + b_rules_definition = false; + break; + + case "$NAME": + break; + + case "$IDX": + break; + + case "$STATE": + if (!StatesAll.ContainsKey(sz_tokens[2].Trim().ToUpper())) + { + StatesAll.Add(sz_tokens[2].Trim().ToUpper(), int.Parse(sz_tokens[1].Trim().ToUpper())); + } + break; + + case "$EVENT": + if (!Events_to_send.ContainsValue(int.Parse(sz_tokens[1].Trim().ToUpper()))) + { + Events_to_send.Add(sz_tokens[2].Trim().ToUpper(), int.Parse(sz_tokens[1].Trim().ToUpper())); + } + var newEvent = new AnagEventiModelTemp() + { + IdxTipo = int.Parse(sz_tokens[1].Trim().ToUpper()), + Nome = sz_tokens[2].Trim().ToUpper() + }; + break; + + case "$RULES": + b_rules_definition = true; + break; + case "$DO": + b_rules_definition = false; + + break; + default: + if (b_rules_definition) + { + var state = sz_temp.Trim().ToUpper(); + var event_to_send = sz_tokens[1].Trim().ToUpper(); + var next_state = sz_tokens[2].Trim().ToUpper(); + + var temp_rule = new RuleClass() + { + state = state, + event_to_send = event_to_send, + next_state = next_state + }; + Rules.Add(temp_rule); + States2Rules.Add(next_state); + } + break; + } + } + else + { + //linesChecked.Add(line, true); + } + } + foreach (var item in States2Rules) + { + if (!StatesAll2.ContainsKey(item)) + { + StatesAll2.Add(item, StatesAll[item]); + } + } + foreach (var ev in Events_to_send) + { + var rule2Ev = Rules.FirstOrDefault(x => x.event_to_send == ev.Key); + if (rule2Ev != null) + { + if (!evOk.ContainsKey(ev.Key) && !evOk.ContainsValue(ev.Value)) + { + evOk.Add(ev.Key, ev.Value); + } + } + } + } + catch (Exception exc) + { + Log.Error($"{exc}{Environment.NewLine}"); + } + + answ.file = currFile.tempFileName; + answ.statesOK = StatesAll2; + answ.eventsOK = evOk; + answ.lines = lines.ToList(); + return answ; + } + + /// + /// Verifica su DB eventi e stati + /// + /// + /// public async Task DoCheckUnusedEvSt(FilesClass currFile) { await Task.Delay(1); @@ -492,17 +628,15 @@ namespace SMGen.Data.Services return answ; } - - - /// /// Valuta un file di ruoles x ingressi 2 eventi e restituisce esito /// /// Path file *.rul da processare /// Indica se salvare sul DB + /// Indica se processare parte state (x state machine stati) /// /// - public async Task EvalIn2EvRuleFile(FilesClass currFile, bool saveToDb) + public async Task EvalIn2EvRuleFile(FilesClass currFile, bool saveToDb, bool doProcState) { await Task.Delay(1); Dictionary evSt2Change = new Dictionary(); @@ -542,7 +676,7 @@ namespace SMGen.Data.Services var sz_tokens = line.Split(":"); - var sz_temp = sz_tokens[0].Trim(); + var sz_temp = sz_tokens[0].Trim().ToUpper(); switch (sz_temp) { case "$DEFINITIONS": @@ -637,7 +771,7 @@ namespace SMGen.Data.Services } } - evSt2Change = await modFile(currFile, false); + evSt2Change = await modFile(currFile, false, doProcState); if (evSt2Change.Count() == 0) { @@ -708,8 +842,14 @@ namespace SMGen.Data.Services return currFile; } - - public async Task> modFile(FilesClass file, bool doProc) + /// + /// Modifica il file in oggetto + /// + /// + /// + /// Necessaria modifica stati (x state machine stati) + /// + public async Task> modFile(FilesClass file, bool doProc, bool doProcState) { Dictionary evSt2Change = new Dictionary(); @@ -727,19 +867,22 @@ namespace SMGen.Data.Services { if (!line.StartsWith("$EVENT") && !line.StartsWith("#") && line.StartsWith("$STATE")) { - var lineSplit = line.Split(":"); - if (lineSplit.Count() >= 3) + if (doProcState) { - if (!statesFromDb.ContainsKey(int.Parse(lineSplit[1].Trim()))) + var lineSplit = line.Split(":"); + if (lineSplit.Count() >= 3) { - errMsg = $"Lo stato {lineSplit[1].Trim()}: {lineSplit[2].Trim()} non è presente in AnagraficaStati sul DB"; - file.errorMsgs.Add(errMsg); - file.isOk = false; - } - else if (statesFromDb[int.Parse(lineSplit[1].Trim())] != lineSplit[2].Trim()) - { - fileTxt = fileTxt.Replace(lineSplit[2].Trim(), statesFromDb[int.Parse(lineSplit[1].Trim())]); - evSt2Change.Add(lineSplit[2].Trim(), lineSplit[0].Trim()); + if (!statesFromDb.ContainsKey(int.Parse(lineSplit[1].Trim()))) + { + errMsg = $"Lo stato {lineSplit[1].Trim()}: {lineSplit[2].Trim()} non è presente in AnagraficaStati sul DB"; + file.errorMsgs.Add(errMsg); + file.isOk = false; + } + else if (statesFromDb[int.Parse(lineSplit[1].Trim())] != lineSplit[2].Trim()) + { + fileTxt = fileTxt.Replace(lineSplit[2].Trim(), statesFromDb[int.Parse(lineSplit[1].Trim())]); + evSt2Change.Add(lineSplit[2].Trim(), lineSplit[0].Trim()); + } } } } @@ -793,8 +936,12 @@ namespace SMGen.Data.Services /// /// Path file *.rul da processare /// Indica se salvare sul DB + /// + /// + /// + /// Indica se processare parte state (x state machine stati) /// - public async Task EvalIn2StateRuleFile(FilesClass currFile, bool saveToDb, bool calcItself, bool calcEmptyState, Core.Enum.ORDERTYPE orderType) + public async Task EvalIn2StateRuleFile(FilesClass currFile, bool saveToDb, bool calcItself, bool calcEmptyState, Core.Enum.ORDERTYPE orderType, bool doProcState) { await Task.Delay(1); Dictionary evSt2Change = new Dictionary(); @@ -940,7 +1087,7 @@ namespace SMGen.Data.Services Log.Error($"Eccezione durante la lettura del file {currFile.origFileName} alla riga {line}: {exc}{Environment.NewLine}"); } - evSt2Change = await modFile(currFile, false); + evSt2Change = await modFile(currFile, false, doProcState); if (evSt2Change.Count() == 0) { @@ -1060,7 +1207,9 @@ namespace SMGen.Data.Services { for (var i = 0; i <= n_states - 1; i++) { - sz_actual_state = Events_to_send.FirstOrDefault(x => x.Value == i).Key; + // verificare qui: non dovrebbe essere vente_to_send ma stati!!!! + //sz_actual_state = Events_to_send.FirstOrDefault(x => x.Value == i).Key; + sz_actual_state = StatesAll.FirstOrDefault(x => x.Value == i).Key; //ciclo negli ingressi for (n_input = 0; n_input <= (Math.Pow(2, n_bits) - 1); n_input++) diff --git a/SMGen/Components/FilesList.razor b/SMGen/Components/FilesList.razor index dca53eb..0a97ee9 100644 --- a/SMGen/Components/FilesList.razor +++ b/SMGen/Components/FilesList.razor @@ -21,87 +21,96 @@ - @foreach (var item in Files) + @if (Files == null || Files.Count == 0) { - - @item.Key - @if (item.Value.isOk) - { - - - - + +
Nessun file trovato
+ + } + else + { + foreach (var item in Files) + { + + @item.Key + @if (item.Value.isOk) + { + + + + - } - else - { - - - - - @if (item.Value.calcRunning) - { - - } - else - { - - } - - @if (!hasBit) - { - - @**@ - - - } - @if (item.Value.errorMsgs.Count > 0) - { - - - } else - { } - } - - @if (FileLines != null && FileLines.statesOK.Count > 0 && FileLines.eventsOK.Count > 0 && FileLines.lines.Count > 0 && item.Value.tempFileName == FileLines.file) - { -
-
-
-

STATI

-
-
- @foreach (var line in FileLines.lines) + { + + + + + @if (item.Value.calcRunning) { - @if (line.StartsWith("$STATE")) - { - @line -
- } + } -
-
-
-
-

EVENTI

-
-
- @foreach (var line in FileLines.lines) + else { - @if (line.StartsWith("$EVENT")) + + } + + @if (!hasBit) + { + + @**@ + + + } + @if (item.Value.errorMsgs.Count > 0) + { + + + + } + else + { } + } + + @if (FileLines != null && FileLines.statesOK.Count > 0 && FileLines.eventsOK.Count > 0 && FileLines.lines.Count > 0 && item.Value.tempFileName == FileLines.file) + { +
+
+
+

STATI

+
+
+ @foreach (var line in FileLines.lines) { -
- - @line + @if (line.StartsWith("$STATE")) + { + @line
-
+ } } - } +
+
+
+
+

EVENTI

+
+
+ @foreach (var line in FileLines.lines) + { + @if (line.StartsWith("$EVENT")) + { +
+ + @line +
+
+ } + } +
-
+ } } } @@ -117,9 +126,9 @@
diff --git a/SMGen/Properties/PublishProfiles/IIS-PROD.pubxml.user b/SMGen/Properties/PublishProfiles/IIS-PROD.pubxml.user index 8ed7f0e..c7d07ee 100644 --- a/SMGen/Properties/PublishProfiles/IIS-PROD.pubxml.user +++ b/SMGen/Properties/PublishProfiles/IIS-PROD.pubxml.user @@ -4,7 +4,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121. --> - True|2023-07-24T14:24:14.2770302Z;True|2023-07-24T16:23:20.6455643+02:00;True|2023-05-22T15:35:59.9735292+02:00;False|2023-05-22T15:33:39.4808724+02:00;True|2023-05-11T17:36:48.1468628+02:00; + True|2024-09-17T17:25:38.1089716Z||;True|2024-09-17T17:30:03.3866876+02:00||;True|2023-07-24T16:24:14.2770302+02:00||;True|2023-07-24T16:23:20.6455643+02:00||;True|2023-05-22T15:35:59.9735292+02:00||;False|2023-05-22T15:33:39.4808724+02:00||;True|2023-05-11T17:36:48.1468628+02:00||; AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAHBJL+AjnSkKKQcJBrmvYDwAAAAACAAAAAAADZgAAwAAAABAAAABqHjtCI4r9HP4to5TPRtU/AAAAAASAAACgAAAAEAAAAGWTrj6ykvtUZnIZTp5COsMYAAAAHkol9Zhdo3QCFNYyIvyJViyIyNSW1oNCFAAAAEvXT2wDdsDBGFpVXvR5NVA172tk diff --git a/SMGen/SMGen.csproj b/SMGen/SMGen.csproj index 06aa72c..d9c7b66 100644 --- a/SMGen/SMGen.csproj +++ b/SMGen/SMGen.csproj @@ -5,7 +5,7 @@ enable enable State Machine Generator - 0.9.2408.1918 + 0.9.2409.1719 diff --git a/SMGen/Shared/NavMenu.razor b/SMGen/Shared/NavMenu.razor index e4fabda..90635a8 100644 --- a/SMGen/Shared/NavMenu.razor +++ b/SMGen/Shared/NavMenu.razor @@ -16,27 +16,32 @@
+