diff --git a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLVehicleWriter.cs b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLVehicleWriter.cs index 58b66f6a99fdd48a9ee8d47c5d5b945fa1860a27..221cff965463c7a69ab14a7f1eedd01d8ca0f74d 100644 --- a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLVehicleWriter.cs +++ b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLVehicleWriter.cs @@ -248,6 +248,8 @@ namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter CreateExemptedElements(); return; } + + throw new NotImplementedException("Old Implementation"); _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Manufacturer, _inputData.Manufacturer)); _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_ManufacturerAddress, _inputData.ManufacturerAddress)); @@ -413,34 +415,28 @@ namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter private void CreateExemptedElements() { - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Manufacturer, _inputData.Manufacturer)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_ManufacturerAddress, - _inputData.ManufacturerAddress)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_VIN, _inputData.VIN)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Date, XMLExtension.ToXmlFormat(DateTime.Today))); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Model, _inputData.Model)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_LegislativeCategory, _inputData.LegislativeClass.ToXMLFormat())); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.CorrectedActualMass, _inputData.CurbMassChassis?.ToXMLFormat(0))); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_TPMLM, - _inputData.GrossVehicleMassRating?.ToXMLFormat(0))); + // ReSharper disable once CoVariantArrayConversion + _Xelement.Add(_groupWriterFactory + .GetVehicleDeclarationGroupWriter(GroupNames.Vehicle_CompletedBus_GeneralParametersSequenceGroup, + _defaultNamespace).GetGroupElements(_inputData)); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Component_Model, _inputData.Model)); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_LegislativeCategory, _inputData.LegislativeClass.ToXMLFormat())); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.CorrectedActualMass, _inputData.CurbMassChassis?.ToXMLFormat(0))); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_TPMLM, + _inputData.GrossVehicleMassRating?.ToXMLFormat(0))); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_RegisteredClass, _inputData.RegisteredClass.ToXMLFormat())); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_RegisteredClass, _inputData.RegisteredClass.ToXMLFormat())); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_NumberPassengerSeatsLowerDeck, _inputData.NumberPassengerSeatsLowerDeck)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_NumberPassengersStandingLowerDeck, _inputData.NumberPassengersStandingUpperDeck)); - - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_NumberPassengerSeatsUpperDeck, _inputData.NumberPassengerSeatsUpperDeck)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_NumberPassengersStandingUpperDeck, _inputData.NumberPassengersStandingUpperDeck)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_BodyworkCode, _inputData.VehicleCode.ToXMLFormat())); - - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_LowEntry, _inputData.LowEntry)); + _Xelement.Add(_groupWriterFactory.GetVehicleDeclarationGroupWriter(GroupNames.Vehicle_CompletedBus_PassengerCountSequenceGroup, _defaultNamespace).GetGroupElements(_inputData)); + + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_BodyworkCode, _inputData.VehicleCode.ToXMLFormat())); - //_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_HeighIntegratedBody, _inputData.Height?.ConvertToMilliMeter())); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Bus_LowEntry, _inputData.LowEntry)); - _Xelement.DescendantsAndSelf().Where(e => e.Value.IsNullOrEmpty()).Remove(); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Bus_HeightIntegratedBody, _inputData.Height?.ConvertToMilliMeter())); } #endregion diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLMultistageBusReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLMultistageBusReport.cs index b9560cbdb3d7608712930cbf5ae9241a8b9a815a..e487bb508388f1170b0c2c1ee26f37c9b9e24a9b 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLMultistageBusReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLMultistageBusReport.cs @@ -16,6 +16,7 @@ using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; using TUGraz.VectoCore.Models.Simulation.Data; +using TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.Vehicle.CompletedBus; using TUGraz.VectoCore.Utils; using TUGraz.VectoHashing; @@ -26,8 +27,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF protected override XElement GetVehicleElement(string vehicleId) { return new XElement(tns + XMLNames.Tag_Vehicle, - new XAttribute("xmlns", v210), new XAttribute(xsi + XMLNames.Attr_Type, "Vehicle_Exempted_CompletedBusType"), + new XAttribute("xmlns", v210), new XAttribute(XMLNames.Component_ID_Attr, vehicleId), new XElement(v210 + XMLNames.Component_Manufacturer, _vehicleInputData.Manufacturer), new XElement(v210 + XMLNames.Component_ManufacturerAddress, _vehicleInputData.ManufacturerAddress), @@ -222,10 +223,20 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF new XElement(tns + XMLNames.Report_DataWrap, new XAttribute(xsi + XMLNames.Attr_Type, "BusManufacturingStageDataType"), new XAttribute(XMLNames.Component_ID_Attr, multistageId), + new XAttribute("xmlns", tns), GetHashPreviousStageElement(), GetVehicleElement(vehicleId), GetApplicationInformation())); + //TODO:REMOVE + try { + var vehicleElement = GetVehicleElement(vehicleId); + Debug.WriteLine(vehicleElement.ToString()); +#pragma warning disable 168 + } catch (Exception e) { +#pragma warning restore 168 + // + } var sigXElement = GetSignatureElement(stage); stage.LastNode.Parent.Add(sigXElement); return stage; @@ -255,50 +266,26 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF protected virtual XElement GetVehicleElement(string vehicleId) { + + //CHeck airdrag entry + GetAirdragModifiedMultistageEntry(); return new XElement(tns + XMLNames.Tag_Vehicle, - new XAttribute("xmlns", v210), new XAttribute(xsi + XMLNames.Attr_Type, "Vehicle_Conventional_CompletedBusDeclarationType"), new XAttribute(XMLNames.Component_ID_Attr, vehicleId), - new XElement(v210 + XMLNames.Component_Manufacturer, _vehicleInputData.Manufacturer), - new XElement(v210 + XMLNames.Component_ManufacturerAddress, _vehicleInputData.ManufacturerAddress), - new XElement(v210 + XMLNames.Vehicle_VIN, _vehicleInputData.VIN), - new XElement(v210 + XMLNames.Component_Date, - XmlConvert.ToString(_vehicleInputData.Date, XmlDateTimeSerializationMode.Utc)), - _vehicleInputData.Model != null - ? new XElement(v210 + XMLNames.Component_Model, _vehicleInputData.Model) : null, - _vehicleInputData.LegislativeClass != null - ? new XElement(v210 + XMLNames.Vehicle_LegislativeCategory, _vehicleInputData.LegislativeClass.ToXMLFormat()) : null, - _vehicleInputData.CurbMassChassis != null - ? new XElement(v210 + XMLNames.CorrectedActualMass, _vehicleInputData.CurbMassChassis.ToXMLFormat(0)) : null, - _vehicleInputData.GrossVehicleMassRating != null - ? new XElement(v210 + XMLNames.TPMLM, _vehicleInputData.GrossVehicleMassRating.ToXMLFormat(0)) : null, - GetAirdragModifiedMultistageEntry(), - _vehicleInputData.TankSystem != null - ? new XElement(v210 + XMLNames.Vehicle_NgTankSystem, _vehicleInputData.TankSystem.ToString()) : null, - _vehicleInputData.RegisteredClass != null - ? new XElement(v210 + XMLNames.Vehicle_RegisteredClass, _vehicleInputData.RegisteredClass.ToXMLFormat()) : null, - _vehicleInputData.NumberPassengerSeatsLowerDeck != null - ? new XElement(v210 + XMLNames.Bus_NumberPassengerSeatsLowerDeck, _vehicleInputData.NumberPassengerSeatsLowerDeck) : null, - _vehicleInputData.NumberPassengersStandingLowerDeck != null - ? new XElement(v210 + XMLNames.Bus_NumberPassengersStandingLowerDeck, _vehicleInputData.NumberPassengersStandingLowerDeck) : null, - _vehicleInputData.NumberPassengerSeatsUpperDeck != null - ? new XElement(v210 + XMLNames.Bus_NumberPassengerSeatsUpperDeck, _vehicleInputData.NumberPassengerSeatsUpperDeck) : null, - _vehicleInputData.NumberPassengersStandingUpperDeck != null - ? new XElement(v210 + XMLNames.Bus_NumberPassengersStandingUpperDeck, _vehicleInputData.NumberPassengersStandingUpperDeck) : null, + new XAttribute("xmlns", v210), + CompletedBusGeneralParametersWriterV2_10_2.GetGroupElements(_vehicleInputData, v210), + CompletedBusParametersWriterV2_10_2.GetGroupElements(_vehicleInputData, v210), + _vehicleInputData.TankSystem != null + ? new XElement(v210 + XMLNames.Vehicle_NgTankSystem, _vehicleInputData.TankSystem.ToString()) + : null, + CompletedBusPassengerCountWriter_V2_10_2.GetGroupElements(_vehicleInputData, v210), _vehicleInputData.VehicleCode != null - ? new XElement(v210 + XMLNames.Vehicle_BodyworkCode, _vehicleInputData.VehicleCode.ToXMLFormat()) : null, - _vehicleInputData.LowEntry != null - ? new XElement(v210 + XMLNames.Bus_LowEntry, _vehicleInputData.LowEntry) : null, - _vehicleInputData.Height != null - ? new XElement(v210 + XMLNames.Bus_HeightIntegratedBody, _vehicleInputData.Height.ConvertToMilliMeter().ToXMLFormat(0)) : null, - _vehicleInputData.Length != null - ? new XElement(v210 + XMLNames.Bus_VehicleLength, _vehicleInputData.Length.ConvertToMilliMeter().ToXMLFormat(0)) : null, - _vehicleInputData.Width != null - ? new XElement(v210 + XMLNames.Bus_VehicleWidth, _vehicleInputData.Width.ConvertToMilliMeter().ToXMLFormat(0)) : null, - _vehicleInputData.EntranceHeight != null - ? new XElement(v210 + XMLNames.Bus_EntranceHeight, _vehicleInputData.EntranceHeight.ConvertToMilliMeter().ToXMLFormat(0)) : null, - _vehicleInputData.DoorDriveTechnology != null - ? new XElement(v210 + XMLNames.Bus_DoorDriveTechnology, _vehicleInputData.DoorDriveTechnology.ToXMLFormat()) : null, + ? new XElement(v210 + XMLNames.Vehicle_BodyworkCode, _vehicleInputData.VehicleCode.ToXMLFormat()) + : null, + _vehicleInputData.LowEntry != null + ? new XElement(v210 + XMLNames.Bus_LowEntry, _vehicleInputData.LowEntry) + : null, + CompletedBusDimensionsWriter_V2_10_2.GetGroupElements(_vehicleInputData, v210), new XElement(v210 + XMLNames.Bus_VehicleDeclarationType, _vehicleInputData.VehicleDeclarationType.GetLabel()), GetADAS(_vehicleInputData.ADAS), GetBusVehicleComponents(_vehicleInputData.Components) diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLPrimaryBusVehicleReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLPrimaryBusVehicleReport.cs index b32cabe304e9759924347a98e3a972fccd6e0b2f..42baf75f54dce3ae80831fc19565c555d4f29ef2 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLPrimaryBusVehicleReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLPrimaryBusVehicleReport.cs @@ -151,7 +151,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF GetTorqueLimits(modelData), VehicleComponents(modelData, fuelModes) ); - + InputDataIntegrity = new XElement(tns + XMLNames.Report_InputDataSignature, modelData.InputDataHash == null ? XMLHelper.CreateDummySig(di) : new XElement(modelData.InputDataHash)); } diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusDimensionsWriter.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusDimensionsWriter.cs index 128904dbff29291c6d10acc983ffa9efe7ae7768..c0d005308ac847441b8a6449d9c4d99170284096 100644 --- a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusDimensionsWriter.cs +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusDimensionsWriter.cs @@ -8,6 +8,7 @@ using Castle.Components.DictionaryAdapter; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.Vehicle.CompletedBus { @@ -15,16 +16,28 @@ namespace TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.Vehicle.Comple { public CompletedBusDimensionsWriter_V2_10_2(XNamespace writerNamespace) : base(writerNamespace) { } - public XElement[] GetGroupElements(IVehicleDeclarationInputData vehicle) + public static XElement[] GetGroupElements(IVehicleDeclarationInputData vehicle, XNamespace writerNamespace) { + if (vehicle.IsAnyNull(vehicle.Height, vehicle.Length, vehicle.Width, vehicle.EntranceHeight)) { + return new XElement[0]; + } return new XElement[] { - new XElement(_writerNamespace + XMLNames.Bus_HeightIntegratedBody, + new XElement(writerNamespace + XMLNames.Bus_HeightIntegratedBody, vehicle.Height.ConvertToMilliMeter()), - new XElement(_writerNamespace + XMLNames.Bus_VehicleLength, vehicle.Length.ConvertToMilliMeter()), - new XElement(_writerNamespace + XMLNames.Bus_VehicleWidth, vehicle.Width.ConvertToMilliMeter()), - new XElement(_writerNamespace + XMLNames.Bus_EntranceHeight, + new XElement(writerNamespace + XMLNames.Bus_VehicleLength, vehicle.Length.ConvertToMilliMeter()), + new XElement(writerNamespace + XMLNames.Bus_VehicleWidth, vehicle.Width.ConvertToMilliMeter()), + new XElement(writerNamespace + XMLNames.Bus_EntranceHeight, vehicle.EntranceHeight.ConvertToMilliMeter()) }; } + + #region Implementation of IVehicleDeclarationGroupWriter + + public XElement[] GetGroupElements(IVehicleDeclarationInputData vehicle) + { + return GetGroupElements(vehicle, _writerNamespace); + } + + #endregion } } diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusGeneralParametersWriter.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusGeneralParametersWriter.cs index 9a1cb766336c5b282397d1ca7de4527799e4cd2b..cc19f92a53a27630b6ef3fec090ac9c7a3bd57a0 100644 --- a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusGeneralParametersWriter.cs +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusGeneralParametersWriter.cs @@ -22,13 +22,18 @@ namespace TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.Vehicle.Comple #region Overrides of GroupWriter public XElement[] GetGroupElements(IVehicleDeclarationInputData inputData) + { + return GetGroupElements(inputData, _writerNamespace); + } + + public static XElement[] GetGroupElements(IVehicleDeclarationInputData inputData, XNamespace writerNamespace) { return new XElement[] { - new XElement(_writerNamespace + XMLNames.Component_Manufacturer, inputData.Manufacturer), - new XElement(_writerNamespace + XMLNames.Component_ManufacturerAddress, - inputData.ManufacturerAddress), - new XElement(_writerNamespace + XMLNames.Vehicle_VIN, inputData.VIN), - new XElement(_writerNamespace + XMLNames.Component_Date, inputData.Date.ToXmlFormat()) + new XElement(writerNamespace + XMLNames.Component_Manufacturer, inputData.Manufacturer), + new XElement(writerNamespace + XMLNames.Component_ManufacturerAddress, + inputData.ManufacturerAddress), + new XElement(writerNamespace + XMLNames.Vehicle_VIN, inputData.VIN), + new XElement(writerNamespace + XMLNames.Component_Date, inputData.Date.ToXmlFormat()) }; } diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusParametersWriter.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusParametersWriter.cs index f8e517108fe90cfe034987f71532f33d6dcf439a..3007e2023d85180073e96ba84241413d3c1d1f64 100644 --- a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusParametersWriter.cs +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusParametersWriter.cs @@ -15,45 +15,52 @@ namespace TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.Vehicle.Comple { public CompletedBusParametersWriterV2_10_2(XNamespace writerNamespace) : base(writerNamespace) { } - #region Overrides of GroupWriter - public XElement[] GetGroupElements(IVehicleDeclarationInputData vehicle) + public static XElement[] GetGroupElements(IVehicleDeclarationInputData vehicle, XNamespace writerNamespace) { var elements = new List<XElement>(); if (vehicle.Model != null) { - elements.Add( new XElement(_writerNamespace + XMLNames.Component_Model, + elements.Add(new XElement(writerNamespace + XMLNames.Component_Model, vehicle.Model)); } if (vehicle.LegislativeClass != null) { - elements.Add(new XElement(_writerNamespace + XMLNames.Vehicle_LegislativeCategory, + elements.Add(new XElement(writerNamespace + XMLNames.Vehicle_LegislativeCategory, vehicle.LegislativeClass.ToXMLFormat())); } if (vehicle.CurbMassChassis != null) { - elements.Add(new XElement(_writerNamespace + XMLNames.CorrectedActualMass, + elements.Add(new XElement(writerNamespace + XMLNames.CorrectedActualMass, vehicle.CurbMassChassis.ToXMLFormat(0))); } if (vehicle.GrossVehicleMassRating != null) { - elements.Add(new XElement(_writerNamespace + XMLNames.Vehicle_TPMLM, + elements.Add(new XElement(writerNamespace + XMLNames.Vehicle_TPMLM, vehicle.GrossVehicleMassRating.ToXMLFormat(0))); } if (vehicle.AirdragModifiedMultistage != null) { - elements.Add(new XElement(_writerNamespace + XMLNames.Bus_AirdragModifiedMultistage, - vehicle.AirdragModifiedMultistage)); + elements.Add(new XElement(writerNamespace + XMLNames.Bus_AirdragModifiedMultistage, + vehicle.AirdragModifiedMultistage)); } if (vehicle.RegisteredClass != null) { - elements.Add(new XElement(_writerNamespace + XMLNames.Vehicle_RegisteredClass, + elements.Add(new XElement(writerNamespace + XMLNames.Vehicle_RegisteredClass, vehicle.RegisteredClass.ToXMLFormat())); } return elements.ToArray(); } - #endregion + + #region Implementation of IVehicleDeclarationGroupWriter + + public XElement[] GetGroupElements(IVehicleDeclarationInputData vehicle) + { + return GetGroupElements(vehicle, _writerNamespace); + } + + #endregion } } diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusPassengerCountWriter.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusPassengerCountWriter.cs index 0f1be56963923b2493316586ea254cbd0df2cfbc..4efe71fc36acdb9c76da679fd472f98361e9d9fd 100644 --- a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusPassengerCountWriter.cs +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusPassengerCountWriter.cs @@ -7,6 +7,7 @@ using System.Xml.Linq; using Castle.Components.DictionaryAdapter; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.Vehicle.CompletedBus { @@ -15,29 +16,39 @@ namespace TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.Vehicle.Comple public CompletedBusPassengerCountWriter_V2_10_2(XNamespace writerNamespace) : base(writerNamespace) { } - #region Implementation of IGroupWriter - public XElement[] GetGroupElements(IVehicleDeclarationInputData vehicle) + public static XElement[] GetGroupElements(IVehicleDeclarationInputData vehicle, XNamespace writerNamespace) { + if (vehicle.IsAnyNull(vehicle.NumberPassengersStandingLowerDeck, vehicle.NumberPassengersStandingUpperDeck, + vehicle.NumberPassengerSeatsLowerDeck, vehicle.NumberPassengerSeatsUpperDeck)) { + return new XElement[0]; + } return new XElement[] { - new XElement(_writerNamespace + XMLNames.Bus_NumberPassengerSeatsLowerDeck, + new XElement(writerNamespace + XMLNames.Bus_NumberPassengerSeatsLowerDeck, vehicle.NumberPassengerSeatsLowerDeck), - new XElement(_writerNamespace + XMLNames.Bus_NumberPassengersStandingLowerDeck, + new XElement(writerNamespace + XMLNames.Bus_NumberPassengersStandingLowerDeck, vehicle.NumberPassengersStandingLowerDeck), - new XElement(_writerNamespace + XMLNames.Bus_NumberPassengerSeatsUpperDeck, + new XElement(writerNamespace + XMLNames.Bus_NumberPassengerSeatsUpperDeck, vehicle.NumberPassengerSeatsUpperDeck), - new XElement(_writerNamespace + XMLNames.Bus_NumberPassengersStandingUpperDeck, + new XElement(writerNamespace + XMLNames.Bus_NumberPassengersStandingUpperDeck, vehicle.NumberPassengersStandingUpperDeck), }; } - #endregion + #region Implementation of IVehicleDeclarationGroupWriter + + public XElement[] GetGroupElements(IVehicleDeclarationInputData vehicle) + { + return GetGroupElements(vehicle, _writerNamespace); + } + + #endregion } }