Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/mes/mapo/Mapo-IOB into develop
This commit is contained in:
+217
-186
@@ -1,22 +1,37 @@
|
||||
using EgwCoreLib.Razor;
|
||||
using Microsoft.AspNetCore.Components.Forms;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.AspNetCore.Components.Forms;
|
||||
using NLog;
|
||||
using SMGen.Data;
|
||||
using SMGen.Data.DbModels;
|
||||
using SMGen.Data.Services;
|
||||
using SMGen.Data;
|
||||
using Microsoft.VisualBasic;
|
||||
using NLog;
|
||||
|
||||
namespace SMGen.Pages
|
||||
{
|
||||
public partial class SMEvent2State
|
||||
{
|
||||
#region Protected Fields
|
||||
|
||||
protected static Logger Log = LogManager.GetCurrentClassLogger();
|
||||
protected SelectSMIn2EvParams currFilter = new SelectSMIn2EvParams();
|
||||
|
||||
protected DataPager? pagerSMIn2Ev = null!;
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
protected bool b_rules_definition { get; set; } = false;
|
||||
|
||||
protected static Logger Log = LogManager.GetCurrentClassLogger();
|
||||
protected bool calcEmptyState
|
||||
{
|
||||
get => conf.GetValue<bool>("SetupOptions:DoCalcEmptyState");
|
||||
}
|
||||
|
||||
protected bool calcItself
|
||||
{
|
||||
get => conf.GetValue<bool>("SetupOptions:DoCalcItself");
|
||||
}
|
||||
|
||||
[Inject]
|
||||
protected IConfiguration conf { get; set; } = null!;
|
||||
@@ -24,29 +39,14 @@ namespace SMGen.Pages
|
||||
[Inject]
|
||||
protected IWebHostEnvironment env { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
protected SMGDataService SMGDService { get; set; } = null!;
|
||||
|
||||
protected List<string> Events_to_send { get; set; } = new List<string>();
|
||||
|
||||
protected List<AnagEventiModelTemp> events2Add { get; set; } = new List<AnagEventiModelTemp>();
|
||||
|
||||
protected List<string> fileLines { get; set; } = new List<string>();
|
||||
|
||||
private Dictionary<string, bool> filesStatus
|
||||
{
|
||||
get => currFilter.FilesStatus;
|
||||
set => currFilter.FilesStatus = value;
|
||||
}
|
||||
private Dictionary<string, string> files2Download
|
||||
{
|
||||
get => currFilter.Files2Download;
|
||||
set => currFilter.Files2Download = value;
|
||||
}
|
||||
|
||||
protected Dictionary<string, string> files2Read { get; set; } = new Dictionary<string, string>();
|
||||
|
||||
protected List<TransizioneIngressiModelTemp> TranInList2add { get; set; } = new List<TransizioneIngressiModelTemp>();
|
||||
|
||||
protected string n_state_machine_index { get; set; } = "";
|
||||
|
||||
protected int n_states { get; set; } = 0;
|
||||
@@ -59,29 +59,36 @@ namespace SMGen.Pages
|
||||
{
|
||||
get => conf.GetValue<string>("ServerConf:ProcCsvRootPath");
|
||||
}
|
||||
protected bool calcItself
|
||||
{
|
||||
get => conf.GetValue<bool>("SetupOptions:DoCalcItself");
|
||||
}
|
||||
protected bool calcEmptyState
|
||||
{
|
||||
get => conf.GetValue<bool>("SetupOptions:DoCalcEmptyState");
|
||||
}
|
||||
|
||||
protected List<RuleClass> Rules { get; set; } = new List<RuleClass>();
|
||||
|
||||
[Inject]
|
||||
protected SMGDataService SMGDService { get; set; } = null!;
|
||||
|
||||
protected List<string> States2Rules { get; set; } = new List<string>();
|
||||
|
||||
protected Dictionary<string, int> StatesAll { get; set; } = new Dictionary<string, int>();
|
||||
|
||||
protected Dictionary<string, int> StatesAll2 { get; set; } = new Dictionary<string, int>();
|
||||
|
||||
protected string statiCsvPath
|
||||
{
|
||||
get => conf.GetValue<string>("ServerConf:StatiCsvPath");
|
||||
}
|
||||
|
||||
protected List<RuleClass> Rules { get; set; } = new List<RuleClass>();
|
||||
protected Dictionary<string, int> StatesAll { get; set; } = new Dictionary<string, int>();
|
||||
protected Dictionary<string, int> StatesAll2 { get; set; } = new Dictionary<string, int>();
|
||||
protected List<string> States2Rules { get; set; } = new List<string>();
|
||||
|
||||
//protected string sz_file2Read { get; set; } = "D:\\Repo\\Mapo-IOB\\StateMachine\\_DEFAULT\\60_STD_MACHINE.rul";
|
||||
protected string sz_file2Read { get; set; } = "";
|
||||
|
||||
protected string sz_file2Write { get; set; } = "prova.csv";
|
||||
|
||||
protected string sz_state_machine_name { get; set; } = "";
|
||||
|
||||
protected List<TransizioneIngressiModelTemp> TranInList2add { get; set; } = new List<TransizioneIngressiModelTemp>();
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected bool checkDirExist(string dir)
|
||||
{
|
||||
bool answ = false;
|
||||
@@ -106,100 +113,6 @@ namespace SMGen.Pages
|
||||
return answ;
|
||||
}
|
||||
|
||||
protected async Task Read_rule_file_transitions()
|
||||
{
|
||||
foreach (var item in files2Read)
|
||||
{
|
||||
sz_file2Read = item.Value;
|
||||
|
||||
using (StreamReader sr = new StreamReader(sz_file2Read))
|
||||
{
|
||||
StatesAll.Clear();
|
||||
Events_to_send.Clear();
|
||||
Rules.Clear();
|
||||
string line = "";
|
||||
while ((line = await sr.ReadLineAsync().ConfigureAwait(false)) != null)
|
||||
{
|
||||
if (!line.StartsWith("#") && !string.IsNullOrEmpty(line))
|
||||
{
|
||||
var sz_tokens = line.Split(":");
|
||||
|
||||
var sz_temp = sz_tokens[0].Trim();
|
||||
switch (sz_temp)
|
||||
{
|
||||
case "$DEFINITIONS":
|
||||
b_rules_definition = false;
|
||||
break;
|
||||
|
||||
case "$NAME":
|
||||
sz_state_machine_name = sz_tokens[1].Trim();
|
||||
break;
|
||||
|
||||
case "$IDX":
|
||||
n_state_machine_index = sz_tokens[1].Trim();
|
||||
break;
|
||||
#if false
|
||||
|
||||
case "$N_STATES":
|
||||
n_states = int.Parse(sz_tokens[1].Trim());
|
||||
break;
|
||||
#endif
|
||||
|
||||
case "$STATE":
|
||||
StatesAll.Add(sz_tokens[2].Trim().ToUpper(), int.Parse(sz_tokens[1].Trim().ToUpper()));
|
||||
break;
|
||||
|
||||
case "$EVENT":
|
||||
Events_to_send.Add(sz_tokens[2].Trim().ToUpper());
|
||||
var newEvent = new AnagEventiModelTemp()
|
||||
{
|
||||
IdxTipo = int.Parse(sz_tokens[1].Trim().ToUpper()),
|
||||
Nome = sz_tokens[2].Trim().ToUpper()
|
||||
};
|
||||
|
||||
events2Add.Add(newEvent);
|
||||
break;
|
||||
|
||||
case "$RULES":
|
||||
b_rules_definition = true;
|
||||
break;
|
||||
|
||||
case "$DO":
|
||||
b_rules_definition = false;
|
||||
var isOk = checkDirExist(Path.Combine(procRootDir, statiCsvPath));
|
||||
if (isOk)
|
||||
{
|
||||
var fileName = $"{item.Key.Split(".")[0]}.csv";
|
||||
evaluate_transitions($"{Path.Combine(procRootDir, statiCsvPath, fileName)}", item.Key);
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
//fileLines.Add(lineSplit[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
protected async void evaluate_transitions(string sz_file2Write, string origFileName)
|
||||
{
|
||||
TranInList2add.Clear();
|
||||
@@ -219,7 +132,6 @@ namespace SMGen.Pages
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//ciclo negli stati
|
||||
try
|
||||
{
|
||||
@@ -270,7 +182,6 @@ namespace SMGen.Pages
|
||||
|
||||
TranInList2add.Add(newTranIn);
|
||||
}
|
||||
|
||||
}
|
||||
exitFor = true;
|
||||
}
|
||||
@@ -293,9 +204,177 @@ namespace SMGen.Pages
|
||||
}
|
||||
}
|
||||
|
||||
protected void ForceReload(int newNum)
|
||||
{
|
||||
numRecord = newNum;
|
||||
}
|
||||
|
||||
protected void ForceReloadPage(int newNum)
|
||||
{
|
||||
currPage = newNum;
|
||||
}
|
||||
|
||||
protected async Task pgResetReq(bool doReset)
|
||||
{
|
||||
if (doReset)
|
||||
{
|
||||
await Task.Delay(1);
|
||||
if (pagerSMIn2Ev != null)
|
||||
{
|
||||
pagerSMIn2Ev.resetCurrPage();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected async Task Read_rule_file_transitions()
|
||||
{
|
||||
foreach (var item in files2Read)
|
||||
{
|
||||
sz_file2Read = item.Value;
|
||||
|
||||
using (StreamReader sr = new StreamReader(sz_file2Read))
|
||||
{
|
||||
StatesAll.Clear();
|
||||
Events_to_send.Clear();
|
||||
Rules.Clear();
|
||||
string line = "";
|
||||
while ((line = await sr.ReadLineAsync().ConfigureAwait(false)) != null)
|
||||
{
|
||||
if (!line.StartsWith("#") && !string.IsNullOrEmpty(line))
|
||||
{
|
||||
var sz_tokens = line.Split(":");
|
||||
|
||||
var sz_temp = sz_tokens[0].Trim();
|
||||
switch (sz_temp)
|
||||
{
|
||||
case "$DEFINITIONS":
|
||||
b_rules_definition = false;
|
||||
break;
|
||||
|
||||
case "$NAME":
|
||||
sz_state_machine_name = sz_tokens[1].Trim();
|
||||
break;
|
||||
|
||||
case "$IDX":
|
||||
n_state_machine_index = sz_tokens[1].Trim();
|
||||
break;
|
||||
#if false
|
||||
|
||||
case "$N_STATES":
|
||||
n_states = int.Parse(sz_tokens[1].Trim());
|
||||
break;
|
||||
#endif
|
||||
|
||||
case "$STATE":
|
||||
StatesAll.Add(sz_tokens[2].Trim().ToUpper(), int.Parse(sz_tokens[1].Trim().ToUpper()));
|
||||
break;
|
||||
|
||||
case "$EVENT":
|
||||
Events_to_send.Add(sz_tokens[2].Trim().ToUpper());
|
||||
var newEvent = new AnagEventiModelTemp()
|
||||
{
|
||||
IdxTipo = int.Parse(sz_tokens[1].Trim().ToUpper()),
|
||||
Nome = sz_tokens[2].Trim().ToUpper()
|
||||
};
|
||||
|
||||
events2Add.Add(newEvent);
|
||||
break;
|
||||
|
||||
case "$RULES":
|
||||
b_rules_definition = true;
|
||||
break;
|
||||
|
||||
case "$DO":
|
||||
b_rules_definition = false;
|
||||
var isOk = checkDirExist(Path.Combine(procRootDir, statiCsvPath));
|
||||
if (isOk)
|
||||
{
|
||||
var fileName = $"{item.Key.Split(".")[0]}.csv";
|
||||
evaluate_transitions($"{Path.Combine(procRootDir, statiCsvPath, fileName)}", item.Key);
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
//fileLines.Add(lineSplit[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected async Task updateFilter(SelectSMIn2EvParams newParams)
|
||||
{
|
||||
await Task.Delay(1);
|
||||
currPage = 1;
|
||||
// salvo comunque filtro reparto x utente
|
||||
await Task.Delay(1);
|
||||
await InvokeAsync(() => StateHasChanged());
|
||||
currFilter = newParams;
|
||||
}
|
||||
|
||||
protected void UpdateTotCount(int newTotCount)
|
||||
{
|
||||
totalCount = newTotCount;
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Properties
|
||||
|
||||
private int currPage
|
||||
{
|
||||
get => currFilter.CurrPage;
|
||||
set => currFilter.CurrPage = value;
|
||||
}
|
||||
|
||||
private Dictionary<string, string> files2Download
|
||||
{
|
||||
get => currFilter.Files2Download;
|
||||
set => currFilter.Files2Download = value;
|
||||
}
|
||||
|
||||
private Dictionary<string, bool> filesStatus
|
||||
{
|
||||
get => currFilter.FilesStatus;
|
||||
set => currFilter.FilesStatus = value;
|
||||
}
|
||||
|
||||
private int numRecord
|
||||
{
|
||||
get => currFilter.NumRec;
|
||||
set => currFilter.NumRec = value;
|
||||
}
|
||||
|
||||
private int totalCount
|
||||
{
|
||||
get => currFilter.TotCount;
|
||||
set => currFilter.TotCount = value;
|
||||
}
|
||||
|
||||
#endregion Private Properties
|
||||
|
||||
#region Private Methods
|
||||
|
||||
/// <summary>
|
||||
/// Procedee a bonificare la cartella di upload dei files + vecchi di 3 mesi
|
||||
/// Procedee a bonificare la cartella di upload dei files + vecchi di 3 mesi
|
||||
/// </summary>
|
||||
private void deleteOldFiles(string dirPath)
|
||||
{
|
||||
@@ -311,46 +390,6 @@ namespace SMGen.Pages
|
||||
}
|
||||
}
|
||||
}
|
||||
private int totalCount
|
||||
{
|
||||
get => currFilter.TotCount;
|
||||
set => currFilter.TotCount = value;
|
||||
}
|
||||
private int numRecord
|
||||
{
|
||||
get => currFilter.NumRec;
|
||||
set => currFilter.NumRec = value;
|
||||
}
|
||||
private int currPage
|
||||
{
|
||||
get => currFilter.CurrPage;
|
||||
set => currFilter.CurrPage = value;
|
||||
}
|
||||
protected void UpdateTotCount(int newTotCount)
|
||||
{
|
||||
totalCount = newTotCount;
|
||||
}
|
||||
protected async Task updateFilter(SelectSMIn2EvParams newParams)
|
||||
{
|
||||
await Task.Delay(1);
|
||||
currPage = 1;
|
||||
// salvo comunque filtro reparto x utente
|
||||
await Task.Delay(1);
|
||||
await InvokeAsync(() => StateHasChanged());
|
||||
currFilter = newParams;
|
||||
}
|
||||
|
||||
protected async Task pgResetReq(bool doReset)
|
||||
{
|
||||
if (doReset)
|
||||
{
|
||||
await Task.Delay(1);
|
||||
if (pagerSMIn2Ev != null)
|
||||
{
|
||||
pagerSMIn2Ev.resetCurrPage();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//// va dopo
|
||||
//private StreamWriter objWriter { get; set; };
|
||||
@@ -385,16 +424,15 @@ namespace SMGen.Pages
|
||||
if (!Directory.Exists(pathDir))
|
||||
{
|
||||
Directory.CreateDirectory(pathDir);
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.Info($"Creato directory {pathDir}");
|
||||
}
|
||||
|
||||
//creo file
|
||||
await using FileStream fs = new(pathFile, FileMode.Create);
|
||||
|
||||
//copio il contenuto del file
|
||||
await file.OpenReadStream(maxFileSize).CopyToAsync(fs);
|
||||
using (FileStream fs = new(pathFile, FileMode.Create))
|
||||
{
|
||||
//copio il contenuto del file
|
||||
await file.OpenReadStream(maxFileSize).CopyToAsync(fs);
|
||||
}
|
||||
if (file.Name.Contains(".rul"))
|
||||
{
|
||||
files2Read.Add(file.Name, pathFile);
|
||||
@@ -412,14 +450,7 @@ namespace SMGen.Pages
|
||||
}
|
||||
}
|
||||
}
|
||||
protected void ForceReload(int newNum)
|
||||
{
|
||||
numRecord = newNum;
|
||||
}
|
||||
|
||||
protected void ForceReloadPage(int newNum)
|
||||
{
|
||||
currPage = newNum;
|
||||
}
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
+230
-197
@@ -1,9 +1,7 @@
|
||||
using EgwCoreLib.Razor;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.AspNetCore.Components.Forms;
|
||||
using Microsoft.AspNetCore.Mvc.RazorPages;
|
||||
using Microsoft.Extensions.ObjectPool;
|
||||
using Org.BouncyCastle.Utilities;
|
||||
using NLog;
|
||||
using SMGen.Data;
|
||||
using SMGen.Data.DbModels;
|
||||
using SMGen.Data.Services;
|
||||
@@ -13,11 +11,23 @@ namespace SMGen.Pages
|
||||
{
|
||||
public partial class SMIn2Event
|
||||
{
|
||||
#region Protected Fields
|
||||
|
||||
protected SelectSMIn2EvParams currFilter = new SelectSMIn2EvParams();
|
||||
|
||||
protected DataPager? pagerSMIn2Ev = null!;
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
protected bool b_rules_definition { get; set; } = false;
|
||||
|
||||
protected string bitCsvPath
|
||||
{
|
||||
get => conf.GetValue<string>("ServerConf:BitCsvPath");
|
||||
}
|
||||
|
||||
protected List<string> Bits { get; set; } = new List<string>();
|
||||
|
||||
[Inject]
|
||||
@@ -26,32 +36,14 @@ namespace SMGen.Pages
|
||||
[Inject]
|
||||
protected IWebHostEnvironment env { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
protected SMGDataService SMGDService { get; set; } = null!;
|
||||
|
||||
protected List<string> Events_to_send { get; set; } = new List<string>();
|
||||
|
||||
protected List<AnagEventiModelTemp> events2Add { get; set; } = new List<AnagEventiModelTemp>();
|
||||
|
||||
protected List<string> fileLines { get; set; } = new List<string>();
|
||||
|
||||
//protected Dictionary<string, string> files2Download { get; set; } = new Dictionary<string, string>();
|
||||
|
||||
//protected Dictionary<string, bool> filesStatus { get; set; } = new Dictionary<string, bool>();
|
||||
private Dictionary<string, bool> filesStatus
|
||||
{
|
||||
get => currFilter.FilesStatus;
|
||||
set => currFilter.FilesStatus = value;
|
||||
}
|
||||
private Dictionary<string, string> files2Download
|
||||
{
|
||||
get => currFilter.Files2Download;
|
||||
set => currFilter.Files2Download = value;
|
||||
}
|
||||
|
||||
protected Dictionary<string, string> files2Read { get; set; } = new Dictionary<string, string>();
|
||||
|
||||
protected List<TransizioneIngressiModelTemp> TranInList2add { get; set; } = new List<TransizioneIngressiModelTemp>();
|
||||
|
||||
protected int n_bits { get; set; } = 0;
|
||||
|
||||
protected string n_state_machine_index { get; set; } = "";
|
||||
@@ -66,18 +58,29 @@ namespace SMGen.Pages
|
||||
{
|
||||
get => conf.GetValue<string>("ServerConf:ProcCsvRootPath");
|
||||
}
|
||||
protected string bitCsvPath
|
||||
{
|
||||
get => conf.GetValue<string>("ServerConf:BitCsvPath");
|
||||
}
|
||||
|
||||
protected List<RuleClass> Rules { get; set; } = new List<RuleClass>();
|
||||
|
||||
[Inject]
|
||||
protected SMGDataService SMGDService { get; set; } = null!;
|
||||
|
||||
//protected Dictionary<string, string> files2Download { get; set; } = new Dictionary<string, string>();
|
||||
|
||||
protected List<string> States { get; set; } = new List<string>();
|
||||
|
||||
//protected string sz_file2Read { get; set; } = "D:\\Repo\\Mapo-IOB\\StateMachine\\_DEFAULT\\60_STD_MACHINE.rul";
|
||||
protected string sz_file2Read { get; set; } = "";
|
||||
|
||||
protected string sz_file2Write { get; set; } = "prova.csv";
|
||||
|
||||
protected string sz_state_machine_name { get; set; } = "";
|
||||
|
||||
protected List<TransizioneIngressiModelTemp> TranInList2add { get; set; } = new List<TransizioneIngressiModelTemp>();
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected bool checkDirExist(string dir)
|
||||
{
|
||||
bool answ = false;
|
||||
@@ -102,122 +105,10 @@ namespace SMGen.Pages
|
||||
return answ;
|
||||
}
|
||||
|
||||
|
||||
|
||||
protected async Task Read_rule_file_transitions()
|
||||
protected async Task evaluate_transitions(string sz_file2Write, string origFileName)
|
||||
{
|
||||
foreach (var item in files2Read)
|
||||
{
|
||||
//await Task.Delay(10);
|
||||
sz_state_machine_name = "";
|
||||
n_state_machine_index = "";
|
||||
n_states = 0;
|
||||
n_bits = 0;
|
||||
States.Clear();
|
||||
Bits.Clear();
|
||||
Events_to_send.Clear();
|
||||
Rules.Clear();
|
||||
sz_file2Read = item.Value;
|
||||
await Task.Delay(1);
|
||||
|
||||
using (StreamReader sr = new StreamReader(sz_file2Read))
|
||||
{
|
||||
string line = "";
|
||||
while ((line = await sr.ReadLineAsync().ConfigureAwait(false)) != null)
|
||||
{
|
||||
if (!line.StartsWith("#") && !string.IsNullOrEmpty(line))
|
||||
{
|
||||
var sz_tokens = line.Split(":");
|
||||
|
||||
var sz_temp = sz_tokens[0].Trim();
|
||||
switch (sz_temp)
|
||||
{
|
||||
case "$DEFINITIONS":
|
||||
b_rules_definition = false;
|
||||
break;
|
||||
|
||||
case "$NAME":
|
||||
sz_state_machine_name = sz_tokens[1].Trim();
|
||||
break;
|
||||
|
||||
case "$IDX":
|
||||
n_state_machine_index = sz_tokens[1].Trim();
|
||||
break;
|
||||
|
||||
case "$N_STATES":
|
||||
n_states = int.Parse(sz_tokens[1].Trim());
|
||||
break;
|
||||
|
||||
case "$N_BITS":
|
||||
n_bits = int.Parse(sz_tokens[1].Trim());
|
||||
break;
|
||||
|
||||
case "$BIT":
|
||||
Bits.Add(sz_tokens[2].Trim().ToUpper());
|
||||
break;
|
||||
|
||||
case "$STATE":
|
||||
States.Add(sz_tokens[2].Trim().ToUpper());
|
||||
break;
|
||||
|
||||
case "$EVENT":
|
||||
Events_to_send.Add(sz_tokens[2].Trim().ToUpper());
|
||||
var newEvent = new AnagEventiModelTemp()
|
||||
{
|
||||
IdxTipo = int.Parse(sz_tokens[1].Trim().ToUpper()),
|
||||
Nome = sz_tokens[2].Trim().ToUpper()
|
||||
};
|
||||
|
||||
events2Add.Add(newEvent);
|
||||
break;
|
||||
|
||||
case "$RULES":
|
||||
b_rules_definition = true;
|
||||
break;
|
||||
|
||||
case "$DO":
|
||||
b_rules_definition = false;
|
||||
var isOk = checkDirExist(procRootDir);
|
||||
if (isOk)
|
||||
{
|
||||
var fileName = $"{item.Key.Split(".")[0]}.csv";
|
||||
evaluate_transitions($"{Path.Combine(procRootDir, bitCsvPath, fileName)}", item.Key);
|
||||
await SMGDService.AnagEventinInsert(events2Add);
|
||||
await Task.Delay(1);
|
||||
filesStatus[item.Key] = await SMGDService.TranInInsert(TranInList2add, int.Parse(n_state_machine_index));
|
||||
|
||||
|
||||
if (!files2Download.ContainsKey(item.Key))
|
||||
{
|
||||
files2Download.Add(item.Key, sz_file2Write);
|
||||
}
|
||||
await InvokeAsync(() => StateHasChanged());
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
if (b_rules_definition)
|
||||
{
|
||||
var temp_rule = new RuleClass()
|
||||
{
|
||||
state = sz_temp.Trim().ToUpper(),
|
||||
expression = sz_tokens[1].Trim().ToUpper(),
|
||||
next_state = sz_tokens[2].Trim().ToUpper(),
|
||||
event_to_send = sz_tokens[3].Trim().ToUpper()
|
||||
};
|
||||
|
||||
Rules.Add(temp_rule);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
//fileLines.Add(lineSplit[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
protected async void evaluate_transitions(string sz_file2Write, string origFileName)
|
||||
{
|
||||
TranInList2add.Clear();
|
||||
//events2Add.Clear();
|
||||
|
||||
@@ -228,7 +119,6 @@ namespace SMGen.Pages
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
|
||||
sb.AppendLine("IdxFamigliaIngresso;IdxMicroStato;ValoreIngresso;IdxTipoEvento;next_IdxMicroStato");
|
||||
string sz_actual_state = "";
|
||||
string sz_actual_bit = "";
|
||||
@@ -334,7 +224,7 @@ namespace SMGen.Pages
|
||||
using (StreamWriter sw = new StreamWriter(sz_file2Write))
|
||||
{
|
||||
sw.Write(sb.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
@@ -342,9 +232,196 @@ namespace SMGen.Pages
|
||||
}
|
||||
}
|
||||
|
||||
protected void ForceReload(int newNum)
|
||||
{
|
||||
numRecord = newNum;
|
||||
}
|
||||
|
||||
protected void ForceReloadPage(int newNum)
|
||||
{
|
||||
currPage = newNum;
|
||||
}
|
||||
|
||||
protected async Task pgResetReq(bool doReset)
|
||||
{
|
||||
if (doReset)
|
||||
{
|
||||
await Task.Delay(1);
|
||||
if (pagerSMIn2Ev != null)
|
||||
{
|
||||
pagerSMIn2Ev.resetCurrPage();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected async Task Read_rule_file_transitions()
|
||||
{
|
||||
foreach (var item in files2Read)
|
||||
{
|
||||
//await Task.Delay(10);
|
||||
sz_state_machine_name = "";
|
||||
n_state_machine_index = "";
|
||||
n_states = 0;
|
||||
n_bits = 0;
|
||||
States.Clear();
|
||||
Bits.Clear();
|
||||
Events_to_send.Clear();
|
||||
Rules.Clear();
|
||||
sz_file2Read = item.Value;
|
||||
|
||||
using (StreamReader sr = new StreamReader(sz_file2Read))
|
||||
{
|
||||
string line = "";
|
||||
while ((line = await sr.ReadLineAsync().ConfigureAwait(false)) != null)
|
||||
{
|
||||
if (!line.StartsWith("#") && !string.IsNullOrEmpty(line))
|
||||
{
|
||||
var sz_tokens = line.Split(":");
|
||||
|
||||
var sz_temp = sz_tokens[0].Trim();
|
||||
switch (sz_temp)
|
||||
{
|
||||
case "$DEFINITIONS":
|
||||
b_rules_definition = false;
|
||||
break;
|
||||
|
||||
case "$NAME":
|
||||
sz_state_machine_name = sz_tokens[1].Trim();
|
||||
break;
|
||||
|
||||
case "$IDX":
|
||||
n_state_machine_index = sz_tokens[1].Trim();
|
||||
break;
|
||||
|
||||
case "$N_STATES":
|
||||
n_states = int.Parse(sz_tokens[1].Trim());
|
||||
break;
|
||||
|
||||
case "$N_BITS":
|
||||
n_bits = int.Parse(sz_tokens[1].Trim());
|
||||
break;
|
||||
|
||||
case "$BIT":
|
||||
Bits.Add(sz_tokens[2].Trim().ToUpper());
|
||||
break;
|
||||
|
||||
case "$STATE":
|
||||
States.Add(sz_tokens[2].Trim().ToUpper());
|
||||
break;
|
||||
|
||||
case "$EVENT":
|
||||
Events_to_send.Add(sz_tokens[2].Trim().ToUpper());
|
||||
var newEvent = new AnagEventiModelTemp()
|
||||
{
|
||||
IdxTipo = int.Parse(sz_tokens[1].Trim().ToUpper()),
|
||||
Nome = sz_tokens[2].Trim().ToUpper()
|
||||
};
|
||||
|
||||
events2Add.Add(newEvent);
|
||||
break;
|
||||
|
||||
case "$RULES":
|
||||
b_rules_definition = true;
|
||||
break;
|
||||
|
||||
case "$DO":
|
||||
b_rules_definition = false;
|
||||
var isOk = checkDirExist(procRootDir);
|
||||
if (isOk)
|
||||
{
|
||||
var fileName = $"{item.Key.Split(".")[0]}.csv";
|
||||
evaluate_transitions($"{Path.Combine(procRootDir, bitCsvPath, fileName)}", item.Key);
|
||||
await SMGDService.AnagEventinInsert(events2Add);
|
||||
await Task.Delay(1);
|
||||
filesStatus[item.Key] = await SMGDService.TranInInsert(TranInList2add, int.Parse(n_state_machine_index));
|
||||
|
||||
if (!files2Download.ContainsKey(item.Key))
|
||||
{
|
||||
files2Download.Add(item.Key, sz_file2Write);
|
||||
}
|
||||
await InvokeAsync(() => StateHasChanged());
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
if (b_rules_definition)
|
||||
{
|
||||
var temp_rule = new RuleClass()
|
||||
{
|
||||
state = sz_temp.Trim().ToUpper(),
|
||||
expression = sz_tokens[1].Trim().ToUpper(),
|
||||
next_state = sz_tokens[2].Trim().ToUpper(),
|
||||
event_to_send = sz_tokens[3].Trim().ToUpper()
|
||||
};
|
||||
|
||||
Rules.Add(temp_rule);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
//fileLines.Add(lineSplit[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected async Task updateFilter(SelectSMIn2EvParams newParams)
|
||||
{
|
||||
await Task.Delay(1);
|
||||
currPage = 1;
|
||||
// salvo comunque filtro reparto x utente
|
||||
await Task.Delay(1);
|
||||
await InvokeAsync(() => StateHasChanged());
|
||||
currFilter = newParams;
|
||||
}
|
||||
|
||||
protected void UpdateTotCount(int newTotCount)
|
||||
{
|
||||
totalCount = newTotCount;
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Properties
|
||||
|
||||
private int currPage
|
||||
{
|
||||
get => currFilter.CurrPage;
|
||||
set => currFilter.CurrPage = value;
|
||||
}
|
||||
|
||||
private Dictionary<string, string> files2Download
|
||||
{
|
||||
get => currFilter.Files2Download;
|
||||
set => currFilter.Files2Download = value;
|
||||
}
|
||||
|
||||
//protected Dictionary<string, bool> filesStatus { get; set; } = new Dictionary<string, bool>();
|
||||
private Dictionary<string, bool> filesStatus
|
||||
{
|
||||
get => currFilter.FilesStatus;
|
||||
set => currFilter.FilesStatus = value;
|
||||
}
|
||||
|
||||
private int numRecord
|
||||
{
|
||||
get => currFilter.NumRec;
|
||||
set => currFilter.NumRec = value;
|
||||
}
|
||||
|
||||
private int totalCount
|
||||
{
|
||||
get => currFilter.TotCount;
|
||||
set => currFilter.TotCount = value;
|
||||
}
|
||||
|
||||
#endregion Private Properties
|
||||
|
||||
#region Private Methods
|
||||
|
||||
/// <summary>
|
||||
/// Procedee a bonificare la cartella di upload dei files + vecchi di 3 mesi
|
||||
/// Procedee a bonificare la cartella di upload dei files + vecchi di 3 mesi
|
||||
/// </summary>
|
||||
private void deleteOldFiles(string dirPath)
|
||||
{
|
||||
@@ -360,46 +437,6 @@ namespace SMGen.Pages
|
||||
}
|
||||
}
|
||||
}
|
||||
private int totalCount
|
||||
{
|
||||
get => currFilter.TotCount;
|
||||
set => currFilter.TotCount = value;
|
||||
}
|
||||
private int numRecord
|
||||
{
|
||||
get => currFilter.NumRec;
|
||||
set => currFilter.NumRec = value;
|
||||
}
|
||||
private int currPage
|
||||
{
|
||||
get => currFilter.CurrPage;
|
||||
set => currFilter.CurrPage = value;
|
||||
}
|
||||
protected void UpdateTotCount(int newTotCount)
|
||||
{
|
||||
totalCount = newTotCount;
|
||||
}
|
||||
protected async Task updateFilter(SelectSMIn2EvParams newParams)
|
||||
{
|
||||
await Task.Delay(1);
|
||||
currPage = 1;
|
||||
// salvo comunque filtro reparto x utente
|
||||
await Task.Delay(1);
|
||||
await InvokeAsync(() => StateHasChanged());
|
||||
currFilter = newParams;
|
||||
}
|
||||
|
||||
protected async Task pgResetReq(bool doReset)
|
||||
{
|
||||
if (doReset)
|
||||
{
|
||||
await Task.Delay(1);
|
||||
if (pagerSMIn2Ev != null)
|
||||
{
|
||||
pagerSMIn2Ev.resetCurrPage();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//// va dopo
|
||||
//private StreamWriter objWriter { get; set; };
|
||||
@@ -434,16 +471,18 @@ namespace SMGen.Pages
|
||||
if (!Directory.Exists(pathDir))
|
||||
{
|
||||
Directory.CreateDirectory(pathDir);
|
||||
Log.Info($"Creato directory {pathDir}");
|
||||
}
|
||||
else
|
||||
|
||||
// creo file
|
||||
using (FileStream fs = new(pathFile, FileMode.Create))
|
||||
{
|
||||
// copio il contenuto del file
|
||||
await file.OpenReadStream(maxFileSize).CopyToAsync(fs);
|
||||
// scrivo log
|
||||
Log.Info($"Salvato file temp {pathFile}");
|
||||
}
|
||||
|
||||
//creo file
|
||||
await using FileStream fs = new(pathFile, FileMode.Create);
|
||||
|
||||
//copio il contenuto del file
|
||||
await file.OpenReadStream(maxFileSize).CopyToAsync(fs);
|
||||
if (file.Name.Contains(".rul"))
|
||||
{
|
||||
files2Read.Add(file.Name, pathFile);
|
||||
@@ -455,14 +494,8 @@ namespace SMGen.Pages
|
||||
}
|
||||
}
|
||||
}
|
||||
protected void ForceReload(int newNum)
|
||||
{
|
||||
numRecord = newNum;
|
||||
}
|
||||
protected static Logger Log = LogManager.GetCurrentClassLogger();
|
||||
|
||||
protected void ForceReloadPage(int newNum)
|
||||
{
|
||||
currPage = newNum;
|
||||
}
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -44,4 +44,10 @@
|
||||
<ProjectReference Include="..\SMGen.Data\SMGen.Data.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Update="logs\.placeholder">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
Reference in New Issue
Block a user