diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/Common/CO2Writer.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/Common/CO2Writer.cs index 9f01d430a10bae02d77293ddb399a934ec1ea7b3..8c868216a64d663f26f50e3829daf817f70a85ee 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/Common/CO2Writer.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/Common/CO2Writer.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using System.Xml.Linq; using TUGraz.VectoCommon.Models; @@ -33,48 +32,12 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.Common protected abstract IList<FormattedReportValue> GetCO2ResultEntries(Kilogram co2, Meter distance, Kilogram payload, CubicMeter volume, double? passengers); - protected object[] Format3Significant1Decimal(ConvertedSI value) - { - return value.ValueAsUnit(3, 1); - } - - protected object[] Format1Decimal(ConvertedSI value) - { - return value.ValueAsUnit(1); - } - - protected object[] Format2Decimal(ConvertedSI value) - { - return value.ValueAsUnit(2); - } + + } - public class FormattedReportValue - { - public ConvertedSI Value { get; } - - protected Func<ConvertedSI, object[]> Formatter; - - public FormattedReportValue(ConvertedSI value, Func<ConvertedSI, object[]> formatter = null) - { - Value = value; - Formatter = formatter ?? DefaultFormat; - } - - public object[] GetElement() - { - return Formatter(Value); - } - - protected object[] DefaultFormat(ConvertedSI value) - { - return Value.ValueAsUnit(3, 1); - } - - } - - public class LorryCO2Writer : CO2WriterBase + public class LorryCO2Writer : CO2WriterBase { public LorryCO2Writer(ICommonResultsWriterFactory factory, XNamespace ns) : base(factory, ns) { } @@ -84,7 +47,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.Common { var retVal = new List<FormattedReportValue>() { new FormattedReportValue((CO2Total / distance).ConvertToGrammPerKiloMeter()), - new FormattedReportValue((CO2Total / distance / payload).ConvertToGrammPerTonKilometer(), Format1Decimal), + new FormattedReportValue((CO2Total / distance / payload).ConvertToGrammPerTonKilometer(), FormattedReportValue.Format1Decimal), }; if (volume.IsGreater(0)) { retVal.Add(new FormattedReportValue((CO2Total / distance / volume).ConvertToGrammPerCubicMeterKiloMeter())); @@ -103,7 +66,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.Common { return new[] { new FormattedReportValue((CO2Total / distance).ConvertToGrammPerKiloMeter()), - new FormattedReportValue((CO2Total / distance / passengers.Value).ConvertToGrammPerPassengerKilometer(), Format2Decimal), + new FormattedReportValue((CO2Total / distance / passengers.Value).ConvertToGrammPerPassengerKilometer(), FormattedReportValue.Format2Decimal), }; } @@ -127,7 +90,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.Common new XAttribute(XMLNames.Report_Results_Fuel_Type_Attr, entry.AuxHeaterFuel.FuelType.ToXMLFormat()), tmp?.GetFuelConsumptionEntries(entry.ZEV_FuelConsumption_AuxHtr, entry.AuxHeaterFuel, entry.Distance, entry.Payload, entry.CargoVolume, entry.PassengerCount).Select(x => - new XElement(TNS + XMLNames.Report_Results_FuelConsumption, x.ValueAsUnit(3, 1))) + new XElement(TNS + XMLNames.Report_Results_FuelConsumption, new FormattedReportValue(x).GetElement())) ), new XElement(TNS + XMLNames.Report_ResultEntry_CO2ZEVAuxHeater, GetCO2ResultEntries(entry.ZEV_CO2, entry.Distance, entry.Payload, entry.CargoVolume, @@ -149,7 +112,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.Common new XAttribute(XMLNames.Report_Results_Fuel_Type_Attr, entry.AuxHeaterFuel.FuelType.ToXMLFormat()), tmp?.GetFuelConsumptionEntries(entry.ZEV_FuelConsumption_AuxHtr, entry.AuxHeaterFuel, entry.Distance, entry.Payload, entry.CargoVolume, entry.PassengerCount).Select(x => - new XElement(TNS + XMLNames.Report_Results_FuelConsumption, x.ValueAsUnit(3, 1))) + new XElement(TNS + XMLNames.Report_Results_FuelConsumption, new FormattedReportValue(x).GetElement())) ), new XElement(TNS + XMLNames.Report_ResultEntry_CO2ZEVAuxHeater, GetCO2ResultEntries(entry.ZEV_CO2, entry.Distance, entry.Payload, entry.CargoVolume, diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/Common/ElectricEnergyWriter.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/Common/ElectricEnergyWriter.cs index 20b634257df4c3593332d38199550861dac07f13..7b9dd670607c91044cbd42c7306d9170d4a92800 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/Common/ElectricEnergyWriter.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/Common/ElectricEnergyWriter.cs @@ -19,7 +19,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.Common return new XElement(TNS + ElectricEnergyConsumptionXMLElementName, GetEnergyConsumption(entry.ElectricEnergyConsumption, entry.Distance, entry.Payload, entry.CargoVolume, entry.PassengerCount).Select(x => - new XElement(TNS + XMLNames.Report_Result_EnergyConsumption, x.ValueAsUnit(3, 1))) + new XElement(TNS + XMLNames.Report_Result_EnergyConsumption, new FormattedReportValue(x).GetElement())) ); } @@ -28,7 +28,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.Common return new XElement(TNS + ElectricEnergyConsumptionXMLElementName, GetEnergyConsumption(weighted.ElectricEnergyConsumption, weighted.Distance, weighted.Payload, weighted.CargoVolume, weighted.PassengerCount).Select(x => - new XElement(TNS + XMLNames.Report_Result_EnergyConsumption, x.ValueAsUnit(3, 1))) + new XElement(TNS + XMLNames.Report_Result_EnergyConsumption, new FormattedReportValue(x).GetElement())) ); } diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/Common/FormattedReportValue.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/Common/FormattedReportValue.cs new file mode 100644 index 0000000000000000000000000000000000000000..abc023c023ace298d30cc51d3a86abfd0dccbea2 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/Common/FormattedReportValue.cs @@ -0,0 +1,40 @@ +using System; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.Utils; + +namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.Common +{ + + public class FormattedReportValue + { + public ConvertedSI Value { get; } + + protected Func<ConvertedSI, object[]> Formatter; + + public FormattedReportValue(ConvertedSI value, Func<ConvertedSI, object[]> formatter = null) + { + Value = value; + Formatter = formatter ?? DefaultFormat; + } + + public object[] GetElement() + { + return Formatter(Value); + } + + protected object[] DefaultFormat(ConvertedSI value) + { + return Value.ValueAsUnit(4, 1); + } + + public static object[] Format1Decimal(ConvertedSI value) + { + return value.ValueAsUnit(1); + } + + public static object[] Format2Decimal(ConvertedSI value) + { + return value.ValueAsUnit(2); + } + } +} \ No newline at end of file diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/Common/FuelConsumptionWriter.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/Common/FuelConsumptionWriter.cs index b89bb3c4d75ffb99463e695a988d0ee42a71eac9..bd48907ff217173b16120f0872855a04ae624950 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/Common/FuelConsumptionWriter.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/Common/FuelConsumptionWriter.cs @@ -32,9 +32,10 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.Common { return new XElement(TNS + XMLNames.Report_Results_Fuel, new XAttribute(XMLNames.Report_Results_Fuel_Type_Attr, fuel.FuelType.ToXMLFormat()), - GetFuelConsumptionEntries(consumption, fuel, distance, payLoad, cargoVolume, passengerCount).Select(x => new XElement(TNS + XMLNames.Report_Results_FuelConsumption, x.ValueAsUnit(3, 1))) + GetFuelConsumptionEntries(consumption, fuel, distance, payLoad, cargoVolume, passengerCount).Select(x => + new XElement(TNS + XMLNames.Report_Results_FuelConsumption, new FormattedReportValue(x).GetElement())) ); - } + } #endregion diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/Common/ResultGroupWriter.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/Common/ResultGroupWriter.cs index 7db381a1f79fca3fdc9f881e7c35d7efa4415818..cab35597bef17e8a5a2f6057078ed595344f253e 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/Common/ResultGroupWriter.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/Common/ResultGroupWriter.cs @@ -95,11 +95,11 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.Common { return new[] { new XElement(TNS + XMLNames.Report_ResultEntry_ActualChargeDepletingRange, - XMLHelper.ValueAsUnit(result.ActualChargeDepletingRange.ConvertToKiloMeter())), + result.ActualChargeDepletingRange.ConvertToKiloMeter().ValueAsUnit()), new XElement(TNS + XMLNames.Report_ResultEntry_EquivalentAllElectricRange, - XMLHelper.ValueAsUnit(result.EquivalentAllElectricRange.ConvertToKiloMeter())), + result.EquivalentAllElectricRange.ConvertToKiloMeter().ValueAsUnit()), new XElement(TNS + XMLNames.Report_ResultEntry_ZeroCO2EmissionsRange, - XMLHelper.ValueAsUnit(result.ZeroCO2EmissionsRange.ConvertToKiloMeter())), + result.ZeroCO2EmissionsRange.ConvertToKiloMeter().ValueAsUnit()), }; } @@ -107,11 +107,11 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.Common { return new[] { new XElement(TNS + XMLNames.Report_ResultEntry_ActualChargeDepletingRange, - XMLHelper.ValueAsUnit(weightedResult.ActualChargeDepletingRange.ConvertToKiloMeter())), + weightedResult.ActualChargeDepletingRange.ConvertToKiloMeter().ValueAsUnit()), new XElement(TNS + XMLNames.Report_ResultEntry_EquivalentAllElectricRange, - XMLHelper.ValueAsUnit(weightedResult.EquivalentAllElectricRange.ConvertToKiloMeter())), + weightedResult.EquivalentAllElectricRange.ConvertToKiloMeter().ValueAsUnit()), new XElement(TNS + XMLNames.Report_ResultEntry_ZeroCO2EmissionsRange, - XMLHelper.ValueAsUnit(weightedResult.ZeroCO2EmissionsRange.ConvertToKiloMeter())), + weightedResult.ZeroCO2EmissionsRange.ConvertToKiloMeter().ValueAsUnit()), }; } diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/ResultWriter/ResultGroupWriter.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/ResultWriter/ResultGroupWriter.cs index 5afbcab02e98037470e77aed884e424edf9d1e05..3cc200f5d7e7945cfbc9938d0718f8bce0d3f17f 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/ResultWriter/ResultGroupWriter.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/ResultWriter/ResultGroupWriter.cs @@ -121,7 +121,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF new XAttribute(XMLNames.Report_Results_Fuel_Type_Attr, fc.Fuel.FuelType.ToXMLFormat()), GetFuelConsumptionEntries(fc.TotalFuelConsumptionCorrected, fc.Fuel, entry.Distance, entry.Payload, entry.CargoVolume, entry.PassengerCount).Select(x => - new XElement(TNS + XMLNames.Report_Result_EnergyConsumption, x.ValueAsUnit(3, 1))) + new XElement(TNS + XMLNames.Report_Result_EnergyConsumption, new FormattedReportValue(x).GetElement())) ); } @@ -131,7 +131,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF new XAttribute(XMLNames.Report_Results_Fuel_Type_Attr, fuel.FuelType.ToXMLFormat()), GetFuelConsumptionEntries(consumption, fuel, entry.Distance, entry.Payload, entry.CargoVolume, entry.PassengerCount).Select(x => - new XElement(TNS + XMLNames.Report_Result_EnergyConsumption, x.ValueAsUnit(3, 1))) + new XElement(TNS + XMLNames.Report_Result_EnergyConsumption, new FormattedReportValue(x).GetElement())) ); }