Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit 9fed8c62 authored by Markus Quaritsch's avatar Markus Quaritsch
Browse files

adding parsing of schema versions 2.1 and 2.2

parent 8d44f93e
No related branches found
No related tags found
No related merge requests found
Showing
with 459 additions and 227 deletions
......@@ -54,43 +54,17 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
#endregion
}
// ---------------------------------------------------------------------------------------
public class XMLDeclarationADASDataProviderV20 : XMLDeclarationADASDataProviderV10
public class XMLDeclarationADASDataProviderV21 : XMLDeclarationADASDataProviderV10
{
public new const string NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V20;
public XMLDeclarationADASDataProviderV20(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile)
/*
* ADAS are added in version 2.1
*/
public new const string NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V21;
public XMLDeclarationADASDataProviderV21(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile)
: base(vehicle, componentNode, sourceFile) { }
protected override string SchemaNamespace
{
get { return NAMESPACE_URI; }
}
protected override DataSourceType SourceType
{
get { return DataSourceType.DefaultValue; }
}
public override bool EngineStopStart
{
get { return false; }
}
public override bool EcoRollWitoutEngineStop
{
get { return false; }
}
public override bool EcoRollWithEngineStop
{
get { return false; }
}
public override PredictiveCruiseControlType PredictiveCruiseControl
{
get { return PredictiveCruiseControlType.None; }
}
}
}
......@@ -14,7 +14,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
{
public const string NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V10;
public XMLDeclarationEngineDataProviderV10(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) :
public XMLDeclarationEngineDataProviderV10(
IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) :
base(componentNode, sourceFile)
{
SourceType = DataSourceType.XMLFile;
......@@ -50,14 +51,18 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
public virtual TableData FuelConsumptionMap
{
get {
return ReadTableData(XMLNames.Engine_FuelConsumptionMap, XMLNames.Engine_FuelConsumptionMap_Entry, AttributeMappings.FuelConsumptionMapMapping);
return ReadTableData(
XMLNames.Engine_FuelConsumptionMap, XMLNames.Engine_FuelConsumptionMap_Entry,
AttributeMappings.FuelConsumptionMapMapping);
}
}
public virtual TableData FullLoadCurve
{
get {
return ReadTableData(XMLNames.Engine_FullLoadAndDragCurve, XMLNames.Engine_FullLoadCurve_Entry, AttributeMappings.EngineFullLoadCurveMapping);
return ReadTableData(
XMLNames.Engine_FullLoadAndDragCurve, XMLNames.Engine_FullLoadCurve_Entry,
AttributeMappings.EngineFullLoadCurveMapping);
}
}
......@@ -121,7 +126,34 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
{
public new const string NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V20;
public XMLDeclarationEngineDataProviderV20(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base(vehicle, componentNode, sourceFile) { }
public XMLDeclarationEngineDataProviderV20(
IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base(
vehicle, componentNode, sourceFile) { }
protected override string SchemaNamespace
{
get { return NAMESPACE_URI; }
}
}
// ---------------------------------------------------------------------------------------
public class XMLDeclarationEngineDataProviderV21 : XMLDeclarationEngineDataProviderV20
{
/*
* harmonize fuel-type paramenter in Regulation 2019/318 (amendment of 2017/2400)
*/
public new const string NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V21;
public XMLDeclarationEngineDataProviderV21(
IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base(
vehicle, componentNode, sourceFile) { }
public override FuelType FuelType
{
get { return GetString(XMLNames.Engine_FuelType).ParseEnum<FuelType>(); }
}
protected override string SchemaNamespace
{
......
......@@ -67,4 +67,19 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
get { return NAMESPACE_URI; }
}
}
// ---------------------------------------------------------------------------------------
public class XMLDeclarationTyreDataProviderV22 : XMLDeclarationTyreDataProviderV10
{
public new const string NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V22;
public XMLDeclarationTyreDataProviderV22(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile)
: base(vehicle, componentNode, sourceFile) { }
protected override string SchemaNamespace
{
get { return NAMESPACE_URI; }
}
}
}
......@@ -47,6 +47,13 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
{
public const string NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V10;
protected IVehicleComponentsDeclaration _components;
protected IPTOTransmissionInputData _ptoData;
private XmlElement _componentNode;
private XmlElement _ptoNode;
private XmlElement _adasNode;
public XMLDeclarationVehicleDataProviderV10(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile)
: base(xmlNode, sourceFile)
{
......@@ -55,16 +62,27 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
}
public virtual IXMLComponentReader ComponentReader { protected get; set; }
public XmlElement ComponentNode
{
get { return _componentNode ?? (_componentNode = GetNode(XMLNames.Vehicle_Components) as XmlElement ); }
}
public virtual IXMLPTOReader PTOReader { protected get; set; }
public virtual IXMLComponentReader ComponentReader { protected get; set; }
public virtual IXMLADASReader ADASReader { protected get; set; }
public XmlElement PTONode
{
get { return _ptoNode ?? (_ptoNode = GetNode(XMLNames.Vehicle_PTO) as XmlElement); }
}
protected IVehicleComponentsDeclaration _components;
protected IPTOTransmissionInputData _ptoData;
public virtual IXMLPTOReader PTOReader { protected get; set; }
public XmlElement ADASNode
{
get { return _adasNode ?? (_adasNode = GetNode(XMLNames.Vehicle_ADAS, required: false) as XmlElement); }
}
public virtual IXMLADASReader ADASReader { protected get; set; }
public IXMLDeclarationJobInputData Job { get; }
public virtual string Identifier
......@@ -258,6 +276,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
public class XMLDeclarationVehicleDataProviderV20 : XMLDeclarationVehicleDataProviderV10
{
/*
* use default values for new parameters introduced in 2019/318 (amendment of 2017/2400
*/
public new const string NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V20;
public XMLDeclarationVehicleDataProviderV20(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) :
......@@ -285,7 +307,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
public override IAdvancedDriverAssistantSystemDeclarationInputData ADAS
{
get { return ADASReader.ADASInputData; }
get { return new ADASDefaultValues(); }
}
public override bool ZeroEmissionVehicle
......@@ -312,5 +334,48 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
{
get { return null; }
}
public class ADASDefaultValues : IAdvancedDriverAssistantSystemDeclarationInputData
{
#region Implementation of IAdvancedDriverAssistantSystemDeclarationInputData
public bool EngineStopStart { get { return false; } }
public bool EcoRollWitoutEngineStop { get { return false; } }
public bool EcoRollWithEngineStop { get { return false; } }
public PredictiveCruiseControlType PredictiveCruiseControl { get { return PredictiveCruiseControlType.None; } }
#endregion
}
}
// ---------------------------------------------------------------------------------------
public class XMLDeclarationVehicleDataProviderV21 : XMLDeclarationVehicleDataProviderV10
{
/*
* added new parameters introduced in 2019/318 (amendment of 2017/2400) (already implemented in version 1.0)
*/
public new const string NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V21;
public XMLDeclarationVehicleDataProviderV21(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) :
base(jobData, xmlNode, sourceFile) { }
public override VehicleCategory VehicleCategory
{
get {
var val = GetString(XMLNames.Vehicle_VehicleCategory);
if ("Rigid Lorry".Equals(val, StringComparison.InvariantCultureIgnoreCase)) {
return VehicleCategory.RigidTruck;
}
return val.ParseEnum<VehicleCategory>();
}
}
protected override string SchemaNamespace
{
get { return NAMESPACE_URI; }
}
}
}
using System.Xml;
using System.Xml.Schema;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Factory;
......@@ -8,10 +9,16 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces
{
public interface IXMLDeclarationVehicleData : IVehicleDeclarationInputData, IXMLResource
{
XmlElement ComponentNode { get; }
IXMLComponentReader ComponentReader { set; }
XmlElement PTONode { get; }
IXMLPTOReader PTOReader { set; }
XmlElement ADASNode { get; }
IXMLADASReader ADASReader { set; }
AngledriveType AngledriveType { get; }
......
......@@ -66,9 +66,6 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules
Bind<IXMLPTOTransmissionInputData>().To<XMLDeclarationPTODataProviderV20>().Named(
XMLHelper.GetVersionFromNamespaceUri(XMLDeclarationPTODataProviderV20.NAMESPACE_URI));
Bind<IXMLAdvancedDriverAssistantSystemDeclarationInputData>()
.To<XMLDeclarationADASDataProviderV20>().Named(
XMLHelper.GetVersionFromNamespaceUri(XMLDeclarationADASDataProviderV20.NAMESPACE_URI));
// ---------------------------------------------------------------------------------------
......
using Ninject.Modules;
using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider;
using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces;
using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader;
using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl;
using TUGraz.VectoCore.Utils;
namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules
{
public class XMLDeclarationInputDataV21InjectModule : NinjectModule
{
#region Overrides of NinjectModule
public override void Load()
{
Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationVehicleDataProviderV21>().Named(
XMLHelper.GetVersionFromNamespaceUri(XMLDeclarationVehicleDataProviderV21.NAMESPACE_URI));
Bind<IXMLEngineDeclarationInputData>().To<XMLDeclarationEngineDataProviderV21>().Named(
XMLHelper.GetVersionFromNamespaceUri(XMLDeclarationEngineDataProviderV21.NAMESPACE_URI));
Bind<IXMLAdvancedDriverAssistantSystemDeclarationInputData>()
.To<XMLDeclarationADASDataProviderV21>().Named(
XMLHelper.GetVersionFromNamespaceUri(XMLDeclarationADASDataProviderV21.NAMESPACE_URI));
Bind<IXMLEngineDeclarationInputData>().To<XMLDeclarationEngineDataProviderV21>().Named(
XMLHelper.GetVersionFromNamespaceUri(XMLDeclarationEngineDataProviderV21.NAMESPACE_URI));
// ---------------------------------------------------------------------------------------
Bind<IXMLJobDataReader>().To<XMLJobDataReaderV21>()
.Named(XMLHelper.GetVersionFromNamespaceUri(XMLJobDataReaderV21.NAMESPACE_URI));
Bind<IXMLADASReader>().To<XMLADASReaderV21>()
.Named(XMLHelper.GetVersionFromNamespaceUri(XMLADASReaderV21.NAMESPACE_URI));
}
#endregion
}
}
using Ninject.Modules;
using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider;
using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces;
using TUGraz.VectoCore.Utils;
namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules {
public class XMLDeclarationInputDataV22InjectModule : NinjectModule
{
#region Overrides of NinjectModule
public override void Load()
{
Bind<IXMLTyreDeclarationInputData>().To<XMLDeclarationTyreDataProviderV22>().Named(
XMLHelper.GetVersionFromNamespaceUri(XMLDeclarationTyreDataProviderV22.NAMESPACE_URI));
}
#endregion
}
}
\ No newline at end of file
......@@ -19,6 +19,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
Kernel?.Load(new INinjectModule[] {
new XMLDeclarationInputDataV10InjectModule(),
new XMLDeclarationInputDataV20InjectModule(),
new XMLDeclarationInputDataV21InjectModule(),
new XMLDeclarationInputDataV22InjectModule(),
});
#endregion
......
using System;
using System.Xml;
using System.Xml.Schema;
using TUGraz.VectoCommon.Exceptions;
using TUGraz.VectoCommon.Resources;
using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces;
using TUGraz.VectoCore.Utils;
namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
......@@ -28,7 +30,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
var dataNode =
componentNode?.SelectSingleNode(string.Format("./*[local-name()='{0}']", XMLNames.ComponentDataWrapper));
if (componentNode != null) {
var version = XMLHelper.GetSchemaVersion(dataNode ?? componentNode);
var type = (dataNode ?? componentNode).SchemaInfo.SchemaType;
var version = XMLHelper.GetSchemaVersion(type);
if (string.IsNullOrWhiteSpace(version)) {
version = XMLHelper.GetVersionFromNamespaceUri(((dataNode ?? componentNode).SchemaInfo.SchemaType?.Parent as XmlSchemaElement)?.QualifiedName.Namespace);
}
return componentCreator(version, componentNode, ParentComponent.DataSource.SourceFile);
}
......@@ -42,5 +48,14 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
throw new VectoException("Component {0} not found!", component);
}
protected virtual T GetReader<T>(IXMLDeclarationVehicleData vehicle, XmlNode node, Func<string, IXMLDeclarationVehicleData, XmlNode, bool, T> creator)
{
var version = XMLHelper.GetSchemaVersion(node.SchemaInfo.SchemaType);
if (string.IsNullOrWhiteSpace(version)) {
version = XMLHelper.GetVersionFromNamespaceUri((node.SchemaInfo.SchemaType?.Parent as XmlSchemaElement)?.QualifiedName.Namespace);
}
return creator(version, vehicle, node, VerifyXML);
}
}
}
......@@ -68,4 +68,19 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
get { return NAMESPACE_URI; }
}
}
// ---------------------------------------------------------------------------------------
public class XMLADASReaderV21 : XMLADASReaderV10
{
public new const string NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V21;
public XMLADASReaderV21(IXMLDeclarationVehicleData vehicle, XmlNode vehicleNode, bool verifyXML) : base(
vehicle, vehicleNode, verifyXML) { }
public override string SchemaVersion
{
get { return NAMESPACE_URI; }
}
}
}
using System.Xml;
using System;
using System.Xml;
using Ninject;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Resources;
......@@ -38,11 +39,14 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
protected virtual IVehicleDeclarationInputData VehicleCreator(string version, XmlNode vehicleNode, string sourceFile)
{
var vehicle = Factory.CreateVehicleData(version, JobData, vehicleNode, sourceFile);
vehicle.ComponentReader = Factory.CreateComponentReader(version, vehicle, vehicleNode, VerifyXML);
vehicle.ADASReader = Factory.CreateADASReader(version, vehicle, vehicleNode, VerifyXML);
vehicle.PTOReader = Factory.CreatePTOReader(version, vehicle, vehicleNode, VerifyXML);
vehicle.ComponentReader = GetReader(vehicle, vehicle.ComponentNode, Factory.CreateComponentReader);
vehicle.ADASReader = GetReader(vehicle, vehicle.ADASNode, Factory.CreateADASReader);
vehicle.PTOReader = GetReader(vehicle, vehicle.PTONode, Factory.CreatePTOReader);
return vehicle;
}
}
// ---------------------------------------------------------------------------------------
......@@ -53,5 +57,38 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
public XMLJobDataReaderV20(IXMLDeclarationJobInputData jobData, XmlNode jobNode, bool verifyXML) : base(
jobData, jobNode, verifyXML) { }
protected override IVehicleDeclarationInputData VehicleCreator(string version, XmlNode vehicleNode, string sourceFile)
{
var vehicle = Factory.CreateVehicleData(version, JobData, vehicleNode, sourceFile);
vehicle.ComponentReader = GetReader(vehicle, vehicle.ComponentNode, Factory.CreateComponentReader);
vehicle.ADASReader = vehicle.ADASNode == null ? null : GetReader(vehicle, vehicle.ADASNode, Factory.CreateADASReader); //null;
vehicle.PTOReader = GetReader(vehicle, vehicle.PTONode, Factory.CreatePTOReader);
return vehicle;
}
}
// ---------------------------------------------------------------------------------------
public class XMLJobDataReaderV21 : XMLJobDataReaderV10
{
public new const string NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V21;
public XMLJobDataReaderV21(IXMLDeclarationJobInputData jobData, XmlNode jobNode, bool verifyXML) : base(
jobData, jobNode, verifyXML)
{ }
protected override IVehicleDeclarationInputData VehicleCreator(string version, XmlNode vehicleNode, string sourceFile)
{
var vehicle = Factory.CreateVehicleData(version, JobData, vehicleNode, sourceFile);
vehicle.ComponentReader = GetReader(vehicle, vehicle.ComponentNode, Factory.CreateComponentReader);
vehicle.ADASReader = GetReader(vehicle, vehicle.ADASNode, Factory.CreateADASReader); ;
vehicle.PTOReader = GetReader(vehicle, vehicle.PTONode, Factory.CreatePTOReader);
return vehicle;
}
}
}
......@@ -32,7 +32,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.Reader
: BaseNode.SelectSingleNode(XMLHelper.QueryLocalName(component));
var dataNode = componentNode?.SelectSingleNode(string.Format("./*[local-name()='{0}']", XMLNames.ComponentDataWrapper)) ?? componentNode;
if (componentNode != null) {
var version = XMLHelper.GetSchemaVersion(dataNode ?? componentNode);
var type = (dataNode ?? componentNode).SchemaInfo.SchemaType;
var version = XMLHelper.GetSchemaVersion(type);
try {
return componentCreator(version, componentNode, ParentComponent.DataSource.SourceFile);
} catch (Exception e) {
......@@ -64,8 +66,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.Reader
new XMLValidator(componentDocument, null, XMLValidator.CallBackExceptionOnError).ValidateXML(
XmlDocumentType.EngineeringJobData);
}
var version = XMLHelper.GetSchemaVersion(componentDocument.DocumentElement);
var type = componentDocument.DocumentElement.SchemaInfo.SchemaType;
var version = XMLHelper.GetSchemaVersion(type);
try {
return componentCreator(version, componentDocument.DocumentElement, fullFileName);
} catch (Exception e) {
......
......@@ -122,7 +122,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML
private IDeclarationInputDataProvider ReadDeclarationJob(XmlDocument xmlDoc, string source, bool verifyXML)
{
var versionNumber = XMLHelper.GetSchemaVersion(xmlDoc.DocumentElement);
var versionNumber = XMLHelper.GetSchemaVersion(xmlDoc.DocumentElement?.SchemaInfo.SchemaType);
try {
var input = DeclarationFactory.CreateInputProvider(versionNumber, xmlDoc, source);
input.Reader = DeclarationFactory.CreateInputReader(versionNumber, input, xmlDoc.DocumentElement, verifyXML);
......
......@@ -878,13 +878,7 @@
</xs:complexType>
<xs:complexType name="VectoDeclarationJobType">
<xs:sequence>
<xs:element name="Vehicle">
<xs:complexType>
<xs:complexContent>
<xs:extension base="tns:VehicleDeclarationType"/>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="Vehicle" type="tns:VehicleDeclarationType"/>
</xs:sequence>
<xs:attribute name="schemaVersion" use="required">
<xs:simpleType>
......
......@@ -4,88 +4,122 @@
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/>
<xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" schemaLocation="VectoDeclarationDefinitions.1.0.xsd"/>
<xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" schemaLocation="VectoDeclarationDefinitions.2.0.xsd"/>
<xs:complexType name="VehicleDeclarationType">
<xs:complexType name="AbstractAdvancedDriverAssistantSystemsType" abstract="true"/>
<xs:complexType name="AdvancedDriverAssistantSystemsType">
<xs:complexContent>
<xs:extension base="v2.0:AbstractVehicleDeclarationType">
<xs:extension base="tns:AbstractAdvancedDriverAssistantSystemsType">
<xs:sequence>
<xs:element name="EngineStopStart" type="tns:EngineStopStartType"/>
<xs:element name="EcoRollWithoutEngineStop" type="tns:EcoRollWithoutEngineStopType"/>
<xs:element name="EcoRollWithEngineStop" type="tns:EcoRollWithEngineStopType"/>
<xs:element name="PredictiveCruiseControl" type="tns:PredictiveCruiseControlType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="EngineDataDeclarationType">
<xs:complexContent>
<xs:extension base="v1.0:AbstractCombustionEngineDataDeclarationType">
<xs:sequence>
<xs:element name="Manufacturer" type="v1.0:ManufacturerType">
<xs:annotation>
<xs:documentation>P235</xs:documentation>
<xs:documentation>P200</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ManufacturerAddress" type="v1.0:ManufacturerAddressType">
<xs:element name="Model" type="v1.0:ModelType">
<xs:annotation>
<xs:documentation>P252</xs:documentation>
<xs:documentation>P201</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Model" type="v1.0:ModelType">
<xs:element name="CertificationNumber" type="v1.0:CertificationNumberType">
<xs:annotation>
<xs:documentation>P236</xs:documentation>
<xs:documentation>P261</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="VIN" type="v1.0:VINType">
<xs:element name="Date" type="v1.0:DateTimeWithTimezone">
<xs:annotation>
<xs:documentation>P238</xs:documentation>
<xs:documentation>P203</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Date" type="v1.0:DateTimeWithTimezone">
<xs:element name="AppVersion" type="v1.0:AppVersionType">
<xs:annotation>
<xs:documentation>P239</xs:documentation>
<xs:documentation>P204</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="LegislativeClass" type="v1.0:LegislativeClassDeclarationType">
<xs:element name="Displacement" type="v1.0:EngineDisplacementType" nillable="false">
<xs:annotation>
<xs:documentation>P251 - enum</xs:documentation>
<xs:documentation>P061 - [cm³]</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="VehicleCategory" type="v1.0:VehicleCategoryDeclarationType">
<xs:element name="IdlingSpeed" type="v1.0:EngineDeclaredSpeedType">
<xs:annotation>
<xs:documentation>P036 - enum</xs:documentation>
<xs:documentation>P063 - [1/min]</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="AxleConfiguration" type="v1.0:VehicleAxleConfigurationDeclarationType">
<xs:element name="RatedSpeed" type="v1.0:EngineDeclaredSpeedType">
<xs:annotation>
<xs:documentation>P037 - enum</xs:documentation>
<xs:documentation>P249 - [1/min]</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="CurbMassChassis" type="v1.0:VehicleCurbMassChassisType">
<xs:element name="RatedPower" type="v1.0:EngineRatedPower">
<xs:annotation>
<xs:documentation>P038 - [kg]</xs:documentation>
<xs:documentation>P250 - [W]</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="GrossVehicleMass" type="v1.0:VehicleGrossVehicleMassType">
<xs:element name="MaxEngineTorque" type="v1.0:EngineMaxTorque">
<xs:annotation>
<xs:documentation>P041 - [kg]</xs:documentation>
<xs:documentation>P259 - [Nm]</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="IdlingSpeed" type="v1.0:EngineDeclaredSpeedType">
<xs:element name="WHTCUrban" type="v1.0:EngineWHTCType">
<xs:annotation>
<xs:documentation>P198 - [1/min]</xs:documentation>
<xs:documentation>P109 - [-]</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="RetarderType" type="v1.0:RetarderTypeType">
<xs:element name="WHTCRural" type="v1.0:EngineWHTCType">
<xs:annotation>
<xs:documentation>P052 - enum</xs:documentation>
<xs:documentation>P110 - [-]</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="RetarderRatio" type="v1.0:RetarderRatioType" minOccurs="0">
<xs:element name="WHTCMotorway" type="v1.0:EngineWHTCType">
<xs:annotation>
<xs:documentation>P053 - [-]</xs:documentation>
<xs:documentation>P111 - [-]</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="AngledriveType" type="v1.0:AngledriveTypeType">
<xs:element name="BFColdHot" type="v1.0:EngineColdHotBalancingFactorType">
<xs:annotation>
<xs:documentation>P180 - enum</xs:documentation>
<xs:documentation>P159 - [-]</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="PTO" type="v2.0:AbstractPTODataType"/>
<xs:element name="ZeroEmissionVehicle" type="xs:boolean"/>
<xs:element name="VocationalVehicle" type="xs:boolean"/>
<xs:element name="NgTankSystem" type="tns:NgTankSystemType" minOccurs="0"/>
<xs:element name="SleeperCab" type="xs:boolean"/>
<xs:element name="ADAS" type="tns:AbstractAdvancedDriverAssistantSystemsType"/>
<xs:element name="TorqueLimits" type="v2.0:AbstractTorqueLimitsType" minOccurs="0"/>
<xs:element name="Components" type="v2.0:AbstractVehicleComponentsDeclarationType"/>
<xs:element name="CFRegPer" type="v1.0:EngineCFRegPerType">
<xs:annotation>
<xs:documentation>P192 [-]</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="CFNCV" type="v1.0:EngineNCVCFType">
<xs:annotation>
<xs:documentation>P260 - [-]</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="FuelType" type="tns:FuelTypeType">
<xs:annotation>
<xs:documentation>P193 [enum]</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="FuelConsumptionMap">
<xs:complexType>
<xs:sequence>
<xs:element name="Entry" type="v2.0:FuelConsumptionEntryType" minOccurs="4" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="FullLoadAndDragCurve">
<xs:complexType>
<xs:sequence>
<xs:element name="Entry" type="v2.0:FullLoadAndDragCurveEntryType" minOccurs="2" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
......@@ -150,174 +184,125 @@
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="AdvancedDriverAssistantSystemsType">
<xs:complexContent>
<xs:extension base="tns:AbstractAdvancedDriverAssistantSystemsType">
<xs:sequence>
<xs:element name="EnginStopStart" type="tns:EngineStopStartType"/>
<xs:element name="EcoRollWithoutEngineStop" type="tns:EcoRollWithoutEngineStopType"/>
<xs:element name="EcoRollWithEngineStop" type="tns:EcoRollWithEngineStopType"/>
<xs:element name="PredictiveCruiseControl" type="tns:PredictiveCruiseControlType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="AbstractAdvancedDriverAssistantSystemsType" abstract="true"/>
<xs:simpleType name="PredictiveCruiseControlType">
<xs:annotation>
<xs:appinfo>
<vectoParam:description>
<vectoParam:parameterId component="Vehicle/ADAS">274</vectoParam:parameterId>
<vectoParam:unit>-</vectoParam:unit>
</vectoParam:description>
</xs:appinfo>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="none"/>
<xs:enumeration value="1,2"/>
<xs:enumeration value="1,2,3"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="EngineStopStartType">
<xs:annotation>
<xs:appinfo>
<vectoParam:description>
<vectoParam:parameterId component="Vehicle/ADAS">271</vectoParam:parameterId>
<vectoParam:unit>-</vectoParam:unit>
</vectoParam:description>
</xs:appinfo>
</xs:annotation>
<xs:restriction base="xs:boolean"/>
</xs:simpleType>
<xs:simpleType name="EcoRollWithEngineStopType">
<xs:annotation>
<xs:appinfo>
<vectoParam:description>
<vectoParam:parameterId component="Vehicle/ADAS">273</vectoParam:parameterId>
<vectoParam:unit>-</vectoParam:unit>
</vectoParam:description>
</xs:appinfo>
</xs:annotation>
<xs:restriction base="xs:boolean"/>
</xs:simpleType>
<xs:simpleType name="EcoRollWithoutEngineStopType">
<xs:annotation>
<xs:appinfo>
<vectoParam:description>
<vectoParam:parameterId component="Vehicle/ADAS">272</vectoParam:parameterId>
<vectoParam:unit>-</vectoParam:unit>
</vectoParam:description>
</xs:appinfo>
</xs:annotation>
<xs:restriction base="xs:boolean"/>
</xs:simpleType>
<xs:complexType name="EngineDataDeclarationType">
<xs:complexType name="VehicleDeclarationType">
<xs:complexContent>
<xs:extension base="v1.0:AbstractCombustionEngineDataDeclarationType">
<xs:extension base="v2.0:AbstractVehicleDeclarationType">
<xs:sequence>
<xs:element name="Manufacturer" type="v1.0:ManufacturerType">
<xs:annotation>
<xs:documentation>P200</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Model" type="v1.0:ModelType">
<xs:annotation>
<xs:documentation>P201</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="CertificationNumber" type="v1.0:CertificationNumberType">
<xs:annotation>
<xs:documentation>P261</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Date" type="v1.0:DateTimeWithTimezone">
<xs:annotation>
<xs:documentation>P203</xs:documentation>
<xs:documentation>P235</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="AppVersion" type="v1.0:AppVersionType">
<xs:element name="ManufacturerAddress" type="v1.0:ManufacturerAddressType">
<xs:annotation>
<xs:documentation>P204</xs:documentation>
<xs:documentation>P252</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Displacement" type="v1.0:EngineDisplacementType" nillable="false">
<xs:element name="Model" type="v1.0:ModelType">
<xs:annotation>
<xs:documentation>P061 - [cm³]</xs:documentation>
<xs:documentation>P236</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="IdlingSpeed" type="v1.0:EngineDeclaredSpeedType">
<xs:element name="VIN" type="v1.0:VINType">
<xs:annotation>
<xs:documentation>P063 - [1/min]</xs:documentation>
<xs:documentation>P238</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="RatedSpeed" type="v1.0:EngineDeclaredSpeedType">
<xs:element name="Date" type="v1.0:DateTimeWithTimezone">
<xs:annotation>
<xs:documentation>P249 - [1/min]</xs:documentation>
<xs:documentation>P239</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="RatedPower" type="v1.0:EngineRatedPower">
<xs:element name="LegislativeClass" type="v1.0:LegislativeClassDeclarationType">
<xs:annotation>
<xs:documentation>P250 - [W]</xs:documentation>
<xs:documentation>P251 - enum</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="MaxEngineTorque" type="v1.0:EngineMaxTorque">
<xs:element name="VehicleCategory" type="tns:VehicleCategoryType">
<xs:annotation>
<xs:documentation>P259 - [Nm]</xs:documentation>
<xs:documentation>P036 - enum</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="WHTCUrban" type="v1.0:EngineWHTCType">
<xs:element name="AxleConfiguration" type="v1.0:VehicleAxleConfigurationDeclarationType">
<xs:annotation>
<xs:documentation>P109 - [-]</xs:documentation>
<xs:documentation>P037 - enum</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="WHTCRural" type="v1.0:EngineWHTCType">
<xs:element name="CurbMassChassis" type="v1.0:VehicleCurbMassChassisType">
<xs:annotation>
<xs:documentation>P110 - [-]</xs:documentation>
<xs:documentation>P038 - [kg]</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="WHTCMotorway" type="v1.0:EngineWHTCType">
<xs:element name="GrossVehicleMass" type="v1.0:VehicleGrossVehicleMassType">
<xs:annotation>
<xs:documentation>P111 - [-]</xs:documentation>
<xs:documentation>P041 - [kg]</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="BFColdHot" type="v1.0:EngineColdHotBalancingFactorType">
<xs:element name="IdlingSpeed" type="v1.0:EngineDeclaredSpeedType">
<xs:annotation>
<xs:documentation>P159 - [-]</xs:documentation>
<xs:documentation>P198 - [1/min]</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="CFRegPer" type="v1.0:EngineCFRegPerType">
<xs:element name="RetarderType" type="v1.0:RetarderTypeType">
<xs:annotation>
<xs:documentation>P192 [-]</xs:documentation>
<xs:documentation>P052 - enum</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="CFNCV" type="v1.0:EngineNCVCFType">
<xs:element name="RetarderRatio" type="v1.0:RetarderRatioType" minOccurs="0">
<xs:annotation>
<xs:documentation>P260 - [-]</xs:documentation>
<xs:documentation>P053 - [-]</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="FuelType" type="tns:FuelTypeType">
<xs:element name="AngledriveType" type="v1.0:AngledriveTypeType">
<xs:annotation>
<xs:documentation>P193 [enum]</xs:documentation>
<xs:documentation>P180 - enum</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="FuelConsumptionMap">
<xs:complexType>
<xs:sequence>
<xs:element name="Entry" type="v2.0:FuelConsumptionEntryType" minOccurs="4" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="FullLoadAndDragCurve">
<xs:complexType>
<xs:sequence>
<xs:element name="Entry" type="v2.0:FullLoadAndDragCurveEntryType" minOccurs="2" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="PTO" type="v2.0:AbstractPTODataType"/>
<xs:element name="ZeroEmissionVehicle" type="xs:boolean"/>
<xs:element name="VocationalVehicle" type="xs:boolean"/>
<xs:element name="NgTankSystem" type="tns:NgTankSystemType" minOccurs="0"/>
<xs:element name="SleeperCab" type="xs:boolean"/>
<xs:element name="ADAS" type="tns:AbstractAdvancedDriverAssistantSystemsType"/>
<xs:element name="TorqueLimits" type="v2.0:AbstractTorqueLimitsType" minOccurs="0"/>
<xs:element name="Components" type="v2.0:AbstractVehicleComponentsDeclarationType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:simpleType name="EcoRollWithEngineStopType">
<xs:annotation>
<xs:appinfo>
<vectoParam:description>
<vectoParam:parameterId component="Vehicle/ADAS">273</vectoParam:parameterId>
<vectoParam:unit>-</vectoParam:unit>
</vectoParam:description>
</xs:appinfo>
</xs:annotation>
<xs:restriction base="xs:boolean"/>
</xs:simpleType>
<xs:simpleType name="EcoRollWithoutEngineStopType">
<xs:annotation>
<xs:appinfo>
<vectoParam:description>
<vectoParam:parameterId component="Vehicle/ADAS">272</vectoParam:parameterId>
<vectoParam:unit>-</vectoParam:unit>
</vectoParam:description>
</xs:appinfo>
</xs:annotation>
<xs:restriction base="xs:boolean"/>
</xs:simpleType>
<xs:simpleType name="EngineStopStartType">
<xs:annotation>
<xs:appinfo>
<vectoParam:description>
<vectoParam:parameterId component="Vehicle/ADAS">271</vectoParam:parameterId>
<vectoParam:unit>-</vectoParam:unit>
</vectoParam:description>
</xs:appinfo>
</xs:annotation>
<xs:restriction base="xs:boolean"/>
</xs:simpleType>
<xs:simpleType name="FuelTypeType">
<xs:annotation>
<xs:appinfo>
......@@ -335,9 +320,6 @@
<xs:enumeration value="LPG PI"/>
<xs:enumeration value="NG PI"/>
<xs:enumeration value="NG CI"/>
<!-- LPG == LPG PI -->
<!-- NG== NG PI -->
<!-- NG CI => dual fuel -->
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="NgTankSystemType">
......@@ -354,4 +336,25 @@
<xs:enumeration value="Liquefied"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PredictiveCruiseControlType">
<xs:annotation>
<xs:appinfo>
<vectoParam:description>
<vectoParam:parameterId component="Vehicle/ADAS">274</vectoParam:parameterId>
<vectoParam:unit>-</vectoParam:unit>
</vectoParam:description>
</xs:appinfo>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="none"/>
<xs:enumeration value="1,2"/>
<xs:enumeration value="1,2,3"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="VehicleCategoryType">
<xs:restriction base="xs:string">
<xs:enumeration value="Rigid Lorry"/>
<xs:enumeration value="Tractor"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
......@@ -39,6 +39,11 @@ namespace TUGraz.VectoCore.Utils
public const string DECLARATION_DEFINITIONS_NAMESPACE_URI_V20 = "urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0";
public const string DECLARATION_DEFINITIONS_NAMESPACE_URI_V21 = "urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1";
public const string DECLARATION_DEFINITIONS_NAMESPACE_URI_V22 = "urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2";
public const string DECLARATION_INPUT_NAMESPACE_URI_V10 = "urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0";
public const string DECLARATION_COMPONENT_NAMESPACE_URI_V10 = "urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0";
......@@ -68,7 +73,7 @@ namespace TUGraz.VectoCore.Utils
};
public static string GetSchemaFilename(XmlDocumentType type, string version)
{
if (!schemaFilenames.ContainsKey(type)) {
......
......@@ -35,6 +35,7 @@ using System.IO;
using System.Linq;
using System.Xml;
using System.Xml.Linq;
using System.Xml.Schema;
using TUGraz.VectoCommon.Exceptions;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Models;
......@@ -57,11 +58,16 @@ namespace TUGraz.VectoCore.Utils
return null;
}
public static string GetSchemaVersion(XmlElement node)
internal static string GetSchemaVersion(XmlSchemaType type)
{
return GetVersionFromNamespaceUri(node.NamespaceURI);
return GetVersionFromNamespaceUri(type.QualifiedName.Namespace);
}
//public static string GetSchemaVersion(XmlElement node)
//{
// return GetVersionFromNamespaceUri(node.NamespaceURI);
//}
public static string GetSchemaVersion(XmlNode node)
{
var nodeType = node.Attributes?.GetNamedItem("type", "http://www.w3.org/2001/XMLSchema-instance");
......@@ -259,5 +265,7 @@ namespace TUGraz.VectoCore.Utils
yield return (T)node;
}
}
}
}
......@@ -170,6 +170,8 @@
<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\XMLDeclarationInputDataV20InjectModule.cs" />
<Compile Include="InputData\FileIO\XML\Declaration\NinjectModules\XMLDeclarationInputDataV21InjectModule.cs" />
<Compile Include="InputData\FileIO\XML\Declaration\NinjectModules\XMLDeclarationInputDataV22InjectModule.cs" />
<Compile Include="InputData\FileIO\XML\Declaration\Reader\Impl\AbstractComponentReader.cs" />
<Compile Include="InputData\FileIO\XML\Declaration\Reader\Impl\XMLADASReader.cs" />
<Compile Include="InputData\FileIO\XML\Declaration\Reader\Impl\XMLComponentReader.cs" />
......
......@@ -8,7 +8,7 @@
xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\QUAM\Workspace\VECTO_quam\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd
urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_quam\VectoCore\VectoCore\Resources\XSD/VectoDeclarationDefinitions.2.1.xsd">
<v2.0:Vehicle id="VEH-class5_Class-5_5t0" xsi:type="VehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1">
<Manufacturer>Generic Vendor</Manufacturer>
<v2.1:Manufacturer>Generic Vendor</v2.1:Manufacturer>
<ManufacturerAddress>N.A.</ManufacturerAddress>
<Model>class 5_Class-5_5t0</Model>
<VIN>standard values</VIN>
......@@ -30,7 +30,7 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_quam
<VocationalVehicle>false</VocationalVehicle>
<SleeperCab>false</SleeperCab>
<ADAS xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xsi:type="v2.1:AdvancedDriverAssistantSystemsType">
<EnginStopStart>false</EnginStopStart>
<EngineStopStart>false</EngineStopStart>
<EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop>
<EcoRollWithEngineStop>false</EcoRollWithEngineStop>
<PredictiveCruiseControl>none</PredictiveCruiseControl>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment