diff --git a/VECTO3GUI/Helper/XmlComponentReaderHelper.cs b/VECTO3GUI/Helper/XmlComponentReaderHelper.cs index 5f614614186835409f6370616863ebf9a468af85..ccc23cd42d9f80b8b634857ee2d3309508cfdda4 100644 --- a/VECTO3GUI/Helper/XmlComponentReaderHelper.cs +++ b/VECTO3GUI/Helper/XmlComponentReaderHelper.cs @@ -33,5 +33,15 @@ namespace VECTO3GUI.Helper DigestValue = new DigestData(GetNode(XMLNames.DI_Signature)) }; } + + public SquareMeter ReadTransferredCdxA() + { + return GetDouble("TransferredCdxA").SI<SquareMeter>(); + } + + public SquareMeter ReadCdxA_0() + { + return GetDouble("CdxA_0").SI<SquareMeter>(); + } } } diff --git a/VECTO3GUI/Helper/XmlHelper.cs b/VECTO3GUI/Helper/XmlHelper.cs index e719f90c0fcde39764885193129658cf7795ad02..3b5cf49f43b24d0341e9e115b21c44db0b578d1d 100644 --- a/VECTO3GUI/Helper/XmlHelper.cs +++ b/VECTO3GUI/Helper/XmlHelper.cs @@ -53,5 +53,13 @@ namespace VECTO3GUI.Helper var validator = new XMLValidator(xmlDocument, null, XMLValidator.CallBackExceptionOnError); return validator.ValidateXML(documentType.Value); ; } + + public static string GetXmlAbsoluteFilePath(string baseUri) + { + if (baseUri == null) + return null; + + return new Uri(baseUri).AbsolutePath; + } } } diff --git a/VECTO3GUI/ViewModel/Impl/AbstractJobViewModel.cs b/VECTO3GUI/ViewModel/Impl/AbstractJobViewModel.cs index 76044356820eff24bb397fba78bcfd9eeb07d99c..484e89205a605fce2e166ad69d3ada6b666a2753 100644 --- a/VECTO3GUI/ViewModel/Impl/AbstractJobViewModel.cs +++ b/VECTO3GUI/ViewModel/Impl/AbstractJobViewModel.cs @@ -121,11 +121,7 @@ namespace VECTO3GUI.ViewModel.Impl protected void SetXmlFilePath(string baseUri) { - if (baseUri == null) - return; - - var uri = new Uri(baseUri); - XmlFilePath = uri.AbsolutePath; + XmlFilePath = XmlHelper.GetXmlAbsoluteFilePath(baseUri); } protected bool CloseWindowDialog() diff --git a/VECTO3GUI/ViewModel/Impl/AirdragViewModel.cs b/VECTO3GUI/ViewModel/Impl/AirdragViewModel.cs index d348a653f8ef2e8a65f40a7b692faaa708174c00..51bde59179dd72029cc63bba0e1a1636dba93dc8 100644 --- a/VECTO3GUI/ViewModel/Impl/AirdragViewModel.cs +++ b/VECTO3GUI/ViewModel/Impl/AirdragViewModel.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Windows.Input; +using System.Xml; using Castle.Core.Internal; using Ninject; using TUGraz.VectoCommon.Hashing; @@ -65,7 +66,7 @@ namespace VECTO3GUI.ViewModel.Impl private bool _isEditable; private bool _useMeasurementData; private bool _noAirdragData; - + private string _xmlFilePath; private ICommand _airdragConfig; private ICommand _loadFileCommand; @@ -186,6 +187,9 @@ namespace VECTO3GUI.ViewModel.Impl { var inputData = JobViewModel.InputDataProvider as IDeclarationInputDataProvider; _airdragData = inputData?.JobInputData.Vehicle.Components.AirdragInputData; + var xmlUri = inputData?.JobInputData.Vehicle.XMLSource.BaseURI; + _xmlFilePath = XmlHelper.GetXmlAbsoluteFilePath(xmlUri); + SetAirdragValues(_airdragData); UseMeasurementData = _airdragData.AirDragArea != null; NoAirdragData = !UseMeasurementData; @@ -207,14 +211,22 @@ namespace VECTO3GUI.ViewModel.Impl Date = airdrag.Date; AppVersion = airdrag.AppVersion; DeclaredCdxA = airdrag.AirDragArea; - CdxA_0 = DeclaredCdxA; - TransferredCdxA = DeclaredCdxA; DigestValue = airdrag.DigestValue; + ReadAdditionalAirdragValues(); _componentData = new AirdragComponentData(this); ClearChangedProperties(); } + private void ReadAdditionalAirdragValues() + { + var xmlNodes = GetXmlNodes(_xmlFilePath); + var compReader = new XmlComponentReaderHelper(xmlNodes[0].ParentNode); + CdxA_0 = compReader.ReadCdxA_0(); + TransferredCdxA = compReader.ReadTransferredCdxA(); + } + + #region Commands public ICommand AirdragConfigCommand @@ -273,20 +285,24 @@ namespace VECTO3GUI.ViewModel.Impl private void ReadSelectedXml(string filePath) { - if (filePath.IsNullOrEmpty()) - return; - - var xmlDocument = XmlHelper.ReadXmlDocument(filePath); - var nodes = XmlHelper.GetComponentNodes(xmlDocument, - XMLNames.VectoInputDeclaration, VectoComponents.Airdrag.XMLElementName()); - - if(nodes.IsNullOrEmpty()) + var xmlNodes = GetXmlNodes(filePath); + if (xmlNodes.IsNullOrEmpty()) return; - var compReader = new XmlComponentReaderHelper(nodes[0].ParentNode); + var compReader = new XmlComponentReaderHelper(xmlNodes[0].ParentNode); SetLoadedAirdragData(compReader.GetAirdragComponentData()); } + private XmlNodeList GetXmlNodes(string filePath) + { + if (filePath.IsNullOrEmpty()) + return null; + + var xmlDocument = XmlHelper.ReadXmlDocument(filePath); + return XmlHelper.GetComponentNodes(xmlDocument, + XMLNames.VectoInputDeclaration, VectoComponents.Airdrag.XMLElementName()); + } + private void SetLoadedAirdragData(AirdragComponentData airdrag) { if (airdrag == null)