Newer
Older
' Copyright 2017 European Union.

Michael KRISPER
committed
' Licensed under the EUPL (the 'Licence');
'
' * You may not use this work except in compliance with the Licence.
' * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl
' * Unless required by applicable law or agreed to in writing,
' software distributed under the Licence is distributed on an "AS IS" basis,
' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
'
' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports System.Collections.Generic

Markus Quaritsch
committed
Imports System.IO
Imports Newtonsoft.Json
Imports Newtonsoft.Json.Linq
Imports TUGraz.VectoCore.InputData.FileIO.JSON

Markus Quaritsch
committed
Imports TUGraz.VectoCore.Models.Declaration

Michael KRISPER
committed
Public Class Configuration
Public FilePath As String
Public ModOut As Boolean
Public Mod1Hz As Boolean
Public LogSize As Double
Public AirDensity As Double

Michael KRISPER
committed
Public OpenCmd As String
Public OpenCmdName As String
Public FuelDens As Double

Michael KRISPER
committed
Public FirstRun As Boolean
Public DeclMode As Boolean

Harald Martini
committed
Public Multithreaded As Boolean

Michael KRISPER
committed
Public ValidateRunData As Boolean
Public SaveVectoRunData As Boolean

Markus Quaritsch
committed
public OutputFolder As String

Harald Martini
committed
Public Const DefaultFuelType As FuelType = FuelType.DieselCI

Michael KRISPER
committed
Private Const FormatVersion As Short = 2

Harald Martini
committed
'Test Settings 2nd amendment
Public InitialSOCOverrideValue As Double
Public InitialSOCOverride As Boolean
Public ChargeSustainingIterationModeDeActivated As Boolean

Harald Martini
committed
Private _body as String = "Body"
Private _mod1Hz as String = "Mod1Hz"
Private _modOut as String = "ModOut"
Private _logSize as String = "LogSize"
Private _airdensity as String = "AirDensity"
Private _fueldensity as String = "FuelDensity"
Private _co2Perfc as String = "CO2perFC"
Private _openCmd as String = "OpenCmd"
Private _opencmdname as String = "OpenCmdName"
Private _firstrun as String = "FirstRun"
Private _declmode as String = "DeclMode"
Private _validaterundata as String = "ValidateRunData"
Private _outputfolder as String = "OutputFolder"
Private _saverundata as String = "SaveRunData"
Private _overrideinitialsoc as String = "OverrideInitialSOC"
Private _overrideinitialsocvalue as String = "OverrideInitialSOCValue"
Private _csItActive as String = "CS_it_deactivated"

Harald Martini
committed
Public Sub New()

Michael KRISPER
committed
SetDefault()
End Sub
Public Sub DeclInit()
AirDensity = Physics.AirDensity.Value() ' cDeclaration.AirDensity
FuelDens = DeclarationData.FuelData.Lookup(DefaultFuelType).FuelDensity.Value() ' cDeclaration.FuelDens
Co2PerFc = DeclarationData.FuelData.Lookup(DefaultFuelType).CO2PerFuelWeight ' cDeclaration.CO2perFC

Michael KRISPER
committed
End Sub
Public Sub SetDefault()
ModOut = True
Mod1Hz = False
LogSize = 2
AirDensity = 1.2
OpenCmd = "notepad"
OpenCmdName = "Notepad"
FuelDens = DeclarationData.FuelData.Lookup(DefaultFuelType).FuelDensity.Value()
Co2PerFc = DeclarationData.FuelData.Lookup(DefaultFuelType).CO2PerFuelWeight

Michael KRISPER
committed
FirstRun = True
DeclMode = True
ValidateRunData = True

Markus Quaritsch
committed
OutputFolder = ""

Harald Martini
committed
Multithreaded = True
SaveVectoRunData = False
ChargeSustainingIterationModeDeActivated = False
InitialSOCOverride = False
InitialSOCOverrideValue = 50

Michael KRISPER
committed
End Sub
Public Sub Load()
SetDefault()

Harald Martini
committed
If Environment.GetCommandLineArgs().Contains("-st") Then
Multithreaded = False
End If

Michael KRISPER
committed

Markus Quaritsch
committed
If Not File.Exists(FilePath) Then

Michael KRISPER
committed
Exit Sub
End If
Try
Using reader As TextReader = File.OpenText(FilePath)
Dim content As JToken = JToken.ReadFrom(New JsonTextReader(reader))

Harald Martini
committed
Dim body As JToken = content.GetEx(_body)
Try

Harald Martini
committed
Mod1Hz = body.GetEx(Of Boolean)(_mod1Hz)
Catch
End Try

Harald Martini
committed
ModOut = body.GetEx(Of Boolean)(_modOut)
LogSize = body.GetEx(Of Double)(_logSize)
AirDensity = body.GetEx(Of Double)(_airdensity)
FuelDens = body.GetEx(Of Double)(_fueldensity)
Co2PerFc = body.GetEx(Of Double)(_co2Perfc)
OpenCmd = body.GetEx(Of String)(_openCmd)
OpenCmdName = body.GetEx(Of String)(_opencmdname)
FirstRun = body.GetEx(Of Boolean)(_firstrun)
DeclMode = body.GetEx(Of Boolean)(_declmode)
ValidateRunData = IsNothing(body(_validaterundata)) OrElse body.GetEx(Of Boolean)(_validaterundata)
OutputFolder = If(body(_outputfolder) Is Nothing, "", body(_outputfolder).Value(of string)())
SaveVectoRunData = body.GetEx(Of Boolean)(_saverundata)
InitialSOCOverride = body.GetEx(Of Boolean)(_overrideinitialsoc)
InitialSOCOverrideValue = body.GetEx(Of Double)(_overrideinitialsocvalue)
ChargeSustainingIterationModeDeActivated = body.GetEx(Of Boolean)(_csItActive)

Harald Martini
committed
End Using

Michael KRISPER
committed
Catch ex As Exception
GUIMsg(MessageType.Err, "Error while loading settings!")

Michael KRISPER
committed
End Try
End Sub
Public Sub Save()
Dim header As Dictionary(Of String, Object) = New Dictionary(Of String, Object)
header.Add("Date", Now.ToUniversalTime().ToString("o"))
header.Add("AppVersion", VECTOvers)
header.Add("FileVersion", FormatVersion)

Michael KRISPER
committed
Dim body As Dictionary(Of String, Object) = New Dictionary(Of String, Object)

Harald Martini
committed
body.Add(_modOut, ModOut)
body.Add(_mod1Hz, Mod1Hz)
body.Add(_logSize, LogSize)
body.Add(_airdensity, AirDensity)
body.Add(_fueldensity, FuelDens)
body.Add(_co2Perfc, Co2PerFc)
body.Add(_openCMD, OpenCmd)
body.Add(_opencmdname, OpenCmdName)
body.Add(_firstrun, FirstRun)
body.Add(_declMode, DeclMode)
body.Add(_validaterundata, ValidateRunData)
body.Add(_outputfolder, OutputFolder)
body.Add(_saverundata, SaveVectoRunData)
body.Add(_overrideinitialsoc, InitialSOCOverride)
body.Add(_overrideinitialsocvalue, InitialSOCOverrideValue)
body.Add(_csItActive, ChargeSustainingIterationModeDeActivated)

Harald Martini
committed
JSONFileWriter.WriteFile(New Dictionary(Of String, Object) From {{"Header", header}, {_body, body}}, FilePath)

Michael KRISPER
committed
End Sub
End Class