From 77c2e135260088edaf316844a539dc724971bc7e Mon Sep 17 00:00:00 2001
From: "VKMTHD\\franzjosefkober" <franz.josef.kober@ivt.tugraz.at>
Date: Mon, 4 May 2020 10:48:25 +0200
Subject: [PATCH] read TransferredCdxA  and CdxA_0 values separately if
 completed xml exists

---
 VECTO3GUI/Helper/XmlComponentReaderHelper.cs  | 10 +++++
 VECTO3GUI/Helper/XmlHelper.cs                 |  8 ++++
 .../ViewModel/Impl/AbstractJobViewModel.cs    |  6 +--
 VECTO3GUI/ViewModel/Impl/AirdragViewModel.cs  | 40 +++++++++++++------
 4 files changed, 47 insertions(+), 17 deletions(-)

diff --git a/VECTO3GUI/Helper/XmlComponentReaderHelper.cs b/VECTO3GUI/Helper/XmlComponentReaderHelper.cs
index 5f61461418..ccc23cd42d 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 e719f90c0f..3b5cf49f43 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 7604435682..484e89205a 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 d348a653f8..51bde59179 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)
-- 
GitLab