diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs index ae9bacd87674405edb1fcc2cadad4e5e8967dd53..0ffe848bdfad8fc051677d2239e5409fa9dba937 100644 --- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs +++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs @@ -755,9 +755,9 @@ namespace TUGraz.VectoCommon.InputData { int SystemConfiguration { get; } - ACCompressorType CompressorType { get; } + ICompressorType CompressorType { get; } - string AuxHeaterPower { get; } + int AuxHeaterPower { get; } bool DoubleGlasing { get; } @@ -770,6 +770,12 @@ namespace TUGraz.VectoCommon.InputData bool EngineWasteGasHeatExchanger { get; } bool SeparateAirDistributionDucts { get; } + } + public interface ICompressorType + { + string DriverAC { get; } + string PassengerAC { get; } } + } diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs index c31d07a8d0b4bd15189b30a43758ebaa4ee1c1ce..fe0a535bcb46ea9b7941fced0cded91ab579b648 100644 --- a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs +++ b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs @@ -402,6 +402,213 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to AdjustableAuxiliaryHeater. + /// </summary> + public static string Bus_AdjustableAuxiliaryHeater { + get { + return ResourceManager.GetString("Bus_AdjustableAuxiliaryHeater", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to AlternatorTechnology. + /// </summary> + public static string Bus_AlternatorTechnology { + get { + return ResourceManager.GetString("Bus_AlternatorTechnology", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to AuxiliaryHeaterPower. + /// </summary> + public static string Bus_AuxiliaryHeaterPower { + get { + return ResourceManager.GetString("Bus_AuxiliaryHeaterPower", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Brakelights. + /// </summary> + public static string Bus_Brakelights { + get { + return ResourceManager.GetString("Bus_Brakelights", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to CompressorType. + /// </summary> + public static string Bus_CompressorType { + get { + return ResourceManager.GetString("Bus_CompressorType", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Dayrunninglights. + /// </summary> + public static string Bus_Dayrunninglights { + get { + return ResourceManager.GetString("Bus_Dayrunninglights", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to DoorDriveTechnology. + /// </summary> + public static string Bus_DoorDriveTechnology { + get { + return ResourceManager.GetString("Bus_DoorDriveTechnology", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to DoubleGlasing. + /// </summary> + public static string Bus_DoubleGlasing { + get { + return ResourceManager.GetString("Bus_DoubleGlasing", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to DriverAC. + /// </summary> + public static string Bus_DriverAC { + get { + return ResourceManager.GetString("Bus_DriverAC", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to EntranceHeight. + /// </summary> + public static string Bus_EntranceHeight { + get { + return ResourceManager.GetString("Bus_EntranceHeight", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Headlights. + /// </summary> + public static string Bus_Headlights { + get { + return ResourceManager.GetString("Bus_Headlights", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to HeatPump. + /// </summary> + public static string Bus_HeatPump { + get { + return ResourceManager.GetString("Bus_HeatPump", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to HeightIntegratedBody. + /// </summary> + public static string Bus_HeighIntegratedBody { + get { + return ResourceManager.GetString("Bus_HeighIntegratedBody", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Interiorlights. + /// </summary> + public static string Bus_Interiorlights { + get { + return ResourceManager.GetString("Bus_Interiorlights", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to LowEntry. + /// </summary> + public static string Bus_LowEntry { + get { + return ResourceManager.GetString("Bus_LowEntry", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to LowerDeck. + /// </summary> + public static string Bus_LowerDeck { + get { + return ResourceManager.GetString("Bus_LowerDeck", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to PassengerAC. + /// </summary> + public static string Bus_PassengerAC { + get { + return ResourceManager.GetString("Bus_PassengerAC", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Positionlights. + /// </summary> + public static string Bus_Positionlights { + get { + return ResourceManager.GetString("Bus_Positionlights", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to SeparateAirDistributionDucts. + /// </summary> + public static string Bus_SeparateAirDistributionDucts { + get { + return ResourceManager.GetString("Bus_SeparateAirDistributionDucts", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to SystemConfiguration. + /// </summary> + public static string Bus_SystemConfiguration { + get { + return ResourceManager.GetString("Bus_SystemConfiguration", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to UpperDeck. + /// </summary> + public static string Bus_UpperDeck { + get { + return ResourceManager.GetString("Bus_UpperDeck", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to VehicleLength. + /// </summary> + public static string Bus_VehicleLength { + get { + return ResourceManager.GetString("Bus_VehicleLength", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to VehicleWidth. + /// </summary> + public static string Bus_VehicleWidth { + get { + return ResourceManager.GetString("Bus_VehicleWidth", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to AirDrag. /// </summary> @@ -1599,6 +1806,15 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to ManufacturerAddressCompletedVehicle. + /// </summary> + public static string ManufacturerAddressCompletedVehicle { + get { + return ResourceManager.GetString("ManufacturerAddressCompletedVehicle", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to ManufacturerAddressPrimaryVehicle. /// </summary> @@ -1608,6 +1824,15 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to ManufacturerCompletedVehicle. + /// </summary> + public static string ManufacturerCompletedVehicle { + get { + return ResourceManager.GetString("ManufacturerCompletedVehicle", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to ManufacturerPrimaryVehicle. /// </summary> @@ -3066,6 +3291,15 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to RegisteredClass. + /// </summary> + public static string Vehicle_RegisteredClass { + get { + return ResourceManager.GetString("Vehicle_RegisteredClass", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to RetarderRatio. /// </summary> @@ -3147,6 +3381,15 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to VehicleCode. + /// </summary> + public static string Vehicle_VehicleCode { + get { + return ResourceManager.GetString("Vehicle_VehicleCode", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to VIN. /// </summary> diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.resx b/VectoCommon/VectoCommon/Resources/XMLNames.resx index aaf03c6ff3e345022115f0f9ebb3a1af27b8f6b4..d6b4813b8b27aa0f1248ee1a3ceb4c0d3bdaf97e 100644 --- a/VectoCommon/VectoCommon/Resources/XMLNames.resx +++ b/VectoCommon/VectoCommon/Resources/XMLNames.resx @@ -1161,4 +1161,85 @@ <data name="VectoPrimaryVehicleReport" xml:space="preserve"> <value>VectoOutputPrimaryVehicle</value> </data> + <data name="ManufacturerCompletedVehicle" xml:space="preserve"> + <value>ManufacturerCompletedVehicle</value> + </data> + <data name="ManufacturerAddressCompletedVehicle" xml:space="preserve"> + <value>ManufacturerAddressCompletedVehicle</value> + </data> + <data name="Vehicle_RegisteredClass" xml:space="preserve"> + <value>RegisteredClass</value> + </data> + <data name="Vehicle_VehicleCode" xml:space="preserve"> + <value>VehicleCode</value> + </data> + <data name="Bus_LowEntry" xml:space="preserve"> + <value>LowEntry</value> + </data> + <data name="Bus_HeighIntegratedBody" xml:space="preserve"> + <value>HeightIntegratedBody</value> + </data> + <data name="Bus_VehicleLength" xml:space="preserve"> + <value>VehicleLength</value> + </data> + <data name="Bus_VehicleWidth" xml:space="preserve"> + <value>VehicleWidth</value> + </data> + <data name="Bus_EntranceHeight" xml:space="preserve"> + <value>EntranceHeight</value> + </data> + <data name="Bus_DoorDriveTechnology" xml:space="preserve"> + <value>DoorDriveTechnology</value> + </data> + <data name="Bus_LowerDeck" xml:space="preserve"> + <value>LowerDeck</value> + </data> + <data name="Bus_UpperDeck" xml:space="preserve"> + <value>UpperDeck</value> + </data> + <data name="Bus_Dayrunninglights" xml:space="preserve"> + <value>Dayrunninglights</value> + </data> + <data name="Bus_Headlights" xml:space="preserve"> + <value>Headlights</value> + </data> + <data name="Bus_Positionlights" xml:space="preserve"> + <value>Positionlights</value> + </data> + <data name="Bus_Brakelights" xml:space="preserve"> + <value>Brakelights</value> + </data> + <data name="Bus_Interiorlights" xml:space="preserve"> + <value>Interiorlights</value> + </data> + <data name="Bus_AlternatorTechnology" xml:space="preserve"> + <value>AlternatorTechnology</value> + </data> + <data name="Bus_SystemConfiguration" xml:space="preserve"> + <value>SystemConfiguration</value> + </data> + <data name="Bus_AuxiliaryHeaterPower" xml:space="preserve"> + <value>AuxiliaryHeaterPower</value> + </data> + <data name="Bus_DoubleGlasing" xml:space="preserve"> + <value>DoubleGlasing</value> + </data> + <data name="Bus_HeatPump" xml:space="preserve"> + <value>HeatPump</value> + </data> + <data name="Bus_AdjustableAuxiliaryHeater" xml:space="preserve"> + <value>AdjustableAuxiliaryHeater</value> + </data> + <data name="Bus_SeparateAirDistributionDucts" xml:space="preserve"> + <value>SeparateAirDistributionDucts</value> + </data> + <data name="Bus_CompressorType" xml:space="preserve"> + <value>CompressorType</value> + </data> + <data name="Bus_DriverAC" xml:space="preserve"> + <value>DriverAC</value> + </data> + <data name="Bus_PassengerAC" xml:space="preserve"> + <value>PassengerAC</value> + </data> </root> \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs index c4a57b07259df5c4341e0851de9c6b5c42f25078..05dbb1fc5cb2e8de32dd4de4b0c57939c3057615 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs @@ -176,8 +176,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON #region Implementation of IHVACBusAuxiliariesDeclarationData public virtual int SystemConfiguration { get; set; } - public virtual ACCompressorType CompressorType { get { return ACCompressorType.Unknown; } } - public virtual string AuxHeaterPower { get { return null; } } + public virtual ICompressorType CompressorType { get { return null; } } + public virtual int AuxHeaterPower { get; set; } public virtual bool DoubleGlasing { get { return false; } } public virtual bool HeatPump { get { return false; } } public virtual bool AdjustableCoolantThermostat { get { return Body["Aux"]?["HVAC"]?.GetEx<bool>("AdjustableCoolantThermostat") ?? false; } } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs index fd157ffb392691896189d5d447681567190d091a..183389be4bd179d4a44e1ae9458a6e91872667f0 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs @@ -1,11 +1,14 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; using System.Xml; using System.Xml.Linq; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.FileIO.XML.Common; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; +using TUGraz.VectoCore.InputData.Impl; using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider { @@ -42,4 +45,87 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider { #endregion } + + public class XMLDeclarationCompleteBusAuxiliariesDataProviderV26 : AbstractXMLType, IXMLBusAuxiliariesDeclarationData + { + public static XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V26; + + public const string XSD_TYPE = "CompletedVehicleAuxiliaryDataDeclarationType"; + + public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationCompleteBusAuxiliariesDataProviderV26( + IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base(componentNode) { } + + #region Implementation of IBusAuxiliariesDeclarationData + + public XmlNode XMLSource { get { return BaseNode; } } + + public string FanTechnology { get { return null; } } + + public IList<string> SteeringPumpTechnology { get { return null; } } + + + public IElectricSupplyDeclarationData ElectricSupply + { + get + { + var alternators = GetNodes(XMLNames.Bus_AlternatorTechnology); + + if (alternators.Count > 0) { + var currentAlternators = new List<IAlternatorDeclarationInputData>(); + for (int i = 0; i < alternators.Count; i++) { + var technology = alternators[i]?.InnerText; + var ratio = alternators[i]?.Attributes?["ratio"].Value.ToDouble(); + if(ratio == null) + continue; + currentAlternators.Add(new AlternatorInputData(technology, (double)ratio )); + } + + return new ElectricSupplyDeclarationData {Alternators = currentAlternators}; + } + + return null; + } + } + + public IElectricConsumersDeclarationData ElectricConsumers + { + get + { + return new ElectricConsumersDeclarationData + { + DayrunninglightsLED = GetBool(XMLNames.Bus_Dayrunninglights), + HeadlightsLED = GetBool(XMLNames.Bus_Headlights), + PositionlightsLED = GetBool(XMLNames.Bus_Positionlights), + BrakelightsLED = GetBool(XMLNames.Bus_Brakelights), + InteriorLightsLED = GetBool(XMLNames.Bus_Interiorlights) + }; + } + } + + public IPneumaticSupplyDeclarationData PneumaticSupply { get { return null; } } + + public IPneumaticConsumersDeclarationData PneumaticConsumers { get { return null;} } + + public IHVACBusAuxiliariesDeclarationData HVACAux + { + get + { + var hvac = new HVACBusAuxiliariesDeclarationData + { + SystemConfiguration = XmlConvert.ToInt32(GetString(XMLNames.Bus_SystemConfiguration)), + CompressorType = new CompressorType( GetString(XMLNames.Bus_DriverAC), GetString(XMLNames.Bus_PassengerAC)), + AuxHeaterPower = XmlConvert.ToInt32(GetString(XMLNames.Bus_AuxiliaryHeaterPower)), + DoubleGlasing = GetBool(XMLNames.Bus_DoubleGlasing), + HeatPump = GetBool(XMLNames.Bus_HeatPump), + AdjustableAuxiliaryHeater = GetBool(XMLNames.Bus_AdjustableAuxiliaryHeater), + SeparateAirDistributionDucts = GetBool(XMLNames.Bus_SeparateAirDistributionDucts) + }; + return hvac; + } + } + + #endregion + } } \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs index 77c54f10e387f25e3f8da74d23fe9925fc804a25..8e230f6fa6a80166113f478cb35a38c78227142a 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs @@ -1,4 +1,5 @@ -using System.Xml; +using System; +using System.Xml; using System.Xml.Linq; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; @@ -150,6 +151,42 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider { } + IAuxiliariesDeclarationInputData IVehicleComponentsDeclaration.AuxiliaryInputData + { + get { return null; } + } + + public override IBusAuxiliariesDeclarationData BusAuxiliaries { get { return _busAuxiliaries ?? (_busAuxiliaries = ComponentReader.BusAuxiliariesInputData); } } + + protected override XNamespace SchemaNamespace + { + get { return NAMESPACE_URI; } + } + } + + // --------------------------------------------------------------------------------------- + + + public class XMLDeclarationCompleteBusComponentsDataProviderV26 : XMLDeclarationComponentsDataProviderV10, IXMLVehicleComponentsDeclaration + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V26; + + public new const string XSD_TYPE = "CompletedVehicleComponentsDeclarationType"; + + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + private IBusAuxiliariesDeclarationData _busAuxiliaries; + + public XMLDeclarationCompleteBusComponentsDataProviderV26( + IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base( + vehicle, componentNode, sourceFile) + { } + + IGearboxDeclarationInputData IVehicleComponentsDeclaration.GearboxInputData + { + get { return null; } + } + IAuxiliariesDeclarationInputData IVehicleComponentsDeclaration.AuxiliaryInputData { get { return null; } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs index ed3cc69a1a76ec57280f535d2bd06817da0980f2..0d95627d32c88e0e0200aca40a1ccfd44c001139 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs @@ -38,6 +38,7 @@ using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.FileIO.XML.Common; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader; using TUGraz.VectoCore.InputData.Impl; @@ -633,5 +634,94 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider #endregion } - + + public class XMLDeclarationCompletedBusDataProviderV26 : XMLDeclarationVehicleDataProviderV20 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V26; + + public new const string XSD_TYPE = "CompletedVehicleDeclarationType"; + + public new static readonly string QUALIFIED_XSD_TYPE = + XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationCompletedBusDataProviderV26( + IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) : base(jobData, xmlNode, sourceFile) + { + SourceType = DataSourceType.XMLEmbedded; + } + + + #region Overrides of AbstractCommonComponentType + + public override string Manufacturer { get { return GetString(XMLNames.ManufacturerCompletedVehicle); } } + + public override string ManufacturerAddress { get { return GetString(XMLNames.ManufacturerAddressCompletedVehicle); } } + + #endregion + + + #region Overrides of XMLDeclarationVehicleDataProviderV10 + + public override string RegisteredClass { get { return GetString(XMLNames.Vehicle_RegisteredClass); } } + + public override VehicleCode VehicleCode { get { return GetString(XMLNames.Vehicle_VehicleCode).ParseEnum<VehicleCode>(); } } + + //TechnicalPermissibleMaximumLadenMass + public override Kilogram GrossVehicleMassRating { get { return GetDouble(XMLNames.TPMLM).SI<Kilogram>(); } } + + public override TankSystem? TankSystem + { + get + { + return GetString(XMLNames.Vehicle_NgTankSystem).ParseEnum<TankSystem>(); + } + } + + public override int NumberOfPassengersLowerDeck + { + get + { + var node = GetNode(XMLNames.Bus_LowerDeck); + return XmlConvert.ToInt32(node.InnerText); + } + } + + public override int NuberOfPassengersUpperDeck + { + get + { + var node = GetNode(XMLNames.Bus_UpperDeck); + return XmlConvert.ToInt32(node.InnerText); + } + } + + //HeightIntegratedBody + public override Meter Height { get { return GetDouble(XMLNames.Bus_HeighIntegratedBody).SI<Meter>(); }} + + //VehicleLength + public override Meter Length { get { return GetDouble(XMLNames.Bus_VehicleLength).SI<Meter>(); } } + + //VehicleWidth + public override Meter Width { get { return GetDouble(XMLNames.Bus_VehicleWidth).SI<Meter>(); } } + + #endregion + + public bool LowEntry { get { return GetBool(XMLNames.Bus_LowEntry); } } + + public Meter EntranceHeight { get { return GetDouble(XMLNames.Bus_EntranceHeight).SI<Meter>(); } } + + public string DoorDriveTechnology { get { return GetString(XMLNames.Bus_DoorDriveTechnology); } } + + + #region Overrides of AbstractXMLResource + + protected override XNamespace SchemaNamespace + { + get { return NAMESPACE_URI; } + } + + protected override DataSourceType SourceType { get; } + + #endregion + } } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV26InjectModule.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV26InjectModule.cs index f6ece59ec60b3cca66f5a79530e41aa85d2a8e93..3c0198dbae0973653a396f978ac5071af0843405 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV26InjectModule.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV26InjectModule.cs @@ -15,15 +15,28 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules { Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationPrimaryBusVehicleDataProviderV26>() .Named(XMLDeclarationPrimaryBusVehicleDataProviderV26.QUALIFIED_XSD_TYPE); + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationCompletedBusDataProviderV26>() + .Named(XMLDeclarationCompletedBusDataProviderV26.QUALIFIED_XSD_TYPE); + Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationPrimaryBusComponentsDataProviderV26>() .Named(XMLDeclarationPrimaryBusComponentsDataProviderV26.QUALIFIED_XSD_TYPE); + Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationCompleteBusComponentsDataProviderV26>() + .Named(XMLDeclarationCompleteBusComponentsDataProviderV26.QUALIFIED_XSD_TYPE); + + Bind<IXMLBusAuxiliariesDeclarationData>().To<XMLDeclarationBusAuxiliariesDataProviderV26>() .Named(XMLDeclarationBusAuxiliariesDataProviderV26.QUALIFIED_XSD_TYPE); + Bind<IXMLBusAuxiliariesDeclarationData>().To<XMLDeclarationCompleteBusAuxiliariesDataProviderV26>() + .Named(XMLDeclarationCompleteBusAuxiliariesDataProviderV26.QUALIFIED_XSD_TYPE); + + Bind<IXMLComponentReader>().To<XMLComponentReaderV26>().Named(XMLComponentReaderV26.QUALIFIED_XSD_TYPE); + Bind<IXMLComponentReader>().To<XMLComponentReaderV26>().Named(XMLComponentReaderV26.QUALIFIED_COMPLETE_XSD_TYPE); + } #endregion diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs index 26b9e33eada89c59e28810b38ebd2b6a53a1cd83..644285370f77305864e49b39cce3800169e5189d 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs @@ -295,9 +295,14 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl public class XMLComponentReaderV26 : XMLComponentReaderV20 { public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V26; + public new const string XSD_TYPE = "PrimaryVehicleComponentsDeclarationType"; public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + public const string COMPLETE_XSD_TYPE = "CompletedVehicleComponentsDeclarationType"; + public static readonly string QUALIFIED_COMPLETE_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, COMPLETE_XSD_TYPE); + + protected IBusAuxiliariesDeclarationData _busAuxInputData; diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLJobDataReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLJobDataReader.cs index 04cbb2d6f0d9bea419952195c5102a0fe3b2d98e..0256a6c48814347ac20197af961de3f3f0134b17 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLJobDataReader.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLJobDataReader.cs @@ -3,6 +3,7 @@ using System.Xml.Linq; using Ninject; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Factory; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; using TUGraz.VectoCore.Utils; @@ -70,10 +71,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl 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); + + if(!version.EndsWith(XMLDeclarationCompletedBusDataProviderV26.XSD_TYPE)) + vehicle.PTOReader = GetReader(vehicle, vehicle.PTONode, Factory.CreatePTOReader); return vehicle; } diff --git a/VectoCore/VectoCore/InputData/Impl/InputData.cs b/VectoCore/VectoCore/InputData/Impl/InputData.cs index e636829275d12a412dc28ae41d19f3763178b7af..282ed4309e8a744bbe2230642be6b43bf673f2f2 100644 --- a/VectoCore/VectoCore/InputData/Impl/InputData.cs +++ b/VectoCore/VectoCore/InputData/Impl/InputData.cs @@ -31,9 +31,11 @@ using System; using System.Collections.Generic; +using TUGraz.VectoCommon.BusAuxiliaries; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.Models.Declaration; namespace TUGraz.VectoCore.InputData.Impl { @@ -218,4 +220,54 @@ namespace TUGraz.VectoCore.InputData.Impl #endregion } + + public class ElectricConsumersDeclarationData : IElectricConsumersDeclarationData + { + public bool InteriorLightsLED { get; internal set; } + public bool DayrunninglightsLED { get; internal set; } + public bool PositionlightsLED { get; internal set; } + public bool HeadlightsLED { get; internal set; } + public bool BrakelightsLED { get; internal set; } + } + + public class ElectricSupplyDeclarationData : IElectricSupplyDeclarationData + { + public IList<IAlternatorDeclarationInputData> Alternators { get; internal set; } + public IResultCardDeclarationInputData ResultCards { get; internal set; } + public bool SmartElectrics { get; internal set; } + } + + + public class HVACBusAuxiliariesDeclarationData : IHVACBusAuxiliariesDeclarationData + { + public bool AdjustableAuxiliaryHeater { get; internal set; } + + public bool AdjustableCoolantThermostat { get; internal set; } + + public int AuxHeaterPower { get; internal set; } + + public ICompressorType CompressorType { get; internal set; } + + public bool DoubleGlasing { get; internal set; } + + public bool EngineWasteGasHeatExchanger { get; internal set; } + + public bool HeatPump { get; internal set; } + + public bool SeparateAirDistributionDucts { get; internal set; } + + public int SystemConfiguration { get; internal set; } + } + + public class CompressorType : ICompressorType + { + public string DriverAC { get; } + public string PassengerAC { get; } + public CompressorType(string driverAC, string passengerAC) + { + DriverAC = driverAC; + PassengerAC = passengerAC; + } + } + } \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj index f6c78db40269f13b45e71bac4a57d49b580c5415..e91b42113c7903ecbdc484faf6508fb636cdfc46 100644 --- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj +++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj @@ -207,6 +207,7 @@ <Compile Include="Utils\MockModalDataContainer.cs" /> <Compile Include="Utils\DoubleExtensionMethodTest.cs" /> <Compile Include="Utils\VectoMathTest.cs" /> + <Compile Include="XML\XMLCompleteBusReaderTest.cs" /> <Compile Include="XML\XMLDeclarationInputTest.cs" /> <Compile Include="XML\XMLDeclarationReaderVersionsTest.cs" /> <Compile Include="XML\XMLEngineeringInputRefTest.cs" /> @@ -3581,6 +3582,8 @@ <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.3\vehicle_sampleDualModeDualFuel.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\example_heavyBus_PIF.xml" /> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-completed_heavyBus.xml" /> <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-primary_heavyBus.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> diff --git a/VectoCore/VectoCoreTest/XML/XMLCompleteBusReaderTest.cs b/VectoCore/VectoCoreTest/XML/XMLCompleteBusReaderTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..470c44577b7e0e0b775d9a9d228ab29c260ae3ba --- /dev/null +++ b/VectoCore/VectoCoreTest/XML/XMLCompleteBusReaderTest.cs @@ -0,0 +1,116 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml; +using Ninject; +using NUnit.Framework; +using TUGraz.VECTO; +using TUGraz.VectoCommon.Exceptions; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.FileIO.XML; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; + +namespace TUGraz.VectoCore.Tests.XML +{ + + [TestFixture] + public class XMLCompleteBusReaderTest + { + private const string CompleteBusExample = + "TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/vecto_vehicle-completed_heavyBus.xml"; + + + + protected IXMLInputDataReader xmlInputReader; + private IKernel _kernel; + + + [OneTimeSetUp] + public void RunBeforeAnyTests() + { + Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory); + + _kernel = new StandardKernel(new VectoNinjectModule()); + xmlInputReader = _kernel.Get<IXMLInputDataReader>(); + } + + + [TestCase] + public void TestCompleteBusVehicleData() + { + var reader = XmlReader.Create(CompleteBusExample); + + var inputDataProvider = xmlInputReader.CreateDeclaration(reader); + var vehicle = inputDataProvider.JobInputData.Vehicle; + + Assert.IsNotNull(vehicle); + Assert.AreEqual("Some Manufacturer", vehicle.Manufacturer); + Assert.AreEqual("Infinite Loop 1", vehicle.ManufacturerAddress); + Assert.AreEqual("Sample Bus Model", vehicle.Model); + Assert.AreEqual("VEH-1234567890", vehicle.VIN); + Assert.AreEqual(DateTime.Parse("2020-01-09T11:00:00Z").ToUniversalTime(), vehicle.Date); + Assert.IsTrue(vehicle.LegislativeClass == LegislativeClass.N2); + Assert.AreEqual("II+III", vehicle.RegisteredClass); + Assert.IsTrue(vehicle.VehicleCode == VehicleCode.CD); + Assert.AreEqual(8300, vehicle.CurbMassChassis.Value()); + Assert.AreEqual(15400, vehicle.GrossVehicleMassRating.Value());//TechnicalPermissibleMaximumLadenMass ?!? + Assert.That(() => vehicle.TankSystem, Throws.InstanceOf<VectoException>()); + Assert.AreEqual(50, vehicle.NumberOfPassengersLowerDeck); + Assert.AreEqual(0, vehicle.NuberOfPassengersUpperDeck); + Assert.IsTrue(((XMLDeclarationCompletedBusDataProviderV26)vehicle).LowEntry); + Assert.AreEqual(2.700, vehicle.Height.Value()); + Assert.AreEqual(11.830, vehicle.Length.Value()); + Assert.AreEqual(2.550, vehicle.Width.Value()); + Assert.AreEqual(0.120, ((XMLDeclarationCompletedBusDataProviderV26)vehicle).EntranceHeight.Value()); + Assert.AreEqual("pneumatic", ((XMLDeclarationCompletedBusDataProviderV26)vehicle).DoorDriveTechnology); + + var components = inputDataProvider.JobInputData.Vehicle.Components; + Assert.IsNotNull(components); + + var airDrag = components.AirdragInputData; + + Assert.AreEqual("Generic Manufacturer", airDrag.Manufacturer); + Assert.AreEqual("Generic Model", airDrag.Model); + Assert.AreEqual("e12*0815/8051*2017/05E0000*00", airDrag.CertificationNumber); + Assert.AreEqual(DateTime.Parse("2017-03-24T15:00:00Z").ToUniversalTime(), airDrag.Date.ToUniversalTime()); + Assert.AreEqual("Vecto AirDrag x.y", airDrag.AppVersion); + //CdxA ?!? + //TransferredCdxA ?!? + Assert.AreEqual(6.34, airDrag.AirDragArea.Value()); + + Assert.AreEqual("#CabinX23h", airDrag.DigestValue.Reference); + Assert.AreEqual("urn:vecto:xml:2017:canonicalization", airDrag.DigestValue.CanonicalizationMethods[0]); + Assert.AreEqual("http://www.w3.org/2001/10/xml-exc-c14n#", airDrag.DigestValue.CanonicalizationMethods[1]); + Assert.AreEqual("http://www.w3.org/2001/04/xmlenc#sha256", airDrag.DigestValue.DigestMethod); + Assert.AreEqual("b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=", airDrag.DigestValue.DigestValue); + + var auxiliaries = components.BusAuxiliaries; + Assert.IsFalse(auxiliaries.ElectricConsumers.DayrunninglightsLED); + Assert.IsFalse(auxiliaries.ElectricConsumers.HeadlightsLED); + Assert.IsFalse(auxiliaries.ElectricConsumers.PositionlightsLED); + Assert.IsFalse(auxiliaries.ElectricConsumers.BrakelightsLED); + Assert.IsFalse(auxiliaries.ElectricConsumers.InteriorLightsLED); + + var electricSupl = components.BusAuxiliaries.ElectricSupply; + Assert.IsNotNull(electricSupl.Alternators); + Assert.AreEqual(1, electricSupl.Alternators.Count); + Assert.AreEqual(1.000, electricSupl.Alternators.First().Ratio); + Assert.AreEqual("Sample Alternator Technology 1", electricSupl.Alternators.First().Technology); + + var havacAux = components.BusAuxiliaries.HVACAux; + Assert.IsNotNull(havacAux); + Assert.AreEqual(7, havacAux.SystemConfiguration); + Assert.AreEqual("sample tech 2", havacAux.CompressorType.DriverAC); + Assert.AreEqual("sample tech 1", havacAux.CompressorType.PassengerAC); + Assert.AreEqual(0, havacAux.AuxHeaterPower); + Assert.IsTrue(havacAux.DoubleGlasing); + Assert.IsFalse(havacAux.HeatPump); + Assert.IsTrue(havacAux.AdjustableAuxiliaryHeater); + Assert.IsTrue(havacAux.SeparateAirDistributionDucts); + } + } +}