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 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 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 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 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