diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs index 20e9863570ab2e91f10ccc5e6223fe71502159f9..188dbe194ab500c719c3b29a8048afed4d67fd4a 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs @@ -1118,21 +1118,18 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider } } - - + // --------------------------------------------------------------------------------------- - public class XMLDeclarationInterimStageBusDataProviderV28 : XMLDeclarationVehicleDataProviderV20 { public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V28; - public new const string XSD_TYPE = "InterimStageInputType"; - public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); private IAdvancedDriverAssistantSystemDeclarationInputData _adas; + public XMLDeclarationInterimStageBusDataProviderV28( IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) : base(jobData, xmlNode, sourceFile) { @@ -1143,7 +1140,6 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider { get { return null; } } - public override LegislativeClass LegislativeClass { @@ -1162,22 +1158,14 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public override bool AirdragModifiedMultistage { - get - { - return GetBool(XMLNames.Bus_AirdragModifiedMultistage); - } + get { return GetBool(XMLNames.Bus_AirdragModifiedMultistage); } } public override RegistrationClass RegisteredClass { - get - { - return RegistrationClassHelper.Parse(GetString(XMLNames.Vehicle_RegisteredClass)).First(); - } + get { return RegistrationClassHelper.Parse(GetString(XMLNames.Vehicle_RegisteredClass)).First(); } } - - public override int NumberOfPassengersLowerDeck { get @@ -1198,10 +1186,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public override VehicleCode VehicleCode { - get - { - return GetString(XMLNames.Vehicle_VehicleCode).ParseEnum<VehicleCode>(); - } + get { return GetString(XMLNames.Vehicle_VehicleCode).ParseEnum<VehicleCode>(); } } public override bool LowEntry @@ -1211,34 +1196,22 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public override Meter Height { - get - { - return GetDouble(XMLNames.Bus_HeighIntegratedBody).SI<Meter>(); - } + get { return GetDouble(XMLNames.Bus_HeighIntegratedBody).SI<Meter>(); } } public override Meter Length { - get - { - return GetDouble(XMLNames.Bus_VehicleLength).SI<Meter>(); - } + get { return GetDouble(XMLNames.Bus_VehicleLength).SI<Meter>(); } } public override Meter Width { - get - { - return GetDouble(XMLNames.Bus_VehicleWidth).SI<Meter>(); - } + get { return GetDouble(XMLNames.Bus_VehicleWidth).SI<Meter>();} } public override Meter EntranceHeight { - get - { - return GetDouble(XMLNames.Bus_EntranceHeight).SI<Meter>(); - } + get { return GetDouble(XMLNames.Bus_EntranceHeight).SI<Meter>(); } } public override ConsumerTechnology DoorDriveTechnology @@ -1252,13 +1225,100 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider } public override StateOfCompletion StateOfCompletion + { + get { return StateOfCompletionHelper.Parse(GetString(XMLNames.Bus_StateOfCompletion)); } + } + + protected override DataSourceType SourceType { get; } + + #region Overrides of AbstractXMLResource + + protected override XNamespace SchemaNamespace + { + get { return NAMESPACE_URI; } + } + + #endregion + + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationExemptedInterimStageBusDataProviderV28 : XMLDeclarationVehicleDataProviderV20 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V28; + public new const string XSD_TYPE = "ExemptedInterimStageInputType"; + public new static readonly string QUALIFIED_XSD_TYPE = + XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationExemptedInterimStageBusDataProviderV28(IXMLDeclarationJobInputData jobData, + XmlNode xmlNode, string sourceFile) + : base(jobData, xmlNode, sourceFile) + { + + SourceType = DataSourceType.XMLEmbedded; + } + + public override LegislativeClass LegislativeClass + { + get { return GetString(XMLNames.Bus_LegislativeCategory).ParseEnum<LegislativeClass>(); } + } + + public override Kilogram CurbMassChassis + { + get { return GetDouble(XMLNames.Bus_CorrectedActualMass).SI<Kilogram>(); } + } + + public override Kilogram GrossVehicleMassRating + { + get { return GetDouble(XMLNames.Vehicle_TPMLM).SI<Kilogram>(); } + } + + public override RegistrationClass RegisteredClass + { + get { return RegistrationClassHelper.Parse(GetString(XMLNames.Vehicle_RegisteredClass)).First(); } + } + + public override int NumberOfPassengersLowerDeck { get { - return StateOfCompletionHelper.Parse(GetString(XMLNames.Bus_StateOfCompletion)); + var node = GetNode(XMLNames.Bus_NumberPassengersLowerDeck); + return XmlConvert.ToInt32(node.InnerText); } } + public override int NumberOfPassengersUpperDeck + { + get + { + var node = GetNode(XMLNames.Bus_NumberPassengersUpperDeck); + return XmlConvert.ToInt32(node.InnerText); + } + } + + public override VehicleCode VehicleCode + { + get { return GetString(XMLNames.Vehicle_VehicleCode).ParseEnum<VehicleCode>(); } + } + + public override bool LowEntry + { + get { return GetBool(XMLNames.Bus_LowEntry); } + } + + public override Meter Height + { + get { return GetDouble(XMLNames.Bus_HeighIntegratedBody).SI<Meter>(); } + } + + public override XmlElement PTONode + { + get { return null; } + } + + public override XmlElement ComponentNode { get{ return null; }} + protected override DataSourceType SourceType { get; } #region Overrides of AbstractXMLResource @@ -1267,9 +1327,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider { get { return NAMESPACE_URI; } } - - #endregion + #endregion } } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV28InjectModule.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV28InjectModule.cs index b6702c58eb3f0fa3651b9fb22e3c18727e4ce31c..6ab77f5b7a26f38e5296bde25f5a18fc0f16fa64 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV28InjectModule.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV28InjectModule.cs @@ -14,7 +14,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules { Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationInterimStageBusDataProviderV28>() .Named(XMLDeclarationInterimStageBusDataProviderV28.QUALIFIED_XSD_TYPE); - + + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationExemptedInterimStageBusDataProviderV28>() + .Named(XMLDeclarationExemptedInterimStageBusDataProviderV28.QUALIFIED_XSD_TYPE); + Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationInterimStageBusComponentsDataProviderV28>() .Named(XMLDeclarationInterimStageBusComponentsDataProviderV28.QUALIFIED_XSD_TYPE); diff --git a/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputTest.cs b/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputTest.cs index a9cd67da5cad753ab5218c55478dcb32d43d9941..5ee3ff34d81c73f895d5b438db3a77534a482db7 100644 --- a/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputTest.cs +++ b/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputTest.cs @@ -15,8 +15,8 @@ namespace TUGraz.VectoCore.Tests.XML protected IXMLInputDataReader xmlInputReader; private IKernel _kernel; - const string VehicleStageInput = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-stage_input_full-sample.xml"; - + const string VehicleInterimStageInput = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-stage_input_full-sample.xml"; + const string VehicleExemptedInterimStageInput = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-exempted_input_full-sample.xml"; [OneTimeSetUp] public void RunBeforeAnyTests() @@ -28,9 +28,9 @@ namespace TUGraz.VectoCore.Tests.XML } [TestCase] - public void TestVehicleStageInput() + public void TestVehicleInterimStageInput() { - var reader = XmlReader.Create(VehicleStageInput); + var reader = XmlReader.Create(VehicleInterimStageInput); var inputDataProvider = xmlInputReader.CreateDeclaration(reader); var vehicle = inputDataProvider.JobInputData.Vehicle; @@ -41,7 +41,7 @@ namespace TUGraz.VectoCore.Tests.XML Assert.AreEqual(DateTime.Parse("2020-01-09T11:00:00Z").ToUniversalTime(), vehicle.Date); Assert.AreEqual("Sample Bus Model", vehicle.Model); Assert.AreEqual(LegislativeClass.M3, vehicle.LegislativeClass); - Assert.AreEqual(500, vehicle.CurbMassChassis.Value());//CurbMassChassis + Assert.AreEqual(500, vehicle.CurbMassChassis.Value());//CorrectedActualMass Assert.AreEqual(3500, vehicle.GrossVehicleMassRating.Value());//TechnicalPermissibleMaximumLadenMass Assert.AreEqual(false, vehicle.AirdragModifiedMultistage); Assert.AreEqual(TankSystem.Compressed, vehicle.TankSystem);//NgTankSystem @@ -115,5 +115,30 @@ namespace TUGraz.VectoCore.Tests.XML Assert.AreEqual(false, hvacAux.AirElectricHeater); Assert.AreEqual(false, hvacAux.OtherHeatingTechnology); } + + + [TestCase] + public void TestVehicleExemptedInterimStageInput() + { + var reader = XmlReader.Create(VehicleExemptedInterimStageInput); + var inputDataProvider = xmlInputReader.CreateDeclaration(reader); + var vehicle = inputDataProvider.JobInputData.Vehicle; + + Assert.AreEqual("VEH-1234567890", vehicle.Identifier); + Assert.AreEqual("Some Manufacturer", vehicle.Manufacturer); + Assert.AreEqual("Infinite Loop", vehicle.ManufacturerAddress); + Assert.AreEqual("VEH-1234567891", vehicle.VIN); + Assert.AreEqual(DateTime.Parse("2021-01-09T11:00:00Z").ToUniversalTime(), vehicle.Date); + Assert.AreEqual("Sample Bus Model 2", vehicle.Model); + Assert.AreEqual(LegislativeClass.M3, vehicle.LegislativeClass); + Assert.AreEqual(7000, vehicle.CurbMassChassis.Value());//CorrectedActualMass + Assert.AreEqual(10000, vehicle.GrossVehicleMassRating.Value());//TechnicalPermissibleMaximumLadenMass + Assert.AreEqual(RegistrationClass.A, vehicle.RegisteredClass);//ClassBus + Assert.AreEqual(10, vehicle.NumberOfPassengersLowerDeck); + Assert.AreEqual(20, vehicle.NumberOfPassengersUpperDeck); + Assert.AreEqual(VehicleCode.CC, vehicle.VehicleCode); + Assert.AreEqual(true, vehicle.LowEntry); + Assert.AreEqual(2500, vehicle.Height.Value()); + } } }