Files
egtbeamwall/EgtBEAMWALL.Optimizer/StrategyManager/StrategyManagerVM.vb
T
2025-05-14 11:48:37 +02:00

1697 lines
61 KiB
VB.net

Imports System.Collections.ObjectModel
Imports EgtWPFLib5
Imports Newtonsoft.Json
Imports System.IO
Imports EgtBEAMWALL.Core
Imports EgtUILib
Public Class StrategyManagerVM
Inherits VMBase
#Region "FIELDS & PROPERTIES"
#Region "bMatchingJson"
' Controllo se le due liste sono uguali
Private m_bMatchingJson As Boolean = True
Friend ReadOnly Property bMatchingJson As Boolean
Get
Return m_bMatchingJson
End Get
End Property
Friend Sub SetbMatchingJson(value As Boolean)
m_bMatchingJson = value
NotifyPropertyChanged(NameOf(bMatchingJson))
End Sub
#End Region ' bMatchingJson
#Region "AvailableStrategy"
' Lista che contiene il file json AvailableStrategyList
Private m_JsonStrategyFeatureList As New ObservableCollection(Of JsonStrategyFeature)
Public Property JsonStrategyFeatureList As ObservableCollection(Of JsonStrategyFeature)
Get
Return m_JsonStrategyFeatureList
End Get
Set(value As ObservableCollection(Of JsonStrategyFeature))
m_JsonStrategyFeatureList = value
NotifyPropertyChanged(NameOf(JsonStrategyFeatureList))
End Set
End Property
' Lista che contiene il file json AvailableStrategyList
Private m_AvailableStrategyList As New ObservableCollection(Of StrategyFeature)
Public Property AvailableStrategyList As ObservableCollection(Of StrategyFeature)
Get
Return m_AvailableStrategyList
End Get
Set(value As ObservableCollection(Of StrategyFeature))
m_AvailableStrategyList = value
NotifyPropertyChanged(NameOf(AvailableStrategyList))
End Set
End Property
#End Region ' AvailableStrategy
#Region "DeactivateStrategy"
' Lista che contiene le strategie che vengono rese non attive
Private m_DeactivateStrategyList As New ObservableCollection(Of Strategy)
Public Property DeactivateStrategyList As ObservableCollection(Of Strategy)
Get
Return m_DeactivateStrategyList
End Get
Set(value As ObservableCollection(Of Strategy))
m_DeactivateStrategyList = value
NotifyPropertyChanged(NameOf(DeactivateStrategyList))
End Set
End Property
' Seleziona l'elemento della lista StrategyList
Public m_SelectDeactivateStrategy As Strategy
Public Property SelectDeactivateStrategy As Strategy
Get
Return m_SelectDeactivateStrategy
End Get
Set(value As Strategy)
m_SelectDeactivateStrategy = value
m_SelectedStrategyParamList = m_SelectDeactivateStrategy
If Not IsNothing(m_SelectDeactivateStrategy) Then
GetTypeMode(m_SelectDeactivateStrategy)
End If
NotifyPropertyChanged(NameOf(SelectDeactivateStrategy))
NotifyPropertyChanged(NameOf(SelectedStrategyParamList))
End Set
End Property
Friend Sub SetSelectedStrategy(value As Strategy)
m_SelectDeactivateStrategy = value
m_SelectedStrategyParamList = value
NotifyPropertyChanged(NameOf(SelectDeactivateStrategy))
NotifyPropertyChanged(NameOf(SelectedStrategyParamList))
End Sub
' Seleziona l'elemento della lista StrategyList
Public m_SelectedStrategyParamList As Strategy
Public Property SelectedStrategyParamList As Strategy
Get
Return m_SelectedStrategyParamList
End Get
Set(value As Strategy)
m_SelectedStrategyParamList = value
If Not IsNothing(m_SelectedStrategyParamList) Then
GetTypeMode(m_SelectedStrategyParamList)
SetStrategyProductionPath(Map.refProjectVM.MachGroupPanelVM.SelectedMachGroup.SelPart.SelFeatureVM.sName & "\" & m_SelectedStrategyParamList.sStrategyID)
End If
NotifyPropertyChanged(NameOf(SelectedStrategyParamList))
End Set
End Property
#End Region ' DeactivateStrategy
#Region "CustomerConfiguration"
' Lista che contiene il file json AvailableStrategyList
Private m_CustomerConfigurationList As New ObservableCollection(Of StrategyFeature)
Public Property CustomerConfigurationList As ObservableCollection(Of StrategyFeature)
Get
Return m_CustomerConfigurationList
End Get
Set(value As ObservableCollection(Of StrategyFeature))
m_CustomerConfigurationList = value
NotifyPropertyChanged(NameOf(CustomerConfigurationList))
End Set
End Property
#End Region ' CustomerConfiguration
#Region "SelTreeItem"
' Permette di selezionare l'elemento dell'albero
Public m_SelTreeItem As Topology
Public Property SelTreeItem As Topology
Get
Return m_SelTreeItem
End Get
Set(value As Topology)
m_SelTreeItem = value
NotifyPropertyChanged(NameOf(SelTreeItem))
End Set
End Property
''' <summary>
''' Funzione che aggiorna la selezione dell'elemento dell'albero
''' </summary>
''' <param name="Item">Elemento dell'albero</param>
Friend Sub UpdateSelTreeItem(Item As Topology)
m_SelTreeItem = Item
' Riattivo pulsanti moveup e movedown
If m_ActiveStrategyList.Count > 0 Then
If Not m_MoveUpSelectedStrategyEnable Then
SetMoveUpSelectedStrategyVisibility(True)
End If
If Not m_MoveDownSelectedStrategyEnable Then
SetMoveDownSelectedStrategyVisibility(True)
End If
End If
NotifyPropertyChanged(NameOf(SelTreeItem))
End Sub
#End Region ' SelTreeItem
#Region "ActiveStrategy"
' Lista che contiene le strategie che vengono rese attive
Private m_ActiveStrategyList As New ObservableCollection(Of Strategy)
Public Property ActiveStrategyList As ObservableCollection(Of Strategy)
Get
Return m_ActiveStrategyList
End Get
Set(value As ObservableCollection(Of Strategy))
m_ActiveStrategyList = value
NotifyPropertyChanged(NameOf(ActiveStrategyList))
End Set
End Property
' Seleziona l'elemento della lista ActiveStrategyList
Public m_SelectedActiveStrategy As Strategy
Public Property SelectedActiveStrategy As Strategy
Get
Return m_SelectedActiveStrategy
End Get
Set(value As Strategy)
m_SelectedActiveStrategy = value
m_SelectedStrategyParamList = m_SelectedActiveStrategy
' Controllo se selezionato non è nullo
If Not IsNothing(m_SelectedActiveStrategy) Then
GetTypeMode(m_SelectedActiveStrategy)
End If
NotifyPropertyChanged(NameOf(SelectedActiveStrategy))
NotifyPropertyChanged(NameOf(SelectedStrategyParamList))
End Set
End Property
Friend Sub SetSelectedActiveStrategy(value As Strategy)
m_SelectedActiveStrategy = value
m_SelectedStrategyParamList = value
NotifyPropertyChanged(NameOf(SelectedActiveStrategy))
NotifyPropertyChanged(NameOf(SelectedStrategyParamList))
End Sub
#End Region ' ActiveStrategy
#Region "AISetup"
' Utilizzata per salvare ultimo file json utilizzato
Public m_sLastCustomConfigJson As String = String.Empty
' Lista dei file json presenti nella cartella AISetUp
Private m_sAISetUpList As New ObservableCollection(Of String)
Public Property sAISetUpList As ObservableCollection(Of String)
Get
Return m_sAISetUpList
End Get
Set(value As ObservableCollection(Of String))
m_sAISetUpList = value
NotifyPropertyChanged(NameOf(sAISetUpList))
End Set
End Property
' File selezionato dalla lista AISetUpList
Private m_sSelectedAISetUp As String
Public Property sSelectedAISetUp As String
Get
Return m_sSelectedAISetUp
End Get
Set(value As String)
m_sSelectedAISetUp = value
If Not IsNothing(m_sSelectedAISetUp) Then
m_ActiveStrategyList.Clear()
m_DeactivateStrategyList.Clear()
ReadAvailableStrategyJson(m_sSelectedAISetUp)
End If
NotifyPropertyChanged(NameOf(sSelectedAISetUp))
End Set
End Property
#End Region ' AISetup
#Region "MoveCommad"
' Rende attivo o disattivo il pulsante moveup
Private m_MoveUpSelectedStrategyEnable As Boolean = True
Public ReadOnly Property MoveUpSelectedStrategyEnable As Boolean
Get
Return m_MoveUpSelectedStrategyEnable
End Get
End Property
Friend Sub SetMoveUpSelectedStrategyVisibility(value As Boolean)
m_MoveUpSelectedStrategyEnable = value
NotifyPropertyChanged(NameOf(MoveUpSelectedStrategyEnable))
End Sub
' Rende attivo o disattivo il pulsante movedown
Private m_MoveDownSelectedStrategyEnable As Boolean = True
Public ReadOnly Property MoveDownSelectedStrategyEnable As Boolean
Get
Return m_MoveDownSelectedStrategyEnable
End Get
End Property
Friend Sub SetMoveDownSelectedStrategyVisibility(value As Boolean)
m_MoveDownSelectedStrategyEnable = value
NotifyPropertyChanged(NameOf(MoveDownSelectedStrategyEnable))
End Sub
#End Region ' MoveCommand
#Region "ModifyStrategy"
' Utilizzato per indicare che viene effettuata una modifica
Private m_bIsModifyStrategy As Boolean = False
Public ReadOnly Property bIsModifyStrategy As Boolean
Get
Return m_bIsModifyStrategy
End Get
End Property
Friend Sub SetbIsModifyStrategy(value As Boolean)
m_bIsModifyStrategy = value
If m_bIsModifyStrategy Then
SetSaveImage("pack://application:,,,/Resources/NewPage/SaveModify.png")
Else
SetSaveImage("pack://application:,,,/Resources/ProjectManager/Save.png")
End If
NotifyPropertyChanged(NameOf(bIsModifyStrategy))
End Sub
' Immagine SaveCommand
Private m_SaveImage As String = "pack://application:,,,/Resources/ProjectManager/Save.png"
Public ReadOnly Property SaveImage As String
Get
Return m_SaveImage
End Get
End Property
Friend Sub SetSaveImage(value As String)
m_SaveImage = value
NotifyPropertyChanged(NameOf(SaveImage))
End Sub
#End Region ' ModifyStrategy
#Region "StrategyProduction"
' Lista che contiene le strategie filtrate
Private m_StrategyProductionList As New ObservableCollection(Of Strategy)
Public Property StrategyProductionList As ObservableCollection(Of Strategy)
Get
Return m_StrategyProductionList
End Get
Set(value As ObservableCollection(Of Strategy))
m_StrategyProductionList = value
NotifyPropertyChanged(NameOf(StrategyProductionList))
End Set
End Property
Private m_StrategyProductionPath As String = String.Empty
Public ReadOnly Property StrategyProductionPath As String
Get
Return m_StrategyProductionPath
End Get
End Property
Friend Sub SetStrategyProductionPath(value As String)
m_StrategyProductionPath = value
NotifyPropertyChanged(NameOf(StrategyProductionPath))
End Sub
#End Region ' StrategyProduction
#Region "Messages"
Public ReadOnly Property SaveToolTip As String
Get
Return EgtMsg(62571)
End Get
End Property
Public ReadOnly Property SaveAsToolTip As String
Get
Return EgtMsg(62572)
End Get
End Property
#End Region ' Messages
' Definizione Comandi
Private m_AddSelectedStrategyCommand As ICommand
Private m_RemoveSelectedStrategyCommand As ICommand
Private m_OpenCommand As ICommand
Private m_SaveCommand As ICommand
Private m_OpenFileNameCustomConfigCommand As ICommand
Private m_MoveUpSelectedStrategyCommand As ICommand
Private m_MoveDownSelectedStrategyCommand As ICommand
Private m_cmdOk As ICommand
Private m_cmdCancel As ICommand
#End Region ' Field & Properties
#Region "CONSTRUCTOR"
Sub New()
' Setto riferimento
Map.SetRefStrategyManagerVM(Me)
' Recupero i file contenti nella Cartella AISetup
m_sAISetUpList = GetFileNamesAISetup(Map.refMainWindowVM.MainWindowM.GetAISetupDirPath())
' Controllo se la lista sAISetUpList non è vuota
If m_sAISetUpList.Count > 0 Then
' Controllo se l'ultimo file json utilizzato è presente
If Not String.IsNullOrEmpty(m_sLastCustomConfigJson) Then
' Se si lo apro
m_sSelectedAISetUp = m_sLastCustomConfigJson
Else
' Se no apro il primo
m_sSelectedAISetUp = m_sAISetUpList(0)
End If
End If
' Leggo file json strategie
If Not IsNothing(m_sSelectedAISetUp) Then
ReadAvailableStrategyJson(m_sSelectedAISetUp)
Else
ReadAvailableStrategyJson(CUSTOMERCONFIG_FILE)
End If
' Aggiorno elemento selezionato dall'albero
Topology.refUpdateSelTreeItem = AddressOf UpdateSelTreeItem
End Sub
#End Region ' Constructor
#Region "METHODS"
''' <summary>
''' Funzione che legge il file json AVAILABLESTRATEGYLIST
''' </summary>
Friend Sub ReadAvailableStrategyJson(fileCostumerConfig As String)
Try
' ------------------------------- Carico DefaultConfiguration --------------------------------------------
' Recupero file AvailableStrategyPathJson
Dim sAvailableStrategyPath As String = Map.refMainWindowVM.MainWindowM.GetStrategiesDirPath() & "\" & AVAILABLESTRATEGYLIST_FILE & ".json"
' Controllo se il file esisite
If File.Exists(sAvailableStrategyPath) Then
' Leggo il contenuto del file JSON
Dim sAvailableStrategyPathJson As String = File.ReadAllText(sAvailableStrategyPath)
' Deserializza il JSON in un oggetto
m_JsonStrategyFeatureList = JsonConvert.DeserializeObject(Of ObservableCollection(Of JsonStrategyFeature))(sAvailableStrategyPathJson)
' Converti la lista JSON in StrategyFeature
m_AvailableStrategyList = New ObservableCollection(Of StrategyFeature)(m_JsonStrategyFeatureList.Select(Function(jsonFeature) New StrategyFeature(jsonFeature)))
' Leggi tutte le strategie presenti nelle feature
m_AvailableStrategyList.SelectMany(Function(strategy) strategy.TopologyList).
SelectMany(Function(topology) topology.StrategyList).ToList().ForEach(AddressOf ReadConfigurationStrategyJson)
' Leggi tutte le strategie presenti nelle feature per il file JSON
m_JsonStrategyFeatureList.SelectMany(Function(feature) feature.TopologyList).
SelectMany(Function(topology) topology.StrategyList).ToList().ForEach(AddressOf ReadConfigurationStrategyJson)
End If
' ------------------------------- Carico CustomConfigJson -------------------------------------------------
' Recupero file json CustomConfigJson
Dim sCustomerConfigurationFilePath As String = Map.refMainWindowVM.MainWindowM.GetAISetupDirPath() & "\" & fileCostumerConfig & ".json"
' Controllo se esiste
If File.Exists(sCustomerConfigurationFilePath) Then
' Leggo il file json
Dim sJsonCustomerConfigPath As String = File.ReadAllText(sCustomerConfigurationFilePath)
' Deserializza il JSON in un oggetto
m_CustomerConfigurationList = JsonConvert.DeserializeObject(Of ObservableCollection(Of StrategyFeature))(sJsonCustomerConfigPath)
' Controllo se le due liste sono uguali
If m_AvailableStrategyList.SequenceEqual(m_CustomerConfigurationList) Then
'MessageBox.Show("OK")
Else
If m_bMatchingJson Then
'CompareCollections(m_AvailableStrategyList, m_CustomerConfigurationList)
End If
End If
' Aggiorno la lista
m_AvailableStrategyList = m_CustomerConfigurationList
End If
' Controllo se presenti combo li trasformo e assegno al primo il valore selezionato
m_AvailableStrategyList.SelectMany(Function(strategy) strategy.TopologyList).
SelectMany(Function(topology) topology.StrategyList).ToList().
ForEach(Sub(strategyItem)
strategyItem.SetIndexList(strategyItem.nIndexInList)
strategyItem.ParameterList.Where(Function(param) param.sType = "combo" AndAlso param.Choices.Count > 0).ToList().
ForEach(Sub(param)
param.SelectedChoice = param.Choices.FirstOrDefault(Function(x) x.sValue = param.sValue)
NotifyPropertyChanged(NameOf(param.SelectedChoice))
End Sub)
End Sub)
Catch ex As Exception
EgtOutLog("Errore durante la lettura delle strategie JSON: " & ex.Message)
End Try
NotifyPropertyChanged(NameOf(AvailableStrategyList))
End Sub
''' <summary>
''' Funzione che trova le differenze tra le due liste
''' </summary>
''' <param name="AvailableStrategyList">Lista di default</param>
''' <param name="CustomerConfigurationList">Lista custom</param>
Public Sub CompareCollections(AvailableStrategyList As ObservableCollection(Of StrategyFeature), CustomerConfigurationList As ObservableCollection(Of StrategyFeature))
' Lista delle differenze
Dim differences As New List(Of String)
' Trova gli elementi che differiscono tra le due collezioni
Dim strategyFeatureDifferences As IEnumerable(Of StrategyFeature) = AvailableStrategyList.Where(Function(x) Not CustomerConfigurationList.Any(Function(y) y.sName = x.sName AndAlso y.nPRC = x.nPRC AndAlso y.nGRP = x.nGRP)).
Union(CustomerConfigurationList.Where(Function(x) Not AvailableStrategyList.Any(Function(y) y.sName = x.sName AndAlso y.nPRC = x.nPRC AndAlso y.nGRP = x.nGRP)))
' Controllo differenze
If strategyFeatureDifferences.Any() Then
differences.Add("Differenze nelle strategie:")
differences.AddRange(strategyFeatureDifferences.Select(Function(strategyFeature) $"- {strategyFeature.sName}"))
End If
' Confronta gli elementi di TopologyList
For Each availableStrategy In AvailableStrategyList
Dim matchingStrategy As StrategyFeature = CustomerConfigurationList.FirstOrDefault(Function(x) x.sName = availableStrategy.sName)
If Not IsNothing(matchingStrategy) Then
Dim topologyDifferences As IEnumerable(Of Topology) = availableStrategy.TopologyList.Where(Function(t) Not matchingStrategy.TopologyList.Any(Function(y) y.sName = t.sName)).
Union(matchingStrategy.TopologyList.Where(Function(t) Not availableStrategy.TopologyList.Any(Function(y) y.sName = t.sName)))
' Controllo differenze
If topologyDifferences.Any() Then
differences.Add($"Differenze nelle topologie di {availableStrategy.sName}:")
differences.AddRange(topologyDifferences.Select(Function(topology) $" - {topology.sName}"))
End If
' Confronta gli elementi di StrategyList dentro TopologyList
For Each topology In availableStrategy.TopologyList
Dim matchingTopology As Topology = matchingStrategy.TopologyList.FirstOrDefault(Function(t) t.sName = topology.sName)
If Not IsNothing(matchingTopology) Then
Dim strategyListDifferences As IEnumerable(Of Strategy) = topology.StrategyList.Where(Function(s) Not matchingTopology.StrategyList.Any(Function(y) y.sStrategyID = s.sStrategyID)).
Union(matchingTopology.StrategyList.Where(Function(s) Not topology.StrategyList.Any(Function(y) y.sStrategyID = s.sStrategyID)))
' Controllo differenze
If strategyListDifferences.Any() Then
differences.Add($"Differenze nelle strategie di {topology.sName} dentro {availableStrategy.sName}:")
differences.AddRange(strategyListDifferences.Select(Function(s) $" - {s.sStrategyID}"))
End If
' Confronta gli elementi di ParameterList dentro StrategyList
For Each strategyItem In topology.StrategyList
Dim matchingStrategyItem = matchingTopology.StrategyList.FirstOrDefault(Function(s) s.sStrategyID = strategyItem.sStrategyID)
If Not IsNothing(matchingStrategyItem) Then
Dim parameterDifferences = strategyItem.ParameterList.Where(Function(p) Not matchingStrategyItem.ParameterList.Any(Function(y) y.sName = p.sName AndAlso y.sNameNge = p.sNameNge AndAlso y.sValue = p.sValue AndAlso y.sDescriptionShort = p.sDescriptionShort AndAlso y.sDescriptionLong = p.sDescriptionLong And y.sType = p.sType AndAlso y.sMessageId = p.sMessageId AndAlso y.sMinUserLevel = p.sMinUserLevel)).
Union(matchingStrategyItem.ParameterList.Where(Function(p) Not strategyItem.ParameterList.Any(Function(y) y.sName = p.sName AndAlso y.sNameNge = p.sNameNge AndAlso y.sValue = p.sValue AndAlso y.sDescriptionShort = p.sDescriptionShort AndAlso y.sDescriptionLong = p.sDescriptionLong And y.sType = p.sType AndAlso y.sMessageId = p.sMessageId AndAlso y.sMinUserLevel = p.sMinUserLevel)))
' Controllo differenze
If parameterDifferences.Any() Then
differences.Add($"Differenze nei parametri di {strategyItem.sStrategyID} dentro {topology.sName} dentro {availableStrategy.sName}:")
differences.AddRange(parameterDifferences.Select(Function(p) $" - {p.sName}"))
End If
' Confronta gli elementi di Choice dentro ParameterList
For Each parameter In strategyItem.ParameterList
Dim matchingParameter = matchingStrategyItem.ParameterList.FirstOrDefault(Function(p) p.sName = parameter.sName)
If Not IsNothing(matchingParameter) Then
Dim choiceDifferences = parameter.Choices.Where(Function(c) Not matchingParameter.Choices.Any(Function(y) y.sValue = c.sValue AndAlso y.sDescriptionShort = c.sDescriptionShort AndAlso y.sDescriptionLong = c.sDescriptionLong AndAlso y.sMessageId = c.sMessageId)).
Union(matchingParameter.Choices.Where(Function(c) Not parameter.Choices.Any(Function(y) y.sValue = c.sValue AndAlso y.sDescriptionShort = c.sDescriptionShort AndAlso y.sDescriptionLong = c.sDescriptionLong AndAlso y.sMessageId = c.sMessageId)))
' Controllo differenze
If choiceDifferences.Any() Then
differences.Add($"Differenze nelle scelte di {parameter.sName} dentro {strategyItem.sStrategyID} dentro {topology.sName} dentro {availableStrategy.sName}:")
differences.AddRange(choiceDifferences.Select(Function(c) $" - {c.sValue}"))
End If
End If
Next
End If
Next
End If
Next
End If
Next
' Mostra il messaggio con le differenze
Dim message As String = If(differences.Any(), String.Join(vbCrLf, differences), "Le due collezioni sono uguali.")
MessageBox.Show(message, "Confronto Collezioni", MessageBoxButton.OK, MessageBoxImage.Information)
' Setto il flag MatchingJson a 0
WriteMainPrivateProfileString(S_GENERAL, "MatchingJson", 0)
' Metto a false bMatchingJson
SetbMatchingJson(False)
End Sub
''' <summary>
''' Funzione che legge il file json delle strategie
''' </summary>
''' <param name="SelectedStrategyItem"></param>
Private Sub ReadConfigurationStrategyJson(SelectedStrategyItem As Object)
' Recupero file StrategyJson
Dim StrategyPath As String = Map.refMainWindowVM.MainWindowM.GetStandardDirPath() & "\" & SelectedStrategyItem.sStrategyID & "\" & SelectedStrategyItem.sStrategyID & ".json"
' Controllo se il file esiste
If Not File.Exists(StrategyPath) Then Return
' Leggo il contenuto del file JSON e deserializzo
Dim StrategyJson As String = File.ReadAllText(StrategyPath)
Dim strategyConfig As JsonStrategy = JsonConvert.DeserializeObject(Of JsonStrategy)(StrategyJson)
' Assegno ParamList per poter visualizzarla da interfaccia econtrollo di che tipo è se Strategy o JsonStrategy
If TypeOf SelectedStrategyItem Is Strategy Then
DirectCast(SelectedStrategyItem, Strategy).ParameterList = New ObservableCollection(Of GenericParameter)(strategyConfig.ParameterList.Select(Function(p) New GenericParameter(p)).ToList())
ElseIf TypeOf SelectedStrategyItem Is JsonStrategy Then
DirectCast(SelectedStrategyItem, JsonStrategy).ParameterList = strategyConfig.ParameterList
End If
End Sub
''' <summary>
''' Funzione per creare file json
''' </summary>
Friend Sub CreateCustumerConfigJsonFile(fileCostumerConfig As String)
Try
m_JsonStrategyFeatureList = New ObservableCollection(Of JsonStrategyFeature)(m_AvailableStrategyList.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 JsonStrategyFeature
Return New JsonStrategyFeature With {
.sName = StrategyFeature.sName,
.nPRC = StrategyFeature.nPRC,
.nGRP = StrategyFeature.nGRP,
.TopologyList = New ObservableCollection(Of JsonTopology)(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 JsonTopology
Return New JsonTopology With {
.sName = Topology.sName,
.StrategyList = New ObservableCollection(Of JsonStrategy)(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 JsonStrategy
Return New JsonStrategy With {
.sStrategyID = Strategy.sStrategyID,
.nIndexInList = Strategy.nIndexInList,
.bActive = Strategy.bActive,
.ParameterList = New ObservableCollection(Of JsonGenericParameter)(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 GenericParameter) As JsonGenericParameter
Return New JsonGenericParameter With {
.sName = GenericParameter.sName,
.sNameNge = GenericParameter.sNameNge,
.sValue = GenericParameter.sValue,
.sDescriptionShort = GenericParameter.sDescriptionShort,
.sDescriptionLong = GenericParameter.sDescriptionLong,
.sType = GenericParameter.sType,
.sMessageId = GenericParameter.sMessageId,
.sMinUserLevel = GenericParameter.sMinUserLevel,
.Choices = New ObservableCollection(Of JsonChoiceParameter)(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 ChoiceParameter) As JsonChoiceParameter
Return New JsonChoiceParameter With {
.sValue = ChoiceParameter.sValue,
.sDescriptionShort = ChoiceParameter.sDescriptionShort,
.sDescriptionLong = ChoiceParameter.sDescriptionLong,
.sMessageId = ChoiceParameter.sMessageId}
End Function
''' <summary>
''' Funzione che permette di scegliere se il tipo è una checkbox, testo o combobox
''' </summary>
Private Sub GetTypeMode(SelectedStrategy As Strategy)
For Each ParamItem As GenericParameter In SelectedStrategy.ParameterList
Select Case ParamItem.sType
Case "b"
' Setta il valore per visualizzare la checkbox
ParamItem.SelTypeValue = 1
Case "combo"
' Setta il valore per visualizzare la combobox
ParamItem.SelTypeValue = 2
End Select
Next
End Sub
''' <summary>
''' Funzione che restituisce la lista dei file contenuti nella cartella AISetup
''' </summary>
''' <param name="AISetupPath">Percorso AISetup</param>
''' <returns></returns>
Private Function GetFileNamesAISetup(AISetupPath As String) As ObservableCollection(Of String)
If Not Directory.Exists(AISetupPath) Then
EgtOutLog("La cartella specificata non esiste.")
Return New ObservableCollection(Of String)()
End If
' Ottieni i nomi dei file senza estensione
Return New ObservableCollection(Of String)(Directory.GetFiles(AISetupPath).Select(AddressOf Path.GetFileNameWithoutExtension))
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(String.IsNullOrEmpty(m_sSelectedAISetUp), CUSTOMERCONFIG_FILE, m_sSelectedAISetUp)
' Se l'elemento selezionato è vuoto assegno il default e lo aggiungo alla lista
If String.IsNullOrEmpty(m_sSelectedAISetUp) Then
m_sSelectedAISetUp = CUSTOMERCONFIG_FILE
m_sAISetUpList.Add(m_sSelectedAISetUp)
NotifyPropertyChanged(NameOf(sSelectedAISetUp))
NotifyPropertyChanged(NameOf(sAISetUpList))
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>
Friend Sub SaveCustomConfigJson()
' Controlla se il file JSON è stato modificato
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()
End If
End Sub
''' <summary>
''' Funzione che recupera le strategie filtrate
''' </summary>
Friend Sub GetStrategyProduction()
' Pulisco la lista
m_StrategyProductionList.Clear()
' Recupero Feature selezionata
Dim selFeature As BTLFeatureVM = Map.refProjectVM.MachGroupPanelVM.SelectedMachGroup.SelPart.SelFeatureVM
' Popolo la lista con le strategie
Dim AvailableStrategyItem As StrategyFeature = m_AvailableStrategyList.FirstOrDefault(Function(AvailableStrategy) selFeature.nPRC = AvailableStrategy.nPRC AndAlso selFeature.nSelGRP = AvailableStrategy.nGRP)
' Controllo se AvailableStrategyItem non è nullo
If Not IsNothing(AvailableStrategyItem) Then
' Se esiste, popola la lista con le strategie
m_StrategyProductionList = New ObservableCollection(Of Strategy)(AvailableStrategyItem.TopologyList.
SelectMany(Function(topology) topology.StrategyList).
Select(Function(strategy)
strategy.SetIndexList(strategy.nIndexInList)
Return strategy
End Function))
End If
NotifyPropertyChanged(NameOf(StrategyProductionList))
End Sub
#End Region ' Methods
#Region "COMMANDS"
#Region "AddSelectedStrategyCommand"
Public ReadOnly Property AddSelectedStrategyCommand As ICommand
Get
If m_AddSelectedStrategyCommand Is Nothing Then
m_AddSelectedStrategyCommand = New Command(AddressOf AddSelectedStrategyToActiveStrategy)
End If
Return m_AddSelectedStrategyCommand
End Get
End Property
''' <summary>
''' Funzione che permette di aggiungere la strategia da StrategyList a ActiveStrategyList
''' </summary>
Public Sub AddSelectedStrategyToActiveStrategy()
' Controllo se SelectedStrategy se è nullo esco
If IsNothing(m_SelectDeactivateStrategy) Then Return
' Setto a true booleano per modifica
SetbIsModifyStrategy(True)
' Aggiungo a ActiveStrategyList strategia selezionata
m_ActiveStrategyList.Add(m_SelectDeactivateStrategy)
' Setto indice per capire che la strategia è stata spostata in ActiveStrategyList
m_SelectDeactivateStrategy.SetIndexList(m_ActiveStrategyList.Count - 1)
' Rimuovo da StrategyList la strategia precedentemente selezionata
m_DeactivateStrategyList.Remove(m_SelectDeactivateStrategy)
' metto il SelectedStrategy della lista DeactivateStrategyList a nullo
SetSelectedStrategy(Nothing)
' seleziono l'ultimo elemento inserito
SetSelectedActiveStrategy(m_ActiveStrategyList.LastOrDefault())
NotifyPropertyChanged(NameOf(ActiveStrategyList))
NotifyPropertyChanged(NameOf(DeactivateStrategyList))
End Sub
#End Region ' AddSelectedStrategyCommand
#Region "RemoveSelectedStrategyCommand"
Public ReadOnly Property RemoveSelectedStrategyCommand As ICommand
Get
If m_RemoveSelectedStrategyCommand Is Nothing Then
m_RemoveSelectedStrategyCommand = New Command(AddressOf RemoveSelectedStrategyToActiveStrategy)
End If
Return m_RemoveSelectedStrategyCommand
End Get
End Property
''' <summary>
''' Funzione che rimuove la strategia da ActiveStrategyList e la riaggiunge a StrategyList
''' </summary>
Public Sub RemoveSelectedStrategyToActiveStrategy()
' Controllo se SelectedActiveStrategy se è nullo esco
If IsNothing(m_SelectedActiveStrategy) Then Return
' Aggiungo a ActiveStrategyList strategia selezionata
m_DeactivateStrategyList.Add(m_SelectedActiveStrategy)
' Setto indice per capire che la strategia è stata spostata in StrategyList
m_SelectedActiveStrategy.SetIndexList(-1)
' Rimuovo da StrategyList la strategia precedentemente selezionata
m_ActiveStrategyList.Remove(m_SelectedActiveStrategy)
' metto il SelectedStrategy della lista DeactivateStrategyList a nullo
SetSelectedActiveStrategy(Nothing)
' seleziono l'ultimo elemento inserito
SetSelectedStrategy(m_DeactivateStrategyList.LastOrDefault())
NotifyPropertyChanged(NameOf(ActiveStrategyList))
NotifyPropertyChanged(NameOf(DeactivateStrategyList))
End Sub
#End Region ' RemoveSelectedStrategyCommand
#Region "OpenFileNameCustomConfigCommand"
Public ReadOnly Property OpenFileNameCustomConfigCommand As ICommand
Get
If m_OpenFileNameCustomConfigCommand Is Nothing Then
m_OpenFileNameCustomConfigCommand = New Command(AddressOf OpenFileNameCustomConfig)
End If
Return m_OpenFileNameCustomConfigCommand
End Get
End Property
''' <summary>
''' Funzione che visualizza la textbox
''' </summary>
Public Sub OpenFileNameCustomConfig()
Dim SaveAsStrategyWnd As New SaveAsStrategyV With {
.DataContext = New SaveAsStrategyVM,
.Owner = Application.Current.MainWindow
}
SaveAsStrategyWnd.ShowDialog()
End Sub
#End Region ' OpenFileNameCustomConfigCommand
#Region "SaveCommand"
Public ReadOnly Property SaveCommand As ICommand
Get
If m_SaveCommand Is Nothing Then
m_SaveCommand = New Command(AddressOf Save)
End If
Return m_SaveCommand
End Get
End Property
''' <summary>
''' Funzione che salva il file json CustomerConfig
''' </summary>
Public Sub Save()
SaveJson()
End Sub
#End Region ' SaveCommand
#Region "MoveUpSelectedStrategyCommand"
Public ReadOnly Property MoveUpSelectedStrategyCommand As ICommand
Get
If m_MoveUpSelectedStrategyCommand Is Nothing Then
m_MoveUpSelectedStrategyCommand = New Command(AddressOf MoveUpSelectedStrategy)
End If
Return m_MoveUpSelectedStrategyCommand
End Get
End Property
''' <summary>
''' Funzione che permette di spostare in alto la strategia selezionata
''' </summary>
Public Sub MoveUpSelectedStrategy()
' Controllo se SelectedActiveStrategy se è nullo esco
If IsNothing(m_SelectedActiveStrategy) Then Return
' Recupero indice elemento selezionato in lista
Dim IndexActiveStrategy As Integer = m_ActiveStrategyList.IndexOf(m_SelectedActiveStrategy)
Dim NewIndexActiveStrategy As Integer = IndexActiveStrategy - 1
' Se l'indice è maggiore di 0
If IndexActiveStrategy > 0 Then
' Riattivo pulsante movedown
SetMoveDownSelectedStrategyVisibility(True)
' Muovo l'elemento selezionato sopra di 1
m_ActiveStrategyList.Move(IndexActiveStrategy, NewIndexActiveStrategy)
' Disabilito pulsante moveup se l'elemento è in cima
SetMoveUpSelectedStrategyVisibility(NewIndexActiveStrategy > 0)
End If
NotifyPropertyChanged(NameOf(ActiveStrategyList))
End Sub
#End Region ' MoveUpSelectedStrategyCommand
#Region "MoveDownSelectedStrategyCommand"
Public ReadOnly Property MoveDownSelectedStrategyCommand As ICommand
Get
If m_MoveDownSelectedStrategyCommand Is Nothing Then
m_MoveDownSelectedStrategyCommand = New Command(AddressOf MoveDownSelectedStrategy)
End If
Return m_MoveDownSelectedStrategyCommand
End Get
End Property
''' <summary>
''' Funzione che permette di spostare in basso la strategia selezionata
''' </summary>
Public Sub MoveDownSelectedStrategy()
' Controllo se SelectedActiveStrategy se è nullo esco
If IsNothing(m_SelectedActiveStrategy) Then Return
' Recupero indice elemento selezionato in lista
Dim IndexActiveStrategy As Integer = m_ActiveStrategyList.IndexOf(m_SelectedActiveStrategy)
Dim NewIndexActiveStrategy As Integer = IndexActiveStrategy + 1
' Se l'indice è maggiore di 0
If IndexActiveStrategy >= 0 Then
' Riattivo pulsante moveup
SetMoveUpSelectedStrategyVisibility(True)
' Muovo l'elemento selezionato sotto di 1
m_ActiveStrategyList.Move(IndexActiveStrategy, NewIndexActiveStrategy)
' Disabilito pulsante movedown se l'elemento è in fondo
SetMoveDownSelectedStrategyVisibility(NewIndexActiveStrategy < m_ActiveStrategyList.Count - 1)
End If
NotifyPropertyChanged(NameOf(ActiveStrategyList))
End Sub
#End Region ' MoveDownSelectedStrategyCommand
#Region "StrategyProductionCommand"
#Region "Ok_Command"
Public ReadOnly Property Ok_Command As ICommand
Get
If m_cmdOk Is Nothing Then
m_cmdOk = New Command(AddressOf Ok)
End If
Return m_cmdOk
End Get
End Property
Public Sub Ok()
Map.refProjectVM.SetSelManagerTab(ProjectVM.StrategyManagerTab.RAWPARTMANAGER)
' Abilito LeftPanel
Map.refProjectVM.SetOnlyProdLeftPanel_IsEnabled(True)
Map.refProjectVM.SetOnlyProdLeftPanel_Opacity(1)
End Sub
#End Region ' Ok_Command
#Region "Cancel_Command"
Public ReadOnly Property Cancel_Command As ICommand
Get
If m_cmdCancel Is Nothing Then
m_cmdCancel = New Command(AddressOf Cancel)
End If
Return m_cmdCancel
End Get
End Property
Public Sub Cancel()
Map.refProjectVM.SetSelManagerTab(ProjectVM.StrategyManagerTab.RAWPARTMANAGER)
' Abilito LeftPanel
Map.refProjectVM.SetOnlyProdLeftPanel_IsEnabled(True)
Map.refProjectVM.SetOnlyProdLeftPanel_Opacity(1)
End Sub
#End Region ' Cancel_Command
#End Region ' StrategyProductionCommand
#End Region ' Commands
End Class
'----------- Classe che fa riferimento alle Feature -----------
Public Class StrategyFeature
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 Topology)
Public Property TopologyList As ObservableCollection(Of Topology)
Get
Return m_TopologyList
End Get
Set(value As ObservableCollection(Of Topology))
m_TopologyList = value
NotifyPropertyChanged(NameOf(TopologyList))
End Set
End Property
#End Region ' Fields & Propeties
#Region "CONSTRUCTOR"
Sub New(JsonStrategyFeature As JsonStrategyFeature)
If IsNothing(JsonStrategyFeature) Then Return
m_sName = JsonStrategyFeature.sName
m_nPRC = JsonStrategyFeature.nPRC
m_nGRP = JsonStrategyFeature.nGRP
m_TopologyList = New ObservableCollection(Of Topology)(JsonStrategyFeature.TopologyList.Select(Function(jsonTopology) New Topology(jsonTopology)))
NotifyPropertyChanged(NameOf(TopologyList))
End Sub
#End Region ' Constructor
End Class
'----------- Classe che fa riferimento alle Topologie delle Feature -----------
Public Class Topology
Inherits VMBase
#Region "FIELDS & PROPETIES"
Friend Shared refUpdateSelTreeItem As Action(Of Topology)
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_bIsSelected As Boolean
Public Property IsSelected As Boolean
Get
Return m_bIsSelected
End Get
Set(value As Boolean)
m_bIsSelected = value
Map.refStrategyManagerVM.ActiveStrategyList.Clear()
Map.refStrategyManagerVM.DeactivateStrategyList.Clear()
refUpdateSelTreeItem(Me)
Dim ActiveStrategies As IEnumerable(Of Strategy) = Me.StrategyList.Where(Function(s) s.bActive)
Dim InactiveStrategies As IEnumerable(Of Strategy) = Me.StrategyList.Where(Function(s) Not s.bActive)
For Each strategy In ActiveStrategies
Map.refStrategyManagerVM.ActiveStrategyList.Add(strategy)
Next
For Each strategy In InactiveStrategies
Map.refStrategyManagerVM.DeactivateStrategyList.Add(strategy)
Next
NotifyPropertyChanged(NameOf(IsSelected))
End Set
End Property
' Seleziona l'elemento della lista StrategyList
Public m_SelectedStrategy As Strategy
Public Property SelectedStrategy As Strategy
Get
Return m_SelectedStrategy
End Get
Set(value As Strategy)
m_SelectedStrategy = value
NotifyPropertyChanged(NameOf(SelectedStrategy))
End Set
End Property
Private m_StrategyList As New ObservableCollection(Of Strategy)
Public Property StrategyList As ObservableCollection(Of Strategy)
Get
Return m_StrategyList
End Get
Set(value As ObservableCollection(Of Strategy))
m_StrategyList = value
NotifyPropertyChanged(NameOf(StrategyList))
End Set
End Property
#End Region ' Fields & Propeties
#Region "CONSTRUCTOR"
Sub New(JsonTopology As JsonTopology)
If IsNothing(JsonTopology) Then Return
m_sName = JsonTopology.sName
m_StrategyList = New ObservableCollection(Of Strategy)(JsonTopology.StrategyList.Select(Function(jsonStrategy) New Strategy(Me, jsonStrategy)))
NotifyPropertyChanged(NameOf(StrategyList))
End Sub
#End Region ' Constructor
End Class
'----------- Classe che fa alle Strategie delle Topologie delle Feature -----------
Public Class Strategy
Inherits VMBase
#Region "FIELDS & PROPETIES"
Private m_ParentTopology As Topology
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
Friend Sub SetIndexList(value As Integer)
m_nIndexInList = value
If nIndexInList > -1 Then
m_bActive = True
Else
m_bActive = False
End If
NotifyPropertyChanged(NameOf(nIndexInList))
NotifyPropertyChanged(NameOf(bActive))
End Sub
Private m_bActive As Boolean
Public ReadOnly Property bActive As Boolean
Get
Return m_bActive
End Get
End Property
Private m_sImageStrategy As String = "pack://application:,,,/Resources/NewPage/LogoProvaStrategy.png"
Public Property sImageStrategy As String
Get
Return m_sImageStrategy
End Get
Set(value As String)
m_sImageStrategy = value
NotifyPropertyChanged(NameOf(sImageStrategy))
End Set
End Property
Private m_ParameterList As New ObservableCollection(Of GenericParameter)
Public Property ParameterList As ObservableCollection(Of GenericParameter)
Get
Return m_ParameterList
End Get
Set(value As ObservableCollection(Of GenericParameter))
m_ParameterList = value
NotifyPropertyChanged(NameOf(ParameterList))
End Set
End Property
#End Region ' Fields & Propeties
#Region "CONSTRUCTOR"
Sub New(ParentTopology As Topology, JsonStrategy As JsonStrategy)
m_ParentTopology = ParentTopology
If IsNothing(JsonStrategy) Then Return
m_sStrategyID = JsonStrategy.sStrategyID
m_nIndexInList = JsonStrategy.nIndexInList
m_bActive = JsonStrategy.bActive
m_ParameterList = New ObservableCollection(Of GenericParameter)(JsonStrategy.ParameterList.Select(Function(jsonParam) New GenericParameter(jsonParam)))
NotifyPropertyChanged(NameOf(ParameterList))
End Sub
#End Region ' Constructor
End Class
'----------- Classe che fa riferimento ai parametri delle Strategie -----------
Public Class GenericParameter
Inherits VMBase
#Region "FIELDS & PROPETIES"
Private m_ParentStrategy As Strategy
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
Friend 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 ChoiceParameter)
Public Property Choices As ObservableCollection(Of ChoiceParameter)
Get
Return m_Choices
End Get
Set(value As ObservableCollection(Of ChoiceParameter))
m_Choices = value
NotifyPropertyChanged(NameOf(Choices))
End Set
End Property
' Seleziona elemento nella combobox Choices
Public m_SelectedChoice As ChoiceParameter
Public Property SelectedChoice As ChoiceParameter
Get
Return m_SelectedChoice
End Get
Set(value As ChoiceParameter)
m_SelectedChoice = value
If Not IsNothing(m_SelectedChoice) Then
m_sValue = m_SelectedChoice.sValue
End If
NotifyPropertyChanged(NameOf(SelectedChoice))
NotifyPropertyChanged(NameOf(sValue))
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 JsonGenericParameter)
If IsNothing(JsonGenericParameter) Then Return
m_sName = JsonGenericParameter.sName
m_sNameNge = JsonGenericParameter.sNameNge
m_sValue = JsonGenericParameter.sValue
m_sDescriptionShort = JsonGenericParameter.sDescriptionShort
m_sDescriptionLong = JsonGenericParameter.sDescriptionLong
m_sType = JsonGenericParameter.sType
m_sMessageId = JsonGenericParameter.sMessageId
m_sMinUserLevel = JsonGenericParameter.sMinUserLevel
m_Choices = New ObservableCollection(Of ChoiceParameter)(JsonGenericParameter.Choices.Select(Function(jsonChoice) New ChoiceParameter(jsonChoice)))
NotifyPropertyChanged(NameOf(Choices))
End Sub
#End Region ' Constructor
End Class
'----------- Classe che fa riferimento ai parametri delle Scelte -----------
Public Class ChoiceParameter
Inherits VMBase
#Region "FIELD & PROPERTIES"
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 Region ' Fields & Properties
#Region "CONSTRUCTOR"
Sub New(JsonChoiceParameter As JsonChoiceParameter)
If Not IsNothing(JsonChoiceParameter) Then
m_sValue = JsonChoiceParameter.sValue
m_sDescriptionShort = JsonChoiceParameter.sDescriptionShort
m_sDescriptionLong = JsonChoiceParameter.sDescriptionLong
m_sMessageId = JsonChoiceParameter.sMessageId
End If
End Sub
#End Region ' Constructor
End Class
'----------- Classe che fa riferimento alle Feature del file Json -----------
Public Class JsonStrategyFeature
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 JsonTopology)
Public Property TopologyList As ObservableCollection(Of JsonTopology)
Get
Return m_TopologyList
End Get
Set(value As ObservableCollection(Of JsonTopology))
m_TopologyList = value
NotifyPropertyChanged(NameOf(TopologyList))
End Set
End Property
#End Region ' Fields & Propeties
End Class
'----------- Classe che fa riferimento alle Topologie delle Feature del file Json -----------
Public Class JsonTopology
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 JsonStrategy)
Public Property StrategyList As ObservableCollection(Of JsonStrategy)
Get
Return m_StrategyList
End Get
Set(value As ObservableCollection(Of JsonStrategy))
m_StrategyList = value
NotifyPropertyChanged(NameOf(StrategyList))
End Set
End Property
#End Region ' Fields & Propeties
End Class
'----------- Classe che fa alle Strategie delle Topologie delle Feature del file Json -----------
Public Class JsonStrategy
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 JsonGenericParameter)
Public Property ParameterList As ObservableCollection(Of JsonGenericParameter)
Get
Return m_ParameterList
End Get
Set(value As ObservableCollection(Of JsonGenericParameter))
m_ParameterList = value
NotifyPropertyChanged(NameOf(ParameterList))
End Set
End Property
#End Region ' Fields & Propeties
End Class
'----------- Classe che fa riferimento ai parametri delle Strategie nel file Json -----------
Public Class JsonGenericParameter
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 JsonChoiceParameter)
Public Property Choices As ObservableCollection(Of JsonChoiceParameter)
Get
Return m_Choices
End Get
Set(value As ObservableCollection(Of JsonChoiceParameter))
m_Choices = value
NotifyPropertyChanged(NameOf(Choices))
End Set
End Property
#End Region ' Fields & Propeties
End Class
'----------- Classe che fa riferimento ai parametri delle Scelte nel file Json -----------
Public Class JsonChoiceParameter
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