Files
egtbeamwall/EgtBEAMWALL.Optimizer/StrategyManager/JsonAvailableStrategyHelper.vb
T
2025-05-15 18:53:57 +02:00

374 lines
10 KiB
VB.net

Imports EgtWPFLib5
Imports Newtonsoft.Json
Imports System.Collections.ObjectModel
'----------- 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
<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
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_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
<JsonConstructor>
Sub New(sName As String)
m_sName = sName
End Sub
Sub New(Topology As Topology)
m_sName = Topology.sName
For Each Strategy In Topology.StrategyList
m_StrategyList.Add(New JsonAvailableStrategy(Strategy))
Next
End Sub
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
Private m_nIndexInList As Integer = -1
Public Property nIndexInList As Integer
Get
Return m_nIndexInList
End Get
Set(value As Integer)
m_nIndexInList = value
NotifyPropertyChanged(NameOf(nIndexInList))
End Set
End Property
Private m_bActive As Boolean
Public Property bActive As Boolean
Get
Return m_bActive
End Get
Set(value As Boolean)
m_bActive = value
NotifyPropertyChanged(NameOf(bActive))
End Set
End Property
Private m_ParameterList As New ObservableCollection(Of JsonAvailableGenericParameter)
Public Property ParameterList As ObservableCollection(Of JsonAvailableGenericParameter)
Get
Return m_ParameterList
End Get
Set(value As ObservableCollection(Of JsonAvailableGenericParameter))
m_ParameterList = value
NotifyPropertyChanged(NameOf(ParameterList))
End Set
End Property
#End Region ' Fields & Propeties
<JsonConstructor>
Sub New(sStrategyID As String, nIndexInList As Integer)
m_sStrategyID = sStrategyID
m_nIndexInList = nIndexInList
End Sub
Sub New(Strategy As Strategy)
m_sStrategyID = Strategy.sStrategyID
m_nIndexInList = Strategy.nIndexInList
For Each Parameter In Strategy.ParameterList
m_ParameterList.Add(New JsonAvailableGenericParameter(Parameter))
Next
End Sub
End Class
'----------- Classe che fa riferimento ai parametri delle Strategie nel file Json -----------
Public Class JsonAvailableGenericParameter
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_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 JsonAvailableChoiceParameter)
Public Property Choices As ObservableCollection(Of JsonAvailableChoiceParameter)
Get
Return m_Choices
End Get
Set(value As ObservableCollection(Of JsonAvailableChoiceParameter))
m_Choices = value
NotifyPropertyChanged(NameOf(Choices))
End Set
End Property
#End Region ' Fields & Propeties
<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
m_sNameNge = sNameNge
m_sValue = sValue
m_sDescriptionShort = sDescriptionShort
m_sDescriptionLong = sDescriptionLong
m_sType = sType
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
End Select
m_sDescriptionShort = StrategyParameter.sDescriptionShort
m_sDescriptionLong = StrategyParameter.sDescriptionLong
m_sMessageId = StrategyParameter.sMessageId
m_sMinUserLevel = StrategyParameter.sMinUserLevel
End Sub
End Class
'----------- Classe che fa riferimento ai parametri delle Scelte nel file Json -----------
Public Class JsonAvailableChoiceParameter
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
End Class