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

Skip to content
Snippets Groups Projects
Commit 0861c9e2 authored by Franz KOBER josef's avatar Franz KOBER josef
Browse files

added id generation for vif report, removed co2 result reader of primary vehicle

parent a5a685fd
No related branches found
No related tags found
No related merge requests found
......@@ -70,16 +70,6 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
string.Format(".//*[local-name()='{0}' and @unit='MJ/km']", XMLNames.Report_Result_EnergyConsumption))?.InnerText
.ToDouble().SI(Unit.SI.Mega.Joule.Per.Kilo.Meter).Cast<JoulePerMeter>())).ToDictionary(x => x.Key, x => x.Value);
var co2Nodes = GetNodes(XMLNames.Report_Results_CO2, xmlNode);
var resultCO2 = new Dictionary<string, double>();
foreach (XmlNode co2Node in co2Nodes) {
var attribute = GetAttribute(co2Node, XMLNames.Report_Results_Unit_Attr);
var value = co2Node?.InnerText;
if(value != null)
resultCO2.Add(attribute, value.ToDouble());
}
return new Result
{
......@@ -88,7 +78,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
VehicleGroup = VehicleClassHelper.Parse(vehicleGroup),
SimulationParameter = simulationParams,
EnergyConsumption = energyConsumption,
CO2 = resultCO2
CO2 = new Dictionary<string, double>()
};
}
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml;
using System.Xml.Linq;
......@@ -57,6 +59,8 @@ namespace TUGraz.VectoCore.OutputData.XML
SetInputXMLData(_primaryVehicleInputData.Vehicle.XMLSource);
}
#region Set current VIF Data
private void SetInputXMLData(XmlNode primeVehicleNode)
{
var nodes = GetDocumentNodes(primeVehicleNode);
......@@ -128,6 +132,7 @@ namespace TUGraz.VectoCore.OutputData.XML
NodeParentSearch(currentNode.ParentNode, nodes);
}
#endregion
public void GenerateReport()
{
......@@ -143,18 +148,22 @@ namespace TUGraz.VectoCore.OutputData.XML
Report = retVal;
}
#region Generate new manfuacturing Stage
private XElement GenerateInputManufacturingStage()
{
var multistageId = $"MST-{GetGUID()}";
var vehicleId = $"VEH-{GetGUID()}";
return new XElement(tns + XMLNames.ManufacturingStage,
new XAttribute("stageCount", GetStageNumber()),
new XElement(tns + XMLNames.Report_DataWrap,
new XAttribute(xsi + XMLNames.Attr_Type, "BusManufacturingStageDataType"),
new XAttribute("id", "AddContent"),
new XAttribute(XMLNames.Component_ID_Attr, multistageId),
GetHashPreviousStageElement(),
GetVehicleElement(),
GetVehicleElement(vehicleId),
GetApplicationInformation()),
GetInputdataSignature());
GetInputdataSignature(multistageId));
}
private int GetStageNumber()
......@@ -179,11 +188,11 @@ namespace TUGraz.VectoCore.OutputData.XML
}
private XElement GetVehicleElement()
private XElement GetVehicleElement(string vehicleId)
{
return new XElement(tns + XMLNames.Tag_Vehicle,
new XAttribute(xsi + XMLNames.Attr_Type, "v2.8:InterimStageInputType"),
new XAttribute("id", GetVehicleId()),
new XAttribute(XMLNames.Component_ID_Attr, vehicleId),
new XElement(v28 + XMLNames.Component_Manufacturer, _vehicleInputData.Manufacturer),
new XElement(v28 + XMLNames.Component_ManufacturerAddress, _vehicleInputData.ManufacturerAddress),
new XElement(v28 + XMLNames.Vehicle_VIN, _vehicleInputData.VIN),
......@@ -227,11 +236,6 @@ namespace TUGraz.VectoCore.OutputData.XML
);
}
private string GetVehicleId()
{
return $"{_vehicleInputData.VIN}-{GetStageNumber()}";
}
private XElement GetADAS(IAdvancedDriverAssistantSystemDeclarationInputData adasData)
{
return new XElement(
......@@ -397,11 +401,39 @@ namespace TUGraz.VectoCore.OutputData.XML
XmlConvert.ToString(DateTime.Now, XmlDateTimeSerializationMode.Utc)));
}
private XElement GetInputdataSignature()
private XElement GetInputdataSignature(string multistageId)
{
return new XElement(tns + XMLNames.DI_Signature, XMLHelper.CreateDummySig(di));
return new XElement(tns + XMLNames.DI_Signature,
new XElement(di + XMLNames.DI_Signature_Reference,
new XAttribute(XMLNames.DI_Signature_Reference_URI_Attr, $"#{multistageId}"),
new XElement(di + XMLNames.DI_Signature_Reference_Transforms,
new XElement(di + XMLNames.DI_Signature_Reference_Transforms_Transform,
new XAttribute(XMLNames.DI_Signature_Algorithm_Attr, "urn:vecto:xml:2017:canonicalization")),
new XElement(di + XMLNames.DI_Signature_Reference_Transforms_Transform,
new XAttribute(XMLNames.DI_Signature_Algorithm_Attr, "http://www.w3.org/2001/10/xml-exc-c14n#"))
),
new XElement(di + XMLNames.DI_Signature_Reference_DigestMethod,
new XAttribute(XMLNames.DI_Signature_Algorithm_Attr, "http://www.w3.org/2001/04/xmlenc#sha256")),
new XElement(di + XMLNames.DI_Signature_Reference_DigestValue, GetDigestValue(multistageId)))
);
}
private string GetGUID()
{
return Guid.NewGuid().ToString("n").Substring(0, 20);
}
private string GetDigestValue(string multistageId)
{
var alg = SHA256.Create();
alg.ComputeHash(Encoding.UTF8.GetBytes(multistageId));
return Convert.ToBase64String(alg.Hash);
}
#endregion
private string GetNamespaceVersionNumber(XNamespace ns)
{
if (ns == null)
......
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