Files
egtbeamwall/EgtBEAMWALL.Optimizer/StrategyManager/JsonAvailableStrategyHelper.vb
T
Demetrio Cassarino 7b4f8529c3 EgtBEAMWALL 3.1.4.6:
-cambiato gestione SetVisibility
-aggiunto su veriifica singolo pezzo disabilita intera riga
2026-04-21 16:55:11 +02:00

579 lines
18 KiB
VB.net

Imports EgtWPFLib5
Imports EgtUILib
Imports Newtonsoft.Json
Imports System.Collections.ObjectModel
Imports System.IO
Imports EgtBEAMWALL.Core.ConstBeam
'----------- Classe che fa riferimento alle Feature del file Json -----------
Public Class JsonAvailableStrategyFeature
Inherits VMBase
#Region "FIELDS & PROPETIES"
Private m_sName As String
Public Property sName As String
Get
Return m_sName
End Get
Set(value As String)
m_sName = value
NotifyPropertyChanged(NameOf(sName))
End Set
End Property
Private m_nPrc As Integer
Public Property nPrc As Integer
Get
Return m_nPrc
End Get
Set(value As Integer)
m_nPrc = value
NotifyPropertyChanged(NameOf(nPrc))
End Set
End Property
Private m_nGrp As Integer
Public Property nGrp As Integer
Get
Return m_nGrp
End Get
Set(value As Integer)
m_nGrp = value
NotifyPropertyChanged(NameOf(nGrp))
End Set
End Property
Private m_TopologyList As New ObservableCollection(Of JsonAvailableTopology)
Public Property TopologyList As ObservableCollection(Of JsonAvailableTopology)
Get
Return m_TopologyList
End Get
Set(value As ObservableCollection(Of JsonAvailableTopology))
m_TopologyList = value
NotifyPropertyChanged(NameOf(TopologyList))
End Set
End Property
#End Region ' Fields & Propeties
#Region "CONSTRUCTOR"
<JsonConstructor>
Sub New(sName As String, nPRC As Integer, nGRP As Integer)
m_sName = sName
m_nPrc = nPRC
m_nGrp = nGRP
End Sub
Sub New(StrategyFeature As StrategyFeature)
m_sName = StrategyFeature.sName
m_nPrc = StrategyFeature.nPrc
m_nGrp = StrategyFeature.nGrp
For Each Topology In StrategyFeature.TopologyList
m_TopologyList.Add(New JsonAvailableTopology(Topology))
Next
End Sub
Friend Function Deserialize(StrategyType As BWType) As StrategyFeature
Dim StrategyFeature As New StrategyFeature() With {.sName = m_sName,
.nPrc = m_nPrc,
.nGrp = m_nGrp}
For Each Topology In TopologyList
StrategyFeature.TopologyList.Add(Topology.Deserialize(StrategyType))
Next
Return StrategyFeature
End Function
#End Region ' Constructor
End Class
'----------- Classe che fa riferimento alle Topologie delle Feature del file Json -----------
Public Class JsonAvailableTopology
Inherits VMBase
#Region "FIELDS & PROPETIES"
Private m_sName As String
Public Property sName As String
Get
Return m_sName
End Get
Set(value As String)
m_sName = value
NotifyPropertyChanged(NameOf(sName))
End Set
End Property
Private m_sImage As String
Public Property sImage As String
Get
Return m_sImage
End Get
Set(value As String)
m_sImage = value
NotifyPropertyChanged(NameOf(sImage))
End Set
End Property
Private m_StrategyList As New ObservableCollection(Of JsonAvailableStrategy)
Public Property StrategyList As ObservableCollection(Of JsonAvailableStrategy)
Get
Return m_StrategyList
End Get
Set(value As ObservableCollection(Of JsonAvailableStrategy))
m_StrategyList = value
NotifyPropertyChanged(NameOf(StrategyList))
End Set
End Property
#End Region ' Fields & Propeties
#Region "CONSTRUCTOR"
<JsonConstructor>
Sub New(sName As String)
m_sName = sName
End Sub
Sub New(Topology As Topology)
m_sName = Topology.sName
m_sImage = Topology.sImage
For Each Strategy In Topology.StrategyList
m_StrategyList.Add(New JsonAvailableStrategy(Strategy))
Next
End Sub
#End Region ' Constructor
Friend Function Deserialize(StrategyType As BWType) As Topology
Dim Topology As New Topology() With {.sName = m_sName,
.sImage = m_sImage}
For StrategyIndex = 0 To StrategyList.Count - 1
Topology.StrategyList.Add(StrategyList(StrategyIndex).Deserialize(StrategyType, StrategyIndex))
Next
Topology.CreateStrategyViews()
Return Topology
End Function
End Class
'----------- Classe che fa alle Strategie delle Topologie delle Feature del file Json -----------
Public Class JsonAvailableStrategy
Inherits VMBase
#Region "FIELDS & PROPETIES"
Private m_sStrategyId As String
Public Property sStrategyId As String
Get
Return m_sStrategyId
End Get
Set(value As String)
m_sStrategyId = value
NotifyPropertyChanged(NameOf(sStrategyId))
End Set
End Property
#End Region ' Fields & Propeties
#Region "CONSTRUCTOR"
<JsonConstructor>
Sub New(sStrategyID As String)
m_sStrategyId = sStrategyID
End Sub
Sub New(Strategy As Strategy)
m_sStrategyId = Strategy.sStrategyId
End Sub
#End Region ' Constructor
Friend Function Deserialize(StrategyType As BWType, StrategyIndex As Integer) As Strategy
Dim Strategy As New Strategy() With {.sStrategyId = m_sStrategyId,
.nIndexInList = StrategyIndex}
' Recupero file StrategyJson
Dim StrategyPath As String = Map.refMainWindowVM.MainWindowM.GetStandardDirPath(StrategyType) & "\" & sStrategyId & "\" & sStrategyId & ".json"
' Controllo se il file esiste
If Not File.Exists(StrategyPath) Then
EgtOutLog("Error! Strategy file not found! " & m_sStrategyId)
End If
' Leggo il contenuto del file JSON e deserializzo
Dim StrategyJson As String = File.ReadAllText(StrategyPath)
Dim StrategyConfig As JsonDefaultStrategy = JsonConvert.DeserializeObject(Of JsonDefaultStrategy)(StrategyJson)
Strategy.sStrategyName = StrategyConfig.sStrategyName
Dim sImagePath As String = Map.refMainWindowVM.MainWindowM.GetStandardDirPath(StrategyType) & "\" & sStrategyId & "\" & sStrategyId & ".png"
If File.Exists(sImagePath) Then
Strategy.sStrategyImagePath = sImagePath
End If
If StrategyConfig.sStrategyId <> m_sStrategyId Then EgtOutLog("Error! Strategy name wrong in " & m_sStrategyId)
For Each Parameter In StrategyConfig.ParameterList
Dim NewParameter As StrategyParameter = Parameter.Deserialize()
If Not IsNothing(NewParameter) Then
Strategy.ParameterList.Add(Parameter.Deserialize())
End If
Next
Return Strategy
End Function
End Class
'----------- Classe che fa alle Strategie delle Topologie delle Feature del file Json -----------
Public Class JsonDefaultStrategy
Inherits VMBase
#Region "FIELDS & PROPETIES"
Private m_sStrategyId As String
Public Property sStrategyId As String
Get
Return m_sStrategyId
End Get
Set(value As String)
m_sStrategyId = value
End Set
End Property
Private m_sStrategyName As String
Public Property sStrategyName As String
Get
Return m_sStrategyName
End Get
Set(value As String)
m_sStrategyName = value
End Set
End Property
Private m_ParameterList As New ObservableCollection(Of JsonDefaultStrategyParameter)
Public Property ParameterList As ObservableCollection(Of JsonDefaultStrategyParameter)
Get
Return m_ParameterList
End Get
Set(value As ObservableCollection(Of JsonDefaultStrategyParameter))
m_ParameterList = value
End Set
End Property
#End Region ' Fields & Propeties
#Region "CONSTRUCTOR"
<JsonConstructor>
Sub New(sStrategyId As String, sStrategyName As String)
m_sStrategyId = sStrategyId
m_sStrategyName = sStrategyName
End Sub
Sub New(Strategy As Strategy)
m_sStrategyId = Strategy.sStrategyId
For Each Parameter In Strategy.ParameterList
m_ParameterList.Add(New JsonDefaultStrategyParameter(Parameter))
Next
End Sub
#End Region ' Constructor
End Class
'----------- Classe che fa riferimento ai parametri delle Strategie nel file Json -----------
Public Class JsonDefaultStrategyParameter
Inherits VMBase
#Region "FIELDS & PROPETIES"
Private m_sName As String
Public Property sName As String
Get
Return m_sName
End Get
Set(value As String)
m_sName = value
NotifyPropertyChanged(NameOf(sName))
End Set
End Property
Private m_sNameNge As String
Public Property sNameNge As String
Get
Return m_sNameNge
End Get
Set(value As String)
m_sNameNge = value
NotifyPropertyChanged(NameOf(sNameNge))
End Set
End Property
Private m_sValue As String
Public Property sValue As String
Get
Return m_sValue
End Get
Set(value As String)
m_sValue = value
NotifyPropertyChanged(NameOf(sValue))
End Set
End Property
Private m_sDescriptionShort As String
Public Property sDescriptionShort As String
Get
Return m_sDescriptionShort
End Get
Set(value As String)
m_sDescriptionShort = value
NotifyPropertyChanged(NameOf(sDescriptionShort))
End Set
End Property
Private m_sDescriptionLong As String
Public Property sDescriptionLong As String
Get
Return m_sDescriptionLong
End Get
Set(value As String)
m_sDescriptionLong = value
NotifyPropertyChanged(NameOf(sDescriptionLong))
End Set
End Property
Private m_sType As String
Public Property sType As String
Get
Return m_sType
End Get
Set(value As String)
m_sType = value
NotifyPropertyChanged(NameOf(sType))
End Set
End Property
Private m_sSource As String
Public Property sSource As String
Get
Return m_sSource
End Get
Set(value As String)
m_sSource = value
NotifyPropertyChanged(NameOf(sSource))
End Set
End Property
Private m_sSubType As String
Public Property sSubType As String
Get
Return m_sSubType
End Get
Set(value As String)
m_sSubType = value
NotifyPropertyChanged(NameOf(sSubType))
End Set
End Property
Private m_sMessageId As String
Public Property sMessageId As String
Get
Return m_sMessageId
End Get
Set(value As String)
m_sMessageId = value
NotifyPropertyChanged(NameOf(sMessageId))
End Set
End Property
Private m_sMinUserLevel As Integer
Public Property sMinUserLevel As Integer
Get
Return m_sMinUserLevel
End Get
Set(value As Integer)
m_sMinUserLevel = value
NotifyPropertyChanged(NameOf(sMinUserLevel))
End Set
End Property
Private m_Choices As New ObservableCollection(Of JsonDefaultComboParameter)
Public Property Choices As ObservableCollection(Of JsonDefaultComboParameter)
Get
Return m_Choices
End Get
Set(value As ObservableCollection(Of JsonDefaultComboParameter))
m_Choices = value
NotifyPropertyChanged(NameOf(Choices))
End Set
End Property
#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, sSource As String, sSubType As String, sMessageId As String, sMinUserLevel As Integer)
m_sName = sName
m_sNameNge = sNameNge
m_sValue = sValue
m_sDescriptionShort = sDescriptionShort
m_sDescriptionLong = sDescriptionLong
m_sType = sType
m_sSource = sSource
m_sSubType = sSubType
m_sMessageId = sMessageId
m_sMinUserLevel = sMinUserLevel
End Sub
Sub New(StrategyParameter As StrategyParameter)
m_sName = StrategyParameter.sName
m_sNameNge = StrategyParameter.sNameNge
Select Case StrategyParameter.GetType()
Case GetType(BooleanStrategyParameter)
m_sValue = If(DirectCast(StrategyParameter, BooleanStrategyParameter).bValue, "true", "false")
Case GetType(DoubleStrategyParameter)
m_sValue = DirectCast(StrategyParameter, DoubleStrategyParameter).sValue
Case GetType(ComboStrategyParameter)
m_sValue = DirectCast(StrategyParameter, ComboStrategyParameter).SelValue.sValue
Case GetType(StringStrategyParameter)
m_sValue = DirectCast(StrategyParameter, StringStrategyParameter).sValue
Case GetType(ListStrategyParameter)
m_sValue = DirectCast(StrategyParameter, ListStrategyParameter).SelValue.sName
End Select
m_sSource = StrategyParameter.sSource
m_sSubType = StrategyParameter.sSubType
m_sDescriptionShort = StrategyParameter.sDescriptionShort
m_sDescriptionLong = StrategyParameter.sDescriptionLong
m_sMessageId = StrategyParameter.sMessageId
m_sMinUserLevel = StrategyParameter.sMinUserLevel
End Sub
#End Region ' Constructor
Friend Function Deserialize() As StrategyParameter
Dim StrategyParameter As StrategyParameter = Nothing
Select Case m_sType
Case "b"
StrategyParameter = New BooleanStrategyParameter()
DirectCast(StrategyParameter, BooleanStrategyParameter).SetValue(m_sValue)
If m_sMinUserLevel = 1 Then
DirectCast(StrategyParameter, BooleanStrategyParameter).SetbBooleanVisibility(True)
End If
Case "d"
StrategyParameter = New DoubleStrategyParameter()
DirectCast(StrategyParameter, DoubleStrategyParameter).SetValue(m_sValue)
If m_sMinUserLevel = 1 Then
DirectCast(StrategyParameter, DoubleStrategyParameter).SetbDoubleVisibility(True)
End If
Case "combo"
StrategyParameter = New ComboStrategyParameter()
For Each Choice In Choices
DirectCast(StrategyParameter, ComboStrategyParameter).ComboList.Add(Choice.Deserialize())
Next
DirectCast(StrategyParameter, ComboStrategyParameter).SetSelValue(m_sValue)
If m_sMinUserLevel = 1 Then
DirectCast(StrategyParameter, ComboStrategyParameter).SetbComboBoxVisibility(True)
End If
Case "tool"
StrategyParameter = New ListStrategyParameter(m_sSubType)
DirectCast(StrategyParameter, ListStrategyParameter).CreateToolsViews()
If m_sMinUserLevel = 1 Then
DirectCast(StrategyParameter, ListStrategyParameter).SetbListBoxVisibility(True)
End If
Case "s"
StrategyParameter = New StringStrategyParameter()
DirectCast(StrategyParameter, StringStrategyParameter).SetValue(m_sValue)
If m_sMinUserLevel = 1 Then
DirectCast(StrategyParameter, StringStrategyParameter).SetbStringVisibility(True)
End If
Case Else
If Not IsNothing(m_sType) Then EgtOutLog("Tipo: " & m_sType & " non presente")
Return Nothing
End Select
StrategyParameter.sName = m_sName
StrategyParameter.sNameNge = m_sNameNge
StrategyParameter.sSubType = m_sSubType
StrategyParameter.sDescriptionShort = m_sDescriptionShort
StrategyParameter.sDescriptionLong = m_sDescriptionLong
StrategyParameter.sMessageId = m_sMessageId
StrategyParameter.sMinUserLevel = m_sMinUserLevel
Return StrategyParameter
End Function
End Class
'----------- Classe che fa riferimento ai parametri delle Scelte nel file Json -----------
Public Class JsonDefaultComboParameter
Inherits VMBase
Private m_sValue As String
Public Property sValue As String
Get
Return m_sValue
End Get
Set(value As String)
m_sValue = value
NotifyPropertyChanged(NameOf(sValue))
End Set
End Property
Private m_sDescriptionShort As String
Public Property sDescriptionShort As String
Get
Return m_sDescriptionShort
End Get
Set(value As String)
m_sDescriptionShort = value
NotifyPropertyChanged(NameOf(sDescriptionShort))
End Set
End Property
Private m_sDescriptionLong As String
Public Property sDescriptionLong As String
Get
Return m_sDescriptionLong
End Get
Set(value As String)
m_sDescriptionLong = value
NotifyPropertyChanged(NameOf(sDescriptionLong))
End Set
End Property
Private m_sMessageId As String
Public Property sMessageId As String
Get
Return m_sMessageId
End Get
Set(value As String)
m_sMessageId = value
NotifyPropertyChanged(NameOf(sMessageId))
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
Friend Function Deserialize() As ComboParameter
Dim ComboParameter As New ComboParameter() With {.sValue = m_sValue,
.sDescriptionShort = m_sDescriptionShort,
.sDescriptionLong = m_sDescriptionLong,
.sMessageId = m_sMessageId}
Return ComboParameter
End Function
End Class