diff --git a/VECTO3GUI2020/Helper/XMLExtension.cs b/VECTO3GUI2020/Helper/XMLExtension.cs index c8f11753b6efcad28890a9b62b4a4593d0dce88b..dec71f88112c2ef10db48cbf3605d66676ade156 100644 --- a/VECTO3GUI2020/Helper/XMLExtension.cs +++ b/VECTO3GUI2020/Helper/XMLExtension.cs @@ -6,12 +6,12 @@ using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Resources; using TUGraz.VectoCore.Utils; using VECTO3GUI2020.Util.XML; -using VECTO3GUI2020.Util.XML.Interfaces; +using VECTO3GUI2020.Util.XML.Components; namespace VECTO3GUI2020.Helper { - public static class XMLExtension + public static class XMLExtension { public static XElement CreateSignatureElement(this IXMLComponentWriter componentWriter, XNamespace nameSpace, string uri, DigestData digestData, bool hash = false) diff --git a/VECTO3GUI2020/Ninject/Factories/FactoryModule.cs b/VECTO3GUI2020/Ninject/Factories/FactoryModule.cs index bbde4ae5a62a40f8113a32198cc66cfef56e445c..0cb0972c5f07f435817499fe39c5e93a7ce4a28b 100644 --- a/VECTO3GUI2020/Ninject/Factories/FactoryModule.cs +++ b/VECTO3GUI2020/Ninject/Factories/FactoryModule.cs @@ -1,16 +1,7 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Ninject.Extensions.Factory; -using Ninject.Modules; +using Ninject.Extensions.Factory; using TUGraz.VectoCore; using VECTO3GUI2020.Ninject.Util; -using VECTO3GUI2020.Util.XML.Interfaces; -using VECTO3GUI2020.ViewModel.Interfaces.Document; using VECTO3GUI2020.ViewModel.Interfaces.JobEdit; -using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle.Components; using VECTO3GUI2020.ViewModel.MultiStage.Interfaces; namespace VECTO3GUI2020.Ninject.Factories diff --git a/VECTO3GUI2020/Ninject/Factories/MultiStageViewModelFactory.cs b/VECTO3GUI2020/Ninject/Factories/MultiStageViewModelFactory.cs index 514e90305a4e9c8759d99e9ee833769bed3c7771..b60790bcd16fd8ded95b9825fcf61b46dcfa0a4c 100644 --- a/VECTO3GUI2020/Ninject/Factories/MultiStageViewModelFactory.cs +++ b/VECTO3GUI2020/Ninject/Factories/MultiStageViewModelFactory.cs @@ -70,6 +70,11 @@ namespace VECTO3GUI2020.Ninject.Factories return _vehicleViewModelFactory.CreateVehicleViewModel(consolidatedVehicleData, null); } + public IMultistageVehicleViewModel GetInterimStageVehicleViewModel(IVehicleDeclarationInputData inputData) + { + return _vehicleViewModelFactory.CreateVehicleViewModel(null, vehicleInput: inputData) as IMultistageVehicleViewModel; + } + public IManufacturingStageViewModel GetManufacturingStageViewModel( IManufacturingStageInputData consolidatedManufacturingStageInputData, bool exempted) { diff --git a/VECTO3GUI2020/Ninject/Factories/XMLWriterFactoryModule.cs b/VECTO3GUI2020/Ninject/Factories/XMLWriterFactoryModule.cs index fa51e19417d7241a54d4ffc791dc42681abb2f67..f6ec58d25398b618f779c65dc8b4c3936c84773a 100644 --- a/VECTO3GUI2020/Ninject/Factories/XMLWriterFactoryModule.cs +++ b/VECTO3GUI2020/Ninject/Factories/XMLWriterFactoryModule.cs @@ -1,4 +1,5 @@ using System; +using System.Diagnostics; using System.Xml.Linq; using Ninject.Extensions.Factory; using Ninject.Modules; @@ -6,19 +7,22 @@ using TUGraz.VectoCommon.InputData; using TUGraz.VectoCore.Utils; using TUGraz.VectoCore.Utils.Ninject; using VECTO3GUI2020.Ninject.Util; -using VECTO3GUI2020.Util.XML.Implementation; -using VECTO3GUI2020.Util.XML.Implementation.ComponentWriter; -using VECTO3GUI2020.Util.XML.Implementation.DocumentWriter; -using VECTO3GUI2020.Util.XML.Interfaces; +using VECTO3GUI2020.Resources.XML; +using VECTO3GUI2020.Util.XML; +using VECTO3GUI2020.Util.XML.Components; + +using VECTO3GUI2020.Util.XML.Vehicle; namespace VECTO3GUI2020.Ninject.Factories { public class XMLWriterFactoryModule : NinjectModule { - private const string scope = nameof(IXMLWriterFactoryInternal); - public override void Load() + private const string vehicleScope = nameof(IXMLWriterFactoryInternal); + public override void Load() { - Bind<IXMLWriterFactory>().To<XMLWriterFactory>(); + Bind<IXMLWriterFactory>().To<XMLWriterFactory>().InSingletonScope(); + + Bind<IXMLWriterFactoryInternal>().ToFactory(() => new CombineArgumentsToNameInstanceProvider(false, new [] { new CombineArgumentsToNameInstanceProvider.MethodSettings() { combineToNameDelegate = ((args) => { @@ -27,112 +31,147 @@ namespace VECTO3GUI2020.Ninject.Factories } throw new ArgumentException(); }), - methods = new []{typeof(IXMLWriterFactoryInternal).GetMethod(nameof(IXMLWriterFactoryInternal.CreateWriter))}, + methods = new [] { + typeof(IXMLWriterFactoryInternal).GetMethod(nameof(IXMLWriterFactoryInternal.CreateWriter)), + typeof(IXMLWriterFactoryInternal).GetMethod(nameof(IXMLWriterFactoryInternal.CreateComponentsWriter)), + typeof(IXMLWriterFactoryInternal).GetMethod(nameof(IXMLWriterFactoryInternal.CreateComponentWriter)) + }, skipArguments = 1, takeArguments = 1, } - })).Named(scope); + })).InSingletonScope().Named(vehicleScope); - //Array.ForEach( - // XMLVehicleWriter_v2_10.SUPPORTEDVERSIONS, - // sv => - // Bind<IXMLVehicleWriter>().To<XMLVehicleWriter_v2_10>().Named(sv)); - Array.ForEach(XMLVehicleWriter_v2_10.SUPPORTEDVERSIONS, - sv => Bind<IXMLVehicleWriter>().To<XMLVehicleWriter_v2_10>().WhenParentNamed(scope).Named(GetName(sv.version, sv.type))); + Array.ForEach(XMLCompletedBusVehicleWriterConventional.SUPPORTEDVERSIONS, sv => AddVehicleWriterBinding<XMLCompletedBusVehicleWriterConventional>(sv.version, sv.type)); + Array.ForEach(XMLCompletedBusVehicleWriterExempted.SUPPORTEDVERSIONS, sv => AddVehicleWriterBinding<XMLCompletedBusVehicleWriterExempted>(sv.version, sv.type)); + #region Vehicle + AddVehicleWriterBinding<XMLCompletedBusVehicleWriterHEV>(XMLCompletedBusVehicleWriterHEV.VERSION); + AddVehicleWriterBinding<XMLCompletedBusVehicleWriterPEV>(XMLCompletedBusVehicleWriterPEV.VERSION); + AddVehicleWriterBinding<XMLCompletedBusVehicleWriterIEPC>(XMLCompletedBusVehicleWriterIEPC.VERSION); + #endregion Vehicle - #region + #region Components + AddComponentsWriterBinding<XMLCompletedBusComponentWriter_Conventional>(XMLCompletedBusComponentWriter_Conventional.VERSION); + AddComponentsWriterBinding<XMLCompletedBusComponentsWriter_xEV>(XMLCompletedBusComponentsWriter_xEV.VERSION); - //Array.ForEach( - // XMLDeclarationJobWriter_v1_0.SUPPORTED_VERSIONS, - // sv => - // Bind<IXMLDeclarationJobWriter>().To<XMLDeclarationJobWriter_v1_0>().Named(sv)); - //Array.ForEach( - // XMLDeclarationJobWriter_v2_0.SUPPORTED_VERSIONS, - // sv => - // Bind<IXMLDeclarationJobWriter>().To<XMLDeclarationJobWriter_v2_0>().Named(sv)); + #endregion - //Array.ForEach( - // XMLPTOWriter_v1_0.SUPPORTED_VERSIONS, - // sv => Bind<IXMLComponentWriter>().To<XMLPTOWriter_v1_0>().Named(sv)); + #region Airdrag + AddComponentWriterBinding<XMLAirDragWriter_v2_0>(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V20, XMLTypes.AirDragDataDeclarationType); - //Array.ForEach( - // XMLPTOWriter_v2_0.SUPPORTED_VERSIONS, - // sv => Bind<IXMLComponentWriter>().To<XMLPTOWriter_v2_0>().Named(sv)); + #endregion - //Array.ForEach( - // XMLVehicleWriter_v1_0.SUPPORTEDVERSIONS, - // (sv) => - // Bind<IXMLVehicleWriter>().To<XMLVehicleWriter_v1_0>().Named(sv)); + #region BusAux + AddBusAuxWriterBinding<XMLCompletedBusAuxiliariesWriterConventional>(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLTypes.AUX_Conventional_CompletedBusType); + AddBusAuxWriterBinding<XMLCompletedBusAuxiliariesWriter_xEV>(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLTypes.AUX_xEV_CompletedBusType); + #endregion - //Array.ForEach( - // XMLVehicleWriter_v2_0.SUPPORTEDVERSIONS, - // sv => - // Bind<IXMLVehicleWriter>().To<XMLVehicleWriter_v2_0>().Named(sv)); + #region - //Array.ForEach( - // XMLComponentsWriter_v1_0.SUPPORTED_VERSIONS, - // sv => Bind<IXMLComponentsWriter>().To<XMLComponentsWriter_v1_0>().Named(sv)); - //Array.ForEach( - // XMLComponentsWriter_v2_0.SUPPORTED_VERSIONS, - // sv => Bind<IXMLComponentsWriter>().To<XMLComponentsWriter_v2_0>().Named(sv)); - //Array.ForEach( - // XMLEngineWriter_v1_0.SUPPORTED_VERSIONS, - // sv => Bind<IXMLComponentWriter>().To<XMLEngineWriter_v1_0>().Named(sv)); - //Array.ForEach( - // XMLEngineWriter_v2_0.SUPPORTED_VERSIONS, - // sv => Bind<IXMLComponentWriter>().To<XMLEngineWriter_v2_0>().Named(sv)); - //Array.ForEach( - // XMLGearboxWriter_v2_0.SUPPORTED_VERSIONS, - // sv => Bind<IXMLComponentWriter>().To<XMLGearboxWriter_v2_0>().Named(sv)); + //Array.ForEach( + // XMLComponentsWriter_v1_0.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentsWriter>().To<XMLComponentsWriter_v1_0>().Named(sv)); - //Array.ForEach( - // XMLRetarderWriter_v2_0.SUPPORTED_VERSIONS, - // sv => Bind<IXMLComponentWriter>().To<XMLRetarderWriter_v2_0>().Named(sv)); + //Array.ForEach( + // XMLComponentsWriter_v2_0.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentsWriter>().To<XMLComponentsWriter_v2_0>().Named(sv)); - //Array.ForEach( - // XMLAxleGearWriter_v2_0.SUPPORTED_VERSIONS, - // sv => Bind<IXMLComponentWriter>().To<XMLAxleGearWriter_v2_0>().Named(sv)); + //Array.ForEach( + // XMLEngineWriter_v1_0.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentWriter>().To<XMLEngineWriter_v1_0>().Named(sv)); - //Array.ForEach( - // XMLAxleWheelsWriter_v2_0.SUPPORTED_VERSIONS, - // sv => Bind<IXMLComponentWriter>().To<XMLAxleWheelsWriter_v2_0>().Named(sv)); + //Array.ForEach( + // XMLEngineWriter_v2_0.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentWriter>().To<XMLEngineWriter_v2_0>().Named(sv)); - //Array.ForEach( - // XMLAxleWheelWriter_v2_0.SUPPORTED_VERSIONS, - // sv => Bind<IXMLComponentWriter>().To<XMLAxleWheelWriter_v2_0>().Named(sv)); + //Array.ForEach( + // XMLGearboxWriter_v2_0.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentWriter>().To<XMLGearboxWriter_v2_0>().Named(sv)); - //Array.ForEach( - // XMLTyreWriter_v2_0.SUPPORTED_VERSIONS, - // sv => Bind<IXMLComponentWriter>().To<XMLTyreWriter_v2_0>().Named(sv)); + //Array.ForEach( + // XMLRetarderWriter_v2_0.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentWriter>().To<XMLRetarderWriter_v2_0>().Named(sv)); - //Array.ForEach( - // XMLTyreWriter_v2_3.SUPPORTED_VERSIONS, - // sv => Bind<IXMLComponentWriter>().To<XMLTyreWriter_v2_3>().Named(sv)); + //Array.ForEach( + // XMLAxleGearWriter_v2_0.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentWriter>().To<XMLAxleGearWriter_v2_0>().Named(sv)); - //Array.ForEach( - // XMLAuxiliariesWriter_v2_0.SUPPORTED_VERSIONS, - // sv => Bind<IXMLComponentWriter>().To<XMLAuxiliariesWriter_v2_0>().Named(sv)); - //Array.ForEach( - // XMLAirDragWriter_v2_0.SUPPORTED_VERSIONS, - // sv => Bind<IXMLComponentWriter>().To<XMLAirDragWriter_v2_0>().Named(sv)); + //Array.ForEach( + // XMLAxleWheelsWriter_v2_0.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentWriter>().To<XMLAxleWheelsWriter_v2_0>().Named(sv)); - //Bind<IXMLBusAuxiliariesWriter>().To<XMLBusAuxiliariesWriterMultistage>(); + //Array.ForEach( + // XMLAxleWheelWriter_v2_0.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentWriter>().To<XMLAxleWheelWriter_v2_0>().Named(sv)); - #endregion + //Array.ForEach( + // XMLTyreWriter_v2_0.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentWriter>().To<XMLTyreWriter_v2_0>().Named(sv)); - } + //Array.ForEach( + // XMLTyreWriter_v2_3.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentWriter>().To<XMLTyreWriter_v2_3>().Named(sv)); + + //Array.ForEach( + // XMLAuxiliariesWriter_v2_0.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentWriter>().To<XMLAuxiliariesWriter_v2_0>().Named(sv)); + //Array.ForEach( + // XMLAirDragWriter_v2_0.SUPPORTED_VERSIONS, + // sv => Bind<IXMLComponentWriter>().To<XMLAirDragWriter_v2_0>().Named(sv)); + + //Bind<IXMLBusAuxiliariesWriter>().To<XMLCompletedBusAuxiliariesWriterConventional>(); + + #endregion + + } public string GetName(XNamespace version, string xsdType) { return XMLHelper.CombineNamespace(version, xsdType); } + + private void AddVehicleWriterBinding<TConcrete>((XNamespace ns, string xsdType) version) where TConcrete : class, IXMLVehicleWriter + { + Debug.WriteLine($"Create Binding for {typeof(TConcrete)} named '{GetName(version.ns, version.xsdType)}'"); + Bind<IXMLVehicleWriter>().To<TConcrete>().WhenParentNamed(vehicleScope).Named(GetName(version.ns, version.xsdType)); + } + private void AddVehicleWriterBinding<TConcrete>(XNamespace version, string xsdType) where TConcrete : class, IXMLVehicleWriter + { + Debug.WriteLine($"Create Binding for {typeof(TConcrete)} named '{GetName(version, xsdType)}'"); + Bind<IXMLVehicleWriter>().To<TConcrete>().WhenParentNamed(vehicleScope).Named(GetName(version, xsdType)); + } + private void AddComponentsWriterBinding<TConcrete>((XNamespace version, string xsdType) version) + where TConcrete : class, IXMLComponentsWriter + { + Debug.WriteLine($"Create Binding for {typeof(TConcrete)} named '{GetName(version.version, version.xsdType)}'"); + Bind<IXMLComponentsWriter>().To<TConcrete>().WhenParentNamed(vehicleScope).Named(GetName(version.version, version.xsdType)); + } + + private void AddComponentsWriterBinding<TConcrete>(XNamespace version, string xsdType) + where TConcrete : class, IXMLComponentsWriter + { + Debug.WriteLine($"Create Binding for {typeof(TConcrete)} named '{GetName(version, xsdType)}'"); + Bind<IXMLComponentsWriter>().To<TConcrete>().WhenParentNamed(vehicleScope).Named(GetName(version, xsdType)); + } + + private void AddComponentWriterBinding<TConcrete>(XNamespace version, string xsdType) where TConcrete : class, IXMLComponentWriter + { + Debug.WriteLine($"Create Binding for {typeof(TConcrete)} named '{GetName(version, xsdType)}'"); + Bind<IXMLComponentWriter>().To<TConcrete>().WhenParentNamed(vehicleScope).Named(GetName(version, xsdType)); + } + + private void AddBusAuxWriterBinding<TConcrete>(XNamespace version, string xsdType) + where TConcrete : class, IXMLBusAuxiliariesWriter + { + Debug.WriteLine($"Create Binding for {typeof(TConcrete)} named '{GetName(version, xsdType)}'"); + Bind<IXMLBusAuxiliariesWriter>().To<TConcrete>().WhenParentNamed(vehicleScope).Named(GetName(version, xsdType)); + } } } diff --git a/VECTO3GUI2020/Ninject/IMultistageDependencies.cs b/VECTO3GUI2020/Ninject/IMultistageDependencies.cs index 80bbddff12525f9211678b13ef5a63c0c0ec26bd..f98350fd68c474485fc609526b5bc18ceb85e43b 100644 --- a/VECTO3GUI2020/Ninject/IMultistageDependencies.cs +++ b/VECTO3GUI2020/Ninject/IMultistageDependencies.cs @@ -4,12 +4,12 @@ using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Factory; using TUGraz.VectoCore.Utils; using VECTO3GUI2020.Helper; -using VECTO3GUI2020.Util.XML.Interfaces; +using VECTO3GUI2020.Util.XML; using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle.Components; namespace VECTO3GUI2020.Ninject { - public interface IMultistageDependencies + public interface IMultistageDependencies { Lazy<IDialogHelper> DialogHelperLazy { get; } diff --git a/VECTO3GUI2020/Ninject/MultistageLazyDependencies.cs b/VECTO3GUI2020/Ninject/MultistageLazyDependencies.cs index 567b55df86d62afaa788df08f056cc3449884b4c..f308a947b43678177f4cffe9b72d8b293f3e93b7 100644 --- a/VECTO3GUI2020/Ninject/MultistageLazyDependencies.cs +++ b/VECTO3GUI2020/Ninject/MultistageLazyDependencies.cs @@ -3,13 +3,13 @@ using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Factory; using TUGraz.VectoCore.Utils; using VECTO3GUI2020.Helper; -using VECTO3GUI2020.Util.XML.Interfaces; +using VECTO3GUI2020.Util.XML; using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle.Components; using VECTO3GUI2020.ViewModel.MultiStage.Interfaces; namespace VECTO3GUI2020.Ninject { - public class MultistageLazyDependencies : IMultistageDependencies + public class MultistageLazyDependencies : IMultistageDependencies { private readonly Lazy<IXMLWriterFactory> _xmlWriterFactory; private readonly Lazy<IDeclarationInjectFactory> _injectFactory; diff --git a/VECTO3GUI2020/Resources/XML/XMLTypes.cs b/VECTO3GUI2020/Resources/XML/XMLTypes.cs new file mode 100644 index 0000000000000000000000000000000000000000..2ef421619ca75f9ddc74482f223fb2d48b9073ba --- /dev/null +++ b/VECTO3GUI2020/Resources/XML/XMLTypes.cs @@ -0,0 +1,28 @@ +namespace VECTO3GUI2020.Resources.XML +{ + public static class XMLTypes + { + + + #region Components + public const string Components_xEV_CompletedBusType = "Components_xEV_CompletedBusType"; + public const string Components_Conventional_CompletedBusType = "Components_Conventional_CompletedBusType"; + #endregion + + + #region Airdrag + public const string AirDragDataDeclarationType = "AirDragDataDeclarationType"; + + + #endregion + + + #region BusAux + + public const string AUX_Conventional_CompletedBusType = "AUX_Conventional_CompletedBusType"; + public const string AUX_xEV_CompletedBusType = "AUX_xEV_CompletedBusType"; + + #endregion + } +} + diff --git a/VECTO3GUI2020/Util/XML/Components/IXMLComponentWriter.cs b/VECTO3GUI2020/Util/XML/Components/IXMLComponentWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..245c2eb7eb79b6c718b2c51217757e0acbb87707 --- /dev/null +++ b/VECTO3GUI2020/Util/XML/Components/IXMLComponentWriter.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; +using TUGraz.VectoCommon.InputData; + +namespace VECTO3GUI2020.Util.XML.Components +{ + public interface IXMLComponentWriter + { + XElement GetElement(); + IXMLComponentWriter Init(IComponentInputData inputData); + } +} diff --git a/VECTO3GUI2020/Util/XML/Components/IXMLComponentsWriter.cs b/VECTO3GUI2020/Util/XML/Components/IXMLComponentsWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..c63910bcbb5c108d5092cf3160f4383cde92c659 --- /dev/null +++ b/VECTO3GUI2020/Util/XML/Components/IXMLComponentsWriter.cs @@ -0,0 +1,11 @@ +using System.Xml.Linq; +using TUGraz.VectoCommon.InputData; + +namespace VECTO3GUI2020.Util.XML.Components +{ + public interface IXMLComponentsWriter + { + XElement GetComponents(); + IXMLComponentsWriter Init(IVehicleComponentsDeclaration inputData); + } +} \ No newline at end of file diff --git a/VECTO3GUI2020/Util/XML/Components/XMLAirDragWriter.cs b/VECTO3GUI2020/Util/XML/Components/XMLAirDragWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..23f2bc795a0e31689c24ae3730158cd73ea5c6ed --- /dev/null +++ b/VECTO3GUI2020/Util/XML/Components/XMLAirDragWriter.cs @@ -0,0 +1,96 @@ +using System; +using System.Linq; +using System.Xml.Linq; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Resources; +using VECTO3GUI2020.Helper; +using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components; +using VECTO3GUI2020.ViewModel.MultiStage.Implementation; + +namespace VECTO3GUI2020.Util.XML.Components +{ + public abstract class XMLAirDragWriter : IXMLComponentWriter + { + protected IAirdragDeclarationInputData _inputData; + protected XNamespace _defaultNamespace; + protected XElement _xElement; + protected string _uri = "ToDO-Add-id"; + + public XMLAirDragWriter() + { + + if (_uri == null) + { + _uri = "AirdragComponent" + Guid.NewGuid().ToString("n").Substring(0, 20); + } + } + + public XElement GetElement() + { + + if (_xElement == null) + { + + Initialize(); + CreateDataElements(); + var signatureElemnet = this.CreateSignatureElement(_defaultNamespace, _uri, _inputData.DigestValue); + _xElement.Add(signatureElemnet); + } + + return _xElement; + } + + public IXMLComponentWriter Init(IComponentInputData inputData) + { + _inputData = inputData as IAirdragDeclarationInputData; + _uri = inputData.DigestValue?.Reference?.Replace("#", ""); + + return this; + } + + public XElement GetElement(XNamespace wrapperNamespace) + { + throw new NotImplementedException(); + } + + protected abstract void Initialize(); + protected abstract void CreateDataElements(); + + + } + + public class XMLAirDragWriter_v2_0 : XMLAirDragWriter + { + public static readonly string[] SUPPORTED_VERSIONS = { + typeof(AirDragViewModel_v2_0).ToString(), + typeof(MultistageAirdragViewModel).ToString() + }; + public XMLAirDragWriter_v2_0() : base() { } + protected override void CreateDataElements() + { + var dataElement = new XElement(_defaultNamespace + XMLNames.ComponentDataWrapper); + _xElement.Add(dataElement); + + dataElement.Add(new XAttribute(XMLNames.Component_ID_Attr, _uri), new XAttribute(XMLNamespaces.Xsi + XMLNames.Component_Type_Attr, "v2.0:" + + XMLNames.AirDrag_Data_Type_Attr)); + + dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_Manufacturer, _inputData.Manufacturer)); + dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_Model, _inputData.Model)); + dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_CertificationNumber, _inputData.CertificationNumber)); + dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_Date, _inputData.Date)); + dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_AppVersion, _inputData.AppVersion)); + dataElement.Add(new XElement(_defaultNamespace + XMLNames.AirDrag_CdxA_0, _inputData.AirDragArea_0.ToXMLFormat(2))); + dataElement.Add(new XElement(_defaultNamespace + XMLNames.AirDrag_TransferredCDxA, _inputData.TransferredAirDragArea.ToXMLFormat(2))); + dataElement.Add(new XElement(_defaultNamespace + XMLNames.AirDrag_DeclaredCdxA, _inputData.AirDragArea.ToXMLFormat(2))); + + + dataElement.DescendantsAndSelf().Where(e => string.IsNullOrEmpty(e.Value)).Remove(); + } + + protected override void Initialize() + { + _defaultNamespace = XMLNamespaces.V20; + _xElement = new XElement(XMLNames.Component_AirDrag); + } + } +} diff --git a/VECTO3GUI2020/Util/XML/Components/XMLAuxiliariesWriter.cs b/VECTO3GUI2020/Util/XML/Components/XMLAuxiliariesWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..ba6af87999cfa0b0118edbe3a34bcbd15371cd8c --- /dev/null +++ b/VECTO3GUI2020/Util/XML/Components/XMLAuxiliariesWriter.cs @@ -0,0 +1,70 @@ +//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 VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components; + +//namespace VECTO3GUI2020.Util.XML.Components +//{ +// public abstract class XMLAuxiliariesWriter : IXMLComponentWriter +// { +// protected XNamespace _defaultNamespace; +// protected XElement _xElement; +// protected IAuxiliariesDeclarationInputData _inputData; + +// public XMLAuxiliariesWriter(IAuxiliariesDeclarationInputData inputData) +// { +// _inputData = inputData; +// } + +// public XElement GetElement() +// { +// if (_xElement == null) +// { +// Initialize(); +// CreateElements(); +// } + +// return _xElement; +// } +// public abstract void Initialize(); + +// public abstract void CreateElements(); +// } + +// public class XMLAuxiliariesWriter_v2_0 : XMLAuxiliariesWriter +// { + +// public static readonly string[] SUPPORTED_VERSIONS = { +// typeof(AuxiliariesViewModel_v2_0).ToString() +// }; + +// public XMLAuxiliariesWriter_v2_0(IAuxiliariesDeclarationInputData inputData) : base(inputData) { } + +// public override void CreateElements() +// { +// var dataElement = new XElement(_defaultNamespace + XMLNames.ComponentDataWrapper); +// _xElement.Add(dataElement); + +// dataElement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Component_Type_Attr, XMLNames.Auxiliaries_Type_Attr_DataDeclarationType)); + +// foreach (var auxiliary in _inputData.Auxiliaries) +// { +// var auxElement = new XElement(_defaultNamespace + auxiliary.Type.ToString()); +// auxElement.Add(new XElement(_defaultNamespace + XMLNames.Auxiliaries_Auxiliary_Technology, +// auxiliary.Technology[0])); +// dataElement.Add(auxElement); +// } +// } + +// public override void Initialize() +// { +// _defaultNamespace = XMLNamespaces.V20; +// _xElement = new XElement(_defaultNamespace + XMLNames.Component_Auxiliaries); +// } +// } +//} diff --git a/VECTO3GUI2020/Util/XML/Components/XMLAxleGearWriter.cs b/VECTO3GUI2020/Util/XML/Components/XMLAxleGearWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..c8bbc355a394caa2598bbc9e5bad0a4dbb15d0a3 --- /dev/null +++ b/VECTO3GUI2020/Util/XML/Components/XMLAxleGearWriter.cs @@ -0,0 +1,93 @@ +//using System; +//using System.Collections.Generic; +//using System.Data; +//using System.Linq; +//using System.Text; +//using System.Threading.Tasks; +//using System.Xml.Linq; +//using TUGraz.VectoCommon.InputData; +//using TUGraz.VectoCommon.Models; +//using TUGraz.VectoCommon.Resources; +//using TUGraz.VectoCommon.Utils; +//using VECTO3GUI2020.Helper; +//using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components; + +//namespace VECTO3GUI2020.Util.XML.Components +//{ +//// public abstract class XMLAxleGearWriter : IXMLComponentWriter +//// { +//// protected XElement _xElement; +//// protected IAxleGearInputData _inputData; +//// protected XNamespace _defaultNamespace; +//// protected string _uri = "ToDO-ADD_URI"; + +//// public XMLAxleGearWriter(IAxleGearInputData inputData) +//// { +//// _inputData = inputData; + + +//// } + +//// public abstract void Initialize(); +//// public abstract void CreateDataElements(); + +//// public XElement GetElement() +//// { +//// if (_xElement == null) +//// { +//// Initialize(); +//// CreateDataElements(); +//// _xElement.Add(this.CreateSignatureElement(_defaultNamespace, _uri, _inputData.DigestValue)); +//// } +//// return _xElement; +//// } +//// } + +//// public class XMLAxleGearWriter_v2_0 : XMLAxleGearWriter +//// { +//// public static readonly string[] SUPPORTED_VERSIONS = { +//// typeof(AxleGearViewModel_v2_0).ToString() +//// }; + + +//// public XMLAxleGearWriter_v2_0(IAxleGearInputData inputData) : base(inputData) +//// { + +//// } + + +//// public override void Initialize() +//// { +//// _defaultNamespace = XMLNamespaces.V20; +//// _xElement = new XElement(_defaultNamespace + XMLNames.Component_Axlegear); +//// } + +//// public override void CreateDataElements() +//// { +//// var dataElement = new XElement(_defaultNamespace + XMLNames.ComponentDataWrapper); +//// _xElement.Add(dataElement); + +//// dataElement.Add(new XAttribute(XMLNames.Component_ID_Attr, _uri)); +//// dataElement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Component_Type_Attr, XMLNames.AxleGear_Type_Attr)); +//// dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_Manufacturer, _inputData.Manufacturer)); +//// dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_Model, _inputData.Model)); +//// dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_CertificationNumber, _inputData.CertificationNumber)); +//// dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_Date, _inputData.Date)); +//// dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_AppVersion, _inputData.AppVersion)); +//// dataElement.Add(new XElement(_defaultNamespace + XMLNames.Axlegear_LineType, _inputData.LineType.ToXMLFormat())); +//// dataElement.Add(new XElement(_defaultNamespace + XMLNames.AngleDrive_Ratio, _inputData.Ratio.ToXMLFormat(3))); +//// dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_CertificationMethod, _inputData.CertificationMethod.ToXMLFormat())); + +//// var torqueLossMap = new XElement(_defaultNamespace + XMLNames.Axlegear_TorqueLossMap); +//// dataElement.Add(torqueLossMap); +//// foreach (DataRow row in _inputData.LossMap.Rows) +//// { +//// var entry = new XElement(_defaultNamespace + XMLNames.Axlegear_TorqueLossMap_Entry); +//// entry.Add(new XAttribute(XMLNames.TransmissionLossmap_InputSpeed_Attr, row[0].ToString())); +//// entry.Add(new XAttribute(XMLNames.TransmissionLossmap_InputTorque_Attr, row[1].ToString())); +//// entry.Add(new XAttribute(XMLNames.TransmissionLossmap_TorqueLoss_Attr, row[2].ToString())); +//// torqueLossMap.Add(entry); +//// } +//// } +//// } +////} diff --git a/VECTO3GUI2020/Util/XML/Components/XMLAxleWheelWriter.cs b/VECTO3GUI2020/Util/XML/Components/XMLAxleWheelWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..a8d313563490d22522820afc0bbb647440a06ee3 --- /dev/null +++ b/VECTO3GUI2020/Util/XML/Components/XMLAxleWheelWriter.cs @@ -0,0 +1,68 @@ +//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 VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components; + +//namespace VECTO3GUI2020.Util.XML.Components +//{ +// public abstract class XMLAxleWheelWriter : IXMLComponentWriter +// { +// protected IXMLWriterFactory _writerFactory; +// protected IAxleDeclarationInputData _inputData; + +// protected XNamespace _defaultNamespace; + +// protected XElement _xElement; +// public XMLAxleWheelWriter(IAxleDeclarationInputData inputData, IXMLWriterFactory writerFactory) +// { +// _inputData = inputData; +// _writerFactory = writerFactory; +// } + +// public XElement GetElement() +// { +// if (_xElement == null) +// { +// Initialize(); +// CreateElement(); +// } + +// return _xElement; +// } + +// protected abstract void CreateElement(); +// protected abstract void Initialize(); +// } + + +// public class XMLAxleWheelWriter_v2_0 : XMLAxleWheelWriter +// { +// public static readonly string[] SUPPORTED_VERSIONS = { +// typeof(AxleViewModel_v2_0).ToString() +// }; +// public XMLAxleWheelWriter_v2_0(IAxleDeclarationInputData inputData, IXMLWriterFactory writerFactory) : base(inputData, writerFactory) { } + +// protected override void CreateElement() +// { +// _xElement.Add(new XAttribute(XMLNames.AxleWheels_Axles_Axle_AxleNumber_Attr, 0));//_inputData.AxleNumber)); +// _xElement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Component_Type_Attr, XMLNames.Axle_Type_Attr_AxleDataDeclarationType)); +// _xElement.Add(new XElement(_defaultNamespace + XMLNames.AxleWheels_Axles_Axle_AxleType, _inputData.AxleType)); +// _xElement.Add(new XElement(_defaultNamespace + XMLNames.AxleWheels_Axles_Axle_TwinTyres, _inputData.TwinTyres)); +// _xElement.Add(new XElement(_defaultNamespace + XMLNames.AxleWheels_Axles_Axle_Steered, false)); //_inputData.Steered)); + +// _xElement.Add(_writerFactory.CreateComponentWriter(_inputData.Tyre).GetElement()); +// } + +// protected override void Initialize() +// { + +// _defaultNamespace = XMLNamespaces.V20; +// _xElement = new XElement(_defaultNamespace + XMLNames.AxleWheels_Axles_Axle); +// } +// } +//} diff --git a/VECTO3GUI2020/Util/XML/Components/XMLAxleWheelsWriter.cs b/VECTO3GUI2020/Util/XML/Components/XMLAxleWheelsWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..7479de6ca35ea960237ecc15c0d42c3827ce34b6 --- /dev/null +++ b/VECTO3GUI2020/Util/XML/Components/XMLAxleWheelsWriter.cs @@ -0,0 +1,71 @@ +//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 VECTO3GUI2020.Helper; +//using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components; + +//namespace VECTO3GUI2020.Util.XML.Components +//{ +// public abstract class XMLAxleWheelsWriter : IXMLComponentWriter +// { +// protected XElement _xElement; +// protected XNamespace _defaultNameSpace; +// protected IAxlesDeclarationInputData _inputData; +// protected IXMLWriterFactory _writerFactory; + +// protected XMLAxleWheelsWriter(IAxlesDeclarationInputData inputData, IXMLWriterFactory writerFactory) +// { +// _inputData = inputData; +// _writerFactory = writerFactory; +// } + +// public XElement GetElement() +// { +// if (_xElement == null) +// { +// Initialize(); +// CreateDataElements(); +// } + +// return _xElement; +// } + +// public abstract void CreateDataElements(); +// public abstract void Initialize(); +// } + + +// public class XMLAxleWheelsWriter_v2_0 : XMLAxleWheelsWriter +// { +// public static readonly string[] SUPPORTED_VERSIONS = { +// typeof(AxleWheelsViewModel_v2_0).ToString() +// }; +// public override void CreateDataElements() +// { +// _xElement.Add(new XElement(_defaultNameSpace + XMLNames.ComponentDataWrapper)); +// var dataElement = _xElement.LastNode as XElement; + +// dataElement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Component_Type_Attr, XMLNames.AxleWheels_Type_Attr_AxleWheelsDeclarationType)); + +// dataElement.Add(new XElement(_defaultNameSpace + XMLNames.AxleWheels_Axles)); +// var axles = dataElement.LastNode as XElement; +// foreach (var axle in _inputData.AxlesDeclaration) +// { +// axles.Add(_writerFactory.CreateComponentWriter(axle).GetElement()); +// } +// } + +// public override void Initialize() +// { +// _defaultNameSpace = XMLNamespaces.V20; +// _xElement = new XElement(_defaultNameSpace + XMLNames.Component_AxleWheels); +// } + +// public XMLAxleWheelsWriter_v2_0(IAxlesDeclarationInputData inputData, IXMLWriterFactory writerFactory) : base(inputData, writerFactory) { } +// } +//} diff --git a/VECTO3GUI2020/Util/XML/Components/XMLCompletedBusAuxiliariesWriter.cs b/VECTO3GUI2020/Util/XML/Components/XMLCompletedBusAuxiliariesWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..2137e9b6a4ec292aa66638ebf92df2c7220a5e49 --- /dev/null +++ b/VECTO3GUI2020/Util/XML/Components/XMLCompletedBusAuxiliariesWriter.cs @@ -0,0 +1,189 @@ +using System.Linq; +using System.Xml.Linq; + +using TUGraz.VectoCommon.BusAuxiliaries; +using TUGraz.VectoCommon.Exceptions; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCore.OutputData.XML.GroupWriter; +using TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration; +using VECTO3GUI2020.Resources.XML; + +namespace VECTO3GUI2020.Util.XML.Components +{ + public interface IXMLBusAuxiliariesWriter + { + XElement GetElement(); + IXMLBusAuxiliariesWriter Init(IBusAuxiliariesDeclarationData inputData); + } + + public abstract class XMLCompletedBusAuxiliariesWriter : IXMLBusAuxiliariesWriter + { + protected IBusAuxiliariesDeclarationData _inputData; + protected XElement _xElement; + protected readonly IGroupWriterFactory _groupWriterFactory; + + protected abstract string AuxType { get; } + protected XNamespace DefaultNamespace => XMLNamespaces.V24; + + protected XMLCompletedBusAuxiliariesWriter(IGroupWriterFactory groupWriterFactory) + { + _groupWriterFactory = groupWriterFactory; + } + + public XElement GetElement() + { + if (_xElement == null) + { + if (_inputData == null) { + throw new VectoException($"Writer not initialized call {nameof(Init)} first"); + } + Initialize(); + CreateElements(); + } + + return _xElement; + } + + public IXMLBusAuxiliariesWriter Init(IBusAuxiliariesDeclarationData inputData) + { + _inputData = inputData; + return this; + } + + public XElement GetElement(XNamespace wrapperNamespace) + { + throw new System.NotImplementedException(); + } + + protected void Initialize() + { + _xElement = new XElement(DefaultNamespace + XMLNames.Component_Auxiliaries); + } + + public abstract void CreateElements(); + } + + + + public class XMLCompletedBusAuxiliariesWriterConventional : XMLCompletedBusAuxiliariesWriter + { + protected override string AuxType => XMLTypes.AUX_Conventional_CompletedBusType; + + public XMLCompletedBusAuxiliariesWriterConventional(IGroupWriterFactory groupWriterFactory) : base(groupWriterFactory) + { + + } + + #region Overrides of XMLCompletedBusAuxiliariesWriter + + public override void CreateElements() + { + CreateElementsWithGroupWriters(); + } + + private void CreateElementsWithGroupWriters() + { + + var dataElement = new XElement(DefaultNamespace + XMLNames.ComponentDataWrapper, + new XAttribute("xmlns", XMLNamespaces.V24), + new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, AuxType)); + + if (_inputData.ElectricConsumers != null) + { + var electricSystemElement = new XElement(DefaultNamespace + XMLNames.BusAux_ElectricSystem); + var ledLightsElement = new XElement(DefaultNamespace + "LEDLights"); + ledLightsElement.Add( + // ReSharper disable once CoVariantArrayConversion + _groupWriterFactory.GetBusAuxiliariesDeclarationGroupWriter(GroupNames.BusAuxElectricSystemLightsGroup, DefaultNamespace) + .GetGroupElements(_inputData)); + electricSystemElement.Add(ledLightsElement); + dataElement.Add(electricSystemElement); + + } + + if (_inputData.HVACAux != null) + { + var hvacElement = new XElement(DefaultNamespace + "HVAC"); + hvacElement.Add(_groupWriterFactory + .GetBusAuxiliariesDeclarationGroupWriter(GroupNames.BusAuxHVACConventionalSequenceGroup, + DefaultNamespace) + .GetGroupElements(_inputData)); + dataElement.Add(hvacElement); + } + + _xElement.Add(dataElement); + + } + + private XElement GetHeatPumpTypeElement(string xmlName, string value) + { + if (value == "~null~") + { + value = null; + } + return new XElement(DefaultNamespace + xmlName, value); + } + + private XElement GetHeatPumpGroupElement(string xmlNameWrapper, string xmlNameFirstComponent, + string xmlNameSecondComponent, string firstValue, string secondValue) + { + var element = new XElement(DefaultNamespace + xmlNameWrapper, + new XElement(DefaultNamespace + xmlNameFirstComponent, firstValue), + new XElement(DefaultNamespace + xmlNameSecondComponent, secondValue)); + + return element; + } + + + #endregion + } + + + public class XMLCompletedBusAuxiliariesWriter_xEV : XMLCompletedBusAuxiliariesWriter + { + public XMLCompletedBusAuxiliariesWriter_xEV(IGroupWriterFactory groupWriterFactory) : base(groupWriterFactory) { } + protected override string AuxType => XMLTypes.AUX_xEV_CompletedBusType; + + public override void CreateElements() + { + CreateElementsWithGroupWriters(); + } + + private void CreateElementsWithGroupWriters() + { + + var dataElement = new XElement(DefaultNamespace + XMLNames.ComponentDataWrapper, + new XAttribute("xmlns", XMLNamespaces.V24), + new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, AuxType)); + + if (_inputData.ElectricConsumers != null) + { + var electricSystemElement = new XElement(DefaultNamespace + XMLNames.BusAux_ElectricSystem); + var ledLightsElement = new XElement(DefaultNamespace + XMLNames.BusAux_LEDLights); + ledLightsElement.Add( + // ReSharper disable once CoVariantArrayConversion + _groupWriterFactory.GetBusAuxiliariesDeclarationGroupWriter(GroupNames.BusAuxElectricSystemLightsGroup, DefaultNamespace) + .GetGroupElements(_inputData)); + electricSystemElement.Add(ledLightsElement); + dataElement.Add(electricSystemElement); + + } + + if (_inputData.HVACAux != null) + { + var hvacElement = new XElement(DefaultNamespace + XMLNames.BusAux_HVAC); + hvacElement.Add(_groupWriterFactory.GetBusAuxiliariesDeclarationGroupWriter(GroupNames.BusAuxHVACConventionalSequenceGroup, DefaultNamespace) + .GetGroupElements(_inputData)); + hvacElement.Add(_groupWriterFactory.GetBusAuxiliariesDeclarationGroupWriter(GroupNames.BusAuxHVACxEVSequenceGroup, DefaultNamespace) + .GetGroupElements(_inputData)); + dataElement.Add(hvacElement); + } + + _xElement.Add(dataElement); + + } + + + } +} \ No newline at end of file diff --git a/VECTO3GUI2020/Util/XML/Components/XMLComponentsWriter.cs b/VECTO3GUI2020/Util/XML/Components/XMLComponentsWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..70a8eb20e205f36eaf5b8e158d0b695f60a2ff9f --- /dev/null +++ b/VECTO3GUI2020/Util/XML/Components/XMLComponentsWriter.cs @@ -0,0 +1,139 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; +using TUGraz.IVT.VectoXML.Writer; +using TUGraz.VectoCommon.Exceptions; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; +using TUGraz.VectoCore.Utils; +using VECTO3GUI2020.Resources.XML; +using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components; +using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle.Components; +using EnvironmentVariableTarget = System.EnvironmentVariableTarget; + +namespace VECTO3GUI2020.Util.XML.Components +{ + + + public abstract class XMLCompletedBusComponentsWriter : IXMLComponentsWriter + { + protected IVehicleComponentsDeclaration _inputData; + protected readonly IXMLWriterFactory _writerFactory; + + public XMLCompletedBusComponentsWriter(IXMLWriterFactory writerFactory) + { + _writerFactory = writerFactory; + } + + + #region Implementation of IXMLComponentsWriter + + public XElement GetComponents() + { + if (_inputData == null) { + throw new VectoException("Input data not initialized"); + } + + return DoCreateComponents(); + } + + protected abstract XElement DoCreateComponents(); + + public IXMLComponentsWriter Init(IVehicleComponentsDeclaration inputData) + { + _inputData = inputData; + return this; + } + + #endregion + } + + public class XMLCompletedBusComponentsWriter_xEV : XMLCompletedBusComponentsWriter + { + + public static (XNamespace ns, string xsdType) VERSION = ( + XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLTypes.Components_xEV_CompletedBusType); + + + + public XMLCompletedBusComponentsWriter_xEV(IXMLWriterFactory writerFactory) : base(writerFactory) { } + + #region Overrides of XMLCompletedBusComponentsWriter + + protected override XElement DoCreateComponents() + { + var componentElement = new XElement(VERSION.ns + XMLNames.Vehicle_Components, + new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, VERSION.xsdType)); + + + if (_inputData.AirdragInputData != null) + { + var airDragElement = _writerFactory.CreateComponentWriter(_inputData.AirdragInputData).GetElement(); + + var tempAirDragElement = new XElement(VERSION.ns + XMLNames.Component_AirDrag); + + airDragElement.Name = tempAirDragElement.Name; + componentElement.Add(airDragElement); + } + + if (_inputData.BusAuxiliaries != null) + { + var busAuxElement = _writerFactory.CreateComponentWriter(_inputData.BusAuxiliaries).GetElement(); + + + componentElement.Add(busAuxElement); + } + + + return componentElement; + } + + #endregion + } + + public class XMLCompletedBusComponentWriter_Conventional : XMLCompletedBusComponentsWriter + { + public static (XNamespace ns, string xsdType) VERSION = ( + XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLTypes.Components_Conventional_CompletedBusType); + + public XMLCompletedBusComponentWriter_Conventional(IXMLWriterFactory writerFactory) : base(writerFactory) { } + + #region Overrides of XMLCompletedBusComponentsWriter + + protected override XElement DoCreateComponents() + { + + var componentElement = new XElement(VERSION.ns + XMLNames.Vehicle_Components, + new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, VERSION.xsdType)); + + + if (_inputData.AirdragInputData != null) { + var airDragElement = _writerFactory.CreateComponentWriter(_inputData.AirdragInputData).GetElement(); + + var tempAirDragElement = new XElement(VERSION.ns + XMLNames.Component_AirDrag); + + airDragElement.Name = tempAirDragElement.Name; + componentElement.Add(airDragElement); + } + + if (_inputData.BusAuxiliaries != null) { + var busAuxElement = _writerFactory.CreateComponentWriter(_inputData.BusAuxiliaries).GetElement(); + + + componentElement.Add(busAuxElement); + } + + + return componentElement; + + } + + #endregion + } +} diff --git a/VECTO3GUI2020/Util/XML/Components/XMLEngineWriter.cs b/VECTO3GUI2020/Util/XML/Components/XMLEngineWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..3c66ba8140dcf184ea6f6b6d3ea7eff2ffd2b960 --- /dev/null +++ b/VECTO3GUI2020/Util/XML/Components/XMLEngineWriter.cs @@ -0,0 +1,162 @@ +//using System; +//using System.Collections.Generic; +//using System.Data; +//using System.Diagnostics; +//using System.Linq; +//using System.Reflection; +//using System.Text; +//using System.Threading.Tasks; +//using System.Xml.Linq; +//using TUGraz.VectoCommon.InputData; +//using TUGraz.VectoCommon.Models; +//using TUGraz.VectoCommon.Resources; +//using TUGraz.VectoCommon.Utils; +//using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; +//using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; +//using TUGraz.VectoCore.Utils; +//using VECTO3GUI2020.Helper; +//using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components; + +//namespace VECTO3GUI2020.Util.XML.Components +//{ +// public abstract class XMLEngineWriter : IXMLComponentWriter +// { +// protected XElement _xElement; +// protected XNamespace _defaultNameSpace; +// protected readonly IEngineDeclarationInputData _inputData; +// protected string id = "toDo-Add-Identifier"; + +// public XMLEngineWriter(IEngineDeclarationInputData inputData) +// { +// _inputData = inputData; +// } + +// public virtual XElement GetElement() +// { +// if (_xElement == null) +// { +// Initialize(); +// CreateDataElements(); +// _xElement.Add(this.CreateSignatureElement(_defaultNameSpace, id, _inputData.DigestValue)); +// } + +// return _xElement; +// } + +// protected abstract void Initialize(); +// protected abstract void CreateDataElements(); + + +// } + +// public class XMLEngineWriter_v1_0 : XMLEngineWriter +// { + +// public static readonly string[] SUPPORTED_VERSIONS = { +// typeof(EngineViewModel_v1_0).ToString() +// }; + + +// public override XElement GetElement() +// { +// throw new NotImplementedException(); +// } + +// protected override void Initialize() +// { +// throw new NotImplementedException(); +// } + +// protected override void CreateDataElements() +// { +// throw new NotImplementedException(); +// } + +// public XMLEngineWriter_v1_0(IEngineDeclarationInputData inputData) : base(inputData) { } +// } + +// public class XMLEngineWriter_v2_0 : XMLEngineWriter +// { +// private static XNamespace _v20 = XMLNamespaces.V20; +// public static readonly string[] SUPPORTED_VERSIONS = { +// typeof(EngineViewModel_v2_0).ToString(), +// }; + +// protected override void Initialize() +// { +// _defaultNameSpace = _v20; +// _xElement = new XElement(_defaultNameSpace + XMLNames.Component_Engine); +// } + +// protected override void CreateDataElements() +// { +// var _dataXElement = new XElement(_defaultNameSpace + XMLNames.ComponentDataWrapper); +// _xElement.Add(_dataXElement); +// _dataXElement.Add(new XAttribute(XMLNames.Component_ID_Attr, id)); +// _dataXElement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Component_Type_Attr, XMLNames.Engine_Type_Attr)); + +// Debug.Assert(_xElement != null); +// _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_Manufacturer, _inputData.Manufacturer)); +// _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_Model, _inputData.Model)); +// _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_CertificationNumber, +// _inputData.CertificationNumber)); +// _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_Date, _inputData.Date)); +// _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_AppVersion, _inputData.AppVersion)); +// _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Engine_Displacement, _inputData.Displacement.ConvertToCubicCentiMeter().ToXMLFormat(0))); +// _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Engine_IdlingSpeed, "100")); +// _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Engine_RatedSpeed, _inputData.RatedSpeedDeclared.AsRPM.ToXMLFormat(0))); +// _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Engine_RatedPower, _inputData.RatedPowerDeclared.ToXMLFormat(0))); +// _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Engine_MaxTorque, _inputData.MaxTorqueDeclared.ToXMLFormat(0))); + +// Debug.Assert(_inputData.EngineModes.Count == 1, "Only 1 Engine Mode supported in XMLEngineWriter_v2_0"); +// var mode = _inputData.EngineModes[0]; + +// Debug.Assert(mode.Fuels.Count == 1, "Only one fuel supported in XMLEngineWriter_v2_0"); +// var fuel = mode.Fuels[0]; + +// _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Engine_WHTCUrban, fuel.WHTCUrban.ToXMLFormat(4))); +// _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Engine_WHTCRural, fuel.WHTCRural.ToXMLFormat(4))); +// _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Engine_WHTCMotorway, fuel.WHTCMotorway.ToXMLFormat(4))); + +// _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Engine_ColdHotBalancingFactor, fuel.ColdHotBalancingFactor.ToXMLFormat(4))); +// _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Engine_CorrectionFactor_RegPer, fuel.CorrectionFactorRegPer.ToXMLFormat(4))); + + +// _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Engine_CorrecionFactor_NCV, "1.0000")); + +// _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Engine_FuelType, fuel.FuelType.ToXMLFormat())); + +// var fuelConsumptionMapElement = new XElement(_defaultNameSpace + XMLNames.Engine_FuelConsumptionMap); +// var tableData = fuel.FuelConsumptionMap; + +// foreach (DataRow fuelEntry in tableData.Rows) +// { +// var entry = new XElement(_defaultNameSpace + XMLNames.Engine_FuelConsumptionMap_Entry); +// entry.Add(new XAttribute(XMLNames.Engine_FuelConsumptionMap_EngineSpeed_Attr, fuelEntry.ItemArray[0])); +// entry.Add(new XAttribute(XMLNames.Engine_FuelConsumptionMap_Torque_Attr, fuelEntry.ItemArray[1])); +// entry.Add(new XAttribute(XMLNames.Engine_FuelConsumptionMap_FuelConsumption_Attr, fuelEntry.ItemArray[2])); +// fuelConsumptionMapElement.Add(entry); +// } +// _dataXElement.Add(fuelConsumptionMapElement); + +// var fullLoadAndDragCurveElement = new XElement(_defaultNameSpace + XMLNames.Engine_FullLoadAndDragCurve); +// tableData = mode.FullLoadCurve; +// foreach (DataRow loadAndDragEntry in tableData.Rows) +// { +// var entry = new XElement(_defaultNameSpace + XMLNames.Engine_FullLoadCurve_Entry); +// entry.Add(new XAttribute(XMLNames.Engine_EngineFullLoadCurve_EngineSpeed_Attr, loadAndDragEntry.ItemArray[0])); +// entry.Add(new XAttribute(XMLNames.Engine_FullLoadCurve_MaxTorque_Attr, loadAndDragEntry.ItemArray[1])); +// entry.Add(new XAttribute(XMLNames.Engine_FullLoadCurve_DragTorque_Attr, loadAndDragEntry.ItemArray[2])); +// fullLoadAndDragCurveElement.Add(entry); +// } +// _dataXElement.Add(fullLoadAndDragCurveElement); +// } + + + +// public XMLEngineWriter_v2_0(IEngineDeclarationInputData inputData) : base(inputData) +// { + +// } +// } +//} diff --git a/VECTO3GUI2020/Util/XML/Components/XMLGearboxWriter.cs b/VECTO3GUI2020/Util/XML/Components/XMLGearboxWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..de7dd8888c90aa9c8c0cb7b35a72050baeda80a7 --- /dev/null +++ b/VECTO3GUI2020/Util/XML/Components/XMLGearboxWriter.cs @@ -0,0 +1,114 @@ +//using System; +//using System.Collections.Generic; +//using System.Data; +//using System.Diagnostics; +//using System.Linq; +//using System.Text; +//using System.Threading.Tasks; +//using System.Xml.Linq; +//using TUGraz.VectoCommon.InputData; +//using TUGraz.VectoCommon.Models; +//using TUGraz.VectoCommon.Resources; +//using TUGraz.VectoCommon.Utils; +//using VECTO3GUI2020.Helper; +//using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components; + +//namespace VECTO3GUI2020.Util.XML.Components +//{ +// public abstract class XMLGearboxWriter : IXMLComponentWriter +// { +// protected IGearboxDeclarationInputData _inputData; +// protected XElement _xElement; +// protected XNamespace _defaultNameSpace; +// protected string _uri = "toDo-Adduri"; + +// public XMLGearboxWriter(IGearboxDeclarationInputData inputData) +// { + +// _inputData = inputData; +// } + +// public virtual XElement GetElement() +// { +// if (_xElement == null) +// { +// Initialize(); +// CreateDataElements(); +// _xElement.Add(this.CreateSignatureElement(_defaultNameSpace, _uri, _inputData.DigestValue)); +// } +// return _xElement; +// } + +// protected abstract void Initialize(); +// protected abstract void CreateDataElements(); +// } +// public class XMLGearboxWriter_v2_0 : XMLGearboxWriter +// { +// public static readonly string[] SUPPORTED_VERSIONS = { +// typeof(GearboxViewModel_v2_0).ToString() +// }; + +// public XMLGearboxWriter_v2_0(IGearboxDeclarationInputData inputData) : base(inputData) +// { +// } + +// protected override void Initialize() +// { +// _defaultNameSpace = XMLNamespaces.V20; +// _xElement = new XElement(_defaultNameSpace + XMLNames.Component_Gearbox); +// } + +// protected override void CreateDataElements() +// { +// var dataElement = new XElement(_defaultNameSpace + XMLNames.ComponentDataWrapper); +// _xElement.Add(dataElement); +// dataElement.Add(new XAttribute(XMLNames.Component_ID_Attr, _uri)); +// dataElement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Component_Type_Attr, XMLNames.Gearbox_attr_GearboxDataDeclarationType)); +// dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_Manufacturer, _inputData.Manufacturer)); +// dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_Model, _inputData.Model)); +// dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_CertificationNumber, _inputData.CertificationNumber)); +// dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_Date, _inputData.Date)); +// dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_AppVersion, _inputData.AppVersion)); +// dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Gearbox_TransmissionType, _inputData.Type.ToXMLFormat())); +// dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_Gearbox_CertificationMethod, _inputData.CertificationMethod.ToXMLFormat())); + +// dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Gearbox_Gears)); +// var gearsElement = dataElement.LastNode as XElement; +// gearsElement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, XMLNames.Gearbox_Gears_Attr_GearsDeclarationType)); +// foreach (var gear in _inputData.Gears) +// { +// gearsElement.Add(new XElement(_defaultNameSpace + XMLNames.Gearbox_Gears_Gear)); +// var gearElement = gearsElement.LastNode as XElement; +// //var gearElement = new XElement(_defaultNameSpace + XMLNames.Gearbox_Gears_Gear); +// //gearsElement.Add(gearElement); +// gearElement.Add(new XAttribute(XMLNames.Gearbox_Gear_GearNumber_Attr, gear.Gear)); +// gearElement.Add(new XElement(_defaultNameSpace + XMLNames.Gearbox_Gear_Ratio, gear.Ratio.ToXMLFormat(3))); + +// if (gear.MaxTorque != null) +// { +// gearElement.Add(new XElement(_defaultNameSpace + XMLNames.Gearbox_Gears_MaxTorque, gear.MaxTorque)); +// } + +// if (gear.MaxInputSpeed != null) +// { +// gearElement.Add(new XElement(_defaultNameSpace + XMLNames.Gearbox_Gear_MaxSpeed, gear.MaxInputSpeed)); +// } + +// var torqueLossMapElement = new XElement(_defaultNameSpace + XMLNames.Gearbox_Gear_TorqueLossMap); +// gearElement.Add(torqueLossMapElement); +// foreach (DataRow torquelossEntry in gear.LossMap.Rows) +// { +// var entry = new XElement(_defaultNameSpace + XMLNames.Gearbox_Gear_TorqueLossMap_Entry); +// torqueLossMapElement.Add(entry); +// entry.Add(new XAttribute(XMLNames.TransmissionLossmap_InputSpeed_Attr, torquelossEntry[0].ToString())); +// entry.Add(new XAttribute(XMLNames.TransmissionLossmap_InputTorque_Attr, torquelossEntry[1].ToString())); +// entry.Add(new XAttribute(XMLNames.TransmissionLossmap_TorqueLoss_Attr, torquelossEntry[2].ToString())); + +// } +// } +// Debug.WriteLine(_xElement.ToString()); +// } + + +// } +//} diff --git a/VECTO3GUI2020/Util/XML/Components/XMLPTOWriter.cs b/VECTO3GUI2020/Util/XML/Components/XMLPTOWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..a48091c3014b905f99d1b62210ec48728d2812bb --- /dev/null +++ b/VECTO3GUI2020/Util/XML/Components/XMLPTOWriter.cs @@ -0,0 +1,84 @@ +//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.InputData.FileIO.XML.Declaration.Reader; +//using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components; + +//namespace VECTO3GUI2020.Util.XML.Components +//{ +// public abstract class XMLPTOWriter : IXMLComponentWriter +// { +// protected XElement _xElement; +// protected XNamespace _defaultNamespace; +// private IPTOTransmissionInputData _inputData; + +// public XMLPTOWriter(IPTOTransmissionInputData inputData) +// { +// _inputData = inputData; +// Initialize(); +// CreateElements(); +// } + + + +// public XElement GetElement() +// { +// return _xElement; +// } + +// protected abstract void Initialize(); +// protected abstract void CreateElements(); +// } + +// public class XMLPTOWriter_v1_0 : XMLPTOWriter +// { +// public static readonly string[] SUPPORTED_VERSIONS = { +// typeof(PTOViewModel_V1_0).ToString() +// }; + +// public XMLPTOWriter_v1_0(IPTOTransmissionInputData inputData) : base(inputData) { } + +// protected override void Initialize() +// { + +// throw new NotImplementedException(); +// } + +// protected override void CreateElements() +// { +// throw new NotImplementedException(); +// } +// } + + + + +// public class XMLPTOWriter_v2_0 : XMLPTOWriter_v1_0 +// { +// public static readonly string[] SUPPORTED_VERSIONS = { +// typeof(PTOViewModel_V2_0).ToString() +// }; + +// public XMLPTOWriter_v2_0(IPTOTransmissionInputData inputData) : base(inputData) { } + +// protected override void Initialize() +// { +// _defaultNamespace = XMLNamespaces.V20; +// _xElement = new XElement(_defaultNamespace + XMLNames.Vehicle_PTO); +// _xElement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, XMLNames.Component_Type_Attr_PTO)); +// } + +// protected override void CreateElements() +// { +// _xElement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_PTO_ShaftsGearWheels, "none")); +// _xElement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_PTO_OtherElements, "none")); +// } +// } + + +//} diff --git a/VECTO3GUI2020/Util/XML/Components/XMLRetarderWriter.cs b/VECTO3GUI2020/Util/XML/Components/XMLRetarderWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..fb1c8be9e7e57c5583dce015ecd051df1b88bf80 --- /dev/null +++ b/VECTO3GUI2020/Util/XML/Components/XMLRetarderWriter.cs @@ -0,0 +1,106 @@ +//using System; +//using System.Collections.Generic; +//using System.Data; +//using System.Linq; +//using System.Text; +//using System.Threading.Tasks; +//using System.Xml.Linq; +//using TUGraz.VectoCommon.InputData; +//using TUGraz.VectoCommon.Models; +//using TUGraz.VectoCommon.Resources; +//using VECTO3GUI2020.Helper; +//using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components; + +//namespace VECTO3GUI2020.Util.XML.Components +//{ +// public abstract class XMLRetarderWriter : IXMLComponentWriter +// { +// protected XElement _xElement; +// protected IRetarderInputData _inputData; +// protected XNamespace _defaultNameSpace; +// protected string _uri = "toTo-Add-URI"; + +// public XMLRetarderWriter(IRetarderInputData inputData) +// { +// _inputData = inputData; +// } + +// protected abstract void Initialize(); +// protected abstract void CreateDataElements(); + +// public XElement GetElement() +// { +// if (_xElement == null) +// { +// Initialize(); +// CreateDataElements(); +// _xElement.Add(this.CreateSignatureElement(_defaultNameSpace, _uri, _inputData.DigestValue)); +// } +// return _xElement; +// } +// } + +// public class XMLRetarderWriter_v1_0 : XMLRetarderWriter +// { +// public static readonly string[] SUPPORTED_VERSIONS = { +// typeof(RetarderViewModel_v1_0).ToString() +// }; + +// protected override void Initialize() +// { +// _defaultNameSpace = XMLNamespaces.V10; +// _xElement = new XElement(_defaultNameSpace + XMLNames.Component_Retarder); +// } + +// protected override void CreateDataElements() +// { +// var dataElement = new XElement(_defaultNameSpace + XMLNames.ComponentDataWrapper); +// _xElement.Add(dataElement); + +// dataElement.Add(new XAttribute(XMLNames.Component_ID_Attr, _uri)); +// dataElement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, XMLNames.Retarder_Attr_DataDeclarationType)); +// dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_Manufacturer, _inputData.Manufacturer)); +// dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_Model, _inputData.Model)); +// dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_CertificationNumber, _inputData.CertificationNumber)); +// dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_Date, _inputData.Date)); +// dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_AppVersion, _inputData.AppVersion)); +// dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_CertificationMethod, _inputData.CertificationMethod.ToXMLFormat())); + +// var lossMapElement = new XElement(_defaultNameSpace + XMLNames.Retarder_RetarderLossMap); +// dataElement.Add(lossMapElement); + +// foreach (DataRow lossMapRow in _inputData.LossMap.Rows) +// { +// var entryElement = new XElement(_defaultNameSpace + XMLNames.Retarder_RetarderLossMap_Entry); +// entryElement.Add(new XAttribute(XMLNames.Retarder_RetarderLossmap_RetarderSpeed_Attr, lossMapRow[0].ToString())); +// entryElement.Add(new XAttribute(XMLNames.Retarder_RetarderLossmap_TorqueLoss_Attr, lossMapRow[1].ToString())); +// lossMapElement.Add(entryElement); +// } +// } + +// public XMLRetarderWriter_v1_0(IRetarderInputData inputData) : base(inputData) { } +// } + + + +// public class XMLRetarderWriter_v2_0 : XMLRetarderWriter_v1_0 +// { +// public static readonly string[] SUPPORTED_VERSIONS = { +// typeof(RetarderViewModel_v2_0).ToString() +// }; + + +// public XMLRetarderWriter_v2_0(IRetarderInputData inputData) : base(inputData) +// { + +// } + + + +// protected override void Initialize() +// { +// _defaultNameSpace = XMLNamespaces.V20; +// _xElement = new XElement(_defaultNameSpace + XMLNames.Component_Retarder); +// } +// } +//} diff --git a/VECTO3GUI2020/Util/XML/Components/XMLTyreWriter.cs b/VECTO3GUI2020/Util/XML/Components/XMLTyreWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..f94d276ae29debb772dcdb76bbf4e62f85740011 --- /dev/null +++ b/VECTO3GUI2020/Util/XML/Components/XMLTyreWriter.cs @@ -0,0 +1,100 @@ +//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.VectoCommon.Utils; +//using VECTO3GUI2020.Helper; +//using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components; + +//namespace VECTO3GUI2020.Util.XML.Components +//{ +// public abstract class XMLTyreWriter : IXMLComponentWriter +// { +// protected ITyreDeclarationInputData _inputData; + +// protected XNamespace _defaultNamespace; +// protected XElement _xElement; +// protected string _uri = "ToDo-Add-Id"; + +// public XMLTyreWriter(ITyreDeclarationInputData inputData) +// { +// _inputData = inputData; +// } + +// public XElement GetElement() +// { +// if (_xElement == null) +// { +// Initialize(); +// CreateDataElements(); +// _xElement.Add(this.CreateSignatureElement(_defaultNamespace, _uri, _inputData.DigestValue)); +// } + +// return _xElement; +// } +// protected abstract void Initialize(); +// protected abstract void CreateDataElements(); + + + + + +// } + +// public class XMLTyreWriter_v2_0 : XMLTyreWriter +// { +// public static readonly string[] SUPPORTED_VERSIONS = { +// typeof(TyreViewModel_v2_0).ToString() +// }; + +// public XMLTyreWriter_v2_0(ITyreDeclarationInputData inputData) : base(inputData) { } +// protected override void CreateDataElements() +// { +// var dataElement = new XElement(_defaultNamespace + XMLNames.ComponentDataWrapper); +// _xElement.Add(dataElement); + +// dataElement.Add(new XAttribute(XMLNames.Component_ID_Attr, _uri)); +// dataElement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Component_Type_Attr, XMLNames.Tyre_Type_Attr_TyreDataDeclarationType)); +// dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_Manufacturer, _inputData.Manufacturer)); +// dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_Model, _inputData.Model)); +// dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_CertificationNumber, _inputData.CertificationNumber)); +// dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_Date, _inputData.Date)); +// dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_AppVersion, _inputData.AppVersion)); +// dataElement.Add(new XElement(_defaultNamespace + XMLNames.AxleWheels_Axles_Axle_Dimension, _inputData.Dimension)); +// dataElement.Add(new XElement(_defaultNamespace + XMLNames.AxleWheels_Axles_Axle_RRCDeclared, _inputData.RollResistanceCoefficient.ToXMLFormat(4))); +// dataElement.Add(new XElement(_defaultNamespace + XMLNames.AxleWheels_Axles_Axle_FzISO, _inputData.TyreTestLoad.ToXMLFormat(0))); +// } + +// protected override void Initialize() +// { +// _defaultNamespace = XMLNamespaces.V20; +// _xElement = new XElement(_defaultNamespace + XMLNames.AxleWheels_Axles_Axle_Tyre); +// } + +// } + +// public class XMLTyreWriter_v2_3 : XMLTyreWriter_v2_0 +// { +// public new static readonly string[] SUPPORTED_VERSIONS = { +// typeof(TyreViewModel_v2_3).ToString() +// }; +// public XMLTyreWriter_v2_3(ITyreDeclarationInputData inputData) : base(inputData) { } + +// protected override void CreateDataElements() +// { +// base.CreateDataElements(); + +// } + +// protected override void Initialize() +// { +// _defaultNamespace = XMLNamespaces.V23; +// _xElement = new XElement(_defaultNamespace + XMLNames.AxleWheels_Axles_Axle_Tyre); +// } +// } + +//} diff --git a/VECTO3GUI2020/Util/XML/Documents/IXMLDeclarationJobWriter.cs b/VECTO3GUI2020/Util/XML/Documents/IXMLDeclarationJobWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..2d8dceabbe3e943ccbe0dced575c28ca391dd5b0 --- /dev/null +++ b/VECTO3GUI2020/Util/XML/Documents/IXMLDeclarationJobWriter.cs @@ -0,0 +1,9 @@ +using System.Xml.Linq; + +namespace VECTO3GUI2020.Util.XML.Documents +{ + public interface IXMLDeclarationJobWriter + { + XDocument GetDocument(); + } +} diff --git a/VECTO3GUI2020/Util/XML/Documents/XMLDeclarationJobWriter.cs b/VECTO3GUI2020/Util/XML/Documents/XMLDeclarationJobWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..59fa061e7e2fca06b67b1989caf1c76dda15ea1d --- /dev/null +++ b/VECTO3GUI2020/Util/XML/Documents/XMLDeclarationJobWriter.cs @@ -0,0 +1,97 @@ +using System; +using System.Diagnostics; +using System.Xml.Linq; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; +using VECTO3GUI2020.ViewModel.Implementation.JobEdit; + +namespace VECTO3GUI2020.Util.XML.Documents +{ + public abstract class XMLDeclarationJobWriter : IXMLDeclarationJobWriter + { + + protected XDocument _xDocument; + protected string _schemaVersion; + private IXMLWriterFactory _xmlWriterFactory; + + protected string LocalSchemaLocation = @"V:\VectoCore\VectoCore\Resources\XSD\"; + + //Must be overwritten by subclasses; + protected abstract void Initialize(); + + + + public XMLDeclarationJobWriter(IDeclarationJobInputData inputData, IXMLWriterFactory xmlWriterFactory) + { + _xmlWriterFactory = xmlWriterFactory; + Initialize(); + + (_xDocument.FirstNode as XElement)?.Add(_xmlWriterFactory.CreateVehicleWriter(inputData.Vehicle).GetElement()); + var rootElement = _xDocument.FirstNode as XElement; + + } + + + + + + public XDocument GetDocument() + { + return _xDocument; + } + } + + + public class XMLDeclarationJobWriter_v1_0 : XMLDeclarationJobWriter + { + + + public static readonly string[] SUPPORTED_VERSIONS = { + typeof(XMLDeclarationJobInputDataProviderV10).ToString() + }; + public XMLDeclarationJobWriter_v1_0(IDeclarationJobInputData inputData, IXMLWriterFactory xmlWriterFactory) : base(inputData, xmlWriterFactory) + { + + } + protected override void Initialize() + { + throw new NotImplementedException(); + } + + + } + + public class XMLDeclarationJobWriter_v2_0 : XMLDeclarationJobWriter + { + + public static readonly string[] SUPPORTED_VERSIONS = { + typeof(DeclarationJobEditViewModel_v2_0).ToString(), + typeof(XMLDeclarationJobInputDataProviderV20).ToString() + }; + + public XMLDeclarationJobWriter_v2_0(IDeclarationJobInputData inputData, IXMLWriterFactory xmlWriterFactory) : base(inputData, xmlWriterFactory) + { + + } + + protected override void Initialize() + { + _schemaVersion = "2.0"; + _xDocument = new XDocument(); + + var xElement = new XElement(XMLNamespaces.Tns_v20 + XMLNames.VectoInputDeclaration); + _xDocument.Add(xElement); + + xElement.Add(new XAttribute("schemaVersion", _schemaVersion)); + xElement.Add(new XAttribute("xmlns", XMLNamespaces.DeclarationDefinition + ":v" + _schemaVersion)); + xElement.Add(new XAttribute(XNamespace.Xmlns + "xsi", XMLNamespaces.Xsi.NamespaceName)); + xElement.Add(new XAttribute(XNamespace.Xmlns + "tns", XMLNamespaces.Tns_v20)); + xElement.Add(new XAttribute(XMLNamespaces.Xsi + "schemaLocation", + $"{XMLNamespaces.DeclarationRootNamespace} {LocalSchemaLocation}VectoDeclarationJob.xsd")); + + Debug.WriteLine(_xDocument.ToString()); + } + } + +} diff --git a/VECTO3GUI2020/Util/XML/IXMLWriterFactory.cs b/VECTO3GUI2020/Util/XML/IXMLWriterFactory.cs new file mode 100644 index 0000000000000000000000000000000000000000..950825ee930ef086949524c3908ff967f7514b71 --- /dev/null +++ b/VECTO3GUI2020/Util/XML/IXMLWriterFactory.cs @@ -0,0 +1,152 @@ +using System; +using System.Xml.Linq; +using TUGraz.VectoCommon.InputData; +using VECTO3GUI2020.Util.XML.Components; +using VECTO3GUI2020.Util.XML.Documents; +using VECTO3GUI2020.Util.XML.Vehicle; + +namespace VECTO3GUI2020.Util.XML +{ + public interface IXMLWriterFactory + { + IXMLDeclarationJobWriter CreateJobWriter(IDeclarationJobInputData inputData); + IXMLVehicleWriter CreateVehicleWriter(IVehicleDeclarationInputData inputData); + + + + //IXMLComponentWriter CreateComponentWriter(IComponentInputData inputData); + //IXMLComponentWriter CreateComponentWriter(IAuxiliariesDeclarationInputData inputData); + //IXMLComponentWriter CreateComponentWriter(IAxlesDeclarationInputData inputData); + //IXMLComponentWriter CreateComponentWriter(IAxleDeclarationInputData inputData); + + + //IXMLComponentWriter CreateComponentWriter(IPTOTransmissionInputData inputData); + //IXMLComponentsWriter CreateComponentsWriter(IVehicleComponentsDeclaration inputData); + + IXMLComponentsWriter CreateComponentsWriterWithVersion(XNamespace ns, string xsdType, + IVehicleComponentsDeclaration inputData); + IXMLComponentsWriter CreateComponentsWriterWithVersion(XNamespace ns, string xsdType); + //IXMLBusAuxiliariesWriter CreateBuxAuxiliariesWriter(IBusAuxiliariesDeclarationData inputData); + + + #region Airdrag + IXMLComponentWriter CreateComponentWriter(IAirdragDeclarationInputData inputData); + #endregion + + #region BusAux + + IXMLBusAuxiliariesWriter CreateComponentWriter(IBusAuxiliariesDeclarationData inputData); + #endregion BusAux + + TWriter CreateComponentWriterWithVersion<TWriter>(XNamespace ns, string xsdType); + } + + public interface IXMLWriterFactoryInternal + { + TWriter CreateWriter<TWriter, TData>(DataSource source, TData inputData); + TWriter CreateComponentsWriter<TWriter>(DataSource source); + TWriter CreateComponentWriter<TWriter>(DataSource source); + } + + public class XMLWriterFactory : IXMLWriterFactory + { + private IXMLWriterFactoryInternal _internalFactory; + + public XMLWriterFactory(IXMLWriterFactoryInternal internalFactory) + { + _internalFactory = internalFactory; + } + private TWriter CreateWriter<TWriter, TData>(DataSource source, TData inputData) + { + return _internalFactory.CreateWriter<TWriter, TData>(source, inputData); + } + + + + + #region Implementation of IXMLWriterFactory + + public IXMLDeclarationJobWriter CreateJobWriter(IDeclarationJobInputData inputData) + { + throw new NotImplementedException(); + } + + public IXMLVehicleWriter CreateVehicleWriter(IVehicleDeclarationInputData inputData) + { + return _internalFactory.CreateWriter<IXMLVehicleWriter, IVehicleDeclarationInputData>(inputData.DataSource, inputData); + //throw new System.NotImplementedException(); + } + + public IXMLComponentWriter CreateComponentWriter(IComponentInputData inputData) + { + throw new NotImplementedException(); + } + + public IXMLComponentWriter CreateComponentWriter(IAuxiliariesDeclarationInputData inputData) + { + throw new NotImplementedException(); + } + + public IXMLComponentWriter CreateComponentWriter(IAxlesDeclarationInputData inputData) + { + throw new NotImplementedException(); + } + + public IXMLComponentWriter CreateComponentWriter(IAxleDeclarationInputData inputData) + { + throw new NotImplementedException(); + } + + public IXMLComponentWriter CreateComponentWriter(IAirdragDeclarationInputData inputData) + { + return _internalFactory.CreateComponentWriter<IXMLComponentWriter>(inputData.DataSource).Init(inputData); + } + + public IXMLBusAuxiliariesWriter CreateComponentWriter(IBusAuxiliariesDeclarationData inputData) + { + return _internalFactory.CreateComponentWriter<IXMLBusAuxiliariesWriter>(inputData.DataSource).Init(inputData); + } + + + public TWriter CreateComponentWriterWithVersion<TWriter>(XNamespace ns, string xsdType) + { + return _internalFactory.CreateComponentWriter<TWriter>(new DataSource() { + TypeVersion = ns.ToString(), + Type = xsdType, + }); + } + + public IXMLComponentWriter CreateComponentWriter(IPTOTransmissionInputData inputData) + { + throw new NotImplementedException(); + } + + public IXMLComponentsWriter CreateComponentsWriter(IVehicleComponentsDeclaration inputData) + { + throw new NotImplementedException(); + } + + public IXMLComponentsWriter CreateComponentsWriterWithVersion(XNamespace ns, string xsdType) + { + return _internalFactory.CreateComponentsWriter<IXMLComponentsWriter>(new DataSource() + { + TypeVersion = ns.ToString(), + Type = xsdType, + }); + } + + public IXMLComponentsWriter CreateComponentsWriterWithVersion(XNamespace ns, string xsdType, + IVehicleComponentsDeclaration inputData) + { + return CreateComponentsWriterWithVersion(ns, xsdType).Init(inputData); + } + + //public IXMLBusAuxiliariesWriter CreateBuxAuxiliariesWriter(IBusAuxiliariesDeclarationData inputData) + // { + // throw new NotImplementedException(); + // } + + + #endregion + } +} diff --git a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLAirDragWriter.cs b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLAirDragWriter.cs deleted file mode 100644 index 07e369e7a66d2915158042fa391d8354cf1665b9..0000000000000000000000000000000000000000 --- a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLAirDragWriter.cs +++ /dev/null @@ -1,87 +0,0 @@ -using System; -using System.Linq; -using System.Xml.Linq; -using TUGraz.VectoCommon.InputData; -using TUGraz.VectoCommon.Resources; -using VECTO3GUI2020.Helper; -using VECTO3GUI2020.Util.XML.Interfaces; -using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components; -using VECTO3GUI2020.ViewModel.MultiStage.Implementation; - -namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter -{ - public abstract class XMLAirDragWriter : IXMLComponentWriter - { - protected IAirdragDeclarationInputData _inputData; - protected XNamespace _defaultNamespace; - protected XElement _xElement; - protected string _uri = "ToDO-Add-id"; - - public XMLAirDragWriter(IAirdragDeclarationInputData inputData) - { - _inputData = inputData; - _uri = inputData.DigestValue?.Reference?.Replace("#",""); - if (_uri == null) { - _uri = "AirdragComponent" + Guid.NewGuid().ToString("n").Substring(0, 20); - } - } - - public XElement GetElement() - { - if (_xElement == null) { - - Initialize(); - CreateDataElements(); - var signatureElemnet = this.CreateSignatureElement(_defaultNamespace, _uri, _inputData.DigestValue); - _xElement.Add(signatureElemnet); - } - - return _xElement; - } - - public XElement GetElement(XNamespace wrapperNamespace) - { - throw new NotImplementedException(); - } - - protected abstract void Initialize(); - protected abstract void CreateDataElements(); - - - } - - public class XMLAirDragWriter_v2_0 : XMLAirDragWriter - { - public static readonly string[] SUPPORTED_VERSIONS = { - typeof(AirDragViewModel_v2_0).ToString(), - typeof(MultistageAirdragViewModel).ToString() - }; - public XMLAirDragWriter_v2_0(IAirdragDeclarationInputData inputData) : base(inputData) { } - protected override void CreateDataElements() - { - var dataElement = new XElement(_defaultNamespace + XMLNames.ComponentDataWrapper); - _xElement.Add(dataElement); - - dataElement.Add(new XAttribute(XMLNames.Component_ID_Attr, _uri), new XAttribute(XMLNamespaces.Xsi + XMLNames.Component_Type_Attr, "v2.0:" + - XMLNames.AirDrag_Data_Type_Attr)); - - dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_Manufacturer, _inputData.Manufacturer)); - dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_Model, _inputData.Model)); - dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_CertificationNumber, _inputData.CertificationNumber)); - dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_Date, _inputData.Date)); - dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_AppVersion, _inputData.AppVersion)); - dataElement.Add(new XElement(_defaultNamespace + XMLNames.AirDrag_CdxA_0, _inputData.AirDragArea_0.ToXMLFormat(2))); - dataElement.Add(new XElement(_defaultNamespace + XMLNames.AirDrag_TransferredCDxA, _inputData.TransferredAirDragArea.ToXMLFormat(2))); - dataElement.Add(new XElement(_defaultNamespace + XMLNames.AirDrag_DeclaredCdxA, _inputData.AirDragArea.ToXMLFormat(2))); - - - dataElement.DescendantsAndSelf().Where(e => string.IsNullOrEmpty(e.Value)).Remove(); - } - - protected override void Initialize() - { - _defaultNamespace = XMLNamespaces.V20; - _xElement = new XElement(XMLNames.Component_AirDrag); - } - } -} diff --git a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLAuxiliariesWriter.cs b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLAuxiliariesWriter.cs deleted file mode 100644 index aadcf95e8de288c0e7d0fa61dbb3fe40cba2cc71..0000000000000000000000000000000000000000 --- a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLAuxiliariesWriter.cs +++ /dev/null @@ -1,69 +0,0 @@ -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 VECTO3GUI2020.Util.XML.Interfaces; -using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components; - -namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter -{ - public abstract class XMLAuxiliariesWriter : IXMLComponentWriter - { - protected XNamespace _defaultNamespace; - protected XElement _xElement; - protected IAuxiliariesDeclarationInputData _inputData; - - public XMLAuxiliariesWriter(IAuxiliariesDeclarationInputData inputData) - { - _inputData = inputData; - } - - public XElement GetElement() - { - if (_xElement == null) { - Initialize(); - CreateElements(); - } - - return _xElement; - } - public abstract void Initialize(); - - public abstract void CreateElements(); - } - - public class XMLAuxiliariesWriter_v2_0 : XMLAuxiliariesWriter - { - - public static readonly string[] SUPPORTED_VERSIONS = { - typeof(AuxiliariesViewModel_v2_0).ToString() - }; - - public XMLAuxiliariesWriter_v2_0(IAuxiliariesDeclarationInputData inputData) : base(inputData) { } - - public override void CreateElements() - { - var dataElement = new XElement(_defaultNamespace + XMLNames.ComponentDataWrapper); - _xElement.Add(dataElement); - - dataElement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Component_Type_Attr, XMLNames.Auxiliaries_Type_Attr_DataDeclarationType)); - - foreach (var auxiliary in _inputData.Auxiliaries) { - var auxElement = new XElement(_defaultNamespace + auxiliary.Type.ToString()); - auxElement.Add(new XElement(_defaultNamespace + XMLNames.Auxiliaries_Auxiliary_Technology, - auxiliary.Technology[0])); - dataElement.Add(auxElement); - } - } - - public override void Initialize() - { - _defaultNamespace = XMLNamespaces.V20; - _xElement = new XElement(_defaultNamespace + XMLNames.Component_Auxiliaries); - } - } -} diff --git a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLAxleGearWriter.cs b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLAxleGearWriter.cs deleted file mode 100644 index d687eb07adb2732548f1aa3ebf22b92144a04d35..0000000000000000000000000000000000000000 --- a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLAxleGearWriter.cs +++ /dev/null @@ -1,92 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Data; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Xml.Linq; -using TUGraz.VectoCommon.InputData; -using TUGraz.VectoCommon.Models; -using TUGraz.VectoCommon.Resources; -using TUGraz.VectoCommon.Utils; -using VECTO3GUI2020.Helper; -using VECTO3GUI2020.Util.XML.Interfaces; -using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components; - -namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter -{ - public abstract class XMLAxleGearWriter : IXMLComponentWriter - { - protected XElement _xElement; - protected IAxleGearInputData _inputData; - protected XNamespace _defaultNamespace; - protected string _uri = "ToDO-ADD_URI"; - - public XMLAxleGearWriter(IAxleGearInputData inputData) - { - _inputData = inputData; - - - } - - public abstract void Initialize(); - public abstract void CreateDataElements(); - - public XElement GetElement() - { - if (_xElement == null) { - Initialize(); - CreateDataElements(); - _xElement.Add(this.CreateSignatureElement(_defaultNamespace, _uri, _inputData.DigestValue)); - } - return _xElement; - } - } - - public class XMLAxleGearWriter_v2_0 : XMLAxleGearWriter - { - public static readonly string[] SUPPORTED_VERSIONS = { - typeof(AxleGearViewModel_v2_0).ToString() - }; - - - public XMLAxleGearWriter_v2_0(IAxleGearInputData inputData) : base(inputData) - { - - } - - - public override void Initialize() - { - _defaultNamespace = XML.XMLNamespaces.V20; - _xElement = new XElement(_defaultNamespace + XMLNames.Component_Axlegear); - } - - public override void CreateDataElements() - { - var dataElement = new XElement(_defaultNamespace + XMLNames.ComponentDataWrapper); - _xElement.Add(dataElement); - - dataElement.Add(new XAttribute(XMLNames.Component_ID_Attr, _uri)); - dataElement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Component_Type_Attr, XMLNames.AxleGear_Type_Attr)); - dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_Manufacturer, _inputData.Manufacturer)); - dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_Model, _inputData.Model)); - dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_CertificationNumber, _inputData.CertificationNumber)); - dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_Date, _inputData.Date)); - dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_AppVersion, _inputData.AppVersion)); - dataElement.Add(new XElement(_defaultNamespace + XMLNames.Axlegear_LineType, _inputData.LineType.ToXMLFormat())); - dataElement.Add(new XElement(_defaultNamespace + XMLNames.AngleDrive_Ratio, _inputData.Ratio.ToXMLFormat(3))); - dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_CertificationMethod, _inputData.CertificationMethod.ToXMLFormat())); - - var torqueLossMap = new XElement(_defaultNamespace + XMLNames.Axlegear_TorqueLossMap); - dataElement.Add(torqueLossMap); - foreach (DataRow row in _inputData.LossMap.Rows) { - var entry = new XElement(_defaultNamespace + XMLNames.Axlegear_TorqueLossMap_Entry); - entry.Add(new XAttribute(XMLNames.TransmissionLossmap_InputSpeed_Attr, row[0].ToString())); - entry.Add(new XAttribute(XMLNames.TransmissionLossmap_InputTorque_Attr, row[1].ToString())); - entry.Add(new XAttribute(XMLNames.TransmissionLossmap_TorqueLoss_Attr, row[2].ToString())); - torqueLossMap.Add(entry); - } - } - } -} diff --git a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLAxleWheelWriter.cs b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLAxleWheelWriter.cs deleted file mode 100644 index f52ba462826299b408bb0f7ef5b2fc9e6ea5e585..0000000000000000000000000000000000000000 --- a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLAxleWheelWriter.cs +++ /dev/null @@ -1,68 +0,0 @@ -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 VECTO3GUI2020.Util.XML.Interfaces; -using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components; - -namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter -{ - public abstract class XMLAxleWheelWriter : IXMLComponentWriter - { - protected IXMLWriterFactory _writerFactory; - protected IAxleDeclarationInputData _inputData; - - protected XNamespace _defaultNamespace; - - protected XElement _xElement; - public XMLAxleWheelWriter(IAxleDeclarationInputData inputData, IXMLWriterFactory writerFactory) - { - _inputData = inputData; - _writerFactory = writerFactory; - } - - public XElement GetElement() - { - if (_xElement == null) { - Initialize(); - CreateElement(); - } - - return _xElement; - } - - protected abstract void CreateElement(); - protected abstract void Initialize(); - } - - - public class XMLAxleWheelWriter_v2_0 : XMLAxleWheelWriter - { - public static readonly string[] SUPPORTED_VERSIONS = { - typeof(AxleViewModel_v2_0).ToString() - }; - public XMLAxleWheelWriter_v2_0(IAxleDeclarationInputData inputData, IXMLWriterFactory writerFactory) : base(inputData, writerFactory) { } - - protected override void CreateElement() - { - _xElement.Add(new XAttribute(XMLNames.AxleWheels_Axles_Axle_AxleNumber_Attr, 0));//_inputData.AxleNumber)); - _xElement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Component_Type_Attr, XMLNames.Axle_Type_Attr_AxleDataDeclarationType)); - _xElement.Add(new XElement(_defaultNamespace + XMLNames.AxleWheels_Axles_Axle_AxleType, _inputData.AxleType)); - _xElement.Add(new XElement(_defaultNamespace + XMLNames.AxleWheels_Axles_Axle_TwinTyres, _inputData.TwinTyres)); - _xElement.Add(new XElement(_defaultNamespace + XMLNames.AxleWheels_Axles_Axle_Steered, false)); //_inputData.Steered)); - - _xElement.Add(_writerFactory.CreateComponentWriter(_inputData.Tyre).GetElement()); - } - - protected override void Initialize() - { - - _defaultNamespace = XML.XMLNamespaces.V20; - _xElement = new XElement(_defaultNamespace + XMLNames.AxleWheels_Axles_Axle); - } - } -} diff --git a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLAxleWheelsWriter.cs b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLAxleWheelsWriter.cs deleted file mode 100644 index 9692c640c49e5768fbef6a98b2272a12016c933a..0000000000000000000000000000000000000000 --- a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLAxleWheelsWriter.cs +++ /dev/null @@ -1,70 +0,0 @@ -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 VECTO3GUI2020.Helper; -using VECTO3GUI2020.Util.XML.Interfaces; -using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components; - -namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter -{ - public abstract class XMLAxleWheelsWriter : IXMLComponentWriter - { - protected XElement _xElement; - protected XNamespace _defaultNameSpace; - protected IAxlesDeclarationInputData _inputData; - protected IXMLWriterFactory _writerFactory; - - protected XMLAxleWheelsWriter(IAxlesDeclarationInputData inputData, IXMLWriterFactory writerFactory) - { - _inputData = inputData; - _writerFactory = writerFactory; - } - - public XElement GetElement() - { - if (_xElement == null) { - Initialize(); - CreateDataElements(); - } - - return _xElement; - } - - public abstract void CreateDataElements(); - public abstract void Initialize(); - } - - - public class XMLAxleWheelsWriter_v2_0 : XMLAxleWheelsWriter - { - public static readonly string[] SUPPORTED_VERSIONS = { - typeof(AxleWheelsViewModel_v2_0).ToString() - }; - public override void CreateDataElements() - { - _xElement.Add(new XElement(_defaultNameSpace + XMLNames.ComponentDataWrapper)); - var dataElement = _xElement.LastNode as XElement; - - dataElement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Component_Type_Attr, XMLNames.AxleWheels_Type_Attr_AxleWheelsDeclarationType)); - - dataElement.Add(new XElement(_defaultNameSpace + XMLNames.AxleWheels_Axles)); - var axles = dataElement.LastNode as XElement; - foreach (var axle in _inputData.AxlesDeclaration) { - axles.Add(_writerFactory.CreateComponentWriter(axle).GetElement()); - } - } - - public override void Initialize() - { - _defaultNameSpace = XML.XMLNamespaces.V20; - _xElement = new XElement(_defaultNameSpace + XMLNames.Component_AxleWheels); - } - - public XMLAxleWheelsWriter_v2_0(IAxlesDeclarationInputData inputData, IXMLWriterFactory writerFactory) : base(inputData, writerFactory) { } - } -} diff --git a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLBusAuxiliariesWriter.cs b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLBusAuxiliariesWriter.cs deleted file mode 100644 index d26aba13d57821cf8ebdb23559612c6f983273ab..0000000000000000000000000000000000000000 --- a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLBusAuxiliariesWriter.cs +++ /dev/null @@ -1,178 +0,0 @@ -using System.Linq; -using System.Xml.Linq; - -using TUGraz.VectoCommon.BusAuxiliaries; -using TUGraz.VectoCommon.InputData; -using TUGraz.VectoCommon.Resources; -using TUGraz.VectoCore.OutputData.XML.GroupWriter; -using VECTO3GUI2020.Util.XML.Interfaces; - -namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter -{ - public interface IXMLBusAuxiliariesWriter : IXMLComponentWriter - { - - } - - public abstract class XMLBusAuxiliariesWriter : IXMLBusAuxiliariesWriter - { - protected readonly IBusAuxiliariesDeclarationData _inputData; - protected XElement _xElement; - - protected XMLBusAuxiliariesWriter(IBusAuxiliariesDeclarationData inputData) - { - _inputData = inputData; - } - - public XElement GetElement() - { - if (_xElement == null) - { - Initialize(); - CreateElements(); - } - - return _xElement; - } - - public XElement GetElement(XNamespace wrapperNamespace) - { - throw new System.NotImplementedException(); - } - - public abstract void Initialize(); - - public abstract void CreateElements(); - } - - - - public class XMLBusAuxiliariesWriterMultistage : XMLBusAuxiliariesWriter - { - - - private XNamespace _defaultNamespace; - private readonly IGroupWriterFactory _groupWriterFactory; - - public XMLBusAuxiliariesWriterMultistage(IBusAuxiliariesDeclarationData inputData, - IGroupWriterFactory groupWriterFactory) : base(inputData) - { - _groupWriterFactory = groupWriterFactory; - } - - #region Overrides of XMLBusAuxiliariesWriter - - public override void Initialize() - { - _defaultNamespace = XMLNamespaces.V24; - _xElement = new XElement(_defaultNamespace + XMLNames.Component_Auxiliaries); - } - - public override void CreateElements() - { - CreateElementsWithGroupWriters(); - return; - - - var dataElement = new XElement(_defaultNamespace + XMLNames.ComponentDataWrapper, - new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, "CompletedVehicleAuxiliaryDataDeclarationType")); - _xElement.Add(dataElement); - - - if (_inputData.ElectricConsumers != null) { - var electricSystemElement = new XElement(_defaultNamespace + XMLNames.BusAux_ElectricSystem); - var ledLightsElement = new XElement(_defaultNamespace + "LEDLights"); - ledLightsElement.Add(new XElement(_defaultNamespace + XMLNames.Bus_Interiorlights, _inputData.ElectricConsumers.InteriorLightsLED)); - ledLightsElement.Add(new XElement(_defaultNamespace + XMLNames.Bus_Dayrunninglights, _inputData.ElectricConsumers.DayrunninglightsLED)); - ledLightsElement.Add(new XElement(_defaultNamespace + XMLNames.Bus_Positionlights, _inputData.ElectricConsumers.PositionlightsLED)); - ledLightsElement.Add(new XElement(_defaultNamespace + XMLNames.Bus_Brakelights, _inputData.ElectricConsumers.BrakelightsLED)); - ledLightsElement.Add(new XElement(_defaultNamespace + XMLNames.Bus_Headlights, _inputData.ElectricConsumers.HeadlightsLED)); - electricSystemElement.Add(ledLightsElement); - dataElement.Add(electricSystemElement); - } - - if (_inputData.HVACAux != null) { - var hvacElement = new XElement(_defaultNamespace + "HVAC"); - hvacElement.Add(new XElement(_defaultNamespace + XMLNames.Bus_SystemConfiguration, _inputData.HVACAux.SystemConfiguration.ToXmlFormat())); - - hvacElement.Add(GetHeatPumpGroupElement( - xmlNameWrapper:XMLNames.Bus_HeatPumpTypeDriver, - xmlNameFirstComponent:XMLNames.BusHVACHeatPumpCooling, - firstValue:_inputData.HVACAux.HeatPumpTypeCoolingDriverCompartment.GetLabel(), - xmlNameSecondComponent:XMLNames.BusHVACHeatPumpHeating, - secondValue:_inputData.HVACAux.HeatPumpTypeHeatingDriverCompartment.GetLabel())); - - hvacElement.Add(GetHeatPumpGroupElement( - xmlNameWrapper: XMLNames.Bus_HeatPumpTypePassenger, - xmlNameFirstComponent: XMLNames.BusHVACHeatPumpCooling, - firstValue: _inputData.HVACAux.HeatPumpTypeCoolingPassengerCompartment.GetLabel(), - xmlNameSecondComponent: XMLNames.BusHVACHeatPumpHeating, - secondValue: _inputData.HVACAux.HeatPumpTypeHeatingPassengerCompartment.GetLabel())); - - - hvacElement.Add(new XElement(_defaultNamespace + XMLNames.Bus_AuxiliaryHeaterPower, _inputData.HVACAux.AuxHeaterPower?.ToXMLFormat(0))); - hvacElement.Add(new XElement(_defaultNamespace + XMLNames.Bus_DoubleGlazing, _inputData.HVACAux.DoubleGlazing)); - hvacElement.Add(new XElement(_defaultNamespace + XMLNames.Bus_AdjustableAuxiliaryHeater, _inputData.HVACAux.AdjustableAuxiliaryHeater)); - hvacElement.Add(new XElement(_defaultNamespace + XMLNames.Bus_SeparateAirDistributionDucts, _inputData.HVACAux.SeparateAirDistributionDucts)); - hvacElement.Add(new XElement(_defaultNamespace + XMLNames.Bus_WaterElectricHeater, _inputData.HVACAux.WaterElectricHeater)); - hvacElement.Add(new XElement(_defaultNamespace + XMLNames.Bus_AirElectricHeater, _inputData.HVACAux.AirElectricHeater)); - hvacElement.Add(new XElement(_defaultNamespace + XMLNames.Bus_OtherHeatingTechnology, _inputData.HVACAux.OtherHeatingTechnology)); - dataElement.Add(hvacElement); - } - - dataElement.DescendantsAndSelf().Where(e => string.IsNullOrEmpty(e.Value)).Remove(); - } - - private void CreateElementsWithGroupWriters() - { - - var dataElement = new XElement(_defaultNamespace + XMLNames.ComponentDataWrapper, - new XAttribute("xmlns" , XMLNamespaces.V24), - new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, "AUX_Conventional_CompletedBusType")); - - if (_inputData.ElectricConsumers != null) { - var electricSystemElement = new XElement(_defaultNamespace + XMLNames.BusAux_ElectricSystem); - var ledLightsElement = new XElement(_defaultNamespace + "LEDLights"); - ledLightsElement.Add( - // ReSharper disable once CoVariantArrayConversion - _groupWriterFactory.GetBusAuxiliariesDeclarationGroupWriter(GroupNames.BusAuxElectricSystemLightsGroup, _defaultNamespace) - .GetGroupElements(_inputData)); - electricSystemElement.Add(ledLightsElement); - dataElement.Add(electricSystemElement); - - } - - if (_inputData.HVACAux != null) { - var hvacElement = new XElement(_defaultNamespace + "HVAC"); - hvacElement.Add(_groupWriterFactory.GetBusAuxiliariesDeclarationGroupWriter(GroupNames.BusAuxHVACConventionalSequenceGroup, _defaultNamespace) - .GetGroupElements(_inputData)); - dataElement.Add(hvacElement); - } - - _xElement.Add(dataElement); - - } - - private XElement GetHeatPumpTypeElement(string xmlName, string value) - { - if (value == "~null~") - { - value = null; - } - return new XElement(_defaultNamespace + xmlName, value); - } - - private XElement GetHeatPumpGroupElement(string xmlNameWrapper, string xmlNameFirstComponent, - string xmlNameSecondComponent, string firstValue, string secondValue) - { - var element = new XElement(_defaultNamespace + xmlNameWrapper, - new XElement(_defaultNamespace + xmlNameFirstComponent, firstValue), - new XElement(_defaultNamespace + xmlNameSecondComponent, secondValue)); - - return element; - } - - - #endregion - } -} \ No newline at end of file diff --git a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLComponentsWriter.cs b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLComponentsWriter.cs deleted file mode 100644 index db6943a1f19d80c5993e1b9ad340085ac11eef99..0000000000000000000000000000000000000000 --- a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLComponentsWriter.cs +++ /dev/null @@ -1,144 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Xml.Linq; -using TUGraz.IVT.VectoXML.Writer; -using TUGraz.VectoCommon.InputData; -using TUGraz.VectoCommon.Resources; -using TUGraz.VectoCommon.Utils; -using VECTO3GUI2020.Util.XML.Interfaces; -using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components; -using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle.Components; -using EnvironmentVariableTarget = System.EnvironmentVariableTarget; - -namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter -{ - public abstract class XMLComponentsWriter : IXMLComponentsWriter - { - protected IXMLWriterFactory _xMLWriterFactory; - - protected XElement _xElement; - - protected static string _name = "Components"; - protected static readonly string _declarationDefinition = "urn:tugraz:ivt:VectoAPI:DeclarationDefinitions"; - protected static readonly XNamespace _xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance"); - protected static readonly XNamespace _v10 = _declarationDefinition + ":v1.0"; - protected static readonly XNamespace _v20 = _declarationDefinition + ":v2.0"; - protected XNamespace _defaultNamespace; - protected IVehicleComponentsDeclaration _inputData; - - - public XMLComponentsWriter(IVehicleComponentsDeclaration inputData, IXMLWriterFactory xMLWriterFactory) - { - _inputData = inputData; - _xMLWriterFactory = xMLWriterFactory; - Initialize(); - CreateComponents(); - } - - - protected abstract void CreateComponents(); - public abstract XElement GetComponents(); - public abstract void Initialize(); - - - } - - public class XMLComponentsWriter_v1_0 : XMLComponentsWriter - { - - public static readonly string[] SUPPORTED_VERSIONS = { - typeof(ComponentsViewModel_v1_0).ToString() - }; - public XMLComponentsWriter_v1_0(IVehicleComponentsDeclaration inputData, IXMLWriterFactory xMLWriterFactory) : - base(inputData, xMLWriterFactory) - { - - } - - protected override void CreateComponents() - { - throw new NotImplementedException(); - } - - public override XElement GetComponents() - { - throw new NotImplementedException(); - } - - public override void Initialize() - { - _defaultNamespace = _v10; - } - } - - - public class XMLComponentsWriter_v2_0 : XMLComponentsWriter_v1_0 - { - public new static readonly string[] SUPPORTED_VERSIONS = { - typeof(ComponentsViewModel_v2_0).ToString() - }; - - public XMLComponentsWriter_v2_0(IVehicleComponentsDeclaration inputData, IXMLWriterFactory xMLWriterFactory) : - base(inputData, xMLWriterFactory) - { - - } - - - protected override void CreateComponents() - { - Debug.Assert(_inputData is IComponentsViewModel); - IXMLComponentWriter writer; - if (_inputData.EngineInputData != null) { - writer = _xMLWriterFactory.CreateComponentWriter(_inputData.EngineInputData); - _xElement.Add(writer.GetElement()); - } - - if (_inputData.GearboxInputData != null) { - writer = _xMLWriterFactory.CreateComponentWriter(_inputData.GearboxInputData); - _xElement.Add(writer.GetElement()); - } - - if (_inputData.RetarderInputData != null) { - writer = _xMLWriterFactory.CreateComponentWriter(_inputData.RetarderInputData); - _xElement.Add(writer.GetElement()); - } - - if (_inputData.AxleGearInputData != null) { - writer = _xMLWriterFactory.CreateComponentWriter(_inputData.AxleGearInputData); - _xElement.Add(writer.GetElement()); - } - - if (_inputData.AxleWheels != null) { - writer = _xMLWriterFactory.CreateComponentWriter(_inputData.AxleWheels); - _xElement.Add(writer.GetElement()); - } - - if (_inputData.AuxiliaryInputData != null) { - writer = _xMLWriterFactory.CreateComponentWriter(_inputData.AuxiliaryInputData); - _xElement.Add(writer.GetElement()); - } - - if (_inputData.AirdragInputData != null) { - writer = _xMLWriterFactory.CreateComponentWriter(_inputData.AirdragInputData); - _xElement.Add(writer.GetElement()); - } - } - - public override XElement GetComponents() - { - return _xElement; - } - - public override void Initialize() - { - _defaultNamespace = XMLNamespaces.V20; - _xElement = new XElement(_defaultNamespace + XMLNames.Vehicle_Components); - _xElement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, XMLNames.Components_type_attr)); - } - } -} diff --git a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLEngineWriter.cs b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLEngineWriter.cs deleted file mode 100644 index e4a5e37542bc1d543feda92d6e24ebf6e8939969..0000000000000000000000000000000000000000 --- a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLEngineWriter.cs +++ /dev/null @@ -1,160 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Data; -using System.Diagnostics; -using System.Linq; -using System.Reflection; -using System.Text; -using System.Threading.Tasks; -using System.Xml.Linq; -using TUGraz.VectoCommon.InputData; -using TUGraz.VectoCommon.Models; -using TUGraz.VectoCommon.Resources; -using TUGraz.VectoCommon.Utils; -using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; -using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; -using TUGraz.VectoCore.Utils; -using VECTO3GUI2020.Helper; -using VECTO3GUI2020.Util.XML.Interfaces; -using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components; - -namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter -{ - public abstract class XMLEngineWriter : IXMLComponentWriter - { - protected XElement _xElement; - protected XNamespace _defaultNameSpace; - protected readonly IEngineDeclarationInputData _inputData; - protected string id = "toDo-Add-Identifier"; - - public XMLEngineWriter(IEngineDeclarationInputData inputData) - { - _inputData = inputData; - } - - public virtual XElement GetElement() - { - if (_xElement == null) { - Initialize(); - CreateDataElements(); - _xElement.Add(this.CreateSignatureElement(_defaultNameSpace, id, _inputData.DigestValue)); - } - - return _xElement; - } - - protected abstract void Initialize(); - protected abstract void CreateDataElements(); - - - } - - public class XMLEngineWriter_v1_0 : XMLEngineWriter - { - - public static readonly string[] SUPPORTED_VERSIONS = { - typeof(EngineViewModel_v1_0).ToString() - }; - - - public override XElement GetElement() - { - throw new NotImplementedException(); - } - - protected override void Initialize() - { - throw new NotImplementedException(); - } - - protected override void CreateDataElements() - { - throw new NotImplementedException(); - } - - public XMLEngineWriter_v1_0(IEngineDeclarationInputData inputData) : base(inputData) { } - } - - public class XMLEngineWriter_v2_0 : XMLEngineWriter - { - private static XNamespace _v20 = XML.XMLNamespaces.V20; - public static readonly string[] SUPPORTED_VERSIONS = { - typeof(EngineViewModel_v2_0).ToString(), - }; - - protected override void Initialize() - { - _defaultNameSpace = _v20; - _xElement = new XElement(_defaultNameSpace + XMLNames.Component_Engine); - } - - protected override void CreateDataElements() - { - var _dataXElement = new XElement(_defaultNameSpace + XMLNames.ComponentDataWrapper); - _xElement.Add(_dataXElement); - _dataXElement.Add(new XAttribute(XMLNames.Component_ID_Attr, id)); - _dataXElement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Component_Type_Attr, XMLNames.Engine_Type_Attr)); - - Debug.Assert(_xElement != null); - _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_Manufacturer, _inputData.Manufacturer)); - _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_Model, _inputData.Model)); - _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_CertificationNumber, - _inputData.CertificationNumber)); - _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_Date, _inputData.Date)); - _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_AppVersion, _inputData.AppVersion)); - _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Engine_Displacement, _inputData.Displacement.ConvertToCubicCentiMeter().ToXMLFormat(0))); - _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Engine_IdlingSpeed, "100")); - _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Engine_RatedSpeed, _inputData.RatedSpeedDeclared.AsRPM.ToXMLFormat(0))); - _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Engine_RatedPower, _inputData.RatedPowerDeclared.ToXMLFormat(0))); - _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Engine_MaxTorque, _inputData.MaxTorqueDeclared.ToXMLFormat(0))); - - Debug.Assert(_inputData.EngineModes.Count == 1, "Only 1 Engine Mode supported in XMLEngineWriter_v2_0"); - var mode = _inputData.EngineModes[0]; - - Debug.Assert(mode.Fuels.Count == 1, "Only one fuel supported in XMLEngineWriter_v2_0"); - var fuel = mode.Fuels[0]; - - _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Engine_WHTCUrban, fuel.WHTCUrban.ToXMLFormat(4))); - _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Engine_WHTCRural, fuel.WHTCRural.ToXMLFormat(4))); - _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Engine_WHTCMotorway, fuel.WHTCMotorway.ToXMLFormat(4))); - - _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Engine_ColdHotBalancingFactor, fuel.ColdHotBalancingFactor.ToXMLFormat(4))); - _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Engine_CorrectionFactor_RegPer, fuel.CorrectionFactorRegPer.ToXMLFormat(4))); - - - _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Engine_CorrecionFactor_NCV, "1.0000")); - - _dataXElement.Add(new XElement(_defaultNameSpace + XMLNames.Engine_FuelType, fuel.FuelType.ToXMLFormat())); - - var fuelConsumptionMapElement = new XElement(_defaultNameSpace + XMLNames.Engine_FuelConsumptionMap); - var tableData = fuel.FuelConsumptionMap; - - foreach (DataRow fuelEntry in tableData.Rows) { - var entry = new XElement(_defaultNameSpace + XMLNames.Engine_FuelConsumptionMap_Entry); - entry.Add(new XAttribute(XMLNames.Engine_FuelConsumptionMap_EngineSpeed_Attr, fuelEntry.ItemArray[0])); - entry.Add(new XAttribute(XMLNames.Engine_FuelConsumptionMap_Torque_Attr, fuelEntry.ItemArray[1])); - entry.Add(new XAttribute(XMLNames.Engine_FuelConsumptionMap_FuelConsumption_Attr, fuelEntry.ItemArray[2])); - fuelConsumptionMapElement.Add(entry); - } - _dataXElement.Add(fuelConsumptionMapElement); - - var fullLoadAndDragCurveElement = new XElement(_defaultNameSpace + XMLNames.Engine_FullLoadAndDragCurve); - tableData = mode.FullLoadCurve; - foreach (DataRow loadAndDragEntry in tableData.Rows) { - var entry = new XElement(_defaultNameSpace + XMLNames.Engine_FullLoadCurve_Entry); - entry.Add(new XAttribute(XMLNames.Engine_EngineFullLoadCurve_EngineSpeed_Attr, loadAndDragEntry.ItemArray[0])); - entry.Add(new XAttribute(XMLNames.Engine_FullLoadCurve_MaxTorque_Attr, loadAndDragEntry.ItemArray[1])); - entry.Add(new XAttribute(XMLNames.Engine_FullLoadCurve_DragTorque_Attr, loadAndDragEntry.ItemArray[2])); - fullLoadAndDragCurveElement.Add(entry); - } - _dataXElement.Add(fullLoadAndDragCurveElement); - } - - - - public XMLEngineWriter_v2_0(IEngineDeclarationInputData inputData) : base(inputData) - { - - } - } -} diff --git a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLGearboxWriter.cs b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLGearboxWriter.cs deleted file mode 100644 index 4fed42688b1d8666740e171164e99f0e9d930e58..0000000000000000000000000000000000000000 --- a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLGearboxWriter.cs +++ /dev/null @@ -1,110 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Data; -using System.Diagnostics; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Xml.Linq; -using TUGraz.VectoCommon.InputData; -using TUGraz.VectoCommon.Models; -using TUGraz.VectoCommon.Resources; -using TUGraz.VectoCommon.Utils; -using VECTO3GUI2020.Helper; -using VECTO3GUI2020.Util.XML.Interfaces; -using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components; - -namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter -{ - public abstract class XMLGearboxWriter : IXMLComponentWriter - { - protected IGearboxDeclarationInputData _inputData; - protected XElement _xElement; - protected XNamespace _defaultNameSpace; - protected string _uri = "toDo-Adduri"; - - public XMLGearboxWriter(IGearboxDeclarationInputData inputData) - { - - _inputData = inputData; - } - - public virtual XElement GetElement() - { - if (_xElement == null) { - Initialize(); - CreateDataElements(); - _xElement.Add(this.CreateSignatureElement(_defaultNameSpace, _uri, _inputData.DigestValue)); - } - return _xElement; - } - - protected abstract void Initialize(); - protected abstract void CreateDataElements(); - } - public class XMLGearboxWriter_v2_0 : XMLGearboxWriter - { - public static readonly string[] SUPPORTED_VERSIONS = { - typeof(GearboxViewModel_v2_0).ToString() - }; - - public XMLGearboxWriter_v2_0(IGearboxDeclarationInputData inputData) : base(inputData) - { - } - - protected override void Initialize() - { - _defaultNameSpace = XML.XMLNamespaces.V20; - _xElement = new XElement(_defaultNameSpace + XMLNames.Component_Gearbox); - } - - protected override void CreateDataElements() - { - var dataElement = new XElement(_defaultNameSpace + XMLNames.ComponentDataWrapper); - _xElement.Add(dataElement); - dataElement.Add(new XAttribute(XMLNames.Component_ID_Attr, _uri)); - dataElement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Component_Type_Attr, XMLNames.Gearbox_attr_GearboxDataDeclarationType)); - dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_Manufacturer, _inputData.Manufacturer)); - dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_Model, _inputData.Model)); - dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_CertificationNumber, _inputData.CertificationNumber)); - dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_Date, _inputData.Date)); - dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_AppVersion, _inputData.AppVersion)); - dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Gearbox_TransmissionType, _inputData.Type.ToXMLFormat())); - dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_Gearbox_CertificationMethod, _inputData.CertificationMethod.ToXMLFormat())); - - dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Gearbox_Gears)); - var gearsElement = dataElement.LastNode as XElement; - gearsElement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, XMLNames.Gearbox_Gears_Attr_GearsDeclarationType)); - foreach (var gear in _inputData.Gears) { - gearsElement.Add(new XElement(_defaultNameSpace + XMLNames.Gearbox_Gears_Gear)); - var gearElement = gearsElement.LastNode as XElement; - //var gearElement = new XElement(_defaultNameSpace + XMLNames.Gearbox_Gears_Gear); - //gearsElement.Add(gearElement); - gearElement.Add(new XAttribute(XMLNames.Gearbox_Gear_GearNumber_Attr, gear.Gear)); - gearElement.Add(new XElement(_defaultNameSpace + XMLNames.Gearbox_Gear_Ratio, gear.Ratio.ToXMLFormat(3))); - - if (gear.MaxTorque != null) { - gearElement.Add(new XElement(_defaultNameSpace + XMLNames.Gearbox_Gears_MaxTorque, gear.MaxTorque)); - } - - if (gear.MaxInputSpeed != null) { - gearElement.Add(new XElement(_defaultNameSpace + XMLNames.Gearbox_Gear_MaxSpeed, gear.MaxInputSpeed)); - } - - var torqueLossMapElement = new XElement(_defaultNameSpace + XMLNames.Gearbox_Gear_TorqueLossMap); - gearElement.Add(torqueLossMapElement); - foreach (DataRow torquelossEntry in gear.LossMap.Rows) { - var entry = new XElement(_defaultNameSpace + XMLNames.Gearbox_Gear_TorqueLossMap_Entry); - torqueLossMapElement.Add(entry); - entry.Add(new XAttribute(XMLNames.TransmissionLossmap_InputSpeed_Attr, torquelossEntry[0].ToString())); - entry.Add(new XAttribute(XMLNames.TransmissionLossmap_InputTorque_Attr, torquelossEntry[1].ToString())); - entry.Add(new XAttribute(XMLNames.TransmissionLossmap_TorqueLoss_Attr, torquelossEntry[2].ToString())); - - } - } - Debug.WriteLine(_xElement.ToString()); - } - - - } -} diff --git a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLPTOWriter.cs b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLPTOWriter.cs deleted file mode 100644 index e6794a06e0ff0fee1ae506af44980f96bcb6186b..0000000000000000000000000000000000000000 --- a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLPTOWriter.cs +++ /dev/null @@ -1,85 +0,0 @@ -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.InputData.FileIO.XML.Declaration.Reader; -using VECTO3GUI2020.Util.XML.Interfaces; -using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components; - -namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter -{ - public abstract class XMLPTOWriter : IXMLComponentWriter - { - protected XElement _xElement; - protected XNamespace _defaultNamespace; - private IPTOTransmissionInputData _inputData; - - public XMLPTOWriter(IPTOTransmissionInputData inputData) - { - _inputData = inputData; - Initialize(); - CreateElements(); - } - - - - public XElement GetElement() - { - return _xElement; - } - - protected abstract void Initialize(); - protected abstract void CreateElements(); - } - - public class XMLPTOWriter_v1_0 : XMLPTOWriter - { - public static readonly string[] SUPPORTED_VERSIONS = { - typeof(PTOViewModel_V1_0).ToString() - }; - - public XMLPTOWriter_v1_0(IPTOTransmissionInputData inputData) : base(inputData) { } - - protected override void Initialize() - { - - throw new NotImplementedException(); - } - - protected override void CreateElements() - { - throw new NotImplementedException(); - } - } - - - - - public class XMLPTOWriter_v2_0 : XMLPTOWriter_v1_0 - { - public static readonly string[] SUPPORTED_VERSIONS = { - typeof(PTOViewModel_V2_0).ToString() - }; - - public XMLPTOWriter_v2_0(IPTOTransmissionInputData inputData) : base(inputData) { } - - protected override void Initialize() - { - _defaultNamespace = XMLNamespaces.V20; - _xElement = new XElement(_defaultNamespace + XMLNames.Vehicle_PTO); - _xElement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, XMLNames.Component_Type_Attr_PTO)); - } - - protected override void CreateElements() - { - _xElement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_PTO_ShaftsGearWheels, "none")); - _xElement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_PTO_OtherElements, "none")); - } - } - - -} diff --git a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLRetarderWriter.cs b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLRetarderWriter.cs deleted file mode 100644 index f75d43a420b938fe62e3b6c374b85842c7b4999c..0000000000000000000000000000000000000000 --- a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLRetarderWriter.cs +++ /dev/null @@ -1,106 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Data; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Xml.Linq; -using TUGraz.VectoCommon.InputData; -using TUGraz.VectoCommon.Models; -using TUGraz.VectoCommon.Resources; -using VECTO3GUI2020.Helper; -using VECTO3GUI2020.Util.XML.Interfaces; -using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components; - -namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter -{ - public abstract class XMLRetarderWriter : IXMLComponentWriter - { - protected XElement _xElement; - protected IRetarderInputData _inputData; - protected XNamespace _defaultNameSpace; - protected string _uri = "toTo-Add-URI"; - - public XMLRetarderWriter(IRetarderInputData inputData) - { - _inputData = inputData; - } - - protected abstract void Initialize(); - protected abstract void CreateDataElements(); - - public XElement GetElement() - { - if (_xElement == null) { - Initialize(); - CreateDataElements(); - _xElement.Add(this.CreateSignatureElement(_defaultNameSpace, _uri, _inputData.DigestValue)); - } - return _xElement; - } - } - - public class XMLRetarderWriter_v1_0 : XMLRetarderWriter - { - public static readonly string[] SUPPORTED_VERSIONS = { - typeof(RetarderViewModel_v1_0).ToString() - }; - - protected override void Initialize() - { - _defaultNameSpace = XML.XMLNamespaces.V10; - _xElement = new XElement(_defaultNameSpace + XMLNames.Component_Retarder); - } - - protected override void CreateDataElements() - { - var dataElement = new XElement(_defaultNameSpace + XMLNames.ComponentDataWrapper); - _xElement.Add(dataElement); - - dataElement.Add(new XAttribute(XMLNames.Component_ID_Attr, _uri)); - dataElement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, XMLNames.Retarder_Attr_DataDeclarationType)); - dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_Manufacturer, _inputData.Manufacturer)); - dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_Model, _inputData.Model)); - dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_CertificationNumber, _inputData.CertificationNumber)); - dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_Date, _inputData.Date)); - dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_AppVersion, _inputData.AppVersion)); - dataElement.Add(new XElement(_defaultNameSpace + XMLNames.Component_CertificationMethod, _inputData.CertificationMethod.ToXMLFormat())); - - var lossMapElement = new XElement(_defaultNameSpace + XMLNames.Retarder_RetarderLossMap); - dataElement.Add(lossMapElement); - - foreach (DataRow lossMapRow in _inputData.LossMap.Rows) - { - var entryElement = new XElement(_defaultNameSpace + XMLNames.Retarder_RetarderLossMap_Entry); - entryElement.Add(new XAttribute(XMLNames.Retarder_RetarderLossmap_RetarderSpeed_Attr, lossMapRow[0].ToString())); - entryElement.Add(new XAttribute(XMLNames.Retarder_RetarderLossmap_TorqueLoss_Attr, lossMapRow[1].ToString())); - lossMapElement.Add(entryElement); - } - } - - public XMLRetarderWriter_v1_0(IRetarderInputData inputData) : base(inputData) { } - } - - - - public class XMLRetarderWriter_v2_0 : XMLRetarderWriter_v1_0 - { - public static readonly string[] SUPPORTED_VERSIONS = { - typeof(RetarderViewModel_v2_0).ToString() - }; - - - public XMLRetarderWriter_v2_0(IRetarderInputData inputData) : base(inputData) - { - - } - - - - protected override void Initialize() - { - _defaultNameSpace = XML.XMLNamespaces.V20; - _xElement = new XElement(_defaultNameSpace + XMLNames.Component_Retarder); - } - } -} diff --git a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLTyreWriter.cs b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLTyreWriter.cs deleted file mode 100644 index 7e10b6ed70f53fca7a91ffceefed4773135c57ff..0000000000000000000000000000000000000000 --- a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLTyreWriter.cs +++ /dev/null @@ -1,100 +0,0 @@ -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.VectoCommon.Utils; -using VECTO3GUI2020.Helper; -using VECTO3GUI2020.Util.XML.Interfaces; -using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components; - -namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter -{ - public abstract class XMLTyreWriter : IXMLComponentWriter - { - protected ITyreDeclarationInputData _inputData; - - protected XNamespace _defaultNamespace; - protected XElement _xElement; - protected string _uri = "ToDo-Add-Id"; - - public XMLTyreWriter(ITyreDeclarationInputData inputData) - { - _inputData = inputData; - } - - public XElement GetElement() - { - if (_xElement == null) { - Initialize(); - CreateDataElements(); - _xElement.Add(this.CreateSignatureElement(_defaultNamespace, _uri, _inputData.DigestValue)); - } - - return _xElement; - } - protected abstract void Initialize(); - protected abstract void CreateDataElements(); - - - - - - } - - public class XMLTyreWriter_v2_0 : XMLTyreWriter - { - public static readonly string[] SUPPORTED_VERSIONS = { - typeof(TyreViewModel_v2_0).ToString() - }; - - public XMLTyreWriter_v2_0(ITyreDeclarationInputData inputData) : base(inputData) { } - protected override void CreateDataElements() - { - var dataElement = new XElement(_defaultNamespace + XMLNames.ComponentDataWrapper); - _xElement.Add(dataElement); - - dataElement.Add(new XAttribute(XMLNames.Component_ID_Attr, _uri)); - dataElement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Component_Type_Attr, XMLNames.Tyre_Type_Attr_TyreDataDeclarationType)); - dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_Manufacturer, _inputData.Manufacturer)); - dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_Model, _inputData.Model)); - dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_CertificationNumber, _inputData.CertificationNumber)); - dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_Date, _inputData.Date)); - dataElement.Add(new XElement(_defaultNamespace + XMLNames.Component_AppVersion, _inputData.AppVersion)); - dataElement.Add(new XElement(_defaultNamespace + XMLNames.AxleWheels_Axles_Axle_Dimension, _inputData.Dimension)); - dataElement.Add(new XElement(_defaultNamespace + XMLNames.AxleWheels_Axles_Axle_RRCDeclared, _inputData.RollResistanceCoefficient.ToXMLFormat(4))); - dataElement.Add(new XElement(_defaultNamespace + XMLNames.AxleWheels_Axles_Axle_FzISO, _inputData.TyreTestLoad.ToXMLFormat(0))); - } - - protected override void Initialize() - { - _defaultNamespace = XML.XMLNamespaces.V20; - _xElement = new XElement(_defaultNamespace + XMLNames.AxleWheels_Axles_Axle_Tyre); - } - - } - - public class XMLTyreWriter_v2_3 : XMLTyreWriter_v2_0 - { - public new static readonly string[] SUPPORTED_VERSIONS = { - typeof(TyreViewModel_v2_3).ToString() - }; - public XMLTyreWriter_v2_3(ITyreDeclarationInputData inputData) : base(inputData) { } - - protected override void CreateDataElements() - { - base.CreateDataElements(); - - } - - protected override void Initialize() - { - _defaultNamespace = XML.XMLNamespaces.V23; - _xElement = new XElement(_defaultNamespace + XMLNames.AxleWheels_Axles_Axle_Tyre); - } - } - -} diff --git a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLVehicleWriter.cs b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLVehicleWriter.cs deleted file mode 100644 index 90534113aba3fa3fba4ee1e0bb4f43ce8f5479aa..0000000000000000000000000000000000000000 --- a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLVehicleWriter.cs +++ /dev/null @@ -1,436 +0,0 @@ -using System; -using System.Diagnostics; -using System.Linq; -using System.Xml.Linq; -using TUGraz.VectoCommon.BusAuxiliaries; -using TUGraz.VectoCommon.InputData; -using TUGraz.VectoCommon.Models; -using TUGraz.VectoCommon.Resources; -using TUGraz.VectoCommon.Utils; -using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; -using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider.v24; -using TUGraz.VectoCore.OutputData.XML.ComponentWriter; -using TUGraz.VectoCore.OutputData.XML.GroupWriter; -using TUGraz.VectoCore.Utils; -using VECTO3GUI2020.Helper; -using VECTO3GUI2020.Properties; -using VECTO3GUI2020.Util.XML.Interfaces; -using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle; -using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle; -using VECTO3GUI2020.ViewModel.MultiStage.Implementation; - -namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter -{ - public abstract class XMLVehicleWriter : IXMLVehicleWriter - { - - - - #region XML - protected XElement _Xelement; - - protected XNamespace _defaultNamespace; - #endregion - - //Template Methods - protected abstract void Initialize(); - protected abstract void CreateElements(); - - protected readonly IVehicleDeclarationInputData _inputData; - protected IXMLWriterFactory _xmlWriterFactory; - - public XMLVehicleWriter(IVehicleDeclarationInputData inputData, IXMLWriterFactory xmlWriterFactory) - { - Debug.Assert(inputData != null); - this._inputData = inputData; - _xmlWriterFactory = xmlWriterFactory; - } - - - - public XElement GetElement() - { - if (_Xelement == null) { - Initialize(); - CreateElements(); - } - return _Xelement; - } - } - public class XMLVehicleWriter_v1_0 : XMLVehicleWriter - { - public static readonly string[] SUPPORTEDVERSIONS = { - typeof(XMLDeclarationVehicleDataProviderV10).ToString(), - typeof(VehicleViewModel_v1_0).ToString() - }; - - public XMLVehicleWriter_v1_0(IVehicleDeclarationInputData inputData, IXMLWriterFactory xmlWriterFactory) : base(inputData, xmlWriterFactory) - { - - } - - protected override void CreateElements() - { - throw new NotImplementedException(); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Manufacturer, _inputData.Manufacturer), - new XElement(_defaultNamespace + XMLNames.Component_ManufacturerAddress, - _inputData.ManufacturerAddress), - new XElement(_defaultNamespace + XMLNames.Component_Model, _inputData.Model), - new XElement(_defaultNamespace + XMLNames.Vehicle_VIN, _inputData.VIN), - new XElement(_defaultNamespace + XMLNames.Component_Date, _inputData.Date), - new XElement(_defaultNamespace + XMLNames.Vehicle_LegislativeClass, _inputData.LegislativeClass), - new XElement(_defaultNamespace + XMLNames.Vehicle_AxleConfiguration, - AxleConfigurationHelper.ToXMLFormat(_inputData.AxleConfiguration)), - new XElement(_defaultNamespace + XMLNames.Vehicle_CurbMassChassis, - _inputData.CurbMassChassis.ToXMLFormat()), - new XElement(_defaultNamespace + XMLNames.Vehicle_GrossVehicleMass, - _inputData.GrossVehicleMassRating.ToXMLFormat()), - new XElement(_defaultNamespace + XMLNames.Vehicle_IdlingSpeed, - _inputData.EngineIdleSpeed.ToXMLFormat())); - - //new XElement(_defaultNamespace + XMLNames.Vehicle_RetarderType, _inputData.RetarderType.ToXMLFormat()), - - //_inputData.RetarderRatio == null ? null : new XElement(_defaultNamespace + XMLNames.Vehicle_RetarderRatio, _inputData.RetarderRatio), - - //new XElement(_defaultNamespace + XMLNames.Vehicle_AngledriveType, _inputData.AngledriveType.ToXMLFormat()), - - - //https://stackoverflow.com/questions/24743916/how-to-convert-xmlnode-into-xelement - //Remove this when PTOType is handled correct. - //XElement.Load(_inputData.PTONode.CreateNavigator().ReadSubtree()), - - //new XElement(_defaultNamespace + XMLNames.Vehicle_Components, - // new XAttribute(_xsi + "type", ComponentsXSD)) - - - //); - - - } - - protected override void Initialize() - { - throw new NotImplementedException(); - } - } - - - public class XMLVehicleWriter_v2_0 : XMLVehicleWriter_v1_0 - { - public new static readonly string[] SUPPORTEDVERSIONS = { - typeof(XMLDeclarationVehicleDataProviderV10).ToString(), - typeof(VehicleViewModel_v2_0).ToString() - }; - - public XMLVehicleWriter_v2_0(IVehicleDeclarationInputData inputData, - IXMLWriterFactory xmlWriterFactory) : base(inputData, xmlWriterFactory) - { - - - } - - protected override void CreateElements() - { - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Manufacturer, _inputData.Manufacturer)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_ManufacturerAddress, - _inputData.ManufacturerAddress)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Model, _inputData.Model)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_VIN, _inputData.VIN)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Date, _inputData.Date)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_LegislativeClass, - _inputData.LegislativeClass)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_VehicleCategory, _inputData.VehicleCategory)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_AxleConfiguration, - _inputData.AxleConfiguration.ToXMLFormat())); - - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_CurbMassChassis, _inputData.CurbMassChassis.ToXMLFormat(0))); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_GrossVehicleMass, - _inputData.GrossVehicleMassRating.ToXMLFormat(0))); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_IdlingSpeed, - _inputData.EngineIdleSpeed.AsRPM.ToXMLFormat(0))); - - //TODO: Remove when IVehicleDeclarationInputData is updated - if (_inputData is IVehicleViewModel viewModelInputData) { - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_RetarderType, - viewModelInputData.RetarderType.ToXMLFormat())); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_RetarderRatio, viewModelInputData.RetarderRatio.ToXMLFormat(3))); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_AngledriveType, - viewModelInputData.AngledriveType.ToXMLFormat())); - _Xelement.Add(_xmlWriterFactory.CreateComponentWriter(viewModelInputData.PTOTransmissionInputData) - .GetElement()); - } else { - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_RetarderType, - RetarderType.None.ToXMLFormat())); - //_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_RetarderRatio, "1.000")); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_AngledriveType, - AngledriveType.None.ToXMLFormat())); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_PTO, - new XElement(_defaultNamespace + XMLNames.Vehicle_PTO_ShaftsGearWheels, "none"), - new XElement(_defaultNamespace + XMLNames.Vehicle_PTO_OtherElements, "none"))); - } - - - - _Xelement.Add(_xmlWriterFactory.CreateComponentsWriter(_inputData.Components).GetComponents()); - } - - protected override void Initialize() - { - _defaultNamespace = XMLNamespaces.V20; - _Xelement = new XElement(_defaultNamespace + XMLNames.Component_Vehicle); - _Xelement.Add(new XAttribute(XMLNames.Component_ID_Attr, _inputData.Identifier)); - _Xelement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, XMLNames.VehicleAttr_VehicleDeclarationType)); - } - } - - public class XMLVehicleWriter_v2_1 { } - - public class XMLVehicleWriter_v2_7 { } - - public class XMLVehicleWriter_PrimaryBus_v2_6 {} - - public class XMLVehicleWriter_ExcemptedVehicle_v2_2 { } - - - public class XMLVehicleWriter_v2_10 : XMLVehicleWriter - { - private readonly bool _exempted; - public static readonly (XNamespace version, string type)[] SUPPORTEDVERSIONS = { - (XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationConventionalCompletedBusDataProviderV24.XSD_TYPE) - - //typeof(InterimStageBusVehicleViewModel).ToString(), - //typeof(StageInputViewModel).ToString() - }; - - private readonly IGroupWriterFactory _groupWriterFactory; - private readonly bool _conventional; - private readonly IComponentWriterFactory _componentWriterFactory; - - public XMLVehicleWriter_v2_10(IVehicleDeclarationInputData inputData, - IXMLWriterFactory xmlWriterFactory, - IGroupWriterFactory groupWriterFactory, - IComponentWriterFactory componentWriterFactory) : base(inputData, xmlWriterFactory) - { - - - _exempted = inputData.ExemptedVehicle; - - _conventional = !_exempted; - _groupWriterFactory = groupWriterFactory; - _componentWriterFactory = componentWriterFactory; - } - - #region Overrides of XMLVehicleWriter - - protected override void Initialize() - { - _defaultNamespace = XMLNamespaces.V24; - - _Xelement = new XElement(XMLNamespaces.V20 + XMLNames.Component_Vehicle, - new XAttribute("xmlns", _defaultNamespace)); - - _Xelement.Add(new XAttribute(XMLNames.Component_ID_Attr, _inputData.Identifier ?? ("VEH-" + Guid.NewGuid().ToString("n").Substring(0, 20)))); - if (_conventional) { - _Xelement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, "Vehicle_Conventional_CompletedBusDeclarationType")); - } else if(_exempted) { - _Xelement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, "Vehicle_Exempted_CompletedBusDeclarationType")); - } - - } - - protected override void CreateElements() - { - if (_conventional) { - CreateConventionalElements(); - return; - } - - if (_exempted) { - CreateExemptedElements(); - return; - } - - throw new NotImplementedException("Old Implementation"); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Manufacturer, _inputData.Manufacturer)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_ManufacturerAddress, - _inputData.ManufacturerAddress)); - - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_VIN, _inputData.VIN)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Date, XMLExtension.ToXmlFormat(DateTime.Today))); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Model, _inputData.Model)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_LegislativeCategory, _inputData.LegislativeClass.ToXMLFormat())); - - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.CorrectedActualMass, _inputData.CurbMassChassis?.ToXMLFormat(0))); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_TPMLM, - _inputData.GrossVehicleMassRating?.ToXMLFormat(0))); - - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_AirdragModifiedMultistep, _inputData.AirdragModifiedMultistep)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_NgTankSystem, _inputData.TankSystem)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_RegisteredClass, _inputData.RegisteredClass.ToXMLFormat())); - - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_NumberPassengerSeatsLowerDeck, _inputData.NumberPassengerSeatsLowerDeck)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_NumberPassengersStandingLowerDeck, _inputData.NumberPassengersStandingLowerDeck)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_NumberPassengerSeatsUpperDeck, _inputData.NumberPassengerSeatsUpperDeck)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_NumberPassengersStandingUpperDeck, _inputData.NumberPassengersStandingUpperDeck)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_BodyworkCode, _inputData.VehicleCode.ToXMLFormat())); - - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_LowEntry, _inputData.LowEntry)); - - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_HeightIntegratedBody, _inputData.Height?.ConvertToMilliMeter())); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_VehicleLength, _inputData.Length?.ConvertToMilliMeter())); - - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_VehicleWidth, _inputData.Width?.ConvertToMilliMeter())); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_EntranceHeight, _inputData.EntranceHeight?.ConvertToMilliMeter())); - - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.BusAux_PneumaticSystem_DoorDriveTechnology, - _inputData.DoorDriveTechnology != null - ? _inputData.DoorDriveTechnology.ToXMLFormat() - : null)); - - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_VehicleDeclarationType, _inputData.VehicleDeclarationType)); - - if (_inputData.ADAS != null) { - var adasNamespace = XMLNamespaces.V23; - var aDASElement = new XElement(_defaultNamespace + XMLNames.Vehicle_ADAS); - _Xelement.Add(aDASElement); - aDASElement.Add(new XElement(adasNamespace + XMLNames.Vehicle_ADAS_EngineStopStart, _inputData.ADAS.EngineStopStart)); - - bool ecoRollWithoutEngineStop = _inputData.ADAS.EcoRoll == EcoRollType.WithoutEngineStop; - bool ecoRollWithEngineStop = _inputData.ADAS.EcoRoll == EcoRollType.WithEngineStop; - - aDASElement.Add(new XElement(adasNamespace + XMLNames.Vehicle_ADAS_EcoRollWithoutEngineStop, ecoRollWithoutEngineStop)); - aDASElement.Add(new XElement(adasNamespace + XMLNames.Vehicle_ADAS_EcoRollWithEngineStopStart, ecoRollWithEngineStop)); - aDASElement.Add(new XElement(adasNamespace + XMLNames.Vehicle_ADAS_PCC, - _inputData.ADAS.PredictiveCruiseControl.ToXMLFormat())); - aDASElement.Add(new XElement(adasNamespace + XMLNames.Vehicle_ADAS_ATEcoRollReleaseLockupClutch, _inputData.ADAS?.ATEcoRollReleaseLockupClutch )); - } - _Xelement.DescendantsAndSelf().Where(e => string.IsNullOrEmpty(e.Value)).Remove(); - - if (_inputData.Components != null) { - var componentElement = new XElement( - _defaultNamespace + XMLNames.Vehicle_Components, - new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, - "CompletedVehicleComponentsDeclarationType")); - - //Airdrag - if (_inputData.Components.AirdragInputData != null) { - var airDragElement = _xmlWriterFactory.CreateComponentWriter(_inputData.Components.AirdragInputData) - .GetElement(); - var tempAirDragElement = new XElement(_defaultNamespace + XMLNames.Component_AirDrag); - - airDragElement.Name = tempAirDragElement.Name; - componentElement.Add(airDragElement); - } - - //auxiliaries - if (_inputData.Components.BusAuxiliaries != null) { - var auxiliaryElement = _xmlWriterFactory.CreateBuxAuxiliariesWriter(_inputData.Components.BusAuxiliaries) - .GetElement(); - - componentElement.Add(auxiliaryElement); - - } - _Xelement.Add(componentElement); - - } - } - - private void CreateConventionalElements() - { - _Xelement.Add( - _groupWriterFactory.GetVehicleDeclarationGroupWriter( - GroupNames.Vehicle_CompletedBus_GeneralParametersSequenceGroup, _defaultNamespace).GetGroupElements(_inputData), - _groupWriterFactory.GetVehicleDeclarationGroupWriter( - GroupNames.Vehicle_CompletedBusParametersSequenceGroup, _defaultNamespace).GetGroupElements(_inputData) - ); - _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_NgTankSystem, _inputData.TankSystem)); - - // ReSharper disable once CoVariantArrayConversion - _Xelement.Add(_groupWriterFactory.GetVehicleDeclarationGroupWriter( - GroupNames.Vehicle_CompletedBus_PassengerCountSequenceGroup, _defaultNamespace).GetGroupElements(_inputData)); - - _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_BodyworkCode, _inputData.VehicleCode.ToXMLFormat())); - _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Bus_LowEntry, _inputData.LowEntry)); - - - _Xelement.Add(_groupWriterFactory.GetVehicleDeclarationGroupWriter( - GroupNames.Vehicle_CompletedBus_DimensionsSequenceGroup, _defaultNamespace) - .GetGroupElements(_inputData)); - - _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.BusAux_PneumaticSystem_DoorDriveTechnology, - _inputData.DoorDriveTechnology != null - ? _inputData.DoorDriveTechnology.ToXMLFormat() - : null)); - - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_VehicleDeclarationType, _inputData.VehicleDeclarationType)); - _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.VehicleTypeApprovalNumber, _inputData.VehicleTypeApprovalNumber)); - - if (_inputData.ADAS != null) { - _Xelement.Add(_componentWriterFactory.getDeclarationAdasWriter(GroupNames.ADAS_Conventional_Type, _defaultNamespace).GetComponent(_inputData.ADAS)); - } - - - if (_inputData.Components != null) - { - var componentElement = new XElement( - _defaultNamespace + XMLNames.Vehicle_Components, - new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, - GUILabels.Components_Conventional_CompletedBusType)); - - //Airdrag - if (_inputData.Components.AirdragInputData != null) - { - var airDragElement = _xmlWriterFactory.CreateComponentWriter(_inputData.Components.AirdragInputData) - .GetElement(); - var tempAirDragElement = new XElement(_defaultNamespace + XMLNames.Component_AirDrag); - - airDragElement.Name = tempAirDragElement.Name; - componentElement.Add(airDragElement); - } - - //auxiliaries - if (_inputData.Components.BusAuxiliaries != null) - { - var auxiliaryElement = _xmlWriterFactory.CreateBuxAuxiliariesWriter(_inputData.Components.BusAuxiliaries) - .GetElement(); - - componentElement.Add(auxiliaryElement); - - } - _Xelement.Add(componentElement); - - } - - } - - - private void CreateExemptedElements() - { - - - // ReSharper disable once CoVariantArrayConversion - _Xelement.Add(_groupWriterFactory - .GetVehicleDeclarationGroupWriter(GroupNames.Vehicle_CompletedBus_GeneralParametersSequenceGroup, - _defaultNamespace).GetGroupElements(_inputData)); - - _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Component_Model, _inputData.Model)); - _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_LegislativeCategory, _inputData.LegislativeClass.ToXMLFormat())); - _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.CorrectedActualMass, _inputData.CurbMassChassis?.ToXMLFormat(0))); - _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_TPMLM, - _inputData.GrossVehicleMassRating?.ToXMLFormat(0))); - - _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_RegisteredClass, _inputData.RegisteredClass.ToXMLFormat())); - - _Xelement.Add(_groupWriterFactory.GetVehicleDeclarationGroupWriter(GroupNames.Vehicle_CompletedBus_PassengerCountSequenceGroup, _defaultNamespace).GetGroupElements(_inputData)); - - _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_BodyworkCode, _inputData.VehicleCode.ToXMLFormat())); - - _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Bus_LowEntry, _inputData.LowEntry)); - - _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Bus_HeightIntegratedBody, _inputData.Height?.ConvertToMilliMeter())); - } - - #endregion - } - -} diff --git a/VECTO3GUI2020/Util/XML/Implementation/DocumentWriter/XMLDeclarationJobWriter.cs b/VECTO3GUI2020/Util/XML/Implementation/DocumentWriter/XMLDeclarationJobWriter.cs deleted file mode 100644 index 53a6380c3f41c1a4d2f5e0c81d26c5c9d737d8d5..0000000000000000000000000000000000000000 --- a/VECTO3GUI2020/Util/XML/Implementation/DocumentWriter/XMLDeclarationJobWriter.cs +++ /dev/null @@ -1,98 +0,0 @@ -using System; -using System.Diagnostics; -using System.Xml.Linq; -using TUGraz.VectoCommon.InputData; -using TUGraz.VectoCommon.Resources; -using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; -using VECTO3GUI2020.Util.XML.Interfaces; -using VECTO3GUI2020.ViewModel.Implementation.JobEdit; - -namespace VECTO3GUI2020.Util.XML.Implementation.DocumentWriter -{ - public abstract class XMLDeclarationJobWriter : IXMLDeclarationJobWriter - { - - protected XDocument _xDocument; - protected string _schemaVersion; - private IXMLWriterFactory _xmlWriterFactory; - - protected string LocalSchemaLocation = @"V:\VectoCore\VectoCore\Resources\XSD\"; - - //Must be overwritten by subclasses; - protected abstract void Initialize(); - - - - public XMLDeclarationJobWriter(IDeclarationJobInputData inputData, IXMLWriterFactory xmlWriterFactory) - { - _xmlWriterFactory = xmlWriterFactory; - Initialize(); - - (_xDocument.FirstNode as XElement)?.Add(_xmlWriterFactory.CreateVehicleWriter(inputData.Vehicle).GetElement()); - var rootElement = _xDocument.FirstNode as XElement; - - } - - - - - - public XDocument GetDocument() - { - return _xDocument; - } - } - - - public class XMLDeclarationJobWriter_v1_0 : XMLDeclarationJobWriter - { - - - public static readonly string[] SUPPORTED_VERSIONS = { - typeof(XMLDeclarationJobInputDataProviderV10).ToString() - }; - public XMLDeclarationJobWriter_v1_0(IDeclarationJobInputData inputData, IXMLWriterFactory xmlWriterFactory) : base(inputData, xmlWriterFactory) - { - - } - protected override void Initialize() - { - throw new NotImplementedException(); - } - - - } - - public class XMLDeclarationJobWriter_v2_0 : XMLDeclarationJobWriter - { - - public static readonly string[] SUPPORTED_VERSIONS = { - typeof(DeclarationJobEditViewModel_v2_0).ToString(), - typeof(XMLDeclarationJobInputDataProviderV20).ToString() - }; - - public XMLDeclarationJobWriter_v2_0(IDeclarationJobInputData inputData, IXMLWriterFactory xmlWriterFactory) : base(inputData, xmlWriterFactory) - { - - } - - protected override void Initialize() - { - _schemaVersion = "2.0"; - _xDocument = new XDocument(); - - var xElement = new XElement(XMLNamespaces.Tns_v20 + XMLNames.VectoInputDeclaration); - _xDocument.Add(xElement); - - xElement.Add(new XAttribute("schemaVersion", _schemaVersion)); - xElement.Add(new XAttribute("xmlns", XMLNamespaces.DeclarationDefinition + ":v" + _schemaVersion)); - xElement.Add(new XAttribute(XNamespace.Xmlns + "xsi", XMLNamespaces.Xsi.NamespaceName)); - xElement.Add(new XAttribute(XNamespace.Xmlns + "tns", XMLNamespaces.Tns_v20)); - xElement.Add(new XAttribute(XMLNamespaces.Xsi + "schemaLocation", - $"{XMLNamespaces.DeclarationRootNamespace} {LocalSchemaLocation}VectoDeclarationJob.xsd")); - - Debug.WriteLine(_xDocument.ToString()); - } - } - -} diff --git a/VECTO3GUI2020/Util/XML/Interfaces/IXMLComponentWriter.cs b/VECTO3GUI2020/Util/XML/Interfaces/IXMLComponentWriter.cs deleted file mode 100644 index ac5bf9d65c69cbaa91fd525c159c953264fbfc2b..0000000000000000000000000000000000000000 --- a/VECTO3GUI2020/Util/XML/Interfaces/IXMLComponentWriter.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Xml.Linq; - -namespace VECTO3GUI2020.Util.XML.Interfaces -{ - public interface IXMLComponentWriter - { - XElement GetElement(); - } -} diff --git a/VECTO3GUI2020/Util/XML/Interfaces/IXMLComponentsWriter.cs b/VECTO3GUI2020/Util/XML/Interfaces/IXMLComponentsWriter.cs deleted file mode 100644 index 5ac14496747748a0b6138f2d71985a60969ca752..0000000000000000000000000000000000000000 --- a/VECTO3GUI2020/Util/XML/Interfaces/IXMLComponentsWriter.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System.Xml.Linq; - -namespace VECTO3GUI2020.Util.XML.Interfaces -{ - public interface IXMLComponentsWriter - { - XElement GetComponents(); - } -} \ No newline at end of file diff --git a/VECTO3GUI2020/Util/XML/Interfaces/IXMLDeclarationJobWriter.cs b/VECTO3GUI2020/Util/XML/Interfaces/IXMLDeclarationJobWriter.cs deleted file mode 100644 index b9854e0d632f9153a06c453001a5550d1655ab0f..0000000000000000000000000000000000000000 --- a/VECTO3GUI2020/Util/XML/Interfaces/IXMLDeclarationJobWriter.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System.Xml.Linq; - -namespace VECTO3GUI2020.Util.XML.Interfaces -{ - public interface IXMLDeclarationJobWriter - { - XDocument GetDocument(); - } -} diff --git a/VECTO3GUI2020/Util/XML/Interfaces/IXMLVehicleWriter.cs b/VECTO3GUI2020/Util/XML/Interfaces/IXMLVehicleWriter.cs deleted file mode 100644 index 6af7fe70e31c41004a7aaf81af669baabdbd809f..0000000000000000000000000000000000000000 --- a/VECTO3GUI2020/Util/XML/Interfaces/IXMLVehicleWriter.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System.Xml.Linq; - -namespace VECTO3GUI2020.Util.XML.Interfaces -{ - public interface IXMLVehicleWriter - { - XElement GetElement(); - } -} diff --git a/VECTO3GUI2020/Util/XML/Interfaces/IXMLWriterFactory.cs b/VECTO3GUI2020/Util/XML/Interfaces/IXMLWriterFactory.cs deleted file mode 100644 index 8641d7754bb528ad264146cb991f4dbb49ebea29..0000000000000000000000000000000000000000 --- a/VECTO3GUI2020/Util/XML/Interfaces/IXMLWriterFactory.cs +++ /dev/null @@ -1,96 +0,0 @@ -using TUGraz.VectoCommon.InputData; -using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; -using TUGraz.VectoCore.Models.Connector.Ports; -using TUGraz.VectoCore.OutputData.XML.Engineering.Interfaces; -using TUGraz.VectoCore.OutputData.XML.Engineering.Writer; -using VECTO3GUI2020.Util.XML.Implementation.ComponentWriter; - -namespace VECTO3GUI2020.Util.XML.Interfaces -{ - public interface IXMLWriterFactory - { - IXMLDeclarationJobWriter CreateJobWriter(IDeclarationJobInputData inputData); - IXMLVehicleWriter CreateVehicleWriter(IVehicleDeclarationInputData inputData); - IXMLComponentWriter CreateComponentWriter(IComponentInputData inputData); - IXMLComponentWriter CreateComponentWriter(IAuxiliariesDeclarationInputData inputData); - IXMLComponentWriter CreateComponentWriter(IAxlesDeclarationInputData inputData); - IXMLComponentWriter CreateComponentWriter(IAxleDeclarationInputData inputData); - IXMLComponentWriter CreateComponentWriter(IAirdragDeclarationInputData inputData); - - IXMLComponentWriter CreateComponentWriter(IPTOTransmissionInputData inputData); - IXMLComponentsWriter CreateComponentsWriter(IVehicleComponentsDeclaration inputData); - - IXMLBusAuxiliariesWriter CreateBuxAuxiliariesWriter(IBusAuxiliariesDeclarationData inputData); - } - - public interface IXMLWriterFactoryInternal - { - TWriter CreateWriter<TWriter, TData>(DataSource source, TData inputData); - } - - public class XMLWriterFactory : IXMLWriterFactory - { - private IXMLWriterFactoryInternal _internalFactory; - - private TWriter CreateWriter<TWriter, TData>(DataSource source, TData inputData) - { - return _internalFactory.CreateWriter<TWriter, TData>(source, inputData); - } - - - #region Implementation of IXMLWriterFactory - - public IXMLDeclarationJobWriter CreateJobWriter(IDeclarationJobInputData inputData) - { - throw new System.NotImplementedException(); - } - - public IXMLVehicleWriter CreateVehicleWriter(IVehicleDeclarationInputData inputData) - { - return _internalFactory.CreateWriter<IXMLVehicleWriter, IVehicleDeclarationInputData>(inputData.DataSource, inputData); - //throw new System.NotImplementedException(); - } - - public IXMLComponentWriter CreateComponentWriter(IComponentInputData inputData) - { - throw new System.NotImplementedException(); - } - - public IXMLComponentWriter CreateComponentWriter(IAuxiliariesDeclarationInputData inputData) - { - throw new System.NotImplementedException(); - } - - public IXMLComponentWriter CreateComponentWriter(IAxlesDeclarationInputData inputData) - { - throw new System.NotImplementedException(); - } - - public IXMLComponentWriter CreateComponentWriter(IAxleDeclarationInputData inputData) - { - throw new System.NotImplementedException(); - } - - public IXMLComponentWriter CreateComponentWriter(IAirdragDeclarationInputData inputData) - { - throw new System.NotImplementedException(); - } - - public IXMLComponentWriter CreateComponentWriter(IPTOTransmissionInputData inputData) - { - throw new System.NotImplementedException(); - } - - public IXMLComponentsWriter CreateComponentsWriter(IVehicleComponentsDeclaration inputData) - { - throw new System.NotImplementedException(); - } - - public IXMLBusAuxiliariesWriter CreateBuxAuxiliariesWriter(IBusAuxiliariesDeclarationData inputData) - { - throw new System.NotImplementedException(); - } - - #endregion - } -} diff --git a/VECTO3GUI2020/Util/XML/Vehicle/IXMLVehicleWriter.cs b/VECTO3GUI2020/Util/XML/Vehicle/IXMLVehicleWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..4e1cd3d484eb156afbacd86b0b7a7081c0af6ddf --- /dev/null +++ b/VECTO3GUI2020/Util/XML/Vehicle/IXMLVehicleWriter.cs @@ -0,0 +1,9 @@ +using System.Xml.Linq; + +namespace VECTO3GUI2020.Util.XML.Vehicle +{ + public interface IXMLVehicleWriter + { + XElement GetElement(); + } +} diff --git a/VECTO3GUI2020/Util/XML/Vehicle/XMLVehicleWriter.cs b/VECTO3GUI2020/Util/XML/Vehicle/XMLVehicleWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..2433ac4345df363ec760fe38ba09dfedcd3e9be7 --- /dev/null +++ b/VECTO3GUI2020/Util/XML/Vehicle/XMLVehicleWriter.cs @@ -0,0 +1,459 @@ +using System; +using System.Diagnostics; +using System.Linq; +using System.Security.RightsManagement; +using System.Xml; +using System.Xml.Linq; +using System.Xml.Serialization; +using TUGraz.VectoCommon.BusAuxiliaries; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider.v24; +using TUGraz.VectoCore.Models.Declaration; +using TUGraz.VectoCore.OutputData.XML.ComponentWriter; +using TUGraz.VectoCore.OutputData.XML.GroupWriter; +using TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration; +using TUGraz.VectoCore.Utils; +using VECTO3GUI2020.Helper; +using VECTO3GUI2020.Properties; +using VECTO3GUI2020.Resources.XML; +using VECTO3GUI2020.Util.XML; +using VECTO3GUI2020.Util.XML.Vehicle; +using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle; +using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle; +using VECTO3GUI2020.ViewModel.MultiStage.Implementation; + +namespace VECTO3GUI2020.Util.XML.Vehicle +{ + public abstract class XMLVehicleWriter : IXMLVehicleWriter + { + #region XML + + protected XElement _Xelement; + + protected XNamespace _defaultNamespace; + + #endregion + + //Template Methods + protected abstract void Initialize(); + protected abstract void CreateElements(); + + protected readonly IVehicleDeclarationInputData _inputData; + protected IXMLWriterFactory _xmlWriterFactory; + + public XMLVehicleWriter(IVehicleDeclarationInputData inputData, IXMLWriterFactory xmlWriterFactory) + { + Debug.Assert(inputData != null); + _inputData = inputData; + _xmlWriterFactory = xmlWriterFactory; + } + + + public XElement GetElement() + { + if (_Xelement == null) { + Initialize(); + CreateElements(); + } + + return _Xelement; + } + } + + public abstract class XMLCompletedBusVehicleWriter : XMLVehicleWriter + { + protected readonly IComponentWriterFactory _componentWriterFactory; + protected readonly IGroupWriterFactory _groupWriterFactory; + public abstract string VehicleType { get; } + + + protected XMLCompletedBusVehicleWriter(IVehicleDeclarationInputData inputData, + IXMLWriterFactory xmlWriterFactory, IGroupWriterFactory groupWriterFactory, + IComponentWriterFactory componentWriterFactory) : base(inputData, xmlWriterFactory) + { + _groupWriterFactory = groupWriterFactory; + _componentWriterFactory = componentWriterFactory; + } + + protected override void Initialize() + { + _defaultNamespace = XMLNamespaces.V24; + + var type = new XmlTypeAttribute(); + type.Namespace = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + type.TypeName = VehicleType; + + XNamespace v20 = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V20; + _Xelement = new XElement(v20 + XMLNames.Component_Vehicle, + new XAttribute(XMLNames.Component_ID_Attr, + _inputData.Identifier ?? "VEH-" + Guid.NewGuid().ToString("n").Substring(0, 20)), + new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, VehicleType), + new XAttribute("xmlns", _defaultNamespace)); + } + } + + public class XMLCompletedBusVehicleWriterExempted : XMLCompletedBusVehicleWriter + { + public static readonly (XNamespace version, string type)[] SUPPORTEDVERSIONS = { + (XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, + XMLDeclarationExemptedCompletedBusDataProviderV24.XSD_TYPE) + }; + + #region Overrides of XMLCompletedBusVehicleWriter + + public override string VehicleType => XMLDeclarationExemptedCompletedBusDataProviderV24.XSD_TYPE; + + #endregion + + + #region Overrides of XMLVehicleWriter + + public XMLCompletedBusVehicleWriterExempted(IVehicleDeclarationInputData inputData, + IXMLWriterFactory xmlWriterFactory, IGroupWriterFactory groupWriterFactory, + IComponentWriterFactory componentWriterFactory) : base(inputData, xmlWriterFactory, groupWriterFactory, + componentWriterFactory) { } + + protected override void CreateElements() + { + // ReSharper disable once CoVariantArrayConversion + _Xelement.Add(_groupWriterFactory + .GetVehicleDeclarationGroupWriter(GroupNames.Vehicle_CompletedBus_GeneralParametersSequenceGroup, + _defaultNamespace).GetGroupElements(_inputData)); + + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Component_Model, _inputData.Model)); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_LegislativeCategory, + _inputData.LegislativeClass.ToXMLFormat())); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.CorrectedActualMass, + _inputData.CurbMassChassis?.ToXMLFormat(0))); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_TPMLM, + _inputData.GrossVehicleMassRating?.ToXMLFormat(0))); + + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_RegisteredClass, + _inputData.RegisteredClass.ToXMLFormat())); + + _Xelement.Add(_groupWriterFactory + .GetVehicleDeclarationGroupWriter(GroupNames.Vehicle_CompletedBus_PassengerCountSequenceGroup, + _defaultNamespace).GetGroupElements(_inputData)); + + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_BodyworkCode, + _inputData.VehicleCode.ToXMLFormat())); + + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Bus_LowEntry, _inputData.LowEntry)); + + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Bus_HeightIntegratedBody, + _inputData.Height?.ConvertToMilliMeter())); + } + + #endregion + } + + public class XMLCompletedBusVehicleWriterConventional : XMLCompletedBusVehicleWriter + { + public static readonly (XNamespace version, string type)[] SUPPORTEDVERSIONS = { + (XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, + XMLDeclarationConventionalCompletedBusDataProviderV24.XSD_TYPE) + }; + + private readonly IGroupWriterFactory _groupWriterFactory; + private readonly bool _conventional; + private readonly IComponentWriterFactory _componentWriterFactory; + + public override string VehicleType => XMLDeclarationConventionalCompletedBusDataProviderV24.XSD_TYPE; + + public XMLCompletedBusVehicleWriterConventional(IVehicleDeclarationInputData inputData, + IXMLWriterFactory xmlWriterFactory, + IGroupWriterFactory groupWriterFactory, + IComponentWriterFactory componentWriterFactory) : base(inputData, xmlWriterFactory, groupWriterFactory, + componentWriterFactory) + { + _groupWriterFactory = groupWriterFactory; + _componentWriterFactory = componentWriterFactory; + } + + #region Overrides of XMLVehicleWriter + + protected override void CreateElements() + { + CreateConventionalElements(); + } + + private void CreateConventionalElements() + { + _Xelement.Add( + _groupWriterFactory.GetVehicleDeclarationGroupWriter( + GroupNames.Vehicle_CompletedBus_GeneralParametersSequenceGroup, _defaultNamespace) + .GetGroupElements(_inputData), + _groupWriterFactory.GetVehicleDeclarationGroupWriter( + GroupNames.Vehicle_CompletedBusParametersSequenceGroup, _defaultNamespace) + .GetGroupElements(_inputData) + ); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_NgTankSystem, + _inputData.TankSystem)); + + // ReSharper disable once CoVariantArrayConversion + _Xelement.Add(_groupWriterFactory.GetVehicleDeclarationGroupWriter( + GroupNames.Vehicle_CompletedBus_PassengerCountSequenceGroup, _defaultNamespace) + .GetGroupElements(_inputData)); + + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_BodyworkCode, + _inputData.VehicleCode.ToXMLFormat())); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Bus_LowEntry, _inputData.LowEntry)); + + + _Xelement.Add(_groupWriterFactory.GetVehicleDeclarationGroupWriter( + GroupNames.Vehicle_CompletedBus_DimensionsSequenceGroup, _defaultNamespace) + .GetGroupElements(_inputData)); + + _Xelement.AddIfContentNotNull(new XElement( + _defaultNamespace + XMLNames.BusAux_PneumaticSystem_DoorDriveTechnology, + _inputData.DoorDriveTechnology != null + ? _inputData.DoorDriveTechnology.ToXMLFormat() + : null)); + + _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_VehicleDeclarationType, + _inputData.VehicleDeclarationType)); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.VehicleTypeApprovalNumber, + _inputData.VehicleTypeApprovalNumber)); + + if (_inputData.ADAS != null) { + _Xelement.Add(_componentWriterFactory + .getDeclarationAdasWriter(GroupNames.ADAS_Conventional_Type, _defaultNamespace) + .GetComponent(_inputData.ADAS)); + } + + if (_inputData.Components != null) { + _Xelement.Add(_xmlWriterFactory.CreateComponentsWriterWithVersion( + XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, + XMLTypes.Components_Conventional_CompletedBusType, + _inputData.Components).GetComponents()); + } + } + + #endregion + } + + public class XMLCompletedBusVehicleWriterHEV : XMLCompletedBusVehicleWriter + { + public static (XNamespace version, string type) VERSION = ( + XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, + XMLDeclarationHevCompletedBusDataProviderV24.XSD_TYPE); + + #region Overrides of XMLCompletedBusVehicleWriter + + public override string VehicleType => XMLDeclarationHevCompletedBusDataProviderV24.XSD_TYPE; + + #endregion + + public XMLCompletedBusVehicleWriterHEV(IVehicleDeclarationInputData inputData, + IXMLWriterFactory xmlWriterFactory, IGroupWriterFactory groupWriterFactory, + IComponentWriterFactory componentWriterFactory) : base(inputData, xmlWriterFactory, groupWriterFactory, + componentWriterFactory) { } + + #region Overrides of XMLVehicleWriter + + protected override void CreateElements() + { + _Xelement.Add( + _groupWriterFactory.GetVehicleDeclarationGroupWriter( + GroupNames.Vehicle_CompletedBus_GeneralParametersSequenceGroup, _defaultNamespace) + .GetGroupElements(_inputData), + _groupWriterFactory.GetVehicleDeclarationGroupWriter( + GroupNames.Vehicle_CompletedBusParametersSequenceGroup, _defaultNamespace) + .GetGroupElements(_inputData) + ); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_NgTankSystem, + _inputData.TankSystem)); + + // ReSharper disable once CoVariantArrayConversion + _Xelement.Add(_groupWriterFactory.GetVehicleDeclarationGroupWriter( + GroupNames.Vehicle_CompletedBus_PassengerCountSequenceGroup, _defaultNamespace) + .GetGroupElements(_inputData)); + + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_BodyworkCode, + _inputData.VehicleCode.ToXMLFormat())); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Bus_LowEntry, _inputData.LowEntry)); + + + _Xelement.Add(_groupWriterFactory.GetVehicleDeclarationGroupWriter( + GroupNames.Vehicle_CompletedBus_DimensionsSequenceGroup, _defaultNamespace) + .GetGroupElements(_inputData)); + + _Xelement.AddIfContentNotNull(new XElement( + _defaultNamespace + XMLNames.BusAux_PneumaticSystem_DoorDriveTechnology, + _inputData.DoorDriveTechnology != null + ? _inputData.DoorDriveTechnology.ToXMLFormat() + : null)); + + _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_VehicleDeclarationType, + _inputData.VehicleDeclarationType)); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.VehicleTypeApprovalNumber, + _inputData.VehicleTypeApprovalNumber)); + + if (_inputData.ADAS != null) { + + _Xelement.Add(_componentWriterFactory + .getDeclarationAdasWriter(GroupNames.ADAS_HEV_Type, _defaultNamespace) + .GetComponent(_inputData.ADAS)); + } + + if (_inputData.Components != null) { + _Xelement.Add(_xmlWriterFactory.CreateComponentsWriterWithVersion( + XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLTypes.Components_xEV_CompletedBusType, + _inputData.Components).GetComponents()); + } + } + + #endregion + } + + public class XMLCompletedBusVehicleWriterPEV : XMLCompletedBusVehicleWriter + { + public static (XNamespace version, string type) VERSION = ( + XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, + XMLDeclarationPEVCompletedBusDataProviderV24.XSD_TYPE); + + #region Overrides of XMLCompletedBusVehicleWriter + + public override string VehicleType => XMLDeclarationPEVCompletedBusDataProviderV24.XSD_TYPE; + + #endregion + + public XMLCompletedBusVehicleWriterPEV(IVehicleDeclarationInputData inputData, + IXMLWriterFactory xmlWriterFactory, IGroupWriterFactory groupWriterFactory, + IComponentWriterFactory componentWriterFactory) : base(inputData, xmlWriterFactory, groupWriterFactory, + componentWriterFactory) { } + + #region Overrides of XMLVehicleWriter + + protected override void CreateElements() + { + _Xelement.Add( + _groupWriterFactory.GetVehicleDeclarationGroupWriter( + GroupNames.Vehicle_CompletedBus_GeneralParametersSequenceGroup, _defaultNamespace) + .GetGroupElements(_inputData), + _groupWriterFactory.GetVehicleDeclarationGroupWriter( + GroupNames.Vehicle_CompletedBusParametersSequenceGroup, _defaultNamespace) + .GetGroupElements(_inputData) + ); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_NgTankSystem, + _inputData.TankSystem)); + + // ReSharper disable once CoVariantArrayConversion + _Xelement.Add(_groupWriterFactory.GetVehicleDeclarationGroupWriter( + GroupNames.Vehicle_CompletedBus_PassengerCountSequenceGroup, _defaultNamespace) + .GetGroupElements(_inputData)); + + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_BodyworkCode, + _inputData.VehicleCode.ToXMLFormat())); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Bus_LowEntry, _inputData.LowEntry)); + + + _Xelement.Add(_groupWriterFactory.GetVehicleDeclarationGroupWriter( + GroupNames.Vehicle_CompletedBus_DimensionsSequenceGroup, _defaultNamespace) + .GetGroupElements(_inputData)); + + _Xelement.AddIfContentNotNull(new XElement( + _defaultNamespace + XMLNames.BusAux_PneumaticSystem_DoorDriveTechnology, + _inputData.DoorDriveTechnology != null + ? _inputData.DoorDriveTechnology.ToXMLFormat() + : null)); + + _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_VehicleDeclarationType, + _inputData.VehicleDeclarationType)); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.VehicleTypeApprovalNumber, + _inputData.VehicleTypeApprovalNumber)); + + if (_inputData.ADAS != null) { + _Xelement.Add(_componentWriterFactory + .getDeclarationAdasWriter(GroupNames.ADAS_PEV_Type, _defaultNamespace) + .GetComponent(_inputData.ADAS)); + } + + if (_inputData.Components != null) { + _Xelement.Add(_xmlWriterFactory.CreateComponentsWriterWithVersion( + XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLTypes.Components_xEV_CompletedBusType, + _inputData.Components).GetComponents()); + } + + } + } + + #endregion + + public class XMLCompletedBusVehicleWriterIEPC : XMLCompletedBusVehicleWriter + { + public static (XNamespace version, string type) VERSION = ( + XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, + XMLDeclarationIepcCompletedBusDataProviderV24.XSD_TYPE); + + #region Overrides of XMLCompletedBusVehicleWriter + + public override string VehicleType => XMLDeclarationIepcCompletedBusDataProviderV24.XSD_TYPE; + + #endregion + + public XMLCompletedBusVehicleWriterIEPC(IVehicleDeclarationInputData inputData, + IXMLWriterFactory xmlWriterFactory, + IGroupWriterFactory groupWriterFactory, IComponentWriterFactory componentWriterFactory) : base(inputData, + xmlWriterFactory, groupWriterFactory, componentWriterFactory) { } + + #region Overrides of XMLVehicleWriter + + protected override void CreateElements() + { + _Xelement.Add( + _groupWriterFactory.GetVehicleDeclarationGroupWriter( + GroupNames.Vehicle_CompletedBus_GeneralParametersSequenceGroup, _defaultNamespace) + .GetGroupElements(_inputData), + _groupWriterFactory.GetVehicleDeclarationGroupWriter( + GroupNames.Vehicle_CompletedBusParametersSequenceGroup, _defaultNamespace) + .GetGroupElements(_inputData) + ); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_NgTankSystem, + _inputData.TankSystem)); + + // ReSharper disable once CoVariantArrayConversion + _Xelement.Add(_groupWriterFactory.GetVehicleDeclarationGroupWriter( + GroupNames.Vehicle_CompletedBus_PassengerCountSequenceGroup, _defaultNamespace) + .GetGroupElements(_inputData)); + + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_BodyworkCode, + _inputData.VehicleCode.ToXMLFormat())); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Bus_LowEntry, _inputData.LowEntry)); + + + _Xelement.Add(_groupWriterFactory.GetVehicleDeclarationGroupWriter( + GroupNames.Vehicle_CompletedBus_DimensionsSequenceGroup, _defaultNamespace) + .GetGroupElements(_inputData)); + + _Xelement.AddIfContentNotNull(new XElement( + _defaultNamespace + XMLNames.BusAux_PneumaticSystem_DoorDriveTechnology, + _inputData.DoorDriveTechnology != null + ? _inputData.DoorDriveTechnology.ToXMLFormat() + : null)); + + _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_VehicleDeclarationType, + _inputData.VehicleDeclarationType)); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.VehicleTypeApprovalNumber, + _inputData.VehicleTypeApprovalNumber)); + + if (_inputData.ADAS != null) { + _Xelement.Add(_componentWriterFactory + .getDeclarationAdasWriter(GroupNames.ADAS_IEPC_Type, _defaultNamespace) + .GetComponent(_inputData.ADAS)); + } + + if (_inputData.Components != null) { + _Xelement.Add(_xmlWriterFactory.CreateComponentsWriterWithVersion( + XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLTypes.Components_xEV_CompletedBusType, + _inputData.Components).GetComponents()); + } + } + } +} + +#endregion \ No newline at end of file diff --git a/VECTO3GUI2020/VECTO3GUI2020.csproj b/VECTO3GUI2020/VECTO3GUI2020.csproj index 7391cfdddf0f9b764ab60933f67ad83abf3d02ab..31403c6cfc1af0797592ee1f5f80fab85094505e 100644 --- a/VECTO3GUI2020/VECTO3GUI2020.csproj +++ b/VECTO3GUI2020/VECTO3GUI2020.csproj @@ -113,6 +113,10 @@ </Page> </ItemGroup> + <ItemGroup> + <Folder Include="Util\XML\Implementation\DocumentWriter\" /> + </ItemGroup> + <!--Workauround for build error--> <!--https://github.com/dotnet/wpf/pull/6680--> diff --git a/VECTO3GUI2020/ViewModel/Implementation/JobEdit/DeclarationJobEditViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/JobEdit/DeclarationJobEditViewModel.cs index 04eb90dc0ef20e40e282d097e52f5a46e686f6ea..94738786e2785883ab84862372713af4f980b089 100644 --- a/VECTO3GUI2020/ViewModel/Implementation/JobEdit/DeclarationJobEditViewModel.cs +++ b/VECTO3GUI2020/ViewModel/Implementation/JobEdit/DeclarationJobEditViewModel.cs @@ -17,12 +17,12 @@ using TUGraz.VectoCore.InputData.FileIO.XML.Declaration; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; using VECTO3GUI2020.Helper; using VECTO3GUI2020.Properties; -using VECTO3GUI2020.Util.XML.Interfaces; using VECTO3GUI2020.ViewModel.Implementation.Common; using VECTO3GUI2020.ViewModel.Interfaces; using VECTO3GUI2020.ViewModel.Interfaces.JobEdit; using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle; using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle.Components; +using VECTO3GUI2020.Util.XML; namespace VECTO3GUI2020.ViewModel.Implementation.JobEdit { diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel.cs index cdb42f0413ed05ff281ca415d074b15d6d66796a..813df32c9a351a28ad05b07511e9a63342bf79a4 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel.cs @@ -68,6 +68,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation public static string VERSION = INPUTPROVIDERTYPE.ToString(); public static string VERSION_EXEMPTED = INPUTPROVIDERTYPEEXEMPTED.ToString(); + public abstract StageInputViewModel.CompletedBusArchitecture Architecture { get; } private readonly IMultiStageViewModelFactory _multiStageViewModelFactory; @@ -239,12 +240,9 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation MultistageAirdragViewModel = _multiStageViewModelFactory.GetMultistageAirdragViewModel(consolidatedVehicleData?.Components?.AirdragInputData); MultistageAirdragViewModel.AirdragViewModelChanged += ((sender, args) => { - if (sender is IMultistageAirdragViewModel vm) - { - if (AirdragModifiedMultistepMandatory) - { - if (vm.AirDragViewModel != null) - { + if (sender is IMultistageAirdragViewModel vm) { + if (AirdragModifiedMultistepMandatory) { + if (vm.AirDragViewModel != null) { AirdragModifiedMultistep = true; } } @@ -1299,7 +1297,14 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation } public InterimStageConventionalBusVehicleViewModel(IMultiStageViewModelFactory multiStageViewModelFactory) : base(multiStageViewModelFactory) { } - } + + #region Overrides of InterimStageBusVehicleViewModel + + public override StageInputViewModel.CompletedBusArchitecture Architecture => + StageInputViewModel.CompletedBusArchitecture.Conventional; + + #endregion + } public class InterimStageExemptedBusVehicleViewModel : InterimStageBusVehicleViewModel @@ -1316,6 +1321,13 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation } + + #region Overrides of InterimStageBusVehicleViewModel + + public override StageInputViewModel.CompletedBusArchitecture Architecture => + StageInputViewModel.CompletedBusArchitecture.Exempted; + + #endregion } public class InterimStageHevBusVehicleViewModel : InterimStageBusVehicleViewModel @@ -1328,6 +1340,11 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation } public InterimStageHevBusVehicleViewModel(IMultiStageViewModelFactory multiStageViewModelFactory) : base(multiStageViewModelFactory) { } + + public override StageInputViewModel.CompletedBusArchitecture Architecture + { + get => StageInputViewModel.CompletedBusArchitecture.HEV; + } } public class InterimStagePevBusVehicleViewModel : InterimStageBusVehicleViewModel @@ -1339,7 +1356,16 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation } public InterimStagePevBusVehicleViewModel(IMultiStageViewModelFactory multiStageViewModelFactory) : base(multiStageViewModelFactory) { } - } + + #region Overrides of InterimStageBusVehicleViewModel + + public override StageInputViewModel.CompletedBusArchitecture Architecture + { + get { return StageInputViewModel.CompletedBusArchitecture.PEV; } + } + + #endregion + } public class InterimStageIEPCBusVehicleViewModel : InterimStageBusVehicleViewModel { @@ -1350,6 +1376,13 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation } public InterimStageIEPCBusVehicleViewModel(IMultiStageViewModelFactory multiStageViewModelFactory) : base(multiStageViewModelFactory) { } - } + + #region Overrides of InterimStageBusVehicleViewModel + + public override StageInputViewModel.CompletedBusArchitecture Architecture => + StageInputViewModel.CompletedBusArchitecture.IEPC; + + #endregion + } } \ No newline at end of file diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs index 4093dcb66c7d84beea74d21f38cd0d0577598762..918e5b32ab4dd579c5fb84d6a180ce47950bea56 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs @@ -536,6 +536,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation #region Implementation of interfaces (unused Properties); + public DataSource DataSource { get; } public XmlNode XMLSource => throw new NotImplementedException(); public string FanTechnology => throw new NotImplementedException(); diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageInputViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageInputViewModel.cs index a72db4c74fede1f9c21f051eede2d53578136320..aed04bc9a615eaab96bc90fbd13de6de8bf9c332 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageInputViewModel.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageInputViewModel.cs @@ -52,6 +52,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation if (SetProperty(ref _architecture, value)) { UpdateVehicleViewModel(); + OnPropertyChanged(nameof(SwitchComponentViewCommand)); } } } @@ -101,11 +102,12 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation public StageInputViewModel(IDeclarationInputDataProvider inputData, IMultiStageViewModelFactory multiStageViewModelFactory, IAdditionalJobInfoViewModel additionalJobInfoViewModel) : this(multiStageViewModelFactory, additionalJobInfoViewModel) { _documentName = inputData.JobInputData.JobName; - + + _vehicleViewModel = _viewModelFactory.GetInterimStageVehicleViewModel(inputData.JobInputData.Vehicle); //_vehicleViewModel = // _viewModelFactory.CreateStageInputVehicleViewModel(inputData.JobInputData.Vehicle) as IMultistageVehicleViewModel; // (_vehicleViewModel as InterimStageBusVehicleViewModel).ShowConsolidatedData = false; - + _architecture = _vehicleViewModel.Architecture; _dataSource = inputData.DataSource; VehicleInputDataFilePath = _dataSource.SourceFile; @@ -144,12 +146,13 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation Components["auxiliaries"] = VehicleViewModel.MultistageAuxiliariesViewModel as IViewModelBase; Components["airdrag"] = VehicleViewModel.MultistageAirdragViewModel as IViewModelBase; - + + CurrentView = null; if (prevKey != null) { CurrentView = Components[prevKey]; - } else { - CurrentView = VehicleViewModel as IViewModelBase; - } + } + CurrentView = CurrentView ?? VehicleViewModel as IViewModelBase; + diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultiStageViewModelFactory.cs b/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultiStageViewModelFactory.cs index 5fa7479e285b5b77ce674e3f271a75da187025a0..f184661710a2142ea2c103852bc7407924a05058 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultiStageViewModelFactory.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultiStageViewModelFactory.cs @@ -22,6 +22,7 @@ IMultistageViewModelFactoryFirstParameterAsNameInstanceProvider { //IVehicleViewModel GetInterimStageVehicleViewModel(StageInputViewModel.CompletedBusArchitecture arch); IMultistageVehicleViewModel GetInterimStageVehicleViewModel(StageInputViewModel.CompletedBusArchitecture arch); + IMultistageVehicleViewModel GetInterimStageVehicleViewModel(IVehicleDeclarationInputData inputData); } diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultistageVehicleViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultistageVehicleViewModel.cs index c2349ca4cffa52814b41d11b820e3b29634b1da5..01cbeefad06fb61014e98dbb61d1a7cec5610fba 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultistageVehicleViewModel.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultistageVehicleViewModel.cs @@ -14,6 +14,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Interfaces IMultistageAuxiliariesViewModel MultistageAuxiliariesViewModel { get; set; } bool PrimaryVehicleHybridElectric { get; set; } bool ShowConsolidatedData { get; set; } + StageInputViewModel.CompletedBusArchitecture Architecture { get; } void SetVehicleInputData(IVehicleDeclarationInputData vehicleInputData, bool checkExempted); } } diff --git a/Vecto3GUI2020Test/MockInput/MockDocument.cs b/Vecto3GUI2020Test/MockInput/MockDocument.cs index 5a8343aded3adfb98d1f528a16f4606038a46edb..b21146d679aee40875a4c4d7ffd47b9f702b6fed 100644 --- a/Vecto3GUI2020Test/MockInput/MockDocument.cs +++ b/Vecto3GUI2020Test/MockInput/MockDocument.cs @@ -25,7 +25,7 @@ public static class MockDocument public static IDeclarationInputDataProvider GetDeclarationJob() { - var mock = new Mock<IDeclarationInputDataProvider>(); + var mock = new Mock<IDeclarationInputDataProvider>(MockBehavior.Strict); mock.SetupGet(i => i.DataSource).Returns(MockInput.GetMockDataSource("VectoInputDeclaration", XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V20)); mock.SetupGet(i => i.JobInputData).Returns(GetDeclarationJobInputData()); @@ -36,7 +36,8 @@ public static class MockDocument public static IMultistepBusInputDataProvider GetMultistepInput(XNamespace stepInputVersion, string stepInputType, int nrOfStages) { - var mock = new Mock<IMultistepBusInputDataProvider>(); + + var mock = new Mock<IMultistepBusInputDataProvider>(MockBehavior.Strict); mock.SetupGet(m => m.JobInputData).Returns(GetMultistageJobInputData(version:stepInputVersion, type:stepInputType, nrOfStages:nrOfStages)); mock.SetupGet(m => m.DataSource).Returns(MockInput.GetMockDataSource(XMLDeclarationInputDataProviderMultistageV01.XSD_TYPE, XMLDefinitions.DECLARATION_MULTISTAGE_BUS_VEHICLE_NAMESPACE_VO1)); diff --git a/Vecto3GUI2020Test/ViewModelTests/FactoryTests/DocumentViewModelFactoryTest.cs b/Vecto3GUI2020Test/ViewModelTests/FactoryTests/DocumentViewModelFactoryTest.cs index 83dacbfbd9f7a2f39c487948ceee6203be441f46..a13ac69973c1f33e4d6858661ccc3b4c589bf1b2 100644 --- a/Vecto3GUI2020Test/ViewModelTests/FactoryTests/DocumentViewModelFactoryTest.cs +++ b/Vecto3GUI2020Test/ViewModelTests/FactoryTests/DocumentViewModelFactoryTest.cs @@ -35,10 +35,10 @@ namespace Vecto3GUI2020Test.ViewModelTests.FactoryTests } [TestCase( XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationConventionalCompletedBusDataProviderV24.XSD_TYPE)] - [TestCase( XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationConventionalCompletedBusDataProviderV24.XSD_TYPE)] - [TestCase( XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationConventionalCompletedBusDataProviderV24.XSD_TYPE)] - [TestCase( XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationConventionalCompletedBusDataProviderV24.XSD_TYPE)] - [TestCase( XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationConventionalCompletedBusDataProviderV24.XSD_TYPE)] + [TestCase( XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationHevCompletedBusDataProviderV24.XSD_TYPE)] + [TestCase( XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationPEVCompletedBusDataProviderV24.XSD_TYPE)] + [TestCase( XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationExemptedCompletedBusDataProviderV24.XSD_TYPE)] + [TestCase( XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationIepcCompletedBusDataProviderV24.XSD_TYPE)] public void StepInputDocument(string version, string type) { XNamespace ns = version; @@ -47,7 +47,32 @@ namespace Vecto3GUI2020Test.ViewModelTests.FactoryTests version); var document = _documentViewModelFactory.CreateDocumentViewModel(vehicleInput); var stepInputViewModel = document as StageInputViewModel; - Assert.NotNull(stepInputViewModel); + + var arch = stepInputViewModel.Architecture; + if (type == XMLDeclarationConventionalCompletedBusDataProviderV24.XSD_TYPE) { + Assert.AreEqual(arch, StageInputViewModel.CompletedBusArchitecture.Conventional); + } + + if (type == XMLDeclarationPEVCompletedBusDataProviderV24.XSD_TYPE) { + Assert.AreEqual(arch, StageInputViewModel.CompletedBusArchitecture.PEV); + } + + if (type == XMLDeclarationHevCompletedBusDataProviderV24.XSD_TYPE) + { + Assert.AreEqual(arch, StageInputViewModel.CompletedBusArchitecture.HEV); + } + + if (type == XMLDeclarationIepcCompletedBusDataProviderV24.XSD_TYPE) + { + Assert.AreEqual(arch, StageInputViewModel.CompletedBusArchitecture.IEPC); + } + + if (type == XMLDeclarationExemptedCompletedBusDataProviderV24.XSD_TYPE) + { + Assert.AreEqual(arch, StageInputViewModel.CompletedBusArchitecture.Exempted); + } + + Assert.NotNull(stepInputViewModel); } [TestCase] @@ -59,15 +84,20 @@ namespace Vecto3GUI2020Test.ViewModelTests.FactoryTests } - [TestCase(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationConventionalCompletedBusDataProviderV24.XSD_TYPE)] - [TestCase(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationConventionalCompletedBusDataProviderV24.XSD_TYPE)] - [TestCase(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationConventionalCompletedBusDataProviderV24.XSD_TYPE)] - [TestCase(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationConventionalCompletedBusDataProviderV24.XSD_TYPE)] - [TestCase(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationConventionalCompletedBusDataProviderV24.XSD_TYPE)] - public void MultistepInput(string version, string type) + [TestCase(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationConventionalCompletedBusDataProviderV24.XSD_TYPE, VectoSimulationJobType.ConventionalVehicle)] + [TestCase(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationHevCompletedBusDataProviderV24.XSD_TYPE, VectoSimulationJobType.SerialHybridVehicle)] + [TestCase(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationHevCompletedBusDataProviderV24.XSD_TYPE, VectoSimulationJobType.ParallelHybridVehicle)] + [TestCase(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationPEVCompletedBusDataProviderV24.XSD_TYPE, VectoSimulationJobType.BatteryElectricVehicle)] + [TestCase(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationIepcCompletedBusDataProviderV24.XSD_TYPE, VectoSimulationJobType.IEPC_E)] + [TestCase(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationExemptedCompletedBusDataProviderV24.XSD_TYPE, VectoSimulationJobType.EngineOnlySimulation)] + public void MultistepInput(string version, string type, VectoSimulationJobType jobType) { var ns = version; IMultistepBusInputDataProvider multistepInput = MockDocument.GetMultistepInput(ns, type, 3); + var mock = Mock.Get(multistepInput); + mock.SetupGet(c => c.JobInputData.ConsolidateManufacturingStage.Vehicle.VehicleType).Returns(jobType); + mock.SetupGet(c => c.JobInputData.ConsolidateManufacturingStage.Vehicle.ExemptedVehicle) + .Returns(type == XMLDeclarationExemptedCompletedBusDataProviderV24.XSD_TYPE); var doc = _documentViewModelFactory.CreateDocumentViewModel(multistepInput); Assert.NotNull(doc); var multistepViewModel = doc as MultiStageJobViewModel_v0_1; diff --git a/Vecto3GUI2020Test/ViewModelTests/StepViewModelTests.cs b/Vecto3GUI2020Test/ViewModelTests/StepViewModelTests.cs index 64fc411655169a1fffd42f4622b1ea6914d62794..2525fa144741e040c820ccea287b2dc53802fc4b 100644 --- a/Vecto3GUI2020Test/ViewModelTests/StepViewModelTests.cs +++ b/Vecto3GUI2020Test/ViewModelTests/StepViewModelTests.cs @@ -175,7 +175,6 @@ namespace Vecto3GUI2020Test.ViewModelTests var oldVm = stepInput.VehicleViewModel; Assert.NotNull(stepInput.VehicleViewModel); - stepInput.Architecture = to; var newVm = stepInput.VehicleViewModel; Assert.NotNull(newVm); diff --git a/Vecto3GUI2020Test/XML/XMLWritingTest/XMLCompletedBusVehicleWriterTest.cs b/Vecto3GUI2020Test/XML/XMLWritingTest/XMLCompletedBusVehicleWriterTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..098d1fc90f6cc8eaa9b5fa7e9c8336da9b337f9c --- /dev/null +++ b/Vecto3GUI2020Test/XML/XMLWritingTest/XMLCompletedBusVehicleWriterTest.cs @@ -0,0 +1,262 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text; +using System.Windows.Documents; +using System.Xml; +using System.Xml.Linq; +using Castle.Components.DictionaryAdapter.Xml; +using Ninject; +using NUnit.Framework; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCore.InputData.FileIO.XML; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider.v24; +using TUGraz.VectoCore.Utils; +using VECTO3GUI2020.Util.XML; +using VECTO3GUI2020.Util.XML.Vehicle; +using Vecto3GUI2020Test.MockInput; +using Vecto3GUI2020Test.Utils; + +namespace Vecto3GUI2020Test.XML.XMLWritingTest; + +[TestFixture] +public class XMLCompletedBusVehicleWriterTest +{ + private MockDialogHelper _mockDialogHelper; + private IKernel _kernel; + private IXMLWriterFactory _xmlWriterFactory; + + + + + [OneTimeSetUp()] + public void Setup() + { + _kernel = TestHelper.GetKernel(out _mockDialogHelper, out _); + _xmlWriterFactory = _kernel.Get<IXMLWriterFactory>(); + _xmlInputDataReader = _kernel.Get<IXMLInputDataReader>(); + } + + [TestCase(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationConventionalCompletedBusDataProviderV24.XSD_TYPE, typeof(XMLCompletedBusVehicleWriterConventional))] + [TestCase(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationExemptedCompletedBusDataProviderV24.XSD_TYPE, typeof(XMLCompletedBusVehicleWriterExempted))] + [TestCase(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationHevCompletedBusDataProviderV24.XSD_TYPE, typeof(XMLCompletedBusVehicleWriterHEV))] + [TestCase(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationPEVCompletedBusDataProviderV24.XSD_TYPE, typeof(XMLCompletedBusVehicleWriterPEV))] + [TestCase(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLDeclarationIepcCompletedBusDataProviderV24.XSD_TYPE, typeof(XMLCompletedBusVehicleWriterIEPC))] + public void WriteVehicle(string version, string type, Type expectedWriter) + { + + var vehicleData = MockVehicle.GetMockVehicle(type, version); + var writer = _xmlWriterFactory.CreateVehicleWriter(vehicleData); + Assert.NotNull(writer); + Assert.AreEqual(expectedWriter, writer.GetType()); + + var xElement = writer.GetElement(); + + + + + + var doc = CreateDocumentWithVehicle(xElement); + WriteDocument(doc, out _); + + } + protected string LocalSchemaLocation = @"V:\VectoCore\VectoCore\Resources\XSD\"; + private IXMLInputDataReader _xmlInputDataReader; + + public XDocument CreateDocumentWithVehicle(XElement vehicleElement) + { + + var schemaVersion = "2.0"; + var xDocument = new XDocument(); + + var xElement = new XElement(XMLNamespaces.Tns_v20 + XMLNames.VectoInputDeclaration); + xDocument.Add(xElement); + + xElement.Add(new XAttribute("schemaVersion", schemaVersion)); + xElement.Add(new XAttribute(XNamespace.Xmlns + "xsi", XMLNamespaces.Xsi.NamespaceName)); + xElement.Add(new XAttribute(XNamespace.Xmlns + "tns", XMLNamespaces.Tns_v20)); + xElement.Add(new XAttribute(XNamespace.Xmlns + "v2.0", XMLNamespaces.V20)); + xElement.Add(new XAttribute(XMLNamespaces.Xsi + "schemaLocation", + $"{XMLNamespaces.DeclarationRootNamespace} {LocalSchemaLocation}VectoDeclarationJob.xsd")); + xElement.Add(vehicleElement); + return xDocument; + } + + + public static List<string> GetXMLJobs(params string[] path) + { + List<string> files = new List<string>(); + foreach (var pathItem in path) { + files.AddRange(GetFiles(pathItem, "*.xml")); + } + + return files; + } + + public static List<string> GetFiles(string path, string searchPattern) + { + var dirPath = Path.GetFullPath(path); + List<string> vectoJobs = new List<string>(); + foreach (var fileName in Directory.EnumerateFiles(dirPath, searchPattern, SearchOption.AllDirectories)) + { + vectoJobs.Add(fileName); + } + return vectoJobs; + } + + + + [TestCaseSource(nameof(GetDistributedCompletedVehicleFiles))] + [TestCaseSource(nameof(GetCompletedBusDistributedSchema24))] + [TestCase("TestData\\XML\\SchemaVersion2.4\\Distributed\\CompletedBus\\Conventional_completedBus_1.xml", TestName="Conventional")] + public void LoadAndWriteFiles(string file) + { + var stepInput = _xmlInputDataReader.CreateDeclaration(file); + Assert.NotNull(stepInput); + + var writer = _xmlWriterFactory.CreateVehicleWriter(stepInput.JobInputData.Vehicle); + Assert.NotNull(writer); + + + var document = CreateDocumentWithVehicle(writer.GetElement()); + WriteDocument(document, out var result); + + IDeclarationInputDataProvider writtenInput; + using (var tr = new StringReader(result)) { + using (var xmlReader = new XmlTextReader(tr)) + writtenInput = _xmlInputDataReader.CreateDeclaration(xmlReader); + } + + + Compare(stepInput, writtenInput); + } + + public void Compare(IDeclarationInputDataProvider a, IDeclarationInputDataProvider b) + { + var vehA = a.JobInputData.Vehicle; + var vehB = b.JobInputData.Vehicle; + Assert.AreEqual(vehA.Manufacturer, vehB.Manufacturer); + Assert.AreEqual(vehA.ManufacturerAddress, vehB.ManufacturerAddress); + //TODO: add all relevant properties + + + Assert.AreEqual(vehA.Components?.AirdragInputData?.DigestValue.DigestValue, vehB.Components?.AirdragInputData?.DigestValue.DigestValue); + + + CompareBusAux(vehA.Components?.BusAuxiliaries, vehB.Components?.BusAuxiliaries); + } + + private void CompareBusAux(IBusAuxiliariesDeclarationData busAuxA, IBusAuxiliariesDeclarationData busAuxB) + { + if (busAuxA == null && busAuxB == null) { + return; + } + + Assert.NotNull(busAuxB); + Assert.NotNull(busAuxA); + + CompareHVAC(busAuxA?.HVACAux, busAuxB?.HVACAux); + CompareElectricConsumers( busAuxA?.ElectricConsumers, busAuxB?.ElectricConsumers); + } + + private static void CompareElectricConsumers(IElectricConsumersDeclarationData consumerA, IElectricConsumersDeclarationData consumerB) + { + if (consumerA == null && consumerB == null) { + return; + } + Assert.AreEqual(consumerA.BrakelightsLED, consumerB.BrakelightsLED); + Assert.AreEqual(consumerA.DayrunninglightsLED, consumerB.DayrunninglightsLED); + Assert.AreEqual(consumerA.HeadlightsLED, consumerB.HeadlightsLED); + Assert.AreEqual(consumerA.InteriorLightsLED, consumerB.InteriorLightsLED); + Assert.AreEqual(consumerA.PositionlightsLED, consumerB.PositionlightsLED); + } + + private static void CompareHVAC(IHVACBusAuxiliariesDeclarationData hvacA, IHVACBusAuxiliariesDeclarationData hvacB) + { + if (hvacA == null && hvacB == null) { + return; + } + + Assert.AreEqual(hvacA.SystemConfiguration, hvacB.SystemConfiguration); + Assert.AreEqual(hvacA.HeatPumpTypeCoolingDriverCompartment, hvacB.HeatPumpTypeCoolingDriverCompartment); + Assert.AreEqual(hvacA.HeatPumpTypeHeatingDriverCompartment, hvacB.HeatPumpTypeHeatingDriverCompartment); + Assert.AreEqual(hvacA.HeatPumpTypeCoolingPassengerCompartment, hvacB.HeatPumpTypeCoolingPassengerCompartment); + Assert.AreEqual(hvacA.HeatPumpTypeHeatingPassengerCompartment, hvacB.HeatPumpTypeHeatingPassengerCompartment); + Assert.AreEqual(hvacA.AuxHeaterPower, hvacB.AuxHeaterPower); + Assert.AreEqual(hvacA.DoubleGlazing, hvacB.DoubleGlazing); + Assert.AreEqual(hvacA.AdjustableAuxiliaryHeater, hvacB.AdjustableAuxiliaryHeater); + Assert.AreEqual(hvacA.SeparateAirDistributionDucts, hvacB.SeparateAirDistributionDucts); + } + + + public static void WriteDocument(XDocument document, out string writtenXml) + { + string documentString = ""; + using (var memoryWriter = new MemoryStream()) + { + using (var xmlWriter = new XmlTextWriter(memoryWriter, Encoding.UTF8)) + { + xmlWriter.Formatting = Formatting.Indented; + xmlWriter.Namespaces = true; + document.WriteTo(xmlWriter); + + xmlWriter.Flush(); + + memoryWriter.Seek(0, SeekOrigin.Begin); + using (var streamReader = new StreamReader(memoryWriter)) { + writtenXml = streamReader.ReadToEnd(); + TestContext.WriteLine(writtenXml); + } + + xmlWriter.Close(); + + } + + } + } + + + public static string[] GetDistributedCompletedVehicleFiles() + { + var _completedBusDistributed = "TestData\\XML\\SchemaVersion2.4\\Distributed\\CompletedBus"; + return GetFiles(Path.GetFullPath(_completedBusDistributed), "*.xml").ToArray(); + } + [DebuggerStepThrough] + public static string[] GetCompletedBusDistributedSchema24() + { + var _completedBusDistributed = "TestData\\XML\\SchemaVersion2.4"; + var inputDataReader = TestHelper.GetKernel().Get<IXMLInputDataReader>(); + var files = GetFiles(Path.GetFullPath(_completedBusDistributed), "*.xml").ToArray(); + var completedBusFiles = new List<string>(); + foreach (var file in files) { + try { + var completedInput = inputDataReader.CreateDeclaration(file); + if(completedInput.JobInputData.Vehicle is AbstractXMLDeclarationCompletedBusDataProviderV24) + { + completedBusFiles.Add(file); + } + } catch (Exception ex) { + //ignore; + } + } + + return completedBusFiles.ToArray(); + } + + + [TearDown] + public void AfterTestChecks() + { + _mockDialogHelper.AssertNoErrorDialogs(); + } + + + + + + + +} \ No newline at end of file diff --git a/Vecto3GUI2020Test/XML/XMLWritingTest/XMLComponentsWriterFactoryTest.cs b/Vecto3GUI2020Test/XML/XMLWritingTest/XMLComponentsWriterFactoryTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..0702d317b59c20c82afd9cef05f91afc41768019 --- /dev/null +++ b/Vecto3GUI2020Test/XML/XMLWritingTest/XMLComponentsWriterFactoryTest.cs @@ -0,0 +1,66 @@ +using System; +using System.Security.RightsManagement; +using System.Xml.Linq; +using Castle.Components.DictionaryAdapter.Xml; +using Ninject; +using NUnit.Framework; +using TUGraz.VectoCore.Utils; +using VECTO3GUI2020.Resources.XML; +using VECTO3GUI2020.Util.XML; +using VECTO3GUI2020.Util.XML.Components; +using Vecto3GUI2020Test.Utils; + +namespace Vecto3GUI2020Test.XML.XMLWritingTest; + +[TestFixture] +public class XMLComponentsWriterFactoryTest +{ + private MockDialogHelper _mockDialogHelper; + private IKernel _kernel; + private IXMLWriterFactory _xmlWriterFactory; + + + [SetUp] + public void Setup() + { + _kernel = TestHelper.GetKernel(out _mockDialogHelper, out _); + _xmlWriterFactory = _kernel.Get<IXMLWriterFactory>(); + } + + + [TestCase(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLTypes.Components_Conventional_CompletedBusType, typeof(XMLCompletedBusComponentWriter_Conventional))] + [TestCase(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLTypes.Components_xEV_CompletedBusType, typeof(XMLCompletedBusComponentsWriter_xEV))] + public void CreateComponentsWriter(string version, string type, Type expectedType) + { + XNamespace ns = version; + + + var writer = _xmlWriterFactory.CreateComponentsWriterWithVersion(ns, type); + Assert.AreEqual(expectedType, writer.GetType()); + + + } + + [TestCase(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V20, XMLTypes.AirDragDataDeclarationType, typeof(XMLAirDragWriter_v2_0))] + public void CreateAirdragComponentWriter(string version, string type, Type expectedType) + { + + XNamespace ns = version; + var writer = _xmlWriterFactory.CreateComponentWriterWithVersion<IXMLComponentWriter>(ns, type); + + Assert.AreEqual(expectedType, writer.GetType()); + } + + + [TestCase(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLTypes.AUX_Conventional_CompletedBusType, typeof(XMLCompletedBusAuxiliariesWriterConventional))] + [TestCase(XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24, XMLTypes.AUX_xEV_CompletedBusType, typeof(XMLCompletedBusAuxiliariesWriter_xEV))] + public void CreateBusAuxiliariesWriter(string version, string type, Type expectedType) + { + + XNamespace ns = version; + var writer = _xmlWriterFactory.CreateComponentWriterWithVersion<IXMLBusAuxiliariesWriter>(ns, type); + + Assert.AreEqual(expectedType, writer.GetType()); + } + +} \ No newline at end of file diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs index eed8e7c671bbeb7983ae718bccf9397c68a2cb8c..d43fa8cda3174874abdc699d9f38362e282a6fca 100644 --- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs +++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs @@ -1018,6 +1018,8 @@ namespace TUGraz.VectoCommon.InputData public interface IBusAuxiliariesDeclarationData { + DataSource DataSource { get; } + XmlNode XMLSource { get; } string FanTechnology { get; } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Common/AbstractXMLResource.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Common/AbstractXMLResource.cs index 648e5b7baafe2fee607329a27f614d6dbff12792..71abcfde418c7601e20a512e6d7415dd76f21f22 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Common/AbstractXMLResource.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Common/AbstractXMLResource.cs @@ -46,6 +46,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Common { } public virtual DataSource DataSource => new DataSource() { + + Type = SchemaType, TypeVersion = QualifiedName.Namespace, SourceFile = SourceFile, diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Common/AbstractXMLType.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Common/AbstractXMLType.cs index 039cc71206abef51a354af0bf86a807d4bd4e048..afafc12f6c3fdc5790e6bae964ecb50a87363343 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Common/AbstractXMLType.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Common/AbstractXMLType.cs @@ -47,8 +47,12 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Common { protected readonly XmlQualifiedName QualifiedName; protected AbstractXMLType(XmlNode node) { - SchemaType = node.SchemaInfo?.SchemaType?.Name ; - QualifiedName = node.SchemaInfo?.SchemaType.QualifiedName; + var schemaType = XMLHelper.GetSchemaType(node); + + SchemaType = schemaType?.Name; + + + QualifiedName = schemaType?.QualifiedName; BaseNode = node; } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs index 9eb37a499d24b4d4e25b91a71110ea7dd877a418..31b495ce814a63738f0b2e0f8ddcf956ce49240a 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs @@ -22,10 +22,17 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public static XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; public AbstractXMLDeclarationPrimaryBusAuxiliariesDataProviderV24( - XmlNode componentNode) : base(componentNode) { } + XmlNode componentNode) : base(componentNode) + { + + } #region Implementation of IBusAuxiliariesDeclarationData + public DataSource DataSource => new DataSource() { + Type = SchemaType, + TypeVersion = QualifiedName.Namespace + }; public virtual XmlNode XMLSource => BaseNode; public virtual string FanTechnology @@ -227,9 +234,12 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); - + public XMLDeclarationPrimaryBusAuxiliariesConventionalDataProviderV24( - IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base(componentNode) { } + IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base(componentNode) + { + + } public override bool ESSupplyFromHEVREESS => false; } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs index 46ece69d99243c2a4acc33dcb7ec050bb9577621..1ce3eac0436c8c5e48aac039c3fb5da3eea67499 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs @@ -1113,6 +1113,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl public ConsolidatedBusAuxiliariesData(IEnumerable<IManufacturingStageInputData> manufacturingStages) : base(manufacturingStages) { } + public DataSource DataSource + { + get => _manufacturingStages.Select(s => s.Vehicle.Components.BusAuxiliaries.DataSource).FirstOrDefault(); + } public XmlNode XMLSource => _xmlNode ?? (_xmlNode = GetBusAuxXMLSource()); public string FanTechnology => null; diff --git a/VectoCore/VectoCore/OutputData/XML/ComponentWriter/ComponentWriterNinjectModule.cs b/VectoCore/VectoCore/OutputData/XML/ComponentWriter/ComponentWriterNinjectModule.cs index 015197523b60bc480e6c83c7d20e26d9aa617ece..4bf5cf6cdee988228fd63ed63295e1ef76f2594a 100644 --- a/VectoCore/VectoCore/OutputData/XML/ComponentWriter/ComponentWriterNinjectModule.cs +++ b/VectoCore/VectoCore/OutputData/XML/ComponentWriter/ComponentWriterNinjectModule.cs @@ -1,6 +1,7 @@ using System.Xml.Linq; using Ninject.Extensions.Factory; using TUGraz.VectoCore.OutputData.XML.GroupWriter; +using TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration; using TUGraz.VectoCore.Utils.Ninject; namespace TUGraz.VectoCore.OutputData.XML.ComponentWriter @@ -20,13 +21,21 @@ namespace TUGraz.VectoCore.OutputData.XML.ComponentWriter //ADASTypes - var v2102 = XMLDeclarationNamespaces.V24; + var v24 = XMLDeclarationNamespaces.V24; Bind<IDeclarationAdasWriter>().To<AdasConventionalWriter>(). - Named(GetName(GroupNames.ADAS_Conventional_Type, v2102)); + Named(GetName(GroupNames.ADAS_Conventional_Type, v24)); + Bind<IDeclarationAdasWriter>().To<AdasHEVWriter>(). + Named(GetName(GroupNames.ADAS_HEV_Type, v24)); + Bind<IDeclarationAdasWriter>().To<AdasPEVWriter>(). + Named(GetName(GroupNames.ADAS_PEV_Type, v24)); + Bind<IDeclarationAdasWriter>().To<AdasIEPCWriter>(). + Named(GetName(GroupNames.ADAS_IEPC_Type, v24)); - } + + + } #endregion } diff --git a/VectoCore/VectoCore/OutputData/XML/ComponentWriter/Declaration/ADAS_Writer.cs b/VectoCore/VectoCore/OutputData/XML/ComponentWriter/Declaration/ADAS_Writer.cs index 2160ebc6ceb4d461ad8b1b5caa3552f95997706a..7a6091d41930f82f142866a1608015da467af9b7 100644 --- a/VectoCore/VectoCore/OutputData/XML/ComponentWriter/Declaration/ADAS_Writer.cs +++ b/VectoCore/VectoCore/OutputData/XML/ComponentWriter/Declaration/ADAS_Writer.cs @@ -7,6 +7,7 @@ using System.Xml.Linq; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Resources; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; +using TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration; namespace TUGraz.VectoCore.OutputData.XML.ComponentWriter { @@ -17,13 +18,38 @@ namespace TUGraz.VectoCore.OutputData.XML.ComponentWriter XElement GetComponent(IAdvancedDriverAssistantSystemDeclarationInputData adas); } - public class AdasConventionalWriter : ComponentWriter, IDeclarationAdasWriter + public abstract class AdasWriter : ComponentWriter, IDeclarationAdasWriter + { + protected abstract string AdasType { get; } + + protected AdasWriter(XNamespace writerNamespace) : base(writerNamespace) + { + } + + #region Implementation of IDeclarationAdasWriter + + public abstract XElement[] GetComponentElements(IAdvancedDriverAssistantSystemDeclarationInputData adas); + + public XElement GetComponent(IAdvancedDriverAssistantSystemDeclarationInputData adas) + { + return new XElement(_writerNamespace + XMLNames.Vehicle_ADAS, + new XAttribute(XMLDeclarationNamespaces.Xsi + XMLNames.Attr_Type, AdasType), + GetComponentElements(adas)); + } + + #endregion + } + + + public class AdasConventionalWriter : AdasWriter { public AdasConventionalWriter(XNamespace writerNamespace) : base(writerNamespace) { } #region Implementation of IADASWriter - public XElement[] GetComponentElements(IAdvancedDriverAssistantSystemDeclarationInputData adas) + protected override string AdasType => GroupNames.ADAS_Conventional_Type; + + public override XElement[] GetComponentElements(IAdvancedDriverAssistantSystemDeclarationInputData adas) { var elements = new List<XElement>(); @@ -38,13 +64,63 @@ namespace TUGraz.VectoCore.OutputData.XML.ComponentWriter return elements.ToArray(); } - public XElement GetComponent(IAdvancedDriverAssistantSystemDeclarationInputData adas) + + + #endregion + } + + public class AdasHEVWriter : AdasWriter + { + protected override string AdasType => GroupNames.ADAS_HEV_Type; + public AdasHEVWriter(XNamespace writerNamespace) : base(writerNamespace) { } + + #region Implementation of IADASWriter + + public override XElement[] GetComponentElements(IAdvancedDriverAssistantSystemDeclarationInputData adas) { - return new XElement(_writerNamespace + XMLNames.Vehicle_ADAS, - new XAttribute(XMLDeclarationNamespaces.Xsi + XMLNames.Attr_Type, "ADAS_Conventional_Type"), - GetComponentElements(adas)); + var elements = new List<XElement>(); + + elements.Add(new XElement(_writerNamespace + XMLNames.Vehicle_ADAS_EngineStopStart, adas.EngineStopStart)); + elements.Add(new XElement(_writerNamespace + XMLNames.Vehicle_ADAS_PCC, adas.PredictiveCruiseControl.ToXMLFormat())); + + return elements.ToArray(); } #endregion } + + public class AdasPEVWriter : AdasWriter + { + protected override string AdasType => GroupNames.ADAS_PEV_Type; + public AdasPEVWriter(XNamespace writerNamespace) : base(writerNamespace) { } + + #region Implementation of IADASWriter + + public override XElement[] GetComponentElements(IAdvancedDriverAssistantSystemDeclarationInputData adas) + { + var elements = new List<XElement>(); + elements.Add(new XElement(_writerNamespace + XMLNames.Vehicle_ADAS_PCC, adas.PredictiveCruiseControl.ToXMLFormat())); + return elements.ToArray(); + } + + #endregion + } + + public class AdasIEPCWriter : AdasWriter + { + protected override string AdasType => GroupNames.ADAS_IEPC_Type; + public AdasIEPCWriter(XNamespace writerNamespace) : base(writerNamespace) { } + + #region Implementation of IADASWriter + + public override XElement[] GetComponentElements(IAdvancedDriverAssistantSystemDeclarationInputData adas) + { + var elements = new List<XElement>(); + elements.Add(new XElement(_writerNamespace + XMLNames.Vehicle_ADAS_PCC, adas.PredictiveCruiseControl.ToXMLFormat())); + return elements.ToArray(); + } + + #endregion + } + } diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/GroupNames.Designer.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/GroupNames.Designer.cs new file mode 100644 index 0000000000000000000000000000000000000000..926f56d1b5dcf80a2e4ec0c0c8a4317215489551 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/GroupNames.Designer.cs @@ -0,0 +1,180 @@ +//------------------------------------------------------------------------------ +// <auto-generated> +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 +// +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. +// </auto-generated> +//------------------------------------------------------------------------------ + +namespace TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration { + using System; + + + /// <summary> + /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. + /// </summary> + // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert + // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. + // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen + // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + public class GroupNames { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal GroupNames() { + } + + /// <summary> + /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. + /// </summary> + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.GroupNames", typeof(GroupNames).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// <summary> + /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle + /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. + /// </summary> + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// <summary> + /// Sucht eine lokalisierte Zeichenfolge, die ADAS_Conventional_Type ähnelt. + /// </summary> + public static string ADAS_Conventional_Type { + get { + return ResourceManager.GetString("ADAS_Conventional_Type", resourceCulture); + } + } + + /// <summary> + /// Sucht eine lokalisierte Zeichenfolge, die ADAS_HEV_Type ähnelt. + /// </summary> + public static string ADAS_HEV_Type { + get { + return ResourceManager.GetString("ADAS_HEV_Type", resourceCulture); + } + } + + /// <summary> + /// Sucht eine lokalisierte Zeichenfolge, die ADAS_IEPC_Type ähnelt. + /// </summary> + public static string ADAS_IEPC_Type { + get { + return ResourceManager.GetString("ADAS_IEPC_Type", resourceCulture); + } + } + + /// <summary> + /// Sucht eine lokalisierte Zeichenfolge, die ADAS_PEV_Type ähnelt. + /// </summary> + public static string ADAS_PEV_Type { + get { + return ResourceManager.GetString("ADAS_PEV_Type", resourceCulture); + } + } + + /// <summary> + /// Sucht eine lokalisierte Zeichenfolge, die BusAuxElectricSystemLightsGroup ähnelt. + /// </summary> + public static string BusAuxElectricSystemLightsGroup { + get { + return ResourceManager.GetString("BusAuxElectricSystemLightsGroup", resourceCulture); + } + } + + /// <summary> + /// Sucht eine lokalisierte Zeichenfolge, die BusAuxElectricSystemSupplySequenceGroup ähnelt. + /// </summary> + public static string BusAuxElectricSystemSupplySequenceGroup { + get { + return ResourceManager.GetString("BusAuxElectricSystemSupplySequenceGroup", resourceCulture); + } + } + + /// <summary> + /// Sucht eine lokalisierte Zeichenfolge, die BusAuxHVACConventionalSequenceGroup ähnelt. + /// </summary> + public static string BusAuxHVACConventionalSequenceGroup { + get { + return ResourceManager.GetString("BusAuxHVACConventionalSequenceGroup", resourceCulture); + } + } + + /// <summary> + /// Sucht eine lokalisierte Zeichenfolge, die BusAuxHVACHeatPumpSequenceGroup ähnelt. + /// </summary> + public static string BusAuxHVACHeatPumpSequenceGroup { + get { + return ResourceManager.GetString("BusAuxHVACHeatPumpSequenceGroup", resourceCulture); + } + } + + /// <summary> + /// Sucht eine lokalisierte Zeichenfolge, die BusAuxHVACxEVSequenceGroup ähnelt. + /// </summary> + public static string BusAuxHVACxEVSequenceGroup { + get { + return ResourceManager.GetString("BusAuxHVACxEVSequenceGroup", resourceCulture); + } + } + + /// <summary> + /// Sucht eine lokalisierte Zeichenfolge, die Vehicle_CompletedBus_DimensionsSequenceGroup ähnelt. + /// </summary> + public static string Vehicle_CompletedBus_DimensionsSequenceGroup { + get { + return ResourceManager.GetString("Vehicle_CompletedBus_DimensionsSequenceGroup", resourceCulture); + } + } + + /// <summary> + /// Sucht eine lokalisierte Zeichenfolge, die Vehicle_CompletedBus_GeneralParametersSequenceGroup ähnelt. + /// </summary> + public static string Vehicle_CompletedBus_GeneralParametersSequenceGroup { + get { + return ResourceManager.GetString("Vehicle_CompletedBus_GeneralParametersSequenceGroup", resourceCulture); + } + } + + /// <summary> + /// Sucht eine lokalisierte Zeichenfolge, die Vehicle_CompletedBus_PassengerCountSequenceGroup ähnelt. + /// </summary> + public static string Vehicle_CompletedBus_PassengerCountSequenceGroup { + get { + return ResourceManager.GetString("Vehicle_CompletedBus_PassengerCountSequenceGroup", resourceCulture); + } + } + + /// <summary> + /// Sucht eine lokalisierte Zeichenfolge, die Vehicle_CompletedBusParametersSequenceGroup ähnelt. + /// </summary> + public static string Vehicle_CompletedBusParametersSequenceGroup { + get { + return ResourceManager.GetString("Vehicle_CompletedBusParametersSequenceGroup", resourceCulture); + } + } + } +} diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/GroupNames.resx b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/GroupNames.resx new file mode 100644 index 0000000000000000000000000000000000000000..bdb64d3d903c2b236b31a0142feb5962558902cb --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/GroupNames.resx @@ -0,0 +1,159 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <data name="ADAS_Conventional_Type" xml:space="preserve"> + <value>ADAS_Conventional_Type</value> + </data> + <data name="ADAS_HEV_Type" xml:space="preserve"> + <value>ADAS_HEV_Type</value> + </data> + <data name="ADAS_IEPC_Type" xml:space="preserve"> + <value>ADAS_IEPC_Type</value> + </data> + <data name="ADAS_PEV_Type" xml:space="preserve"> + <value>ADAS_PEV_Type</value> + </data> + <data name="BusAuxElectricSystemLightsGroup" xml:space="preserve"> + <value>BusAuxElectricSystemLightsGroup</value> + </data> + <data name="BusAuxElectricSystemSupplySequenceGroup" xml:space="preserve"> + <value>BusAuxElectricSystemSupplySequenceGroup</value> + </data> + <data name="BusAuxHVACConventionalSequenceGroup" xml:space="preserve"> + <value>BusAuxHVACConventionalSequenceGroup</value> + </data> + <data name="BusAuxHVACHeatPumpSequenceGroup" xml:space="preserve"> + <value>BusAuxHVACHeatPumpSequenceGroup</value> + </data> + <data name="BusAuxHVACxEVSequenceGroup" xml:space="preserve"> + <value>BusAuxHVACxEVSequenceGroup</value> + </data> + <data name="Vehicle_CompletedBusParametersSequenceGroup" xml:space="preserve"> + <value>Vehicle_CompletedBusParametersSequenceGroup</value> + </data> + <data name="Vehicle_CompletedBus_DimensionsSequenceGroup" xml:space="preserve"> + <value>Vehicle_CompletedBus_DimensionsSequenceGroup</value> + </data> + <data name="Vehicle_CompletedBus_GeneralParametersSequenceGroup" xml:space="preserve"> + <value>Vehicle_CompletedBus_GeneralParametersSequenceGroup</value> + </data> + <data name="Vehicle_CompletedBus_PassengerCountSequenceGroup" xml:space="preserve"> + <value>Vehicle_CompletedBus_PassengerCountSequenceGroup</value> + </data> +</root> \ No newline at end of file diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusDimensionsWriter.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusDimensionsWriter.cs index f859fc1bf2953cef3cf42fac0f948dcfa27e52fa..77f0c5aa6fcb2b247c0c0059474746b856f9b224 100644 --- a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusDimensionsWriter.cs +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusDimensionsWriter.cs @@ -6,9 +6,9 @@ using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.Vehicle.CompletedBus { - class CompletedBusDimensionsWriter_V2_10_2 : GroupWriter, IVehicleDeclarationGroupWriter + class CompletedBusDimensionsWriter_V2_4 : GroupWriter, IVehicleDeclarationGroupWriter { - public CompletedBusDimensionsWriter_V2_10_2(XNamespace writerNamespace) : base(writerNamespace) { } + public CompletedBusDimensionsWriter_V2_4(XNamespace writerNamespace) : base(writerNamespace) { } public static XElement[] GetGroupElements(IVehicleDeclarationInputData vehicle, XNamespace writerNamespace) { diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusGeneralParametersWriter.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusGeneralParametersWriter.cs index dcc05754ef4298df12451302a3db203a86ba65c4..d490bb66ae5d1f6f6f40f1dbc9688fe9fbadc4df 100644 --- a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusGeneralParametersWriter.cs +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusGeneralParametersWriter.cs @@ -5,9 +5,9 @@ using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.Vehicle.CompletedBus { - public class CompletedBusGeneralParametersWriterV2_10_2 : GroupWriter, IVehicleDeclarationGroupWriter + public class CompletedBusGeneralParametersWriterV2_4 : GroupWriter, IVehicleDeclarationGroupWriter { - public CompletedBusGeneralParametersWriterV2_10_2(XNamespace writerNamespace) : base(writerNamespace) + public CompletedBusGeneralParametersWriterV2_4(XNamespace writerNamespace) : base(writerNamespace) { } diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusParametersWriter.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusParametersWriter.cs index 4de8ce5d7b280829e1df71cfcfec10053addf0be..8e90578ad1d115a294880c8fb3e15313ad7419d6 100644 --- a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusParametersWriter.cs +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusParametersWriter.cs @@ -6,9 +6,9 @@ using TUGraz.VectoCommon.Resources; namespace TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.Vehicle.CompletedBus { - class CompletedBusParametersWriterV2_10_2 : GroupWriter, IVehicleDeclarationGroupWriter + class CompletedBusParametersWriterV2_4 : GroupWriter, IVehicleDeclarationGroupWriter { - public CompletedBusParametersWriterV2_10_2(XNamespace writerNamespace) : base(writerNamespace) { } + public CompletedBusParametersWriterV2_4(XNamespace writerNamespace) : base(writerNamespace) { } public static XElement[] GetGroupElements(IVehicleDeclarationInputData vehicle, XNamespace writerNamespace) diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusPassengerCountWriter.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusPassengerCountWriter.cs index d9eb80284c982e61a129083eb2561a6282b7b0ac..c1b011455d0edda3e8a98611ec04b0b40ab022ee 100644 --- a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusPassengerCountWriter.cs +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusPassengerCountWriter.cs @@ -5,9 +5,9 @@ using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.Vehicle.CompletedBus { - class CompletedBusPassengerCountWriter_V2_10_2 : GroupWriter, IVehicleDeclarationGroupWriter + class CompletedBusPassengerCountWriter_V2_4 : GroupWriter, IVehicleDeclarationGroupWriter { - public CompletedBusPassengerCountWriter_V2_10_2(XNamespace writerNamespace) : base(writerNamespace) { } + public CompletedBusPassengerCountWriter_V2_4(XNamespace writerNamespace) : base(writerNamespace) { } diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxElectricSystemLightsGroupWriter.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxElectricSystemLightsGroupWriter.cs index ef235c4a944bda8429943f5d97151b3e28e909e4..e67c9ab54fc70702ef8f4a1a624e8c624ff0366a 100644 --- a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxElectricSystemLightsGroupWriter.cs +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxElectricSystemLightsGroupWriter.cs @@ -1,25 +1,27 @@ -using System.Xml.Linq; +using System.Linq; +using System.Xml.Linq; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCommon.Utils; namespace TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.Vehicle.Components.Auxiliaries { - class BusAuxElectricSystemLightsGroupWriter_v2_10_2 : GroupWriter, IBusAuxiliariesDeclarationGroupWriter + class BusAuxElectricSystemLightsGroupWriter_v2_4 : GroupWriter, IBusAuxiliariesDeclarationGroupWriter { - public BusAuxElectricSystemLightsGroupWriter_v2_10_2(XNamespace writerNamespace) : base(writerNamespace) { } + public BusAuxElectricSystemLightsGroupWriter_v2_4(XNamespace writerNamespace) : base(writerNamespace) { } #region Overrides of GroupWriter public XElement[] GetGroupElements(IBusAuxiliariesDeclarationData aux) { - return new XElement[] { + var elements = new XElement[] { new XElement(_writerNamespace + XMLNames.Bus_Interiorlights, aux.ElectricConsumers.InteriorLightsLED), - new XElement(_writerNamespace + XMLNames.Bus_Dayrunninglights, - aux.ElectricConsumers.DayrunninglightsLED), + new XElement(_writerNamespace + XMLNames.Bus_Dayrunninglights, aux.ElectricConsumers.DayrunninglightsLED), new XElement(_writerNamespace + XMLNames.Bus_Positionlights, aux.ElectricConsumers.PositionlightsLED), new XElement(_writerNamespace + XMLNames.Bus_Brakelights, aux.ElectricConsumers.BrakelightsLED), new XElement(_writerNamespace + XMLNames.Bus_Headlights, aux.ElectricConsumers.HeadlightsLED), }; + return elements.Where(xel => !xel.Value.IsNullOrEmpty()).ToArray(); } #endregion diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxElectricSystemSupplyGroupWriter.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxElectricSystemSupplyGroupWriter.cs index e6471f322012fa320f56d1eb34697954c7f95999..344c2110e6101a76fa0fbdeed0dfa038c97adb72 100644 --- a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxElectricSystemSupplyGroupWriter.cs +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxElectricSystemSupplyGroupWriter.cs @@ -4,9 +4,9 @@ using TUGraz.VectoCommon.InputData; namespace TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.Vehicle.Components.Auxiliaries { - class BusAuxElectricSystemSupplyGroupWriter_v2_10_2 : GroupWriter, IBusAuxiliariesDeclarationGroupWriter + class BusAuxElectricSystemSupplyGroupWriter_v2_4 : GroupWriter, IBusAuxiliariesDeclarationGroupWriter { - public BusAuxElectricSystemSupplyGroupWriter_v2_10_2(XNamespace writerNamespace) : base(writerNamespace) { } + public BusAuxElectricSystemSupplyGroupWriter_v2_4(XNamespace writerNamespace) : base(writerNamespace) { } #region Implementation of IBusAuxiliariesDeclarationGroupWriter diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxHVACConventionalGroupWriter.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxHVACConventionalGroupWriter.cs index 90246d90b312b4297fcafd2833196bb8b9811702..dda6fb22a7a48328ab244521383483b5de5c63f7 100644 --- a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxHVACConventionalGroupWriter.cs +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxHVACConventionalGroupWriter.cs @@ -1,34 +1,66 @@ using System.Collections.Generic; +using System.Linq; using System.Xml.Linq; using TUGraz.VectoCommon.BusAuxiliaries; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCommon.Utils; namespace TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.Vehicle.Components.Auxiliaries { - public class BusAuxHVACConventionalGroupWriter_v2_10_2 : GroupWriter, IBusAuxiliariesDeclarationGroupWriter - { - private readonly IGroupWriterFactory _groupWriterFactory; + public abstract class BuxAuxHVACGroupWriter_v2_4 : GroupWriter, IBusAuxiliariesDeclarationGroupWriter + { + protected readonly IGroupWriterFactory _groupWriterFactory; - public BusAuxHVACConventionalGroupWriter_v2_10_2(XNamespace writerNamespace, - IGroupWriterFactory groupWriterFactory) : base(writerNamespace) + protected BuxAuxHVACGroupWriter_v2_4(XNamespace writerNamespace, IGroupWriterFactory groupWriterFactory) : base(writerNamespace) { _groupWriterFactory = groupWriterFactory; + } + + #region Implementation of IBusAuxiliariesDeclarationGroupWriter + + public abstract XElement[] GetGroupElements(IBusAuxiliariesDeclarationData aux); + + #endregion + } + + public class BusAuxHVACConventionalGroupWriter_v2_4 : BuxAuxHVACGroupWriter_v2_4 + { + public BusAuxHVACConventionalGroupWriter_v2_4(XNamespace writerNamespace, + IGroupWriterFactory groupWriterFactory) : base(writerNamespace, groupWriterFactory) + { + } #region Implementation of IBusAuxiliariesDeclarationGroupWriter - public XElement[] GetGroupElements(IBusAuxiliariesDeclarationData aux) + public override XElement[] GetGroupElements(IBusAuxiliariesDeclarationData aux) { var elements = new List<XElement>(); - elements.Add(new XElement(_writerNamespace + XMLNames.Bus_SystemConfiguration, - aux.HVACAux.SystemConfiguration.ToXmlFormat())); + //if (aux.HVACAux?.SystemConfiguration != null) { + // elements.Add(new XElement(_writerNamespace + XMLNames.Bus_SystemConfiguration, + // aux.HVACAux.SystemConfiguration.ToXmlFormat())); - elements.AddRange(_groupWriterFactory + // } + + var groupElements = _groupWriterFactory .GetBusAuxiliariesDeclarationGroupWriter(GroupNames.BusAuxHVACHeatPumpSequenceGroup, _writerNamespace) - .GetGroupElements(aux)); - elements.Add(new XElement(_writerNamespace + XMLNames.Bus_AuxiliaryHeaterPower, + .GetGroupElements(aux); + +#if NET45 + foreach (var e in groupElements) { + elements.Add(e); + } +#else + elements.AddRange(groupElements); + +#endif + + + + + elements.Add(new XElement(_writerNamespace + XMLNames.Bus_AuxiliaryHeaterPower, aux.HVACAux.AuxHeaterPower?.ToXMLFormat(0))); elements.Add(new XElement(_writerNamespace + XMLNames.Bus_DoubleGlazing, aux.HVACAux.DoubleGlazing)); elements.Add(new XElement(_writerNamespace + XMLNames.Bus_AdjustableAuxiliaryHeater, @@ -36,7 +68,27 @@ namespace TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.Vehicle.Compon elements.Add(new XElement(_writerNamespace + XMLNames.Bus_SeparateAirDistributionDucts, aux.HVACAux.SeparateAirDistributionDucts)); - return elements.ToArray(); + return elements.Where(xEl => !xEl.Value.IsNullOrEmpty()).ToArray(); + } + +#endregion + } + + public class BusAuxHVACxEVGroupWriter_v2_4 : BuxAuxHVACGroupWriter_v2_4 + { + public BusAuxHVACxEVGroupWriter_v2_4(XNamespace writerNamespace, IGroupWriterFactory groupWriterFactory) : base(writerNamespace, groupWriterFactory) { } + + #region Overrides of BuxAuxHVACGroupWriter_v2_4 + + public override XElement[] GetGroupElements(IBusAuxiliariesDeclarationData aux) + { + var elements = new List<XElement>() { + new XElement(_writerNamespace + XMLNames.Bus_WaterElectricHeater, aux.HVACAux.WaterElectricHeater), + new XElement(_writerNamespace + XMLNames.Bus_AirElectricHeater, aux.HVACAux.AirElectricHeater), + new XElement(_writerNamespace + XMLNames.Bus_OtherHeatingTechnology, aux.HVACAux.OtherHeatingTechnology) + }; + + return elements.Where(xEl => !xEl.Value.IsNullOrEmpty()).ToArray(); } #endregion diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxHVACHeatPumpWriter.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxHVACHeatPumpWriter.cs index 0c1694035f0232e115e095a2260c62d6034431d7..3348ab711fbcd308ac6dc4bacddde73a44d1dd67 100644 --- a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxHVACHeatPumpWriter.cs +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxHVACHeatPumpWriter.cs @@ -1,19 +1,24 @@ -using System.Xml.Linq; +using System.Linq; +using System.Xml.Linq; using TUGraz.VectoCommon.BusAuxiliaries; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCommon.Utils; namespace TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.Vehicle.Components.Auxiliaries { - class BusAuxHVACHeatPumpWriter_v2_10_2 : GroupWriter, IBusAuxiliariesDeclarationGroupWriter + class BusAuxHVACHeatPumpWriter_v2_4 : GroupWriter, IBusAuxiliariesDeclarationGroupWriter { - public BusAuxHVACHeatPumpWriter_v2_10_2(XNamespace writerNamespace) : base(writerNamespace) { } + public BusAuxHVACHeatPumpWriter_v2_4(XNamespace writerNamespace) : base(writerNamespace) { } #region Implementation of IBusAuxiliariesDeclarationGroupWriter public XElement[] GetGroupElements(IBusAuxiliariesDeclarationData aux) { - return new XElement[] { + var elements = new XElement[] { + new XElement(_writerNamespace + XMLNames.Bus_SystemConfiguration, aux.HVACAux.SystemConfiguration?.ToXmlFormat()), + + GetHeatPumpGroupElement( xmlNameWrapper: XMLNames.Bus_HeatPumpTypeDriver, xmlNameFirstComponent: XMLNames.BusHVACHeatPumpCooling, @@ -28,6 +33,7 @@ namespace TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.Vehicle.Compon xmlNameSecondComponent: XMLNames.BusHVACHeatPumpHeating, secondValue: aux.HVACAux.HeatPumpTypeHeatingPassengerCompartment.GetLabel()) }; + return elements.Where(xEl => !xEl.Value.IsNullOrEmpty()).ToArray(); } diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/GroupNames.Designer.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/GroupNames.Designer.cs deleted file mode 100644 index 0ae30203aab29273aa37cac01521f77a1250c101..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCore/OutputData/XML/GroupWriter/GroupNames.Designer.cs +++ /dev/null @@ -1,144 +0,0 @@ -//------------------------------------------------------------------------------ -// <auto-generated> -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// </auto-generated> -//------------------------------------------------------------------------------ - -namespace TUGraz.VectoCore.OutputData.XML.GroupWriter { - using System; - - - /// <summary> - /// A strongly-typed resource class, for looking up localized strings, etc. - /// </summary> - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class GroupNames { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal GroupNames() { - } - - /// <summary> - /// Returns the cached ResourceManager instance used by this class. - /// </summary> - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("TUGraz.VectoCore.OutputData.XML.GroupWriter.GroupNames", typeof(GroupNames).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// <summary> - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// </summary> - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// <summary> - /// Looks up a localized string similar to ADAS_Conventional_Type. - /// </summary> - internal static string ADAS_Conventional_Type { - get { - return ResourceManager.GetString("ADAS_Conventional_Type", resourceCulture); - } - } - - /// <summary> - /// Looks up a localized string similar to BusAuxElectricSystemLightsGroup. - /// </summary> - internal static string BusAuxElectricSystemLightsGroup { - get { - return ResourceManager.GetString("BusAuxElectricSystemLightsGroup", resourceCulture); - } - } - - /// <summary> - /// Looks up a localized string similar to BusAuxElectricSystemSupplySequenceGroup. - /// </summary> - internal static string BusAuxElectricSystemSupplySequenceGroup { - get { - return ResourceManager.GetString("BusAuxElectricSystemSupplySequenceGroup", resourceCulture); - } - } - - /// <summary> - /// Looks up a localized string similar to BusAuxHVACConventionalSequenceGroup. - /// </summary> - internal static string BusAuxHVACConventionalSequenceGroup { - get { - return ResourceManager.GetString("BusAuxHVACConventionalSequenceGroup", resourceCulture); - } - } - - /// <summary> - /// Looks up a localized string similar to BusAuxHVACHeatPumpSequenceGroup. - /// </summary> - internal static string BusAuxHVACHeatPumpSequenceGroup { - get { - return ResourceManager.GetString("BusAuxHVACHeatPumpSequenceGroup", resourceCulture); - } - } - - /// <summary> - /// Looks up a localized string similar to Vehicle_CompletedBus_DimensionsSequenceGroup. - /// </summary> - internal static string Vehicle_CompletedBus_DimensionsSequenceGroup { - get { - return ResourceManager.GetString("Vehicle_CompletedBus_DimensionsSequenceGroup", resourceCulture); - } - } - - /// <summary> - /// Looks up a localized string similar to Vehicle_CompletedBus_GeneralParametersSequenceGroup. - /// </summary> - internal static string Vehicle_CompletedBus_GeneralParametersSequenceGroup { - get { - return ResourceManager.GetString("Vehicle_CompletedBus_GeneralParametersSequenceGroup", resourceCulture); - } - } - - /// <summary> - /// Looks up a localized string similar to Vehicle_CompletedBus_PassengerCountSequenceGroup. - /// </summary> - internal static string Vehicle_CompletedBus_PassengerCountSequenceGroup { - get { - return ResourceManager.GetString("Vehicle_CompletedBus_PassengerCountSequenceGroup", resourceCulture); - } - } - - /// <summary> - /// Looks up a localized string similar to Vehicle_CompletedBusParametersSequenceGroup. - /// </summary> - internal static string Vehicle_CompletedBusParametersSequenceGroup { - get { - return ResourceManager.GetString("Vehicle_CompletedBusParametersSequenceGroup", resourceCulture); - } - } - } -} diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/GroupNames.resx b/VectoCore/VectoCore/OutputData/XML/GroupWriter/GroupNames.resx deleted file mode 100644 index a6e98f3e166f325a4d47f8cb4e10e1290eacfdcf..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCore/OutputData/XML/GroupWriter/GroupNames.resx +++ /dev/null @@ -1,128 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<root> - <!-- - Microsoft ResX Schema - - Version 1.3 - - The primary goals of this format is to allow a simple XML format - that is mostly human readable. The generation and parsing of the - various data types are done through the TypeConverter classes - associated with the data types. - - Example: - - ... ado.net/XML headers & schema ... - <resheader name="resmimetype">text/microsoft-resx</resheader> - <resheader name="version">1.3</resheader> - <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> - <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> - <data name="Name1">this is my long string</data> - <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> - <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> - [base64 mime encoded serialized .NET Framework object] - </data> - <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> - [base64 mime encoded string representing a byte array form of the .NET Framework object] - </data> - - There are any number of "resheader" rows that contain simple - name/value pairs. - - Each data row contains a name, and value. The row also contains a - type or mimetype. Type corresponds to a .NET class that support - text/value conversion through the TypeConverter architecture. - Classes that don't support this are serialized and stored with the - mimetype set. - - The mimetype is used for serialized objects, and tells the - ResXResourceReader how to depersist the object. This is currently not - extensible. For a given mimetype the value must be set accordingly: - - Note - application/x-microsoft.net.object.binary.base64 is the format - that the ResXResourceWriter will generate, however the reader can - read any of the formats listed below. - - mimetype: application/x-microsoft.net.object.binary.base64 - value : The object must be serialized with - : System.Serialization.Formatters.Binary.BinaryFormatter - : and then encoded with base64 encoding. - - mimetype: application/x-microsoft.net.object.soap.base64 - value : The object must be serialized with - : System.Runtime.Serialization.Formatters.Soap.SoapFormatter - : and then encoded with base64 encoding. - - mimetype: application/x-microsoft.net.object.bytearray.base64 - value : The object must be serialized into a byte array - : using a System.ComponentModel.TypeConverter - : and then encoded with base64 encoding. - --> - - <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> - <xsd:element name="root" msdata:IsDataSet="true"> - <xsd:complexType> - <xsd:choice maxOccurs="unbounded"> - <xsd:element name="data"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> - <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> - <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> - <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> - </xsd:complexType> - </xsd:element> - <xsd:element name="resheader"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" use="required" /> - </xsd:complexType> - </xsd:element> - </xsd:choice> - </xsd:complexType> - </xsd:element> - </xsd:schema> - <resheader name="resmimetype"> - <value>text/microsoft-resx</value> - </resheader> - <resheader name="version"> - <value>1.3</value> - </resheader> - <resheader name="reader"> - <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> - </resheader> - <resheader name="writer"> - <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> - </resheader> - <data name="Vehicle_CompletedBus_GeneralParametersSequenceGroup" xml:space="preserve"> - <value>Vehicle_CompletedBus_GeneralParametersSequenceGroup</value> - </data> - <data name="Vehicle_CompletedBusParametersSequenceGroup" xml:space="preserve"> - <value>Vehicle_CompletedBusParametersSequenceGroup</value> - </data> - <data name="Vehicle_CompletedBus_DimensionsSequenceGroup" xml:space="preserve"> - <value>Vehicle_CompletedBus_DimensionsSequenceGroup</value> - </data> - <data name="Vehicle_CompletedBus_PassengerCountSequenceGroup" xml:space="preserve"> - <value>Vehicle_CompletedBus_PassengerCountSequenceGroup</value> - </data> - <data name="BusAuxElectricSystemLightsGroup" xml:space="preserve"> - <value>BusAuxElectricSystemLightsGroup</value> - </data> - <data name="BusAuxElectricSystemSupplySequenceGroup" xml:space="preserve"> - <value>BusAuxElectricSystemSupplySequenceGroup</value> - </data> - <data name="BusAuxHVACConventionalSequenceGroup" xml:space="preserve"> - <value>BusAuxHVACConventionalSequenceGroup</value> - </data> - <data name="BusAuxHVACHeatPumpSequenceGroup" xml:space="preserve"> - <value>BusAuxHVACHeatPumpSequenceGroup</value> - </data> - <data name="ADAS_Conventional_Type" xml:space="preserve"> - <value>ADAS_Conventional_Type</value> - </data> -</root> \ No newline at end of file diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/XMLGroupWriterNinjectModule.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/XMLGroupWriterNinjectModule.cs index 084c13b344a0414f3707190a63d4f11e788af428..f81681cc05d8238ad5000e2257c78f7ee0f2936e 100644 --- a/VectoCore/VectoCore/OutputData/XML/GroupWriter/XMLGroupWriterNinjectModule.cs +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/XMLGroupWriterNinjectModule.cs @@ -21,26 +21,28 @@ namespace TUGraz.VectoCore.OutputData.XML.GroupWriter { Bind<IGroupWriterFactory>().ToFactory(() => new UseFirstTwoArgumentsAsInstanceProvider(1, false)).InSingletonScope(); - ///Vehicle V2_10_2 - var v2102 = XMLDeclarationNamespaces.V24; - Bind<IVehicleDeclarationGroupWriter>().To<CompletedBusGeneralParametersWriterV2_10_2>().InSingletonScope(). - Named(GetName(GroupNames.Vehicle_CompletedBus_GeneralParametersSequenceGroup, v2102)); - Bind<IVehicleDeclarationGroupWriter>().To<CompletedBusParametersWriterV2_10_2>().InSingletonScope(). - Named(GetName(GroupNames.Vehicle_CompletedBusParametersSequenceGroup, v2102)); - Bind<IVehicleDeclarationGroupWriter>().To<CompletedBusDimensionsWriter_V2_10_2>().InSingletonScope(). - Named(GetName(GroupNames.Vehicle_CompletedBus_DimensionsSequenceGroup, v2102)); - Bind<IVehicleDeclarationGroupWriter>().To<CompletedBusPassengerCountWriter_V2_10_2>().InSingletonScope(). - Named(GetName(GroupNames.Vehicle_CompletedBus_PassengerCountSequenceGroup, v2102)); + ///Vehicle V2_4 + var v24 = XMLDeclarationNamespaces.V24; + Bind<IVehicleDeclarationGroupWriter>().To<CompletedBusGeneralParametersWriterV2_4>().InSingletonScope(). + Named(GetName(GroupNames.Vehicle_CompletedBus_GeneralParametersSequenceGroup, v24)); + Bind<IVehicleDeclarationGroupWriter>().To<CompletedBusParametersWriterV2_4>().InSingletonScope(). + Named(GetName(GroupNames.Vehicle_CompletedBusParametersSequenceGroup, v24)); + Bind<IVehicleDeclarationGroupWriter>().To<CompletedBusDimensionsWriter_V2_4>().InSingletonScope(). + Named(GetName(GroupNames.Vehicle_CompletedBus_DimensionsSequenceGroup, v24)); + Bind<IVehicleDeclarationGroupWriter>().To<CompletedBusPassengerCountWriter_V2_4>().InSingletonScope(). + Named(GetName(GroupNames.Vehicle_CompletedBus_PassengerCountSequenceGroup, v24)); - ///BusAuxiliaries_V2_10_2 - Bind<IBusAuxiliariesDeclarationGroupWriter>().To<BusAuxElectricSystemLightsGroupWriter_v2_10_2>().InSingletonScope(). - Named(GetName(GroupNames.BusAuxElectricSystemLightsGroup, v2102)); - Bind<IBusAuxiliariesDeclarationGroupWriter>().To<BusAuxElectricSystemSupplyGroupWriter_v2_10_2>().InSingletonScope() - .Named(GetName(GroupNames.BusAuxElectricSystemSupplySequenceGroup, v2102)); - Bind<IBusAuxiliariesDeclarationGroupWriter>().To<BusAuxHVACConventionalGroupWriter_v2_10_2>().InSingletonScope() - .Named(GetName(GroupNames.BusAuxHVACConventionalSequenceGroup, v2102)); - Bind<IBusAuxiliariesDeclarationGroupWriter>().To<BusAuxHVACHeatPumpWriter_v2_10_2>().InSingletonScope() - .Named(GetName(GroupNames.BusAuxHVACHeatPumpSequenceGroup, v2102)); + ///BusAuxiliaries_V2_4 + Bind<IBusAuxiliariesDeclarationGroupWriter>().To<BusAuxElectricSystemLightsGroupWriter_v2_4>().InSingletonScope(). + Named(GetName(GroupNames.BusAuxElectricSystemLightsGroup, v24)); + Bind<IBusAuxiliariesDeclarationGroupWriter>().To<BusAuxElectricSystemSupplyGroupWriter_v2_4>().InSingletonScope() + .Named(GetName(GroupNames.BusAuxElectricSystemSupplySequenceGroup, v24)); + Bind<IBusAuxiliariesDeclarationGroupWriter>().To<BusAuxHVACConventionalGroupWriter_v2_4>().InSingletonScope() + .Named(GetName(GroupNames.BusAuxHVACConventionalSequenceGroup, v24)); + Bind<IBusAuxiliariesDeclarationGroupWriter>().To<BusAuxHVACxEVGroupWriter_v2_4>().InSingletonScope() + .Named(GetName(GroupNames.BusAuxHVACxEVSequenceGroup, v24)); + Bind<IBusAuxiliariesDeclarationGroupWriter>().To<BusAuxHVACHeatPumpWriter_v2_4>().InSingletonScope() + .Named(GetName(GroupNames.BusAuxHVACHeatPumpSequenceGroup, v24)); } diff --git a/VectoCore/VectoCore/Utils/Ninject/CombineArgumentsToNameInstanceProviders.cs b/VectoCore/VectoCore/Utils/Ninject/CombineArgumentsToNameInstanceProviders.cs index 1714092c65d76aac48bd3494a9efb968498188f2..f6142ac19dee179c1a3da45165d6ef4264354b67 100644 --- a/VectoCore/VectoCore/Utils/Ninject/CombineArgumentsToNameInstanceProviders.cs +++ b/VectoCore/VectoCore/Utils/Ninject/CombineArgumentsToNameInstanceProviders.cs @@ -91,7 +91,7 @@ namespace TUGraz.VectoCore.Utils.Ninject protected override string GetName(MethodInfo methodInfo, object[] arguments) { - if (!_methodSettings.TryGetValue(methodInfo, out var methodSettings)) { + if (!GetMethodSettings(methodInfo, arguments, out var methodSettings)) { return base.GetName(methodInfo, arguments); } @@ -99,9 +99,26 @@ namespace TUGraz.VectoCore.Utils.Ninject } + bool GetMethodSettings(MethodInfo methodInfo, object[] arguments, out MethodSettings methodSettings) + { + if (!_methodSettings.TryGetValue(methodInfo, out methodSettings)) { + //Fall back to name + var methodInfos = _methodSettings.Keys.Where(method => method.Name == methodInfo.Name); + var methodInfoByName = methodInfos.FirstOrDefault(); + if (methodInfoByName != null) { + methodSettings = _methodSettings[methodInfoByName]; + } else { + return false; + } + } + + return true; + } + protected override IConstructorArgument[] GetConstructorArguments(MethodInfo methodInfo, object[] arguments) { - if (!_methodSettings.TryGetValue(methodInfo, out var methodSettings)) { + + if (!GetMethodSettings(methodInfo, arguments, out var methodSettings)) { return base.GetConstructorArguments(methodInfo, arguments); } diff --git a/VectoCore/VectoCore/Utils/XMLHelper.cs b/VectoCore/VectoCore/Utils/XMLHelper.cs index 7cf8d867befbaf21c1364d816b183c5b90cc5c61..490774e011bd74f44391b9c83797774edc4510f9 100644 --- a/VectoCore/VectoCore/Utils/XMLHelper.cs +++ b/VectoCore/VectoCore/Utils/XMLHelper.cs @@ -398,5 +398,18 @@ namespace TUGraz.VectoCore.Utils { return Guid.NewGuid().ToString("n").Substring(0, 20); } + + + public static XmlSchemaType GetSchemaType(XmlNode componentNode) + { + var dataNode = + componentNode?.SelectSingleNode($"./*[local-name()='{XMLNames.ComponentDataWrapper}']"); + + var type = (dataNode ?? componentNode)?.SchemaInfo.SchemaType; + return type; + } + + + } } \ No newline at end of file diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj index 671fd1016966f3e8a83a196bed06436cffb6e062..ac31234287643186f762599cc7e2c6f6becb5def 100644 --- a/VectoCore/VectoCore/VectoCore.csproj +++ b/VectoCore/VectoCore/VectoCore.csproj @@ -96,6 +96,7 @@ <PackageReference Include="Ninject.Extensions.ContextPreservation" Version="3.3.1" /> <PackageReference Include="Ninject.Extensions.Factory" Version="3.3.3" /> <PackageReference Include="NLog" Version="4.7.13" /> + <PackageReference Include="System.Collections" Version="4.3.0" /> <PackageReference Include="System.Data.DataSetExtensions" Version="4.5.0" /> </ItemGroup> @@ -183,10 +184,19 @@ <AutoGen>True</AutoGen> <DependentUpon>JSONKeys.resx</DependentUpon> </Compile> + <Compile Update="OutputData\XML\GroupWriter\Declaration\GroupNames.Designer.cs"> + <DesignTime>True</DesignTime> + <AutoGen>True</AutoGen> + <DependentUpon>GroupNames.resx</DependentUpon> + </Compile> <EmbeddedResource Update="JSONKeys.resx"> <Generator>ResXFileCodeGenerator</Generator> <LastGenOutput>JSONKeys.Designer.cs</LastGenOutput> </EmbeddedResource> + <EmbeddedResource Update="OutputData\XML\GroupWriter\Declaration\GroupNames.resx"> + <Generator>PublicResXFileCodeGenerator</Generator> + <LastGenOutput>GroupNames.Designer.cs</LastGenOutput> + </EmbeddedResource> </ItemGroup> <ItemGroup>