diff --git a/VECTOAux/VectoAuxiliaries/AuxiliaryConfig.vb b/VECTOAux/VectoAuxiliaries/AuxiliaryConfig.vb index 8e0faf92115e14912b277a436daad83d6618de94..fb0f23eb0fb8b1f40cdd2ae37da425a283c15048 100644 --- a/VECTOAux/VectoAuxiliaries/AuxiliaryConfig.vb +++ b/VECTOAux/VectoAuxiliaries/AuxiliaryConfig.vb @@ -298,10 +298,11 @@ Public Function Load( auxFile As String ) As Boolean Implements IAuxiliaryCon Dim output As String = File.ReadAllText(auxFile) + tmpAux = JsonConvert.DeserializeObject( Of AuxiliaryConfig)(output,settings) 'This is where we Assume values of loaded( Deserialized ) object. - AssumeValuesOfOther( tmpAux ) + AssumeValuesOfOther( tmpAux ) Catch ex as Exception diff --git a/VECTOAux/VectoAuxiliaries/Hvac/ISSMTOOL.vb b/VECTOAux/VectoAuxiliaries/Hvac/ISSMTOOL.vb index 255621f2e995a6455725a86750acf2729e7c1655..13ecf0dac5af6f72917f0f817cc091c4c2a6f7cc 100644 --- a/VECTOAux/VectoAuxiliaries/Hvac/ISSMTOOL.vb +++ b/VECTOAux/VectoAuxiliaries/Hvac/ISSMTOOL.vb @@ -10,8 +10,12 @@ ReadOnly Property MechanicalWBaseAdjusted As Single ReadOnly Property FuelLPerHBaseAdjusted As Single +Sub Clone( from As ISSMTOOL ) +Function Load(filePath As String) As Boolean + +Function Save(filePath As String) As Boolean diff --git a/VECTOAux/VectoAuxiliaries/Hvac/SSMTOOL.vb b/VECTOAux/VectoAuxiliaries/Hvac/SSMTOOL.vb index 9c89c6b72854a08e6b6890288103e47663f3387f..643b1eacfb776b42e52de93fa40676658dd372d2 100644 --- a/VECTOAux/VectoAuxiliaries/Hvac/SSMTOOL.vb +++ b/VECTOAux/VectoAuxiliaries/Hvac/SSMTOOL.vb @@ -1,71 +1,148 @@ -Namespace Hvac +Imports Omu.ValueInjecter +Imports VectoAuxiliaries.Hvac +Imports Newtonsoft.Json +Imports System.IO + +Namespace Hvac + Public Class SSMTOOL Implements ISSMTOOL + Private filePath As String + Public genInputs As ISSMGenInputs + Public techList As ISSMTechList - - Public ReadOnly Property ElectricalWAdjusted As Single Implements ISSMTOOL.ElectricalWAdjusted + Public ReadOnly Property ElectricalWAdjusted As Single Implements ISSMTOOL.ElectricalWAdjusted Get End Get End Property - Public ReadOnly Property ElectricalWBase As Single Implements ISSMTOOL.ElectricalWBase + Public ReadOnly Property ElectricalWBase As Single Implements ISSMTOOL.ElectricalWBase Get End Get End Property - Public ReadOnly Property FuelLPerHBase As Single Implements ISSMTOOL.FuelLPerHBase + Public ReadOnly Property FuelLPerHBase As Single Implements ISSMTOOL.FuelLPerHBase Get End Get End Property - Public ReadOnly Property FuelLPerHBaseAdjusted As Single Implements ISSMTOOL.FuelLPerHBaseAdjusted + Public ReadOnly Property FuelLPerHBaseAdjusted As Single Implements ISSMTOOL.FuelLPerHBaseAdjusted Get End Get End Property - Public ReadOnly Property MechanicalWBase As Single Implements ISSMTOOL.MechanicalWBase + Public ReadOnly Property MechanicalWBase As Single Implements ISSMTOOL.MechanicalWBase Get End Get End Property - Public ReadOnly Property MechanicalWBaseAdjusted As Single Implements ISSMTOOL.MechanicalWBaseAdjusted + Public ReadOnly Property MechanicalWBaseAdjusted As Single Implements ISSMTOOL.MechanicalWBaseAdjusted Get End Get End Property + Sub New() + + End Sub + Sub New(filePath As String) - Sub new ( ) + Me.filePath = filePath + genInputs = New SSMGenInputs(True) + techList = New SSMTechList(filePath, genInputs) End Sub - Sub New ( StoredFilePath As string) + Public Sub Clone(from As ISSMTOOL) Implements ISSMTOOL.Clone + Dim feedback As String = String.Empty - End Sub + genInputs.InjectFrom(DirectCast(from, SSMTOOL).genInputs) - Private Sub SetDefaults() + techList.InjectFrom(DirectCast(from, SSMTOOL).techList) + techList.Clear() + For Each line As TechListBenefitLine In DirectCast(from, SSMTOOL).techList.TechLines + Dim newLine As ITechListBenefitLine = New TechListBenefitLine(Me.genInputs) + newLine.InjectFrom(line) + techList.Add(newLine, feedback) + Next End Sub +'Persistance Functions +Public Function Save(filePath As String) As Boolean Implements ISSMTOOL.Save + + Dim returnValue As Boolean = True + Dim settings As JsonSerializerSettings = New JsonSerializerSettings() + settings.TypeNameHandling = TypeNameHandling.Objects + + 'JSON METHOD + Try + + Dim output As String = JsonConvert.SerializeObject(Me, Formatting.Indented, settings) + + File.WriteAllText(filePath, output) + + Catch ex As Exception + + 'TODO:Do something meaningfull here perhaps logging + returnValue = False + + End Try + + Return returnValue + +End Function +Public Function Load(filePath As String) As Boolean Implements ISSMTOOL.Load + + Dim returnValue As Boolean = True + Dim settings As JsonSerializerSettings = New JsonSerializerSettings() + Dim tmpAux As SSMTOOL = New SSMTOOL() + + settings.TypeNameHandling = TypeNameHandling.Objects + + 'JSON METHOD + Try + + Dim output As String = File.ReadAllText(filePath) + + + tmpAux = JsonConvert.DeserializeObject(Of SSMTOOL)(output, settings) + + 'This is where we Assume values of loaded( Deserialized ) object. + Clone(tmpAux) + + Catch ex As Exception + + 'TODO:Do something meaningfull here perhaps logging + + returnValue = False + End Try + + Return returnValue + +End Function + + + End Class diff --git a/VECTOAux/VectoAuxiliaries/Hvac/TechListBenefitLine.vb b/VECTOAux/VectoAuxiliaries/Hvac/TechListBenefitLine.vb index 527063c0c42f0768749be739152762c9180cbca9..feb865ba7d092a4ba90bc57ee56440d417e56371 100644 --- a/VECTOAux/VectoAuxiliaries/Hvac/TechListBenefitLine.vb +++ b/VECTOAux/VectoAuxiliaries/Hvac/TechListBenefitLine.vb @@ -232,15 +232,17 @@ End Sub op1.ActiveVC = op2.ActiveVC AndAlso _ op1.ActiveVH = op2.ActiveVH AndAlso _ op1.ActiveVV = op2.ActiveVV AndAlso _ - op1.H = op2.H AndAlso _ op1.LineType = op2.LineType AndAlso _ + op1.LowFloorC = op2.LowFloorC AndAlso _ op1.LowFloorV = op2.LowFloorV AndAlso _ + op1.LowFloorH = op2.LowFloorH AndAlso _ op1.SemiLowFloorC = op2.SemiLowFloorC AndAlso _ op1.SemiLowFloorH = op2.SemiLowFloorH AndAlso _ op1.SemiLowFloorV = op2.SemiLowFloorV AndAlso _ op1.RaisedFloorC = op2.RaisedFloorC AndAlso _ op1.RaisedFloorH = op2.RaisedFloorH AndAlso _ op1.RaisedFloorV = op2.RaisedFloorV AndAlso _ + op1.OnVehicle = op2.OnVehicle AndAlso _ op1.Units = op2.Units ) then Return True @@ -253,23 +255,24 @@ End Sub End Operator - Public Shared Operator <> (ByVal op1 as TechListBenefitLine, ByVal op2 as TechListBenefitLine) As Boolean If ( op1.Category <> op2.Category OrElse _ op1.BenefitName <> op2.BenefitName OrElse _ op1.ActiveVC <> op2.ActiveVC OrElse _ op1.ActiveVH <> op2.ActiveVH OrElse _ - op1.ActiveVV <> op2.ActiveVV OrElse _ - op1.H <> op2.H OrElse _ + op1.ActiveVV <> op2.ActiveVV OrElse _ op1.LineType <> op2.LineType OrElse _ + op1.LowFloorC <> op2.LowFloorC OrElse _ op1.LowFloorV <> op2.LowFloorV OrElse _ + op1.LowFloorH <> op2.LowFloorH OrElse _ op1.SemiLowFloorC <> op2.SemiLowFloorC OrElse _ op1.SemiLowFloorH <> op2.SemiLowFloorH OrElse _ op1.SemiLowFloorV <> op2.SemiLowFloorV OrElse _ op1.RaisedFloorC <> op2.RaisedFloorC OrElse _ op1.RaisedFloorH <> op2.RaisedFloorH OrElse _ op1.RaisedFloorV <> op2.RaisedFloorV OrElse _ + op1.OnVehicle <> op2.OnVehicle OrElse _ op1.Units <> op2.Units ) then Return True @@ -283,13 +286,13 @@ End Operator End Operator - + Public Sub CloneFrom(source As ITechListBenefitLine) Implements ITechListBenefitLine.CloneFrom - Me.Units = source.Units - Me.Category = source.Category - Me.BenefitName = source.BenefitName + Me.Units = source.Units + Me.Category = source.Category + Me.BenefitName = source.BenefitName Me.LowFloorH = source.LowFloorH Me.LowFloorV = source.LowFloorV Me.LowFloorC = source.LowFloorC @@ -302,23 +305,20 @@ End Operator Me.RaisedFloorV = source.RaisedFloorV Me.RaisedFloorC = source.RaisedFloorC - Me.OnVehicle = source.OnVehicle - Me.ActiveVH = source.ActiveVH - Me.ActiveVV = source.ActiveVV - Me.ActiveVC = source.ActiveVC - Me.LineType = source.LineType + Me.OnVehicle = source.OnVehicle + Me.ActiveVH = source.ActiveVH + Me.ActiveVV = source.ActiveVV + Me.ActiveVC = source.ActiveVC + Me.LineType = source.LineType End Sub + Public Function IsEqualTo(source As ITechListBenefitLine) As boolean Implements ITechListBenefitLine.IsEqualTo + Return If(Me=source,True,False) + - - Public Function IsEqualTo(source As ITechListBenefitLine) As boolean Implements ITechListBenefitLine.IsEqualTo - - Return Me=source - - - End Function + End Function diff --git a/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj b/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj index e35fcc5c31bd9919ebbd996a6509c9911e1c8c8f..a867030c68e5363abf5da08b34eb62dfc77bb3fb 100644 --- a/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj +++ b/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj @@ -56,6 +56,9 @@ <SpecificVersion>False</SpecificVersion> <HintPath>bin\Debug\Newtonsoft.Json.dll</HintPath> </Reference> + <Reference Include="Omu.ValueInjecter"> + <HintPath>..\..\packages\valueinjecter.2.3.3\lib\net35\Omu.ValueInjecter.dll</HintPath> + </Reference> <Reference Include="SpreadsheetLight, Version=3.4.4.0, Culture=neutral, PublicKeyToken=32fbb46dc1730c57, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> <HintPath>3rdPartyLibraries\SpreadsheetLight.dll</HintPath> diff --git a/VECTOAux/VectoAuxiliaries/packages.config b/VECTOAux/VectoAuxiliaries/packages.config index 6f5b1e06a3cce86c7880219342a2c724cb3778a2..a7d552e47c7e264d5d35ff3563717de6b4b294bf 100644 --- a/VECTOAux/VectoAuxiliaries/packages.config +++ b/VECTOAux/VectoAuxiliaries/packages.config @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <packages> <package id="Newtonsoft.Json" version="6.0.6" targetFramework="net40" /> + <package id="valueinjecter" version="2.3.3" targetFramework="net40" /> </packages> \ No newline at end of file diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/SSMTOOLTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/SSMTOOLTests.vb index e6fdc95496a6433d93852d5940cea9d29183ab19..5abca22f90b82a82ce2c29442e3f9f7306c5a134 100644 --- a/VECTOAux/VectoAuxiliariesTests/UnitTests/SSMTOOLTests.vb +++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/SSMTOOLTests.vb @@ -426,6 +426,132 @@ End Sub End Sub + 'TechListLineTests + <Test()> + Public Sub Instantiate_NewTechListLine() + + Dim gen As ISSMGenInputs = New SSMGenInputs(true) + + Dim ttl As ITechListBenefitLine = New TechListBenefitLine( gen) + + Assert.IsNotNull( ttl ) + + + End Sub + <Test()> + Public Sub TechBenefitLineCompareAsEqual() + + Dim gen As ISSMGenInputs = New SSMGenInputs(true) + + Dim ttl1 As ITechListBenefitLine = New TechListBenefitLine( gen) + Dim ttl2 As ITechListBenefitLine = New TechListBenefitLine( gen) + + Assert.IsTrue( ttl1.IsEqualTo(ttl2) ) + + + End Sub + <Test()> _ + <TestCase("Category" )> _ + <TestCase("BenefitName" )> _ + <TestCase("ActiveVC" )> _ + <TestCase("ActiveVH" )> _ + <TestCase("ActiveVV" )> _ + <TestCase("LineType" )> _ + <TestCase("LowFloorC" )> _ + <TestCase("LowFloorV" )> _ + <TestCase("LowFloorH" )> _ + <TestCase("SemiLowFloorC" )> _ + <TestCase("SemiLowFloorH" )> _ + <TestCase("SemiLowFloorV" )> _ + <TestCase("RaisedFloorC" )> _ + <TestCase("RaisedFloorH" )> _ + <TestCase("RaisedFloorV" )> _ + <TestCase("Units" )> _ + <TestCase("OnVehicle" )> _ + Public Sub TechBenefitLineCompareAsUnequal( prop As string) + + Dim gen As ISSMGenInputs = New SSMGenInputs(true) + + Dim ttl1 As ITechListBenefitLine = New TechListBenefitLine( gen) + Dim ttl2 As ITechListBenefitLine = New TechListBenefitLine( gen) + + Select Case prop + + + Case "Category" + ttl2.Category="NOT" + Case "BenefitName" + ttl2.BenefitName="NOT" + Case "ActiveVC" + ttl2.ActiveVC=True + Case "ActiveVH" + ttl2.ActiveVH=True + Case "ActiveVV" + ttl2.ActiveVV=True + Case "LineType" + ttl2.LineType = TechLineType.HVCActiveSelection + Case "LowFloorC" + ttl2.LowFloorC=1 + Case "LowFloorV" + ttl2.LowFloorV=1 + Case "LowFloorH" + ttl2.LowFloorH=1 + Case "SemiLowFloorC" + ttl2.SemiLowFloorC=1 + Case "SemiLowFloorH" + ttl2.SemiLowFloorH=1 + Case "SemiLowFloorV" + ttl2.SemiLowFloorH=1 + Case "RaisedFloorC" + ttl2.RaisedFloorC=1 + Case "RaisedFloorH" + ttl2.RaisedFloorH=1 + Case "RaisedFloorV" + ttl2.RaisedFloorV=1 + Case "Units" + ttl2.Units ="NONE" + Case "OnVehicle" + ttl2.OnVehicle =True + + End Select + + + Assert.IsFalse(ttl1.IsEqualTo(ttl2) ) + + + End Sub + + + 'SSMTOOL Persistance + <Test()> + Public Sub SaveAndRetreiveTest() + + const filePath as string = "SSMTOOLTestSaveRetreive.json" + + Dim gen As ISSMGenInputs = New SSMGenInputs(true) + + Dim saved As new SSMTOOL + + + + Dim target As SSMTOOL = New SSMTOOL(filePath ) + + target.Save(filePath) + + 'change something + target.genInputs.BP_BusLength=202.202 + + Assert.AreEqual( target.genInputs.BP_BusLength,202.202) + + 'Retreive + target.Load( filePath ) + + Assert.AreEqual( target.genInputs.BP_BusLength,10.655) + + + End Sub + + End Class End Namespace