-sistemato salvataggio file json

This commit is contained in:
Demetrio Cassarino
2025-05-16 10:14:57 +02:00
parent 9865028f99
commit d1e95372e1
5 changed files with 107 additions and 157 deletions
@@ -25,7 +25,7 @@
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<ListBox ItemsSource="{Binding StrategySetupList}"
SelectedItem="{Binding sSelectedAISetUp}"
SelectedItem="{Binding SelStrategySetup}"
Style="{StaticResource Strategy_ListBox}">
<ListBox.ItemTemplate>
<DataTemplate DataType="{x:Type Optmizer:StrategySetup}">
@@ -1,5 +1,4 @@
Imports EgtWPFLib5
Imports EgtBEAMWALL.Core
Imports System.Windows.Forms
Imports System.Collections.ObjectModel
@@ -67,20 +66,15 @@ Public Class SaveAsStrategyVM
End Get
End Property
' File selezionato dalla lista AISetUpList
Private m_sSelectedAISetUp As StrategySetup
Public Property sSelectedAISetUp As StrategySetup
Private m_SelStrategySetup As StrategySetup = Map.refStrategyManagerVM.SelStrategySetup
Public Property SelStrategySetup As StrategySetup
Get
Return m_sSelectedAISetUp
Return Map.refStrategyManagerVM.SelStrategySetup
End Get
Set(value As StrategySetup)
m_sSelectedAISetUp = value
If Not IsNothing(m_sSelectedAISetUp) Then
m_sFileNameCustomConfig = m_sSelectedAISetUp.sName
CheckJsonFile()
End If
NotifyPropertyChanged(NameOf(sSelectedAISetUp))
NotifyPropertyChanged(NameOf(sFileNameCustomConfig))
m_SelStrategySetup = value
CheckJsonFile()
NotifyPropertyChanged(NameOf(SelStrategySetup))
End Set
End Property
@@ -130,17 +124,9 @@ Public Class SaveAsStrategyVM
''' Funzione che salva il file json CustomerConfig
''' </summary>
Public Sub SaveAs()
' Controllo se il file non è vuoto
Dim sFileNameCustomConfig As String = If(String.IsNullOrEmpty(m_sFileNameCustomConfig), CUSTOMERCONFIG_FILE, m_sFileNameCustomConfig)
' Crea il file JSON
'Map.refStrategyManagerVM.CreateCustumerConfigJsonFile(sFileNameCustomConfig)
' Se il file ha un nome valido, aggiorna la configurazione
If Not String.IsNullOrEmpty(m_sFileNameCustomConfig) Then
' Aggiungo nuovo file a combobox elenco file
Map.refStrategyManagerVM.SelStrategySetup.sName = sFileNameCustomConfig
'' Aggiungo alla lista nuovo file
'Map.refStrategyManagerVM.StrategySetupList.Add(sFileNameCustomConfig)
End If
m_SelStrategySetup.sName = sFileNameCustomConfig
m_SelStrategySetup.Write()
Map.refStrategyManagerVM.SelStrategySetup.sName = StrategySetupList(StrategySetupList.Count - 1).sName
RaiseEvent m_CloseWindow(DialogResult.Cancel)
End Sub
@@ -54,6 +54,8 @@ Public Class JsonAvailableStrategyFeature
#End Region ' Fields & Propeties
#Region "CONSTRUCTOR"
<JsonConstructor>
Sub New(sName As String, nPRC As Integer, nGRP As Integer)
m_sName = sName
@@ -70,6 +72,8 @@ Public Class JsonAvailableStrategyFeature
Next
End Sub
#End Region ' Constructor
End Class
'----------- Classe che fa riferimento alle Topologie delle Feature del file Json -----------
@@ -102,6 +106,8 @@ Public Class JsonAvailableTopology
#End Region ' Fields & Propeties
#Region "CONSTRUCTOR"
<JsonConstructor>
Sub New(sName As String)
m_sName = sName
@@ -114,6 +120,8 @@ Public Class JsonAvailableTopology
Next
End Sub
#End Region ' Constructor
End Class
'----------- Classe che fa alle Strategie delle Topologie delle Feature del file Json -----------
@@ -155,12 +163,12 @@ Public Class JsonAvailableStrategy
End Set
End Property
Private m_ParameterList As New ObservableCollection(Of JsonAvailableGenericParameter)
Public Property ParameterList As ObservableCollection(Of JsonAvailableGenericParameter)
Private m_ParameterList As New ObservableCollection(Of JsonAvailableStrategyParameter)
Public Property ParameterList As ObservableCollection(Of JsonAvailableStrategyParameter)
Get
Return m_ParameterList
End Get
Set(value As ObservableCollection(Of JsonAvailableGenericParameter))
Set(value As ObservableCollection(Of JsonAvailableStrategyParameter))
m_ParameterList = value
NotifyPropertyChanged(NameOf(ParameterList))
End Set
@@ -168,6 +176,8 @@ Public Class JsonAvailableStrategy
#End Region ' Fields & Propeties
#Region "CONSTRUCTOR"
<JsonConstructor>
Sub New(sStrategyID As String, nIndexInList As Integer)
m_sStrategyID = sStrategyID
@@ -178,14 +188,16 @@ Public Class JsonAvailableStrategy
m_sStrategyID = Strategy.sStrategyID
m_nIndexInList = Strategy.nIndexInList
For Each Parameter In Strategy.ParameterList
m_ParameterList.Add(New JsonAvailableGenericParameter(Parameter))
m_ParameterList.Add(New JsonAvailableStrategyParameter(Parameter))
Next
End Sub
#End Region ' Constructor
End Class
'----------- Classe che fa riferimento ai parametri delle Strategie nel file Json -----------
Public Class JsonAvailableGenericParameter
Public Class JsonAvailableStrategyParameter
Inherits VMBase
#Region "FIELDS & PROPETIES"
@@ -278,12 +290,12 @@ Public Class JsonAvailableGenericParameter
End Set
End Property
Private m_Choices As New ObservableCollection(Of JsonAvailableChoiceParameter)
Public Property Choices As ObservableCollection(Of JsonAvailableChoiceParameter)
Private m_Choices As New ObservableCollection(Of JsonAvailableComboParameter)
Public Property Choices As ObservableCollection(Of JsonAvailableComboParameter)
Get
Return m_Choices
End Get
Set(value As ObservableCollection(Of JsonAvailableChoiceParameter))
Set(value As ObservableCollection(Of JsonAvailableComboParameter))
m_Choices = value
NotifyPropertyChanged(NameOf(Choices))
End Set
@@ -291,6 +303,8 @@ Public Class JsonAvailableGenericParameter
#End Region ' Fields & Propeties
#Region "CONSTRUCTOR"
<JsonConstructor>
Sub New(sName As String, sNameNge As String, sValue As String, sDescriptionShort As String, sDescriptionLong As String, sType As String, sMessageId As String, sMinUserLevel As Integer)
m_sName = sName
@@ -320,10 +334,12 @@ Public Class JsonAvailableGenericParameter
m_sMinUserLevel = StrategyParameter.sMinUserLevel
End Sub
#End Region ' Constructor
End Class
'----------- Classe che fa riferimento ai parametri delle Scelte nel file Json -----------
Public Class JsonAvailableChoiceParameter
Public Class JsonAvailableComboParameter
Inherits VMBase
Private m_sValue As String
@@ -370,4 +386,23 @@ Public Class JsonAvailableChoiceParameter
End Set
End Property
#Region "CONSTRUCTOR"
<JsonConstructor>
Sub New(sValue As String, sDescriptionShort As String, sDescriptionLong As String, sMessageId As String)
m_sValue = sValue
m_sDescriptionShort = sDescriptionShort
m_sDescriptionLong = sDescriptionLong
m_sMessageId = sMessageId
End Sub
Sub New(ComboParameter As ComboParameter)
m_sValue = ComboParameter.sValue
m_sDescriptionShort = ComboParameter.sDescriptionShort
m_sDescriptionLong = ComboParameter.sDescriptionLong
m_sMessageId = ComboParameter.sMessageId
End Sub
#End Region ' Constructor
End Class
@@ -17,10 +17,10 @@
DisplayMemberPath="sName"
Style="{StaticResource Strategy_ComboBox}"/>
<Button Command="{Binding New_Command}"
ToolTip="{Binding SaveAsToolTip}"
ToolTip="{Binding NewToolTip}"
Margin="10,0,10,0"
Style="{StaticResource SaveOptionPanel_Button}">
<Image Source="/Resources/NewPage/+.png" Stretch="Uniform"/>
<Image Source="/Resources/ProjectManager/New.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding OpenFileNameCustomConfigCommand}"
ToolTip="{Binding SaveAsToolTip}"
@@ -117,6 +117,12 @@ Public Class StrategyManagerVM
End Get
End Property
Public ReadOnly Property NewToolTip As String
Get
Return EgtMsg(30501)
End Get
End Property
#End Region ' Messages
' Definizione Comandi
@@ -155,109 +161,6 @@ Public Class StrategyManagerVM
#Region "METHODS"
'''' <summary>
'''' Funzione per creare file json
'''' </summary>
'Friend Sub CreateCustumerConfigJsonFile(fileCostumerConfig As String)
' Try
' Dim m_JsonStrategyFeatureList As New ObservableCollection(Of JsonAvailableStrategyFeature)(m_SelStrategySetup.StrategyFeatureList.Select(AddressOf ConvertToJsonStrategy))
' ' Serializzazione in JSON
' Dim AvailableStrategyListjsonFile As String = JsonConvert.SerializeObject(m_JsonStrategyFeatureList, Formatting.Indented)
' ' Scrittura su file
' File.WriteAllText(Map.refMainWindowVM.MainWindowM.GetAISetupDirPath() & "\" & fileCostumerConfig & ".json", AvailableStrategyListjsonFile)
' Catch ex As Exception
' EgtOutLog("Errore durante la creazione del file JSON: " & ex.Message)
' End Try
'End Sub
'''' <summary>
'''' Funzione per convertire da AvailableStrategy a JsonAvailableStrategy
'''' </summary>
'''' <param name="StrategyFeature"></param>
'''' <returns></returns>
''Private Function ConvertToJsonStrategy(StrategyFeature As StrategyFeature) As JsonAvailableStrategyFeature
'' Return New JsonAvailableStrategyFeature With {
' .sName = StrategyFeature.sName,
' .nPRC = StrategyFeature.nPRC,
' .nGRP = StrategyFeature.nGRP,
' .TopologyList = New ObservableCollection(Of JsonAvailableTopology)(StrategyFeature.TopologyList.Select(AddressOf ConvertToJsonTopology))}
'End Function
'''' <summary>
'''' Funzione per convertire da Topology a JsonTopology
'''' </summary>
'''' <param name="topology"></param>
'''' <returns></returns>
'Private Function ConvertToJsonTopology(Topology As Topology) As JsonAvailableTopology
' Return New JsonAvailableTopology With {
' .sName = Topology.sName,
' .StrategyList = New ObservableCollection(Of JsonAvailableStrategy)(Topology.StrategyList.Select(AddressOf ConvertToJsonStrategyConfiguration))
' }
'End Function
'''' <summary>
'''' Funzione per convertire da StrategyConfiguration a JsonStrategyConfiguration
'''' </summary>
'''' <param name="Strategy"></param>
'''' <returns></returns>
'Private Function ConvertToJsonStrategyConfiguration(Strategy As Strategy) As JsonAvailableStrategy
' Return New JsonAvailableStrategy With {
' .sStrategyID = Strategy.sStrategyID,
' .nIndexInList = Strategy.nIndexInList,
' .bActive = Strategy.bActive,
' .ParameterList = New ObservableCollection(Of JsonAvailableGenericParameter)(Strategy.ParameterList.Select(AddressOf ConvertToJsonParameter))}
'End Function
'''' <summary>
'''' Funzione per convertire da GenericParameter a JsonGenericParameter
'''' </summary>
'''' <param name="genericParameter"></param>
'''' <returns></returns>
'Private Function ConvertToJsonParameter(GenericParameter As StrategyParameter) As JsonAvailableGenericParameter
' Return New JsonAvailableGenericParameter With {
' .sName = GenericParameter.sName,
' .sNameNge = GenericParameter.sNameNge,
' .sValue = GenericParameter.sValue,
' .sDescriptionShort = GenericParameter.sDescriptionShort,
' .sDescriptionLong = GenericParameter.sDescriptionLong,
' .sType = GenericParameter.Type,
' .sMessageId = GenericParameter.sMessageId,
' .sMinUserLevel = GenericParameter.sMinUserLevel,
' .Choices = New ObservableCollection(Of JsonAvailableChoiceParameter)(GenericParameter.Choices.Select(AddressOf ConvertToJsonChoiceParameter))}
'End Function
'''' <summary>
'''' Funzione per convertire da ChoicesParameter a JsonChoicesParameter
'''' </summary>
'''' <param name="choiceParameter"></param>
'''' <returns></returns>
'Private Function ConvertToJsonChoiceParameter(ChoiceParameter As ComboParameter) As JsonAvailableChoiceParameter
' Return New JsonAvailableChoiceParameter With {
' .sValue = ChoiceParameter.sValue,
' .sDescriptionShort = ChoiceParameter.sDescriptionShort,
' .sDescriptionLong = ChoiceParameter.sDescriptionLong,
' .sMessageId = ChoiceParameter.sMessageId}
'End Function
''' <summary>
''' Funzione che salva il file CustomConfig Json
''' </summary>
Private Sub SaveJson()
' Determina il nome del file JSON
Dim fileCustomerConfigJson As String = If(Not IsNothing(m_SelStrategySetup), CUSTOMERCONFIG_FILE, m_SelStrategySetup.sName)
' Se l'elemento selezionato è vuoto assegno il default e lo aggiungo alla lista
If IsNothing(m_SelStrategySetup) Then
m_SelStrategySetup.sName = CUSTOMERCONFIG_FILE
m_StrategySetupList.Add(m_SelStrategySetup)
NotifyPropertyChanged(NameOf(SelStrategySetup.sName))
NotifyPropertyChanged(NameOf(StrategySetupList))
End If
' Crea il file JSON
'CreateCustumerConfigJsonFile(fileCustomerConfigJson)
' Se un file è stato selezionato, resetta il flag di modifica
SetbIsModifyStrategy(False)
End Sub
''' <summary>
''' Funzione che salva il file customconfig se sono presenti modifiche
''' </summary>
@@ -266,7 +169,7 @@ Public Class StrategyManagerVM
If Not m_bIsModifyStrategy Then Return
' Chiede conferma per il salvataggio
If MessageBox.Show("Il file Json è stato modificato. Vuoi salvarlo?", EgtMsg(15003), MessageBoxButton.YesNo, MessageBoxImage.Information) = MessageBoxResult.Yes Then
SaveJson()
m_SelStrategySetup.Write()
End If
End Sub
@@ -693,11 +596,14 @@ Public Class StrategyFeature
#End Region ' Constructor
#Region "METHODS"
Friend Function Serialize() As JsonAvailableStrategyFeature
Dim JsonAvailableStrategyFeature As New JsonAvailableStrategyFeature(Me)
Return JsonAvailableStrategyFeature
End Function
#End Region ' Methods
End Class
@@ -812,6 +718,8 @@ Public Class Topology
#End Region ' Constructor
#Region "METHODS"
Private Function AvailableStrategyFilter(Strategy As Object) As Boolean
Return DirectCast(Strategy, Strategy).nIndexInList < 0
End Function
@@ -820,6 +728,8 @@ Public Class Topology
Return DirectCast(Strategy, Strategy).nIndexInList >= 0
End Function
#End Region ' Methods
End Class
'----------- Classe che fa alle Strategie delle Topologie delle Feature -----------
@@ -907,6 +817,8 @@ Public Class Strategy
#End Region ' Constructor
#Region "METHODS"
''' <summary>
''' Funzione che legge il file json delle strategie
''' </summary>
@@ -945,6 +857,8 @@ Public Class Strategy
Next
End Sub
#End Region ' Methods
End Class
'----------- Classe che fa riferimento ai parametri delle Strategie -----------
@@ -1057,23 +971,11 @@ Public Class StrategyParameter
' End Set
'End Property
Friend m_SelTypeValue As Integer = 0
Public Property SelTypeValue As Integer
Get
Return m_SelTypeValue
End Get
Set(value As Integer)
m_SelTypeValue = value
NotifyPropertyChanged(NameOf(SelTypeValue))
End Set
End Property
#End Region ' Fields & Propeties
#Region "CONSTRUCTOR"
Sub New(JsonGenericParameter As JsonAvailableGenericParameter)
Sub New(JsonGenericParameter As JsonAvailableStrategyParameter)
If IsNothing(JsonGenericParameter) Then Return
m_sName = JsonGenericParameter.sName
m_sNameNge = JsonGenericParameter.sNameNge
@@ -1090,7 +992,9 @@ Public Class StrategyParameter
#End Region ' Constructor
Public Shared Function NewStrategyParameter(JsonGenericParameter As JsonAvailableGenericParameter) As StrategyParameter
#Region "METHODS"
Public Shared Function NewStrategyParameter(JsonGenericParameter As JsonAvailableStrategyParameter) As StrategyParameter
Select Case JsonGenericParameter.sType
Case "b"
Return New BooleanStrategyParameter(JsonGenericParameter)
@@ -1101,11 +1005,15 @@ Public Class StrategyParameter
End Select
End Function
#End Region ' Methods
End Class
Public Class BooleanStrategyParameter
Inherits StrategyParameter
#Region "FIELDS & PROPERTIES"
Friend m_bValue As Boolean
Public Property bValue As Boolean
Get
@@ -1119,17 +1027,25 @@ Public Class BooleanStrategyParameter
m_bValue = sValue.ToLower() = "true"
End Sub
Sub New(JsonGenericParameter As JsonAvailableGenericParameter)
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
Sub New(JsonGenericParameter As JsonAvailableStrategyParameter)
MyBase.New(JsonGenericParameter)
If IsNothing(JsonGenericParameter) Then Return
m_bValue = JsonGenericParameter.sValue.ToLower() = "true"
End Sub
#End Region ' Constructor
End Class
Public Class DoubleStrategyParameter
Inherits StrategyParameter
#Region "FIELDS & PROPERTIES"
Private m_dValue As Double
Public Property sValue As String
Get
@@ -1150,7 +1066,11 @@ Public Class DoubleStrategyParameter
End If
End Sub
Sub New(JsonGenericParameter As JsonAvailableGenericParameter)
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
Sub New(JsonGenericParameter As JsonAvailableStrategyParameter)
MyBase.New(JsonGenericParameter)
If IsNothing(JsonGenericParameter) Then Return
If Not StringToDouble(JsonGenericParameter.sValue, m_dValue) Then
@@ -1158,11 +1078,15 @@ Public Class DoubleStrategyParameter
End If
End Sub
#End Region ' Constructor
End Class
Public Class ComboStrategyParameter
Inherits StrategyParameter
#Region "FIELDS & PROPERTIES"
Private m_ComboList As New List(Of ComboParameter)
Public Property ComboList As List(Of ComboParameter)
Get
@@ -1187,13 +1111,18 @@ Public Class ComboStrategyParameter
m_SelValue = m_ComboList.FirstOrDefault(Function(x) x.sValue = sValue)
End Sub
Sub New(JsonGenericParameter As JsonAvailableGenericParameter)
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
Sub New(JsonGenericParameter As JsonAvailableStrategyParameter)
MyBase.New(JsonGenericParameter)
If IsNothing(JsonGenericParameter) Then Return
ComboList = JsonGenericParameter.Choices.Select(Function(jsonChoice) New ComboParameter(jsonChoice)).ToList()
m_SelValue = m_ComboList.FirstOrDefault(Function(x) x.sValue = JsonGenericParameter.sValue)
End Sub
#End Region ' Constructor
End Class
'----------- Classe che fa riferimento ai parametri delle Scelte -----------
@@ -1250,7 +1179,7 @@ Public Class ComboParameter
#Region "CONSTRUCTOR"
Sub New(JsonChoiceParameter As JsonAvailableChoiceParameter)
Sub New(JsonChoiceParameter As JsonAvailableComboParameter)
If Not IsNothing(JsonChoiceParameter) Then
m_sValue = JsonChoiceParameter.sValue
m_sDescriptionShort = JsonChoiceParameter.sDescriptionShort