diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/AbstractVIFGroupWriter.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/AbstractVIFGroupWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..96273458f05f0dace0dad629c893d7c5d08dcb6d --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/AbstractVIFGroupWriter.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportGroupWriter; + +namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1 +{ + public abstract class AbstractVIFGroupWriter : IReportOutputGroup + { + protected readonly IVIFReportFactory _vifReportFactory; + protected XNamespace _vif = "urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1"; + protected XNamespace _v24 = "urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"; + + + protected AbstractVIFGroupWriter(IVIFReportFactory vifReportFactory) + { + _vifReportFactory = vifReportFactory; + } + + #region Implementation of IReportOutputGroup + + public abstract IList<XElement> GetElements(IDeclarationInputDataProvider inputData); + + #endregion + } +} diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleGroup.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleGroup.cs new file mode 100644 index 0000000000000000000000000000000000000000..e18f3c0b5d96cce18c2c78085d984cdaa2d024fb --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleGroup.cs @@ -0,0 +1,257 @@ +using System; +using System.Collections.Generic; +using System.Xml; +using System.Xml.Linq; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCommon.Utils; + +namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1 +{ + + public class PrimaryBusGeneralParameterGroup : AbstractVIFGroupWriter + { + public PrimaryBusGeneralParameterGroup(IVIFReportFactory vifReportFactory) : base(vifReportFactory) { } + + #region Overrides of AbstractVIFGroupWriter + + public override IList<XElement> GetElements(IDeclarationInputDataProvider inputData) + { + var vehicle = inputData.JobInputData.Vehicle; + + var result = new List<XElement> + { + new XElement(_vif + XMLNames.Component_ManufacturerAddress, vehicle.ManufacturerAddress), + new XElement(_vif + XMLNames.Component_Model, vehicle.Model), + new XElement(_vif + XMLNames.Vehicle_VIN, vehicle.VIN), + new XElement(_vif + XMLNames.Component_Date, XmlConvert.ToString(vehicle.Date, XmlDateTimeSerializationMode.Utc)), + new XElement(_vif + XMLNames.Component_Manufacturer, vehicle.Manufacturer) + }; + + return result; + } + + #endregion + } + + public class PrimaryBusChassisParameterGroup : AbstractVIFGroupWriter + { + public PrimaryBusChassisParameterGroup(IVIFReportFactory vifReportFactory) : base(vifReportFactory) { } + + #region Overrides of AbstractVIFGroupWriter + + public override IList<XElement> GetElements(IDeclarationInputDataProvider inputData) + { + var vehicle = inputData.JobInputData.Vehicle; + + var result = new List<XElement> + { + new XElement(_vif + XMLNames.Vehicle_LegislativeCategory, vehicle.LegislativeClass.ToXMLFormat()), + new XElement(_vif + XMLNames.ChassisConfiguration, vehicle.VehicleCategory.ToXMLFormat()), + new XElement(_vif + XMLNames.Vehicle_AxleConfiguration, vehicle.AxleConfiguration.ToXMLFormat()), + new XElement(_vif + XMLNames.Vehicle_Articulated, vehicle.Articulated), + new XElement(_vif + XMLNames.TPMLM, vehicle.GrossVehicleMassRating.ToXMLFormat()), + }; + + return result; + } + + #endregion + } + + public class PrimaryBusRetarderParameterGroup : AbstractVIFGroupWriter + { + public PrimaryBusRetarderParameterGroup(IVIFReportFactory vifReportFactory) : base(vifReportFactory) { } + + #region Overrides of AbstractVIFGroupWriter + + public override IList<XElement> GetElements(IDeclarationInputDataProvider inputData) + { + var vehicle = inputData.JobInputData.Vehicle; + var result = new List<XElement> + { + new XElement(_vif + XMLNames.Vehicle_RetarderType, vehicle.Components.RetarderInputData.Type.ToXMLFormat()), + new XElement(_vif + XMLNames.Vehicle_RetarderRatio, vehicle.Components.RetarderInputData?.Ratio.ToXMLFormat(3)), + }; + return result; + } + + #endregion + } + + public class PrimaryBusXeVParameterGroup : AbstractVIFGroupWriter + { + public PrimaryBusXeVParameterGroup(IVIFReportFactory vifReportFactory) : base(vifReportFactory) { } + + #region Overrides of AbstractVIFGroupWriter + + public override IList<XElement> GetElements(IDeclarationInputDataProvider inputData) + { + var vehicle = inputData.JobInputData.Vehicle; + + var result = new List<XElement> + { + new XElement(_vif + XMLNames.Vehicle_OvcHev, vehicle.Components.RetarderInputData.Type.ToXMLFormat()), + new XElement(_vif + XMLNames.Vehicle_RetarderRatio, vehicle.Components.RetarderInputData?.Ratio.ToXMLFormat(3)), + }; + return result; + } + + #endregion + } + + + public class ConventionalVIFVehicleGroup : AbstractVIFGroupWriter + { + public ConventionalVIFVehicleGroup(IVIFReportFactory vifReportFactory) : base(vifReportFactory) { } + + #region Overrides of AbstractVIFGroupWriter + + public override IList<XElement> GetElements(IDeclarationInputDataProvider inputData) + { + var vehicle = inputData.JobInputData.Vehicle; + + var result = new List<XElement> { + new XElement(_vif + XMLNames.ManufacturerAddressPrimaryVehicle, vehicle.Manufacturer), + new XElement(_vif + XMLNames.ManufacturerAddressPrimaryVehicle, vehicle.ManufacturerAddress), + new XElement(_vif +XMLNames.Component_Model, vehicle.Model), + new XElement(_vif + XMLNames.Vehicle_VIN, vehicle.VIN), + new XElement(_vif + XMLNames.Component_Date, XmlConvert.ToString(vehicle.Date, XmlDateTimeSerializationMode.Utc)), + new XElement(_vif + XMLNames.Vehicle_LegislativeCategory, vehicle.LegislativeClass.ToXMLFormat()), + new XElement(_vif + XMLNames.ChassisConfiguration, vehicle.VehicleCategory.ToXMLFormat()), + new XElement(_vif + XMLNames.Vehicle_AxleConfiguration, vehicle.AxleConfiguration.ToXMLFormat()), + new XElement(_vif + XMLNames.Vehicle_Articulated, vehicle.Articulated), + new XElement(_vif + XMLNames.TPMLM, vehicle.GrossVehicleMassRating.ToXMLFormat()), + new XElement(_vif + XMLNames.Vehicle_IdlingSpeed, vehicle.EngineIdleSpeed.ToXMLFormat()), + new XElement(_vif + XMLNames.Vehicle_RetarderType, vehicle.Components.RetarderInputData.Type.ToXMLFormat()), + new XElement(_vif + XMLNames.Vehicle_RetarderRatio, vehicle.Components.RetarderInputData.Ratio.ToXMLFormat(3)), + new XElement(_vif + XMLNames.Vehicle_AngledriveType, vehicle.Components.AngledriveInputData.Type.ToXMLFormat()), + new XElement(_vif + XMLNames.Vehicle_ZeroEmissionVehicle, vehicle.ZeroEmissionVehicle), + _vifReportFactory.GetAdasType().GetElement(inputData), + _vifReportFactory.GetTorqueLimitsType().GetElement(inputData), + + }; + + return result; + } + + #endregion + } + + + public class HevIepcSVehicleGroup : AbstractVIFGroupWriter + { + public HevIepcSVehicleGroup(IVIFReportFactory vifReportFactory) : base(vifReportFactory) { } + + #region Overrides of AbstractVIFGroupWriter + + public override IList<XElement> GetElements(IDeclarationInputDataProvider inputData) + { + var vehicle = inputData.JobInputData.Vehicle; + + var result = new List<XElement>(); + result.AddRange(_vifReportFactory.GetPrimaryBusGeneralParameterGroup().GetElements(inputData)); + result.AddRange(_vifReportFactory.GetPrimaryBusChassisParameterGroup().GetElements(inputData)); + result.Add(new XElement(_vif + XMLNames.Vehicle_IdlingSpeed, vehicle.EngineIdleSpeed.ToXMLFormat())); + result.AddRange(_vifReportFactory.GetPrimaryBusRetarderParameterGroup().GetElements(inputData)); + result.Add(new XElement(_vif + XMLNames.Vehicle_AngledriveType, vehicle.Components.AngledriveInputData.Type.ToXMLFormat())); + result.Add(new XElement(_vif + XMLNames.Vehicle_ZeroEmissionVehicle, vehicle.ZeroEmissionVehicle)); + result.Add(new XElement(_vif + XMLNames.Vehicle_ArchitectureID, vehicle.ArchitectureID.GetLabel())); + result.AddRange(_vifReportFactory.GetPrimaryBusXeVParameterGroup().GetElements(inputData)); + result.Add(_vifReportFactory.GetAdasType().GetElement(inputData)); + var electricMotorTorque = _vifReportFactory.GetElectricMotorTorqueLimitsType().GetElement(inputData); + if(electricMotorTorque != null) + result.Add(electricMotorTorque); + + return result; + } + + #endregion + } + + public class HevSxVehicleGroup : AbstractVIFGroupWriter + { + public HevSxVehicleGroup(IVIFReportFactory vifReportFactory) : base(vifReportFactory) { } + + #region Overrides of AbstractVIFGroupWriter + + public override IList<XElement> GetElements(IDeclarationInputDataProvider inputData) + { + var vehicle = inputData.JobInputData.Vehicle; + + var result = new List<XElement>(); + result.AddRange(_vifReportFactory.GetPrimaryBusGeneralParameterGroup().GetElements(inputData)); + result.AddRange(_vifReportFactory.GetPrimaryBusChassisParameterGroup().GetElements(inputData)); + result.Add(new XElement(_vif + XMLNames.Vehicle_IdlingSpeed, vehicle.EngineIdleSpeed.ToXMLFormat())); + result.AddRange(_vifReportFactory.GetPrimaryBusRetarderParameterGroup().GetElements(inputData)); + result.Add(new XElement(_vif + XMLNames.Vehicle_AngledriveType, vehicle.Components.AngledriveInputData.Type.ToXMLFormat())); + result.Add(new XElement(_vif + XMLNames.Vehicle_ZeroEmissionVehicle, vehicle.ZeroEmissionVehicle)); + result.Add(new XElement(_vif + XMLNames.Vehicle_ArchitectureID, vehicle.ArchitectureID.GetLabel())); + result.AddRange(_vifReportFactory.GetPrimaryBusXeVParameterGroup().GetElements(inputData)); + result.Add(_vifReportFactory.GetAdasType().GetElement(inputData)); + var electricMotorTorque = _vifReportFactory.GetElectricMotorTorqueLimitsType().GetElement(inputData); + if (electricMotorTorque != null) + result.Add(electricMotorTorque); + + return result; + } + + #endregion + } + + public class IepcVehicleGroup : AbstractVIFGroupWriter + { + public IepcVehicleGroup(IVIFReportFactory vifReportFactory) : base(vifReportFactory) { } + + #region Overrides of AbstractVIFGroupWriter + + public override IList<XElement> GetElements(IDeclarationInputDataProvider inputData) + { + var vehicle = inputData.JobInputData.Vehicle; + + var result = new List<XElement>(); + result.AddRange(_vifReportFactory.GetPrimaryBusGeneralParameterGroup().GetElements(inputData)); + result.AddRange(_vifReportFactory.GetPrimaryBusChassisParameterGroup().GetElements(inputData)); + result.AddRange(_vifReportFactory.GetPrimaryBusRetarderParameterGroup().GetElements(inputData)); + result.Add(new XElement(_vif + XMLNames.Vehicle_AngledriveType, vehicle.Components.AngledriveInputData.Type.ToXMLFormat())); + result.Add(new XElement(_vif + XMLNames.Vehicle_ZeroEmissionVehicle, vehicle.ZeroEmissionVehicle)); + result.Add(new XElement(_vif + XMLNames.Vehicle_ArchitectureID, vehicle.ArchitectureID.GetLabel())); + result.AddRange(_vifReportFactory.GetPrimaryBusXeVParameterGroup().GetElements(inputData)); + result.Add(_vifReportFactory.GetAdasType().GetElement(inputData)); + + return result; + } + + #endregion + } + + public class PEVVehicleGroup : AbstractVIFGroupWriter + { + public PEVVehicleGroup(IVIFReportFactory vifReportFactory) : base(vifReportFactory) { } + + #region Overrides of AbstractVIFGroupWriter + + public override IList<XElement> GetElements(IDeclarationInputDataProvider inputData) + { + var vehicle = inputData.JobInputData.Vehicle; + + var result = new List<XElement>(); + result.AddRange(_vifReportFactory.GetPrimaryBusGeneralParameterGroup().GetElements(inputData)); + result.AddRange(_vifReportFactory.GetPrimaryBusChassisParameterGroup().GetElements(inputData)); + result.AddRange(_vifReportFactory.GetPrimaryBusRetarderParameterGroup().GetElements(inputData)); + result.Add(new XElement(_vif + XMLNames.Vehicle_AngledriveType, vehicle.Components.AngledriveInputData.Type.ToXMLFormat())); + result.Add(new XElement(_vif + XMLNames.Vehicle_ZeroEmissionVehicle, vehicle.ZeroEmissionVehicle)); + result.Add(new XElement(_vif + XMLNames.Vehicle_ArchitectureID, vehicle.ArchitectureID.GetLabel())); + result.AddRange(_vifReportFactory.GetPrimaryBusXeVParameterGroup().GetElements(inputData)); + result.Add(_vifReportFactory.GetAdasType().GetElement(inputData)); + var motorTorqueLimits = _vifReportFactory.GetElectricMotorTorqueLimitsType().GetElement(inputData); + if(motorTorqueLimits != null) + result.Add(motorTorqueLimits); + + return result; + } + + #endregion + } +} diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleWriter.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..0d4b0ea85da8e4f7c79ac60cc265102afdd298d0 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleWriter.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter; + +namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1 +{ + public abstract class VehicleWriter : IXmlTypeWriter + { + protected readonly IVIFReportFactory _vifReportFactory; + protected XNamespace _vif = "urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1"; + protected XNamespace _xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance"); + + + public VehicleWriter(IVIFReportFactory vifReportFactory) + { + _vifReportFactory = vifReportFactory; + } + + + #region Implementation of IXmlTypeWriter + + public abstract XElement GetElement(IDeclarationInputDataProvider inputData); + + + #endregion + } + + + public class VIFConventionalVehicle : VehicleWriter + { + public VIFConventionalVehicle(IVIFReportFactory vifReportFactory) : base(vifReportFactory) + { + } + + #region Overrides of VehicleWriter + + public override XElement GetElement(IDeclarationInputDataProvider inputData) + { + var commonVehicleGroup = _vifReportFactory.GetConventionalVehicleGroup().GetElements(inputData); + + var component = new XElement(_vif + XMLNames.Vehicle_Components, + new XAttribute(_xsi + "type", "vif:Vehicle_Conventional_ComponentsVIFType"), + _vifReportFactory.GetEngineType().GetElement(inputData), + _vifReportFactory.GetTransmissionType().GetElement(inputData), + _vifReportFactory.GetTorqueConvertType().GetElement(inputData), + _vifReportFactory.GetAngelDriveType().GetElement(inputData), + _vifReportFactory.GetAxlegearType().GetElement(inputData), + _vifReportFactory.GetAxleWheelsType().GetElement(inputData), + _vifReportFactory.GetAuxiliaryType().GetElement(inputData)); + + commonVehicleGroup.Add(component); + + return new XElement(_vif + XMLNames.Component_Vehicle, commonVehicleGroup); + } + + #endregion + } +}