399 lines
12 KiB
VB.net
399 lines
12 KiB
VB.net
Imports System.Collections.ObjectModel
|
|
Imports System.ComponentModel
|
|
Imports System.IO
|
|
Imports EgtBEAMWALL.Core
|
|
Imports EgtWPFLib5
|
|
Imports Newtonsoft.Json
|
|
|
|
Public Class StrategyManagerWndVM
|
|
Inherits VMBase
|
|
|
|
Private m_StrategySetupList As New ObservableCollection(Of StrategySetup)
|
|
Public ReadOnly Property StrategySetupList As ObservableCollection(Of StrategySetup)
|
|
Get
|
|
Return m_StrategySetupList
|
|
End Get
|
|
End Property
|
|
|
|
Private m_SelStrategySetup As StrategySetup
|
|
Public Property SelStrategySetup As StrategySetup
|
|
Get
|
|
Return m_SelStrategySetup
|
|
End Get
|
|
Set(value As StrategySetup)
|
|
m_SelStrategySetup = value
|
|
m_SelStrategySetup.Read()
|
|
NotifyPropertyChanged(NameOf(SelStrategySetup))
|
|
End Set
|
|
End Property
|
|
|
|
Sub New()
|
|
' leggo cartella dei setup delle strategie
|
|
Dim AISetupDirPath As String = Map.refMainWindowVM.MainWindowM.GetAISetupDirPath()
|
|
Dim AISetupPaths As String() = Directory.GetFiles(AISetupDirPath)
|
|
For Each AiSetup In AISetupPaths
|
|
m_StrategySetupList.Add(New StrategySetup(Path.GetFileNameWithoutExtension(AiSetup)))
|
|
Next
|
|
End Sub
|
|
|
|
End Class
|
|
|
|
Public Class StrategySetup
|
|
Inherits VMBase
|
|
|
|
Private m_sName As String
|
|
Public Property sName As String
|
|
Get
|
|
Return m_sName
|
|
End Get
|
|
Set(value As String)
|
|
m_sName = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_StrategyFeatureList As New ObservableCollection(Of StrategyFeature)
|
|
Public Property StrategyFeatureList As ObservableCollection(Of StrategyFeature)
|
|
Get
|
|
Return m_StrategyFeatureList
|
|
End Get
|
|
Set(value As ObservableCollection(Of StrategyFeature))
|
|
m_StrategyFeatureList = value
|
|
End Set
|
|
End Property
|
|
Sub New(sName As String)
|
|
m_sName = sName
|
|
End Sub
|
|
|
|
Private m_SelStrategyFeature As StrategyFeature
|
|
Public Property SelStrategyFeature As StrategyFeature
|
|
Get
|
|
Return m_SelStrategyFeature
|
|
End Get
|
|
Set(value As StrategyFeature)
|
|
m_SelStrategyFeature = value
|
|
NotifyPropertyChanged(NameOf(SelStrategyFeature))
|
|
End Set
|
|
End Property
|
|
|
|
Friend Sub Read()
|
|
' carico default
|
|
Dim sStrategiesDirPath As String = Map.refMainWindowVM.MainWindowM.GetStrategiesDirPath()
|
|
Dim sAvailableStrategiesFilePath As String = sStrategiesDirPath & "\" & AVAILABLESTRATEGYLIST_FILE & ".json"
|
|
If File.Exists(sAvailableStrategiesFilePath) Then
|
|
Dim sReadedFile As String = File.ReadAllText(sAvailableStrategiesFilePath)
|
|
Dim JsonStrategyFeatureList As List(Of JsonStrategyFeature) = JsonConvert.DeserializeObject(Of List(Of JsonStrategyFeature))(sReadedFile)
|
|
m_StrategyFeatureList = New ObservableCollection(Of StrategyFeature)((From JsonStrategyFeature In JsonStrategyFeatureList
|
|
Select New StrategyFeature(JsonStrategyFeature)).ToList())
|
|
' NotifyPropertyChanged(NameOf(StrategyFeatureList))
|
|
|
|
End If
|
|
' carico custom
|
|
Dim sAISetupDirPath As String = Map.refMainWindowVM.MainWindowM.GetAISetupDirPath()
|
|
Dim sStrategyConfigurationFilePath As String = sAISetupDirPath & "\" & sName & ".json"
|
|
If File.Exists(sStrategyConfigurationFilePath) Then
|
|
Dim sReadedFile As String = File.ReadAllText(sStrategyConfigurationFilePath)
|
|
Dim JsonStrategyFeatureList As List(Of JsonStrategyFeature) = JsonConvert.DeserializeObject(Of List(Of JsonStrategyFeature))(sReadedFile)
|
|
For Each Feature In JsonStrategyFeatureList
|
|
Dim DefaultFeature As StrategyFeature = m_StrategyFeatureList.FirstOrDefault(Function(x) x.nPRC = Feature.nPRC AndAlso x.nGRP = Feature.nGRP)
|
|
' gestire caso non venga trovata perchè non esiste più in default??'
|
|
If Not IsNothing(DefaultFeature) Then
|
|
For Each Topology In Feature.TopologyList
|
|
Dim DefaultTopology As Topology = DefaultFeature.TopologyList.FirstOrDefault(Function(x) x.sName = Topology.sName)
|
|
' gestire caso non venga trovata perchè non esiste più in default??'
|
|
For Each Strategy In Topology.StrategyList
|
|
Dim DefaultStrategy As Strategy = DefaultTopology.StrategyList.FirstOrDefault(Function(x) x.sStrategyID = Strategy.sStrategyID)
|
|
If IsNothing(DefaultStrategy) Then
|
|
DefaultTopology.StrategyList.Add(New Strategy(DefaultTopology, Strategy))
|
|
' verifico indici!!
|
|
Else
|
|
DefaultStrategy.ReadConfiguration(Strategy)
|
|
End If
|
|
Next
|
|
Next
|
|
End If
|
|
Next
|
|
End If
|
|
|
|
|
|
|
|
|
|
End Sub
|
|
|
|
End Class
|
|
|
|
Public Class StrategyFeature
|
|
Inherits VMBase
|
|
|
|
Private m_sName As String
|
|
Public Property sName As String
|
|
Get
|
|
Return m_sName
|
|
End Get
|
|
Set(value As String)
|
|
m_sName = value
|
|
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
|
|
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
|
|
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
|
|
End Set
|
|
End Property
|
|
|
|
Private m_SelTopology As Topology
|
|
Public Property SelTopology As Topology
|
|
Get
|
|
Return m_SelTopology
|
|
End Get
|
|
Set(value As Topology)
|
|
m_SelTopology = value
|
|
NotifyPropertyChanged(NameOf(SelTopology))
|
|
End Set
|
|
End Property
|
|
|
|
Sub New(JsonStrategyFeature As JsonStrategyFeature)
|
|
m_sName = JsonStrategyFeature.sName
|
|
m_nPRC = JsonStrategyFeature.nPRC
|
|
m_nGRP = JsonStrategyFeature.nGRP
|
|
m_TopologyList = New ObservableCollection(Of Topology)((From JsonTopology In JsonStrategyFeature.TopologyList
|
|
Select New Topology(JsonTopology)).ToList())
|
|
NotifyPropertyChanged(NameOf(TopologyList))
|
|
End Sub
|
|
|
|
End Class
|
|
|
|
Public Class Topology
|
|
Inherits VMBase
|
|
|
|
Private m_sName As String
|
|
Public Property sName As String
|
|
Get
|
|
Return m_sName
|
|
End Get
|
|
Set(value As String)
|
|
m_sName = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_AvailableStrategyList_View As ICollectionView = Nothing
|
|
Public Property AvailableStrategyList_View As ICollectionView
|
|
Get
|
|
Return m_AvailableStrategyList_View
|
|
End Get
|
|
Set(value As ICollectionView)
|
|
|
|
End Set
|
|
End Property
|
|
|
|
Private m_ActiveStrategyList_View As ICollectionView = Nothing
|
|
Public ReadOnly Property ActiveStrategyList_View As ICollectionView
|
|
Get
|
|
Return m_ActiveStrategyList_View
|
|
End Get
|
|
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
|
|
End Set
|
|
End Property
|
|
|
|
Private m_SelActiveStrategy As Strategy
|
|
Public Property SelActiveStrategy As Strategy
|
|
Get
|
|
Return m_SelActiveStrategy
|
|
End Get
|
|
Set(value As Strategy)
|
|
m_SelActiveStrategy = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_SelAvailableStrategy As Strategy
|
|
Public Property SelAvailableStrategy As Strategy
|
|
Get
|
|
Return m_SelAvailableStrategy
|
|
End Get
|
|
Set(value As Strategy)
|
|
m_SelAvailableStrategy = value
|
|
End Set
|
|
End Property
|
|
|
|
Sub New(JsonTopology As JsonTopology)
|
|
m_sName = JsonTopology.sName
|
|
m_StrategyList = New ObservableCollection(Of Strategy)((From JsonStrategy In JsonTopology.StrategyList
|
|
Select New Strategy(Me, JsonStrategy)).ToList())
|
|
m_AvailableStrategyList_View = New ListCollectionView(StrategyList)
|
|
m_AvailableStrategyList_View.Filter = AddressOf AvailableStrategyFilter
|
|
m_ActiveStrategyList_View = New ListCollectionView(StrategyList)
|
|
m_ActiveStrategyList_View.Filter = AddressOf ActiveStrategyFilter
|
|
NotifyPropertyChanged(NameOf(StrategyList))
|
|
End Sub
|
|
|
|
Private Function AvailableStrategyFilter(Strategy As Object) As Boolean
|
|
Return DirectCast(Strategy, Strategy).nIndexInList < 0
|
|
End Function
|
|
|
|
Private Function ActiveStrategyFilter(Strategy As Object) As Boolean
|
|
Return DirectCast(Strategy, Strategy).nIndexInList >= 0
|
|
End Function
|
|
|
|
End Class
|
|
|
|
Public Class Strategy
|
|
Inherits VMBase
|
|
|
|
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
|
|
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
|
|
End Set
|
|
End Property
|
|
|
|
Sub New(ParentTopology As Topology, JsonStrategy As JsonStrategy)
|
|
m_ParentTopology = ParentTopology
|
|
m_sStrategyID = JsonStrategy.sStrategyID
|
|
End Sub
|
|
|
|
Friend Sub ReadConfiguration(ConfigurationStrategy As JsonStrategy)
|
|
m_nIndexInList = ConfigurationStrategy.nIndexInList
|
|
NotifyPropertyChanged(NameOf(nIndexInList))
|
|
m_ParentTopology.NotifyPropertyChanged(NameOf(m_ParentTopology.AvailableStrategyList_View))
|
|
m_ParentTopology.NotifyPropertyChanged(NameOf(m_ParentTopology.ActiveStrategyList_View))
|
|
End Sub
|
|
|
|
End Class
|
|
|
|
Public Class JsonStrategyFeature
|
|
|
|
Private m_sName As String
|
|
Public Property sName As String
|
|
Get
|
|
Return m_sName
|
|
End Get
|
|
Set(value As String)
|
|
m_sName = value
|
|
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
|
|
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
|
|
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
|
|
End Set
|
|
End Property
|
|
|
|
End Class
|
|
|
|
Public Class JsonTopology
|
|
|
|
Private m_sName As String
|
|
Public Property sName As String
|
|
Get
|
|
Return m_sName
|
|
End Get
|
|
Set(value As String)
|
|
m_sName = value
|
|
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
|
|
End Set
|
|
End Property
|
|
|
|
End Class
|
|
|
|
Public Class JsonStrategy
|
|
|
|
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_nIndexInList As Integer = -1
|
|
Public Property nIndexInList As Integer
|
|
Get
|
|
Return m_nIndexInList
|
|
End Get
|
|
Set(value As Integer)
|
|
m_nIndexInList = value
|
|
End Set
|
|
End Property
|
|
|
|
End Class |