Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS has been phased out. To see alternatives please check here

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

make more xml testcases work

parent 3301eb64
No related branches found
No related tags found
No related merge requests found
Showing
with 422 additions and 87 deletions
......@@ -278,7 +278,7 @@ namespace TUGraz.VectoCommon.InputData
double Efficiency { get; }
}
public interface ITorqueConverterDeclarationInputData
public interface ITorqueConverterDeclarationInputData : IComponentInputData
{
/// <summary>
/// P091
......
......@@ -55,5 +55,19 @@ namespace TUGraz.VectoCommon.Models
throw new ArgumentOutOfRangeException("AngledriveType", type, null);
}
}
public static string ToXMLFormat(this AngledriveType type)
{
switch (type) {
case AngledriveType.None:
return "None";
case AngledriveType.SeparateAngledrive:
return "Separate Angledrive";
case AngledriveType.LossesIncludedInGearbox:
return "Losses included in Gearbox";
default:
throw new ArgumentOutOfRangeException("Angledrive Type", type, null);
}
}
}
}
\ No newline at end of file
......@@ -98,5 +98,23 @@ namespace TUGraz.VectoCommon.Models
}
return 0.SI<Second>();
}
public static string ToXMLFormat(this GearboxType type)
{
switch (type) {
case GearboxType.MT:
return "SMT";
case GearboxType.AMT:
return "AMT";
case GearboxType.DrivingCycle:
return type.ToString();
case GearboxType.ATSerial:
return "APT-S";
case GearboxType.ATPowerSplit:
return "APT-P";
default:
throw new ArgumentOutOfRangeException("GearboxType", type, null);
}
}
}
}
\ No newline at end of file
......@@ -260,6 +260,14 @@ namespace TUGraz.VectoCommon.Utils
{
return self.ToString(CultureInfo.InvariantCulture);
}
[DebuggerStepThrough]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static string ToXMLFormat(this double self, uint? decimals = null)
{
decimals = decimals ?? 2;
return self.ToString("F" + decimals.Value);
}
}
public static class FloatExtensionMethods
......
......@@ -2274,5 +2274,11 @@ namespace TUGraz.VectoCommon.Utils
{
return Val.ToGUIFormat();
}
public string ToXMLFormat(uint? decimals = null)
{
decimals = decimals ?? 2;
return Val.ToString("F" + decimals.Value);
}
}
}
\ No newline at end of file
......@@ -310,7 +310,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
public string Model
{
get { return "N/A"; }
get { return "N.A."; }
}
public string Creator
......@@ -325,12 +325,12 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
public string TechnicalReportId
{
get { return "N/A"; }
get { return "N.A."; }
}
public string CertificationNumber
{
get { return "N/A"; }
get { return "N.A."; }
}
public string DigestValue
......
......@@ -5,6 +5,7 @@ using System.Linq;
using System.Xml;
using System.Xml.Linq;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.Resources;
namespace TUGraz.IVT.VectoXML.Writer
......@@ -17,6 +18,7 @@ namespace TUGraz.IVT.VectoXML.Writer
protected XNamespace tns;
protected XNamespace rootNamespace;
protected XNamespace di;
private const string Creator = "TU Graz, IVT-EM XML Exporter";
protected readonly string Vendor;
......@@ -28,27 +30,45 @@ namespace TUGraz.IVT.VectoXML.Writer
{
BasePath = basePath;
Vendor = vendor;
di = "http://www.w3.org/2000/09/xmldsig#";
}
protected XElement[] GetDefaultComponentElements(string componentId, string makeAndModel)
{
return new[] {
new XElement(tns + XMLNames.Component_Manufacturer, string.Format("{0,-5}", Vendor)),
new XElement(tns + XMLNames.Component_Model, string.Format("{0,-10}", makeAndModel)),
new XElement(tns + XMLNames.Component_TechnicalReportId, string.Format("{0,-10}", componentId)),
new XElement(tns + XMLNames.Component_Date, XmlConvert.ToString(DateTime.Now, XmlDateTimeSerializationMode.Utc)),
new XElement(tns + XMLNames.Component_AppVersion, "VectoCore"),
};
}
protected XElement[] GetDefaultComponentElements(string typeId, string makeAndModel)
protected XElement[] GetDefaultComponentElements(string vin, string makeAndModel, string address)
{
return new[] {
new XElement(tns + XMLNames.Component_Manufacturer, String.Format("{0,-5}", Vendor)),
new XElement(tns + XMLNames.Component_Creator, String.Format("{0,-10}", Creator)),
new XElement(tns + XMLNames.Component_ManufacturerAddress, address),
new XElement(tns + XMLNames.Component_Model, string.Format("{0,-10}", makeAndModel)),
new XElement(tns + XMLNames.Vehicle_VIN, string.Format("{0,-10}", vin)),
new XElement(tns + XMLNames.Component_Date, XmlConvert.ToString(DateTime.Now, XmlDateTimeSerializationMode.Utc)),
new XElement(tns + XMLNames.Component_Model, String.Format("{0,-10}", makeAndModel)),
new XElement(tns + XMLNames.Component_CertificationNumber, String.Format("{0,-10}", typeId)),
};
}
protected object[] EmbedDataTable(DataTable table, Dictionary<string, string> mapping, string tagName = "Entry")
protected object[] EmbedDataTable(DataTable table, Dictionary<string, string> mapping, string tagName = "Entry",
Dictionary<string, uint> precision = null)
{
return (from DataRow row in table.Rows
select
new XElement(tns + tagName,
table.Columns.Cast<DataColumn>()
.Where(c => mapping.ContainsKey(c.ColumnName))
.Select(c => new XAttribute(mapping[c.ColumnName], row[c])))).Cast<object>().ToArray();
.Select(c => {
var p = precision != null && precision.ContainsKey(c.ColumnName) ? precision[c.ColumnName] : 2;
return new XAttribute(mapping[c.ColumnName], row.Field<string>(c).ToDouble().ToXMLFormat(p));
})))
.Cast<object>().ToArray();
}
protected string GetVehicleCategoryXML(VehicleCategory vehicleCategory)
......@@ -102,21 +122,5 @@ namespace TUGraz.IVT.VectoXML.Writer
throw new ArgumentOutOfRangeException("RetarderType", type, null);
}
}
protected string GearboxtypeToXML(GearboxType type)
{
switch (type) {
case GearboxType.MT:
case GearboxType.AMT:
case GearboxType.DrivingCycle:
return type.ToString();
case GearboxType.ATSerial:
return "AT - Serial";
case GearboxType.ATPowerSplit:
return "AT - PowerSplit";
default:
throw new ArgumentOutOfRangeException("type", type, null);
}
}
}
}
\ No newline at end of file
......@@ -2,10 +2,15 @@
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
using DocumentFormat.OpenXml.Drawing.Diagrams;
using TUGraz.IVT.VectoXML;
using TUGraz.IVT.VectoXML.Writer;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.InputData.Reader;
using TUGraz.VectoCore.InputData.Reader.ComponentData;
using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine;
using TUGraz.VectoCore.Resources;
namespace TUGraz.VectoCore.OutputData.XML
......@@ -18,9 +23,9 @@ namespace TUGraz.VectoCore.OutputData.XML
public XMLDeclarationWriter(string vendor) : base(null, vendor)
{
tns = "urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v0.6";
rootNamespace = "urn:tugraz:ivt:VectoAPI:DeclarationInput:v0.6";
componentNamespace = "urn:tugraz:ivt:VectoAPI:DeclarationComponent:v0.6";
tns = "urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v0.8";
rootNamespace = "urn:tugraz:ivt:VectoAPI:DeclarationInput:v0.8";
componentNamespace = "urn:tugraz:ivt:VectoAPI:DeclarationComponent:v0.8";
}
public XDocument GenerateVectoJob(IDeclarationInputDataProvider data)
......@@ -92,17 +97,22 @@ namespace TUGraz.VectoCore.OutputData.XML
return new XElement(tns + XMLNames.Component_Vehicle,
new XAttribute(XMLNames.Component_ID_Attr, "VEH-" + vehicle.Model),
GetDefaultComponentElements(vehicle.TechnicalReportId, vehicle.Model),
GetDefaultComponentElements(vehicle.TechnicalReportId, vehicle.Model, "N.A."),
new XElement(tns + "LegislativeClass", "N3"),
new XElement(tns + XMLNames.Vehicle_VehicleCategory, GetVehicleCategoryXML(vehicle.VehicleCategory)),
new XElement(tns + XMLNames.Vehicle_AxleConfiguration, vehicle.AxleConfiguration.GetName()),
new XElement(tns + XMLNames.Vehicle_CurbWeightChassis, vehicle.CurbMassChassis.Value()),
new XElement(tns + XMLNames.Vehicle_GrossVehicleMass, vehicle.GrossVehicleMassRating.Value()),
//new XElement(tns + XMLNames.Vehicle_AirDragArea, vehicle.AirDragArea.Value()),
new XElement(tns + XMLNames.Vehicle_SteeredAxles, numSteeredaxles),
new XElement(tns + XMLNames.Vehicle_CurbMassChassis, vehicle.CurbMassChassis.ToXMLFormat(0)),
new XElement(tns + XMLNames.Vehicle_GrossVehicleMass, vehicle.GrossVehicleMassRating.ToXMLFormat(0)),
new XElement(tns + "IdlingSpeed", data.EngineInputData.IdleSpeed.ToXMLFormat(0)),
new XElement(tns + XMLNames.Vehicle_RetarderType, GetRetarterTypeXML(retarder.Type)),
retarder.Type.IsDedicatedComponent() ? new XElement(tns + XMLNames.Vehicle_RetarderRatio, retarder.Ratio) : null,
new XElement(tns + XMLNames.Vehicle_AngledriveType, angledrive.Type),
new XElement(tns + XMLNames.Vehicle_PTOType, "None"),
retarder.Type.IsDedicatedComponent()
? new XElement(tns + XMLNames.Vehicle_RetarderRatio, retarder.Ratio.ToXMLFormat(3))
: null,
new XElement(tns + XMLNames.Vehicle_AngledriveType, angledrive.Type.ToXMLFormat()),
new XElement(tns + "PTO",
new XElement(tns + "PTOShaftsGearWheels", "none"),
new XElement(tns + "PTOOtherElements", "none")),
// ToDo: TorqueLimits
new XElement(tns + XMLNames.Vehicle_Components,
CreateEngine(data.EngineInputData),
CreateGearbox(gearbox, gearbox.Type.AutomaticTransmission() ? data.TorqueConverterInputData : null),
......@@ -112,36 +122,42 @@ namespace TUGraz.VectoCore.OutputData.XML
CreateAxleWheels(data.VehicleInputData),
CreateAuxiliaries(data.AuxiliaryInputData()),
CreateAirdrag(data.AirdragInputData)
),
new XElement(tns + XMLNames.Vehicle_AdvancedDriverAssist,
new XElement(tns + XMLNames.Vehicle_AdvancedDriverAssist_EngineStartStop,
new XElement(tns + XMLNames.Vehicle_AdvancedDriverAssist_EngineStartStop_Enabled,
data.DriverInputData.StartStop.Enabled)),
new XElement(tns + XMLNames.DriverModel_Overspeed,
new XElement(tns + XMLNames.DriverModel_Overspeed_Mode, data.DriverInputData.OverSpeedEcoRoll.Mode))
));
)
);
}
protected XElement CreateEngine(IEngineDeclarationInputData data)
{
var id = string.Format("ENG-{0}", data.Model.RemoveWhitespace());
var fld = EngineFullLoadCurve.Create(data.FullLoadCurve, true);
return new XElement(tns + XMLNames.Component_Engine,
new XAttribute("certificationNumber", string.Format("ENG-{0}", data.Model)),
new XElement(tns + XMLNames.ComponentDataWrapper,
new XAttribute(XMLNames.Component_ID_Attr, string.Format("ENG-{0}", data.Model)),
new XAttribute(XMLNames.Component_ID_Attr, id),
GetDefaultComponentElements(string.Format("ENG-{0}", data.Model), data.Model),
new XElement(tns + XMLNames.Engine_Displacement, data.Displacement.Value() * 1000 * 1000),
new XElement(tns + XMLNames.Engine_IdlingSpeed, data.IdleSpeed.AsRPM),
new XElement(tns + XMLNames.Engine_WHTCUrban, data.WHTCUrban),
new XElement(tns + XMLNames.Engine_WHTCRural, data.WHTCRural),
new XElement(tns + XMLNames.Engine_WHTCMotorway, data.WHTCMotorway),
new XElement(tns + XMLNames.Engine_ColdHotBalancingFactor, data.ColdHotBalancingFactor),
new XElement(tns + XMLNames.Engine_Displacement, (data.Displacement.Value() * 1000 * 1000).ToXMLFormat(0)),
new XElement(tns + XMLNames.Engine_IdlingSpeed, data.IdleSpeed.AsRPM.ToXMLFormat(0)),
new XElement(tns + "RatedSpeed", fld.RatedSpeed.AsRPM.ToXMLFormat(0)),
new XElement(tns + "RatedPower", fld.FullLoadStationaryPower(fld.RatedSpeed).ToXMLFormat(0)),
new XElement(tns + "MaxEngineTorque", fld.MaxLoadTorque.ToXMLFormat(0)),
new XElement(tns + XMLNames.Engine_WHTCUrban, data.WHTCUrban.ToXMLFormat(4)),
new XElement(tns + XMLNames.Engine_WHTCRural, data.WHTCRural.ToXMLFormat(4)),
new XElement(tns + XMLNames.Engine_WHTCMotorway, data.WHTCMotorway.ToXMLFormat(4)),
new XElement(tns + XMLNames.Engine_ColdHotBalancingFactor, data.ColdHotBalancingFactor.ToXMLFormat(4)),
new XElement(tns + "CFRegPer", "1.0000"),
new XElement(tns + "CFNCV", "1.0000"),
new XElement(tns + "FuelType", "Diesel CI"),
new XElement(tns + XMLNames.Engine_FuelConsumptionMap,
EmbedDataTable(data.FuelConsumptionMap, AttributeMappings.FuelConsumptionMapMapping)),
new XElement(tns + XMLNames.Engine_FullLoadAndDragCurve,
EmbedDataTable(data.FullLoadCurve, AttributeMappings.EngineFullLoadCurveMapping))
EmbedDataTable(data.FullLoadCurve, AttributeMappings.EngineFullLoadCurveMapping)
)
),
AddSignatureDummy(id)
);
}
protected XElement CreateGearbox(IGearboxDeclarationInputData gbxData,
ITorqueConverterDeclarationInputData torqueConverter)
{
......@@ -150,7 +166,7 @@ namespace TUGraz.VectoCore.OutputData.XML
foreach (var gearData in gbxData.Gears) {
var gear = new XElement(tns + XMLNames.Gearbox_Gears_Gear,
new XAttribute(XMLNames.Gearbox_Gear_GearNumber_Attr, i++),
new XElement(tns + XMLNames.Gearbox_Gear_Ratio, gearData.Ratio),
new XElement(tns + XMLNames.Gearbox_Gear_Ratio, gearData.Ratio.ToXMLFormat(3)),
gearData.MaxTorque != null
? new XElement(tns + XMLNames.Gearbox_Gears_MaxTorque, gearData.MaxTorque.Value())
: null,
......@@ -159,14 +175,19 @@ namespace TUGraz.VectoCore.OutputData.XML
);
gears.Add(gear);
}
var id = string.Format("GBX-{0}", gbxData.Model.RemoveWhitespace());
return new XElement(tns + XMLNames.Component_Gearbox,
new XAttribute("certificationNumber", string.Format("GBX-{0}", gbxData.Model)),
new XElement(tns + XMLNames.ComponentDataWrapper,
new XAttribute(XMLNames.Component_ID_Attr, string.Format("GBX-{0}", gbxData.Model)),
new XAttribute(XMLNames.Component_ID_Attr, id),
GetDefaultComponentElements(string.Format("GBX-{0}", gbxData.Model), gbxData.Model),
new XElement(tns + XMLNames.Gearbox_TransmissionType, GearboxtypeToXML(gbxData.Type)),
new XElement(tns + XMLNames.Gearbox_TransmissionType, gbxData.Type.ToXMLFormat()),
new XElement(tns + "MainCertificationMethod", "Standard values"),
gears
),
gbxData.Type.AutomaticTransmission() ? CreateTorqueConverter(torqueConverter) : null);
AddSignatureDummy(id),
gbxData.Type.AutomaticTransmission() ? CreateTorqueConverter(torqueConverter) : null
);
}
......@@ -175,35 +196,52 @@ namespace TUGraz.VectoCore.OutputData.XML
if (data == null) {
throw new Exception("Torque Converter is required!");
}
var id = string.Format("TC-{0}", data.Model.RemoveWhitespace());
return new XElement(tns + XMLNames.Component_TorqueConverter,
new XAttribute("certificationNumber", id),
new XElement(tns + XMLNames.ComponentDataWrapper,
new XAttribute(XMLNames.Component_ID_Attr, id),
GetDefaultComponentElements(data.TechnicalReportId, data.Model),
new XElement(tns + "CertificationMethod", "Standard values"),
new XElement(tns + XMLNames.TorqueConverter_Characteristics,
EmbedDataTable(data.TCData, AttributeMappings.TorqueConverterDataMapping)
EmbedDataTable(data.TCData, AttributeMappings.TorqueConverterDataMapping,
precision: new Dictionary<string, uint>() {
{ TorqueConverterDataReader.Fields.SpeedRatio, 4 }
})
)
));
),
AddSignatureDummy(id));
}
private XElement CreateAngleDrive(IAngledriveInputData data)
{
var id = string.Format("ANGL-{0}", data.Model.RemoveWhitespace());
return new XElement(tns + XMLNames.Component_Angledrive,
new XAttribute("certificationNumber", "ANGL-" + data.Model),
new XElement(tns + XMLNames.ComponentDataWrapper,
new XAttribute(XMLNames.Component_ID_Attr, "ANGL-" + data.Model),
new XAttribute(XMLNames.Component_ID_Attr, id),
GetDefaultComponentElements(data.TechnicalReportId, data.Model),
new XElement(tns + XMLNames.AngleDrive_Ratio, data.Ratio),
new XElement(tns + XMLNames.AngleDrive_Ratio, data.Ratio.ToXMLFormat(3)),
new XElement(tns + "CertificationMethod", "Standard values"),
new XElement(tns + XMLNames.AngleDrive_TorqueLossMap,
EmbedDataTable(data.LossMap, AttributeMappings.TransmissionLossmapMapping))));
EmbedDataTable(data.LossMap, AttributeMappings.TransmissionLossmapMapping))),
AddSignatureDummy(id));
}
public XElement CreateRetarder(IRetarderInputData data)
{
var id = string.Format("RET-{0}", data.Model.RemoveWhitespace());
return new XElement(tns + XMLNames.Component_Retarder,
new XAttribute("certificationNumber", "RET-none"),
new XElement(tns + XMLNames.ComponentDataWrapper,
new XAttribute(XMLNames.Component_ID_Attr, "RET-none"),
new XAttribute(XMLNames.Component_ID_Attr, id),
GetDefaultComponentElements(data.TechnicalReportId, data.Model),
new XElement(tns + "CertificationMethod", "Standard values"),
new XElement(tns + XMLNames.Retarder_RetarderLossMap,
EmbedDataTable(data.LossMap, AttributeMappings.RetarderLossmapMapping)
)
)
),
AddSignatureDummy(id)
);
}
......@@ -211,12 +249,16 @@ namespace TUGraz.VectoCore.OutputData.XML
{
var typeId = string.Format("AXLGEAR-{0:0.000}", data.Ratio);
return new XElement(tns + XMLNames.Component_Axlegear,
new XAttribute("certificationNumber", string.Format("AXL-{0}", data.Model)),
new XElement(tns + XMLNames.ComponentDataWrapper,
new XAttribute(XMLNames.Component_ID_Attr, typeId),
GetDefaultComponentElements(typeId, "N.A."),
new XElement(tns + XMLNames.Axlegear_Ratio, data.Ratio),
new XElement(tns + "LineType", "Single portal axle"),
new XElement(tns + XMLNames.Axlegear_Ratio, data.Ratio.ToXMLFormat(3)),
new XElement(tns + "CertificationMethod", "Standard values"),
new XElement(tns + XMLNames.Axlegear_TorqueLossMap,
EmbedDataTable(data.LossMap, AttributeMappings.TransmissionLossmapMapping)))
EmbedDataTable(data.LossMap, AttributeMappings.TransmissionLossmapMapping))),
AddSignatureDummy(typeId)
);
}
......@@ -229,14 +271,11 @@ namespace TUGraz.VectoCore.OutputData.XML
var axle = axleData[i];
axles.Add(new XElement(tns + XMLNames.AxleWheels_Axles_Axle,
new XAttribute(XMLNames.AxleWheels_Axles_Axle_AxleNumber_Attr, i + 1),
new XAttribute(XMLNames.AxleWheels_Axles_Axle_TwinTyres_Attr, axle.TwinTyres),
new XAttribute(XMLNames.AxleWheels_Axles_Axle_AxleType_Attr,
new XElement(tns + XMLNames.AxleWheels_Axles_Axle_AxleType_Attr,
i == 1 ? AxleType.VehicleDriven.ToString() : AxleType.VehicleNonDriven.ToString()),
GetDefaultComponentElements(string.Format("WHEEL-{0}_{1}", i,
axle.Wheels), axle.Wheels),
new XElement(tns + XMLNames.AxleWheels_Axles_Axle_Dimension, axle.Wheels),
new XElement(tns + XMLNames.AxleWheels_Axles_Axle_RRCISO, axle.RollResistanceCoefficient),
new XElement(tns + XMLNames.AxleWheels_Axles_Axle_FzISO, axle.TyreTestLoad.Value())
new XElement(tns + XMLNames.AxleWheels_Axles_Axle_TwinTyres_Attr, axle.TwinTyres),
new XElement(tns + "Steered", i == 0),
CreateTyre(axle)
));
}
......@@ -248,6 +287,21 @@ namespace TUGraz.VectoCore.OutputData.XML
);
}
private XElement CreateTyre(IAxleDeclarationInputData axle)
{
var id = string.Format("TYRE-{0}", axle.Wheels).RemoveWhitespace().Replace("/", "_");
return new XElement(tns + "Tyre",
new XAttribute("certificationNumber", id),
new XElement(tns + XMLNames.ComponentDataWrapper,
new XAttribute(XMLNames.Component_ID_Attr, id),
GetDefaultComponentElements(string.Format("TYRE-{0}", axle.Wheels), axle.Wheels),
new XElement(tns + XMLNames.AxleWheels_Axles_Axle_Dimension, axle.Wheels),
new XElement(tns + XMLNames.AxleWheels_Axles_Axle_RRCDeclared, axle.RollResistanceCoefficient.ToXMLFormat(4)),
new XElement(tns + XMLNames.AxleWheels_Axles_Axle_FzISO, axle.TyreTestLoad.Value().ToXMLFormat(0))
),
AddSignatureDummy(id));
}
public XElement CreateAuxiliaries(IAuxiliariesDeclarationInputData data)
{
var auxList = new Dictionary<AuxiliaryType, XElement>();
......@@ -256,9 +310,7 @@ namespace TUGraz.VectoCore.OutputData.XML
auxData.Technology.Select(x => new XElement(tns + XMLNames.Auxiliaries_Auxiliary_Technology, x)).ToArray<object>());
auxList[auxData.Type] = entry;
}
var aux = new XElement(tns + XMLNames.ComponentDataWrapper,
new XAttribute(XMLNames.Component_ID_Attr, "AUX-DECL")
);
var aux = new XElement(tns + XMLNames.ComponentDataWrapper);
foreach (
var key in
new[] {
......@@ -272,12 +324,16 @@ namespace TUGraz.VectoCore.OutputData.XML
private XElement CreateAirdrag(IAirdragDeclarationInputData data)
{
var id = string.Format("Airdrag-{0}", data.Model);
return new XElement(tns + XMLNames.Component_AirDrag,
new XAttribute("certificationNumber", string.Format("TYRE-{0}", data.Model)),
new XElement(tns + XMLNames.ComponentDataWrapper,
new XAttribute(XMLNames.Component_ID_Attr,
string.Format("Airdrag-{0}", data.Model)),
new XAttribute(XMLNames.Component_ID_Attr, id),
GetDefaultComponentElements(data.Model, "N.A."),
new XElement(tns + XMLNames.AirDrag_DeclaredCdxA, data.AirDragArea.Value()))
new XElement(tns + "CdxA_0", data.AirDragArea.Value().ToXMLFormat(2)), // TODO
new XElement(tns + "TransferredCdxA", data.AirDragArea.Value().ToXMLFormat(2)), // TODO
new XElement(tns + XMLNames.AirDrag_DeclaredCdxA, data.AirDragArea.Value().ToXMLFormat(2))),
AddSignatureDummy(id)
);
}
......@@ -285,5 +341,24 @@ namespace TUGraz.VectoCore.OutputData.XML
{
return type.ToString();
}
private XElement AddSignatureDummy(string id)
{
return new XElement(tns + "Signature",
new XElement(di + "Reference",
new XAttribute("URI", "#" + id),
new XElement(di + "Transforms",
new XElement(di + "Transform",
new XAttribute("Algorithm", "http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments")),
new XElement(di + "Transform",
new XAttribute("Algorithm", "urn:vecto:xml:2017:canonicalization"))
),
new XElement(di + "DigestMethod",
new XAttribute("Algorithm", "http://www.w3.org/2001/04/xmlenc#sha256")),
new XElement(di + "DigestValue", "")
)
);
}
}
}
\ No newline at end of file
......@@ -409,7 +409,7 @@ namespace TUGraz.VectoCore.OutputData.XML
new XElement(tns + XMLNames.ComponentDataWrapper,
new XAttribute(XMLNames.Component_ID_Attr, string.Format("GBX-{0}", data.Model)),
GetDefaultComponentElements(string.Format("GBX-{0}", data.Model), data.Model),
new XElement(tns + XMLNames.Gearbox_TransmissionType, GearboxtypeToXML(data.Type)),
new XElement(tns + XMLNames.Gearbox_TransmissionType, data.Type.ToXMLFormat()),
new XElement(tns + XMLNames.Gearbox_Inertia, data.Inertia.Value()),
new XElement(tns + XMLNames.Gearbox_TractionInterruption, data.TractionInterruption.Value()), gears),
data.Type.AutomaticTransmission() ? CreateTorqueConverter(tcData) : null);
......
......@@ -286,7 +286,7 @@ namespace TUGraz.VectoCore.Resources {
}
/// <summary>
/// Looks up a localized string similar to axleType.
/// Looks up a localized string similar to AxleType.
/// </summary>
public static string AxleWheels_Axles_Axle_AxleType_Attr {
get {
......@@ -367,7 +367,7 @@ namespace TUGraz.VectoCore.Resources {
}
/// <summary>
/// Looks up a localized string similar to twinTyres.
/// Looks up a localized string similar to TwinTyres.
/// </summary>
public static string AxleWheels_Axles_Axle_TwinTyres_Attr {
get {
......@@ -411,6 +411,15 @@ namespace TUGraz.VectoCore.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to AppVersion.
/// </summary>
public static string Component_AppVersion {
get {
return ResourceManager.GetString("Component_AppVersion", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Auxiliaries.
/// </summary>
......@@ -438,6 +447,15 @@ namespace TUGraz.VectoCore.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to CertificationMethod.
/// </summary>
public static string Component_CertificationMethod {
get {
return ResourceManager.GetString("Component_CertificationMethod", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to CertificationNumber.
/// </summary>
......@@ -492,6 +510,15 @@ namespace TUGraz.VectoCore.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to MainCertificationMethod.
/// </summary>
public static string Component_Gearbox_CertificationMethod {
get {
return ResourceManager.GetString("Component_Gearbox_CertificationMethod", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to id.
/// </summary>
......@@ -510,6 +537,15 @@ namespace TUGraz.VectoCore.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to ManufacturerAddress.
/// </summary>
public static string Component_ManufacturerAddress {
get {
return ResourceManager.GetString("Component_ManufacturerAddress", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Model.
/// </summary>
......@@ -564,6 +600,78 @@ namespace TUGraz.VectoCore.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Signature.
/// </summary>
public static string DI_Signature {
get {
return ResourceManager.GetString("DI_Signature", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Algorithm.
/// </summary>
public static string DI_Signature_Algorithm_Attr {
get {
return ResourceManager.GetString("DI_Signature_Algorithm_Attr", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Reference.
/// </summary>
public static string DI_Signature_Reference {
get {
return ResourceManager.GetString("DI_Signature_Reference", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to DigestMethod.
/// </summary>
public static string DI_Signature_Reference_DigestMethod {
get {
return ResourceManager.GetString("DI_Signature_Reference_DigestMethod", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to DigestValue.
/// </summary>
public static string DI_Signature_Reference_DigestValue {
get {
return ResourceManager.GetString("DI_Signature_Reference_DigestValue", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Transforms.
/// </summary>
public static string DI_Signature_Reference_Transforms {
get {
return ResourceManager.GetString("DI_Signature_Reference_Transforms", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Transform.
/// </summary>
public static string DI_Signature_Reference_Transforms_Transform {
get {
return ResourceManager.GetString("DI_Signature_Reference_Transforms_Transform", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to URI.
/// </summary>
public static string DI_Signature_Reference_URI_Attr {
get {
return ResourceManager.GetString("DI_Signature_Reference_URI_Attr", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to decisionFactorVel.
/// </summary>
......@@ -825,6 +933,24 @@ namespace TUGraz.VectoCore.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to CFNCV.
/// </summary>
public static string Engine_CorrecionFactor_NCV {
get {
return ResourceManager.GetString("Engine_CorrecionFactor_NCV", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to CFRegPer.
/// </summary>
public static string Engine_CorrectionFactor_RegPer {
get {
return ResourceManager.GetString("Engine_CorrectionFactor_RegPer", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Displacement.
/// </summary>
......@@ -888,6 +1014,15 @@ namespace TUGraz.VectoCore.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to FuelType.
/// </summary>
public static string Engine_FuelType {
get {
return ResourceManager.GetString("Engine_FuelType", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to FullLoadAndDragCurve.
/// </summary>
......@@ -942,6 +1077,33 @@ namespace TUGraz.VectoCore.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to MaxEngineTorque.
/// </summary>
public static string Engine_MaxTorque {
get {
return ResourceManager.GetString("Engine_MaxTorque", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to RatedPower.
/// </summary>
public static string Engine_RatedPower {
get {
return ResourceManager.GetString("Engine_RatedPower", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to RatedSpeed.
/// </summary>
public static string Engine_RatedSpeed {
get {
return ResourceManager.GetString("Engine_RatedSpeed", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to WHTCEngineering.
/// </summary>
......@@ -1617,6 +1779,24 @@ namespace TUGraz.VectoCore.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to IdlingSpeed.
/// </summary>
public static string Vehicle_IdlingSpeed {
get {
return ResourceManager.GetString("Vehicle_IdlingSpeed", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to LegislativeClass.
/// </summary>
public static string Vehicle_LegislativeClass {
get {
return ResourceManager.GetString("Vehicle_LegislativeClass", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Loading.
/// </summary>
......@@ -1626,6 +1806,33 @@ namespace TUGraz.VectoCore.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to PTO.
/// </summary>
public static string Vehicle_PTO {
get {
return ResourceManager.GetString("Vehicle_PTO", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to PTOOtherElements.
/// </summary>
public static string Vehicle_PTO_OtherElements {
get {
return ResourceManager.GetString("Vehicle_PTO_OtherElements", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to PTOShaftsGearWheels.
/// </summary>
public static string Vehicle_PTO_ShaftsGearWheels {
get {
return ResourceManager.GetString("Vehicle_PTO_ShaftsGearWheels", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to PTOCycle.
/// </summary>
......
......@@ -433,10 +433,10 @@
<value>axleNumber</value>
</data>
<data name="AxleWheels_Axles_Axle_TwinTyres_Attr" xml:space="preserve">
<value>twinTyres</value>
<value>TwinTyres</value>
</data>
<data name="AxleWheels_Axles_Axle_AxleType_Attr" xml:space="preserve">
<value>axleType</value>
<value>AxleType</value>
</data>
<data name="Gearbox_Gear_GearNumber_Attr" xml:space="preserve">
<value>number</value>
......@@ -683,5 +683,8 @@
</data>
<data name="AxleWheels_Axles_Axle_RRCDeclared" xml:space="preserve">
<value>RRCDeclared</value>
</data>
<data name="Component_AppVersion" xml:space="preserve">
<value>AppVersion</value>
</data>
</root>
\ No newline at end of file
......@@ -131,7 +131,7 @@ namespace TUGraz.VectoCore.Tests.XML
var xml = new XMLDeclarationInputDataProvider(reader, true);
Assert.IsNotNull(xml);
Assert.AreEqual("VEH-N/A", xml.JobInputData().JobName);
Assert.AreEqual("VEH-N.A.", xml.JobInputData().JobName);
}
[TestMethod]
......@@ -153,7 +153,7 @@ namespace TUGraz.VectoCore.Tests.XML
var xml = new XMLDeclarationInputDataProvider(reader, true);
Assert.IsNotNull(xml);
Assert.AreEqual("VEH-N/A", xml.JobInputData().JobName);
Assert.AreEqual("VEH-N.A.", xml.JobInputData().JobName);
}
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment