Code development platform for open source projects from the European Union institutions

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

avoid illegal characters in id attribute

parent 3720be35
No related branches found
No related tags found
No related merge requests found
...@@ -29,28 +29,28 @@ ...@@ -29,28 +29,28 @@
* Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology * Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology
*/ */
using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Resources;
namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
{ {
// ReSharper disable once InconsistentNaming // ReSharper disable once InconsistentNaming
public class XMLDeclarationJobInputDataProvider : AbstractDeclarationXMLComponentDataProvider, IDeclarationJobInputData public class XMLDeclarationJobInputDataProvider : AbstractDeclarationXMLComponentDataProvider, IDeclarationJobInputData
{ {
public XMLDeclarationJobInputDataProvider(XMLDeclarationInputDataProvider xmlInputDataProvider) : base(xmlInputDataProvider) public XMLDeclarationJobInputDataProvider(XMLDeclarationInputDataProvider xmlInputDataProvider) : base(xmlInputDataProvider)
{ {
XBasePath = VehiclePath; XBasePath = VehiclePath;
} }
public IVehicleDeclarationInputData Vehicle public IVehicleDeclarationInputData Vehicle
{ {
get { return InputData.VehicleInputData; } get { return InputData.VehicleInputData; }
} }
public string JobName public string JobName
{ {
get { return GetAttributeValue("", XMLNames.Component_ID_Attr); } get { return GetAttributeValue("", XMLNames.Component_ID_Attr); }
} }
} }
} }
\ No newline at end of file
...@@ -33,6 +33,7 @@ using System; ...@@ -33,6 +33,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using System.Text.RegularExpressions;
using System.Xml; using System.Xml;
using System.Xml.Linq; using System.Xml.Linq;
using TUGraz.IVT.VectoXML; using TUGraz.IVT.VectoXML;
...@@ -75,7 +76,7 @@ namespace TUGraz.VectoCore.OutputData.XML ...@@ -75,7 +76,7 @@ namespace TUGraz.VectoCore.OutputData.XML
new XAttribute(xsi + "schemaLocation", new XAttribute(xsi + "schemaLocation",
string.Format("{0} {1}VectoInput.xsd", rootNamespace, SchemaLocationBaseUrl)), string.Format("{0} {1}VectoInput.xsd", rootNamespace, SchemaLocationBaseUrl)),
CreateDeclarationJob(data)) CreateDeclarationJob(data))
); );
return job; return job;
} }
...@@ -102,7 +103,7 @@ namespace TUGraz.VectoCore.OutputData.XML ...@@ -102,7 +103,7 @@ namespace TUGraz.VectoCore.OutputData.XML
new XAttribute(xsi + "schemaLocation", new XAttribute(xsi + "schemaLocation",
string.Format("{0} {1}VectoComponent.xsd", componentNamespace, SchemaLocationBaseUrl)), string.Format("{0} {1}VectoComponent.xsd", componentNamespace, SchemaLocationBaseUrl)),
content) content)
); );
return component; return component;
} }
...@@ -120,8 +121,11 @@ namespace TUGraz.VectoCore.OutputData.XML ...@@ -120,8 +121,11 @@ namespace TUGraz.VectoCore.OutputData.XML
var vehicle = data.VehicleInputData; var vehicle = data.VehicleInputData;
var angledrive = data.AngledriveInputData; var angledrive = data.AngledriveInputData;
var id = CreateIdString("VEH-" + vehicle.Model);
return new XElement(tns + XMLNames.Component_Vehicle, return new XElement(tns + XMLNames.Component_Vehicle,
new XAttribute(XMLNames.Component_ID_Attr, "VEH-" + vehicle.Model), new XAttribute(XMLNames.Component_ID_Attr, id),
GetDefaultComponentElements(vehicle.CertificationNumber, vehicle.Model, "N.A."), GetDefaultComponentElements(vehicle.CertificationNumber, vehicle.Model, "N.A."),
new XElement(tns + XMLNames.Vehicle_LegislativeClass, "N3"), new XElement(tns + XMLNames.Vehicle_LegislativeClass, "N3"),
new XElement(tns + XMLNames.Vehicle_VehicleCategory, vehicle.VehicleCategory.ToXMLFormat()), new XElement(tns + XMLNames.Vehicle_VehicleCategory, vehicle.VehicleCategory.ToXMLFormat()),
...@@ -150,13 +154,14 @@ namespace TUGraz.VectoCore.OutputData.XML ...@@ -150,13 +154,14 @@ namespace TUGraz.VectoCore.OutputData.XML
CreateAxleWheels(data.VehicleInputData), CreateAxleWheels(data.VehicleInputData),
CreateAuxiliaries(data.AuxiliaryInputData()), CreateAuxiliaries(data.AuxiliaryInputData()),
CreateAirdrag(data.AirdragInputData) CreateAirdrag(data.AirdragInputData)
) )
); );
} }
protected XElement CreateEngine(IEngineDeclarationInputData data, XNamespace ns = null) protected XElement CreateEngine(IEngineDeclarationInputData data, XNamespace ns = null)
{ {
var id = string.Format("ENG-{0}", data.Model.RemoveWhitespace()); var id = CreateIdString(string.Format("ENG-{0}", data.Model.RemoveWhitespace()));
var fld = FullLoadCurveReader.Create(data.FullLoadCurve, true); var fld = FullLoadCurveReader.Create(data.FullLoadCurve, true);
return new XElement((ns ?? tns) + XMLNames.Component_Engine, return new XElement((ns ?? tns) + XMLNames.Component_Engine,
new XElement(tns + XMLNames.ComponentDataWrapper, new XElement(tns + XMLNames.ComponentDataWrapper,
...@@ -178,10 +183,10 @@ namespace TUGraz.VectoCore.OutputData.XML ...@@ -178,10 +183,10 @@ namespace TUGraz.VectoCore.OutputData.XML
EmbedDataTable(data.FuelConsumptionMap, AttributeMappings.FuelConsumptionMapMapping)), EmbedDataTable(data.FuelConsumptionMap, AttributeMappings.FuelConsumptionMapMapping)),
new XElement(tns + XMLNames.Engine_FullLoadAndDragCurve, new XElement(tns + XMLNames.Engine_FullLoadAndDragCurve,
EmbedDataTable(data.FullLoadCurve, AttributeMappings.EngineFullLoadCurveMapping) EmbedDataTable(data.FullLoadCurve, AttributeMappings.EngineFullLoadCurveMapping)
) )
), ),
AddSignatureDummy(id) AddSignatureDummy(id)
); );
} }
protected XElement CreateGearbox(IGearboxDeclarationInputData gbxData, protected XElement CreateGearbox(IGearboxDeclarationInputData gbxData,
...@@ -201,10 +206,12 @@ namespace TUGraz.VectoCore.OutputData.XML ...@@ -201,10 +206,12 @@ namespace TUGraz.VectoCore.OutputData.XML
: null, : null,
new XElement(tns + XMLNames.Gearbox_Gear_TorqueLossMap, new XElement(tns + XMLNames.Gearbox_Gear_TorqueLossMap,
EmbedDataTable(gearData.LossMap, AttributeMappings.TransmissionLossmapMapping)) EmbedDataTable(gearData.LossMap, AttributeMappings.TransmissionLossmapMapping))
); );
gears.Add(gear); gears.Add(gear);
} }
var id = string.Format("GBX-{0}", gbxData.Model.RemoveWhitespace()); var id = CreateIdString(string.Format("GBX-{0}", gbxData.Model.RemoveWhitespace()));
return new XElement((ns ?? tns) + XMLNames.Component_Gearbox, return new XElement((ns ?? tns) + XMLNames.Component_Gearbox,
new XElement(tns + XMLNames.ComponentDataWrapper, new XElement(tns + XMLNames.ComponentDataWrapper,
new XAttribute(XMLNames.Component_ID_Attr, id), new XAttribute(XMLNames.Component_ID_Attr, id),
...@@ -212,10 +219,10 @@ namespace TUGraz.VectoCore.OutputData.XML ...@@ -212,10 +219,10 @@ namespace TUGraz.VectoCore.OutputData.XML
new XElement(tns + XMLNames.Gearbox_TransmissionType, gbxData.Type.ToXMLFormat()), new XElement(tns + XMLNames.Gearbox_TransmissionType, gbxData.Type.ToXMLFormat()),
new XElement(tns + XMLNames.Component_Gearbox_CertificationMethod, "Standard values"), new XElement(tns + XMLNames.Component_Gearbox_CertificationMethod, "Standard values"),
gears gears
), ),
AddSignatureDummy(id), AddSignatureDummy(id),
gbxData.Type.AutomaticTransmission() ? CreateTorqueConverter(torqueConverter) : null gbxData.Type.AutomaticTransmission() ? CreateTorqueConverter(torqueConverter) : null
); );
} }
private XElement CreateTorqueConverter(ITorqueConverterDeclarationInputData data) private XElement CreateTorqueConverter(ITorqueConverterDeclarationInputData data)
...@@ -223,7 +230,10 @@ namespace TUGraz.VectoCore.OutputData.XML ...@@ -223,7 +230,10 @@ namespace TUGraz.VectoCore.OutputData.XML
if (data == null) { if (data == null) {
throw new Exception("Torque Converter is required!"); throw new Exception("Torque Converter is required!");
} }
var id = string.Format("TC-{0}", data.Model.RemoveWhitespace());
var id = CreateIdString(string.Format("TC-{0}", data.Model.RemoveWhitespace()));
return new XElement(tns + XMLNames.Component_TorqueConverter, return new XElement(tns + XMLNames.Component_TorqueConverter,
new XElement(tns + XMLNames.ComponentDataWrapper, new XElement(tns + XMLNames.ComponentDataWrapper,
new XAttribute(XMLNames.Component_ID_Attr, id), new XAttribute(XMLNames.Component_ID_Attr, id),
...@@ -234,14 +244,15 @@ namespace TUGraz.VectoCore.OutputData.XML ...@@ -234,14 +244,15 @@ namespace TUGraz.VectoCore.OutputData.XML
precision: new Dictionary<string, uint>() { precision: new Dictionary<string, uint>() {
{ TorqueConverterDataReader.Fields.SpeedRatio, 4 } { TorqueConverterDataReader.Fields.SpeedRatio, 4 }
}) })
) )
), ),
AddSignatureDummy(id)); AddSignatureDummy(id));
} }
private XElement CreateAngleDrive(IAngledriveInputData data, XNamespace ns = null) private XElement CreateAngleDrive(IAngledriveInputData data, XNamespace ns = null)
{ {
var id = string.Format("ANGL-{0}", data.Model.RemoveWhitespace()); var id = CreateIdString(string.Format("ANGL-{0}", data.Model.RemoveWhitespace()));
return new XElement((ns ?? tns) + XMLNames.Component_Angledrive, return new XElement((ns ?? tns) + XMLNames.Component_Angledrive,
new XElement(tns + XMLNames.ComponentDataWrapper, new XElement(tns + XMLNames.ComponentDataWrapper,
new XAttribute(XMLNames.Component_ID_Attr, id), new XAttribute(XMLNames.Component_ID_Attr, id),
...@@ -255,7 +266,8 @@ namespace TUGraz.VectoCore.OutputData.XML ...@@ -255,7 +266,8 @@ namespace TUGraz.VectoCore.OutputData.XML
public XElement CreateRetarder(IRetarderInputData data, XNamespace ns = null) public XElement CreateRetarder(IRetarderInputData data, XNamespace ns = null)
{ {
var id = string.Format("RET-{0}", data.Model.RemoveWhitespace()); var id = CreateIdString(string.Format("RET-{0}", data.Model.RemoveWhitespace()));
return new XElement((ns ?? tns) + XMLNames.Component_Retarder, return new XElement((ns ?? tns) + XMLNames.Component_Retarder,
new XElement(tns + XMLNames.ComponentDataWrapper, new XElement(tns + XMLNames.ComponentDataWrapper,
new XAttribute(XMLNames.Component_ID_Attr, id), new XAttribute(XMLNames.Component_ID_Attr, id),
...@@ -263,15 +275,16 @@ namespace TUGraz.VectoCore.OutputData.XML ...@@ -263,15 +275,16 @@ namespace TUGraz.VectoCore.OutputData.XML
new XElement(tns + XMLNames.Component_CertificationMethod, "Standard values"), new XElement(tns + XMLNames.Component_CertificationMethod, "Standard values"),
new XElement(tns + XMLNames.Retarder_RetarderLossMap, new XElement(tns + XMLNames.Retarder_RetarderLossMap,
EmbedDataTable(data.LossMap, AttributeMappings.RetarderLossmapMapping) EmbedDataTable(data.LossMap, AttributeMappings.RetarderLossmapMapping)
) )
), ),
AddSignatureDummy(id) AddSignatureDummy(id)
); );
} }
public XElement CreateAxlegear(IAxleGearInputData data, XNamespace ns = null) public XElement CreateAxlegear(IAxleGearInputData data, XNamespace ns = null)
{ {
var typeId = string.Format("AXLGEAR-{0}", data.Ratio.ToString("F3", CultureInfo.InvariantCulture)); var typeId = CreateIdString(string.Format("AXLGEAR-{0}", data.Ratio.ToString("F3", CultureInfo.InvariantCulture)));
return new XElement((ns ?? tns) + XMLNames.Component_Axlegear, return new XElement((ns ?? tns) + XMLNames.Component_Axlegear,
new XElement(tns + XMLNames.ComponentDataWrapper, new XElement(tns + XMLNames.ComponentDataWrapper,
new XAttribute(XMLNames.Component_ID_Attr, typeId), new XAttribute(XMLNames.Component_ID_Attr, typeId),
...@@ -282,7 +295,7 @@ namespace TUGraz.VectoCore.OutputData.XML ...@@ -282,7 +295,7 @@ namespace TUGraz.VectoCore.OutputData.XML
new XElement(tns + XMLNames.Axlegear_TorqueLossMap, new XElement(tns + XMLNames.Axlegear_TorqueLossMap,
EmbedDataTable(data.LossMap, AttributeMappings.TransmissionLossmapMapping))), EmbedDataTable(data.LossMap, AttributeMappings.TransmissionLossmapMapping))),
AddSignatureDummy(typeId) AddSignatureDummy(typeId)
); );
} }
public XElement CreateAxleWheels(IVehicleDeclarationInputData data, XNamespace ns = null) public XElement CreateAxleWheels(IVehicleDeclarationInputData data, XNamespace ns = null)
...@@ -299,18 +312,19 @@ namespace TUGraz.VectoCore.OutputData.XML ...@@ -299,18 +312,19 @@ namespace TUGraz.VectoCore.OutputData.XML
new XElement(tns + XMLNames.AxleWheels_Axles_Axle_TwinTyres_Attr, axle.TwinTyres), new XElement(tns + XMLNames.AxleWheels_Axles_Axle_TwinTyres_Attr, axle.TwinTyres),
new XElement(tns + XMLNames.AxleWheels_Axles_Axle_Steered, i == 0), new XElement(tns + XMLNames.AxleWheels_Axles_Axle_Steered, i == 0),
CreateTyre(axle) CreateTyre(axle)
)); ));
} }
return new XElement((ns ?? tns) + XMLNames.Component_AxleWheels, return new XElement((ns ?? tns) + XMLNames.Component_AxleWheels,
new XElement(tns + XMLNames.ComponentDataWrapper, new XElement(tns + XMLNames.ComponentDataWrapper,
new XElement(tns + XMLNames.AxleWheels_Axles, axles)) new XElement(tns + XMLNames.AxleWheels_Axles, axles))
); );
} }
private XElement CreateTyre(IAxleDeclarationInputData axle) private XElement CreateTyre(IAxleDeclarationInputData axle)
{ {
var id = string.Format("TYRE-{0}", axle.Wheels).RemoveWhitespace().Replace("/", "_"); var id = CreateIdString(string.Format("TYRE-{0}", axle.Wheels).Replace("/", "_"));
return new XElement(tns + "Tyre", return new XElement(tns + "Tyre",
new XElement(tns + XMLNames.ComponentDataWrapper, new XElement(tns + XMLNames.ComponentDataWrapper,
new XAttribute(XMLNames.Component_ID_Attr, id), new XAttribute(XMLNames.Component_ID_Attr, id),
...@@ -318,7 +332,7 @@ namespace TUGraz.VectoCore.OutputData.XML ...@@ -318,7 +332,7 @@ namespace TUGraz.VectoCore.OutputData.XML
new XElement(tns + XMLNames.AxleWheels_Axles_Axle_Dimension, 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_RRCDeclared, axle.RollResistanceCoefficient.ToXMLFormat(4)),
new XElement(tns + XMLNames.AxleWheels_Axles_Axle_FzISO, axle.TyreTestLoad.Value().ToXMLFormat(0)) new XElement(tns + XMLNames.AxleWheels_Axles_Axle_FzISO, axle.TyreTestLoad.Value().ToXMLFormat(0))
), ),
AddSignatureDummy(id)); AddSignatureDummy(id));
} }
...@@ -333,10 +347,10 @@ namespace TUGraz.VectoCore.OutputData.XML ...@@ -333,10 +347,10 @@ namespace TUGraz.VectoCore.OutputData.XML
var aux = new XElement(tns + XMLNames.ComponentDataWrapper); var aux = new XElement(tns + XMLNames.ComponentDataWrapper);
foreach ( foreach (
var key in var key in
new[] { new[] {
AuxiliaryType.Fan, AuxiliaryType.SteeringPump, AuxiliaryType.ElectricSystem, AuxiliaryType.PneumaticSystem, AuxiliaryType.Fan, AuxiliaryType.SteeringPump, AuxiliaryType.ElectricSystem, AuxiliaryType.PneumaticSystem,
AuxiliaryType.HVAC AuxiliaryType.HVAC
}) { }) {
aux.Add(auxList[key]); aux.Add(auxList[key]);
} }
return new XElement(tns + XMLNames.Component_Auxiliaries, aux); return new XElement(tns + XMLNames.Component_Auxiliaries, aux);
...@@ -344,7 +358,8 @@ namespace TUGraz.VectoCore.OutputData.XML ...@@ -344,7 +358,8 @@ namespace TUGraz.VectoCore.OutputData.XML
private XElement CreateAirdrag(IAirdragDeclarationInputData data, XNamespace ns = null) private XElement CreateAirdrag(IAirdragDeclarationInputData data, XNamespace ns = null)
{ {
var id = string.Format("Airdrag-{0}", data.Model); var id = CreateIdString(string.Format("Airdrag-{0}", data.Model));
return new XElement((ns ?? tns) + XMLNames.Component_AirDrag, return new XElement((ns ?? tns) + XMLNames.Component_AirDrag,
new XElement(tns + XMLNames.ComponentDataWrapper, new XElement(tns + XMLNames.ComponentDataWrapper,
new XAttribute(XMLNames.Component_ID_Attr, id), new XAttribute(XMLNames.Component_ID_Attr, id),
...@@ -353,7 +368,7 @@ namespace TUGraz.VectoCore.OutputData.XML ...@@ -353,7 +368,7 @@ namespace TUGraz.VectoCore.OutputData.XML
new XElement(tns + "TransferredCdxA", data.AirDragArea.Value().ToXMLFormat(2)), new XElement(tns + "TransferredCdxA", data.AirDragArea.Value().ToXMLFormat(2)),
new XElement(tns + XMLNames.AirDrag_DeclaredCdxA, data.AirDragArea.Value().ToXMLFormat(2))), new XElement(tns + XMLNames.AirDrag_DeclaredCdxA, data.AirDragArea.Value().ToXMLFormat(2))),
AddSignatureDummy(id) AddSignatureDummy(id)
); );
} }
private string AuxTypeToXML(AuxiliaryType type) private string AuxTypeToXML(AuxiliaryType type)
...@@ -372,12 +387,12 @@ namespace TUGraz.VectoCore.OutputData.XML ...@@ -372,12 +387,12 @@ namespace TUGraz.VectoCore.OutputData.XML
"http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments")), "http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments")),
new XElement(di + XMLNames.DI_Signature_Reference_Transforms_Transform, new XElement(di + XMLNames.DI_Signature_Reference_Transforms_Transform,
new XAttribute(XMLNames.DI_Signature_Algorithm_Attr, "urn:vecto:xml:2017:canonicalization")) new XAttribute(XMLNames.DI_Signature_Algorithm_Attr, "urn:vecto:xml:2017:canonicalization"))
), ),
new XElement(di + XMLNames.DI_Signature_Reference_DigestMethod, new XElement(di + XMLNames.DI_Signature_Reference_DigestMethod,
new XAttribute(XMLNames.DI_Signature_Algorithm_Attr, "http://www.w3.org/2001/04/xmlenc#sha256")), new XAttribute(XMLNames.DI_Signature_Algorithm_Attr, "http://www.w3.org/2001/04/xmlenc#sha256")),
new XElement(di + XMLNames.DI_Signature_Reference_DigestValue, "") new XElement(di + XMLNames.DI_Signature_Reference_DigestValue, "")
) )
); );
} }
protected XElement[] GetDefaultComponentElements(string componentId, string makeAndModel) protected XElement[] GetDefaultComponentElements(string componentId, string makeAndModel)
...@@ -401,5 +416,11 @@ namespace TUGraz.VectoCore.OutputData.XML ...@@ -401,5 +416,11 @@ namespace TUGraz.VectoCore.OutputData.XML
new XElement(tns + XMLNames.Component_Date, XmlConvert.ToString(DateTime.Now, XmlDateTimeSerializationMode.Utc)), new XElement(tns + XMLNames.Component_Date, XmlConvert.ToString(DateTime.Now, XmlDateTimeSerializationMode.Utc)),
}; };
} }
private string CreateIdString(string id)
{
var regexp = new Regex("[^a-zA-Z0-9_-]");
return regexp.Replace(id, "");
}
} }
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment