From 1a3d50660f1218947cb743b5815d22daf333e266 Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Wed, 10 Mar 2021 15:00:01 +0100 Subject: [PATCH] reading multistage - binding first class --- .../Declaration/VehicleDeclarationAdapter.cs | 2 ++ .../XMLDeclarationInputDataProvider.cs | 31 +++++++++++++++++++ ...ationInputDataMultistageV01InjectModule.cs | 14 +++++++++ .../XMLDeclarationReaderInjectModule.cs | 3 +- .../FileIO/XML/XMLInputDataFactory.cs | 13 ++++++++ .../XSD/VectoOutputMultistage.0.1.xsd | 16 +++++----- VectoCore/VectoCore/Utils/XMLHelper.cs | 1 + VectoCore/VectoCore/VectoCore.csproj | 1 + 8 files changed, 72 insertions(+), 9 deletions(-) create mode 100644 VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataMultistageV01InjectModule.cs diff --git a/VECTO3GUI/ViewModel/Adapter/Declaration/VehicleDeclarationAdapter.cs b/VECTO3GUI/ViewModel/Adapter/Declaration/VehicleDeclarationAdapter.cs index 0c30dcde85..27efaa6425 100644 --- a/VECTO3GUI/ViewModel/Adapter/Declaration/VehicleDeclarationAdapter.cs +++ b/VECTO3GUI/ViewModel/Adapter/Declaration/VehicleDeclarationAdapter.cs @@ -102,6 +102,7 @@ namespace VECTO3GUI.ViewModel.Adapter.Declaration public PerSecond EngineIdleSpeed { get { return ViewModel.IdlingSpeed; } } public bool VocationalVehicle { get; } public bool SleeperCab { get; } + public bool AirdragModifiedMultistage { get; } public TankSystem? TankSystem { get; } public IAdvancedDriverAssistantSystemDeclarationInputData ADAS { get; } public bool ZeroEmissionVehicle { get; } @@ -121,6 +122,7 @@ namespace VECTO3GUI.ViewModel.Adapter.Declaration public Meter Width { get; } public Meter EntranceHeight { get; } public ConsumerTechnology DoorDriveTechnology { get; } + public StateOfCompletion StateOfCompletion { get; } public IAirdragDeclarationInputData AirdragInputData { get { return GetComponentViewModel<IAirdragViewModel>(Component.Airdrag)?.ModelData; diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationInputDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationInputDataProvider.cs index 8c91f030a6..6a7083158a 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationInputDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationInputDataProvider.cs @@ -112,6 +112,37 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration } + public class XMLDeclarationInputDataProviderMultistageV01 : AbstractXMLResource, IXMLDeclarationInputData + { + public static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_MULTISTAGE_BUS_VEHICLE_NAMESPACE_VO1; + + public const string XSD_TYPE = "VectoOuputMultistageType"; + + public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + protected IDeclarationJobInputData JobData; + + public XMLDeclarationInputDataProviderMultistageV01(XmlDocument xmlDoc, string fileName) : base(xmlDoc.DocumentElement, fileName) + { + + } + + protected override XNamespace SchemaNamespace + { + get { return NAMESPACE_URI; } + } + protected override DataSourceType SourceType { get; } + public IDeclarationJobInputData JobInputData + { + get { return JobData ?? (JobData = Reader.JobData); } + } + + + public IPrimaryVehicleInformationInputDataProvider PrimaryVehicleData { get; } + public XElement XMLHash { get; } + public IXMLDeclarationInputDataReader Reader { protected get; set; } + } + // --------------------------------------------------------------------------------------- diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataMultistageV01InjectModule.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataMultistageV01InjectModule.cs new file mode 100644 index 0000000000..54f573aef4 --- /dev/null +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataMultistageV01InjectModule.cs @@ -0,0 +1,14 @@ +using Ninject.Modules; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; + +namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules +{ + public class XMLDeclarationInputDataMultistageV01InjectModule : NinjectModule + { + public override void Load() + { + Bind<IXMLDeclarationInputData>().To<XMLDeclarationInputDataProviderMultistageV01>() + .Named(XMLDeclarationInputDataProviderMultistageV01.QUALIFIED_XSD_TYPE); + } + } +} \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationReaderInjectModule.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationReaderInjectModule.cs index 457b7fc1cb..add872db3a 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationReaderInjectModule.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationReaderInjectModule.cs @@ -22,7 +22,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration new XMLDeclarationInputDataV23InjectModule(), new XMLDeclarationInputDataV26InjectModule(), new XMLDeclarationPrimaryVehicleBusV01InjectModule(), - new XMLDeclarationInputDataV28InjectModule() + new XMLDeclarationInputDataV28InjectModule(), + new XMLDeclarationInputDataMultistageV01InjectModule(), }); #endregion diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/XMLInputDataFactory.cs b/VectoCore/VectoCore/InputData/FileIO/XML/XMLInputDataFactory.cs index 100cea5e5c..4bd3a8d138 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/XMLInputDataFactory.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/XMLInputDataFactory.cs @@ -114,6 +114,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML case XmlDocumentType.DeclarationJobData: return ReadDeclarationJob(xmlDoc, source); case XmlDocumentType.EngineeringJobData: return ReadEngineeringJob(xmlDoc, source); case XmlDocumentType.PrimaryVehicleBusOutputData: return ReadPrimaryVehicleDeclarationJob(xmlDoc, source); + case XmlDocumentType.MultistageOutputData: return ReadMultistageDeclarationJob(xmlDoc, source); case XmlDocumentType.EngineeringComponentData: case XmlDocumentType.DeclarationComponentData: case XmlDocumentType.ManufacturerReport: @@ -123,6 +124,18 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML } } + private IInputDataProvider ReadMultistageDeclarationJob(XmlDocument xmlDoc, string source) + { + var versionNumber = XMLHelper.GetXsdType(xmlDoc.DocumentElement?.SchemaInfo.SchemaType); + try { + var input = DeclarationFactory.CreateInputProvider(versionNumber, xmlDoc, source); + input.Reader = DeclarationFactory.CreateInputReader(versionNumber, input, xmlDoc.DocumentElement); + return input; + } catch (Exception e) { + throw new VectoException("Failed to read Declaration job version {0}", e, versionNumber); + } + } + private IEngineeringInputDataProvider ReadEngineeringJob(XmlDocument xmlDoc, string source) { var versionNumber = XMLHelper.GetXsdType(xmlDoc.DocumentElement?.SchemaInfo.SchemaType); diff --git a/VectoCore/VectoCore/Resources/XSD/VectoOutputMultistage.0.1.xsd b/VectoCore/VectoCore/Resources/XSD/VectoOutputMultistage.0.1.xsd index 20e79b89a2..daa302884b 100644 --- a/VectoCore/VectoCore/Resources/XSD/VectoOutputMultistage.0.1.xsd +++ b/VectoCore/VectoCore/Resources/XSD/VectoOutputMultistage.0.1.xsd @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- edited with XMLSpy v2021 (x64) (http://www.altova.com) by Franz Kober (Technische Universität Graz) --> +<!-- edited with XMLSpy v2021 (x64) (http://www.altova.com) by Markus Quaritsch (Technische Universität Graz) --> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:vif="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.4" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xmlns:out="urn:tugraz:ivt:VectoAPI:DeclarationOutputDefinitions" xmlns:common="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" elementFormDefault="qualified" attributeFormDefault="unqualified" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:ParameterDocumentation ParameterDocumentation.xsd"> <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationOutputDefinitions" schemaLocation="VectoOutputDefinitions.xsd"/> <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" schemaLocation="VectoDeclarationDefinitions.xsd"/> @@ -9,16 +9,10 @@ <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" schemaLocation="VectoDeclarationDefinitions.2.3_DEV.xsd"/> <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" schemaLocation="VectoDeclarationDefinitions.2.6_Buses.xsd"/> <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" schemaLocation="VectoDeclarationDefinitions.2.8_Stage.xsd"/> - <xs:element name="VectoOuputMultistage"> + <xs:element name="VectoOuputMultistage" type="vif:VectoOuputMultistageType"> <xs:annotation> <xs:documentation>Comment describing your root element</xs:documentation> </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="PrimaryVehicle" type="vif:PrimaryVehicleType"/> - <xs:element name="ManufacturingStage" type="vif:ManufacturingStageType" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> </xs:element> <xs:complexType name="AbstractAngledriveDataPIFType" abstract="true"/> <xs:complexType name="AbstractAxlegearDataPIFType" abstract="true"/> @@ -572,4 +566,10 @@ <xs:enumeration value="Coach"/> </xs:restriction> </xs:simpleType> + <xs:complexType name="VectoOuputMultistageType"> + <xs:sequence> + <xs:element name="PrimaryVehicle" type="vif:PrimaryVehicleType"/> + <xs:element name="ManufacturingStage" type="vif:ManufacturingStageType" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> </xs:schema> diff --git a/VectoCore/VectoCore/Utils/XMLHelper.cs b/VectoCore/VectoCore/Utils/XMLHelper.cs index 0adc70f421..fc5f90dccb 100644 --- a/VectoCore/VectoCore/Utils/XMLHelper.cs +++ b/VectoCore/VectoCore/Utils/XMLHelper.cs @@ -54,6 +54,7 @@ namespace TUGraz.VectoCore.Utils case "VectoInputEngineering": return XmlDocumentType.EngineeringJobData; case "VectoComponentEngineering": return XmlDocumentType.EngineeringComponentData; case "VectoOutputPrimaryVehicle": return XmlDocumentType.PrimaryVehicleBusOutputData; + case "VectoOuputMultistage": return XmlDocumentType.MultistageOutputData; } return null; diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj index 904f87b2fe..671c7f1f4f 100644 --- a/VectoCore/VectoCore/VectoCore.csproj +++ b/VectoCore/VectoCore/VectoCore.csproj @@ -189,6 +189,7 @@ <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLTorqueConverterDeclarationInputData.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLTyreDeclarationInputData.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLVehicleComponentsDeclaration.cs" /> + <Compile Include="InputData\FileIO\XML\Declaration\NinjectModules\XMLDeclarationInputDataMultistageV01InjectModule.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\NinjectModules\XMLDeclarationInputDataV20InjectModule.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\NinjectModules\XMLDeclarationInputDataV21InjectModule.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\NinjectModules\XMLDeclarationInputDataV22InjectModule.cs" /> -- GitLab