diff --git a/VECTO/Input Files/Vehicle.vb b/VECTO/Input Files/Vehicle.vb index d2b017048abe9a0210b0b9541e4151e7dce7b7d3..e36d83fbb7e6ee27f8c0a07af355f0b3c3644f60 100644 --- a/VECTO/Input Files/Vehicle.vb +++ b/VECTO/Input Files/Vehicle.vb @@ -11,6 +11,7 @@ Option Infer On Imports System.Collections.Generic +Imports System.ComponentModel.DataAnnotations Imports System.IO Imports System.Linq Imports Newtonsoft.Json.Linq @@ -20,7 +21,7 @@ Imports TUGraz.VectoCommon.Utils Imports TUGraz.VectoCore.InputData.FileIO.JSON Imports TUGraz.VectoCore.Models.Declaration - +<CustomValidation(GetType(Vehicle), "ValidateVehicle")> Public Class Vehicle 'V2 MassMax is now saved in [t] instead of [kg] Private Const FormatVersion As Short = 7 @@ -37,7 +38,7 @@ Public Class Vehicle Public CrossWindCorrectionMode As CrossWindCorrectionMode Public ReadOnly CrossWindCorrectionFile As SubPath - Public RetarderType As RetarderType + <ValidateObject()> Public RetarderType As RetarderType Public RetarderRatio As Double = 0 Public ReadOnly RetarderLossMapFile As SubPath @@ -83,6 +84,11 @@ Public Class Vehicle SetDefault() End Sub + + Public Shared Function ValidateVehicle(vehicle As Vehicle, validationContext As ValidationContext) As ValidationResult + Return New ValidationResult("bla") + End Function + Private Sub SetDefault() Mass = 0 MassExtra = 0 @@ -251,6 +257,13 @@ Public Class Vehicle Public Function SaveFile() As Boolean SavedInDeclMode = Cfg.DeclMode + Dim validationResults = Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering)) + + If validationResults.Count > 0 Then + MsgBox(String.Format("Invalid input: \n{0}", String.Join("; ", validationResults)), MsgBoxStyle.OkOnly, "Failed to save vehicle") + Return False + End If + Dim json As New JSONParser 'Header Dim header As Dictionary(Of String, Object) = New Dictionary(Of String, Object) From {