From b124110d41bf6517d5bcc7c728be71f0531a32b8 Mon Sep 17 00:00:00 2001
From: "harald.martini@student.tugraz.at" <harald.martini@student.tugraz.at>
Date: Wed, 28 Jul 2021 15:23:20 +0200
Subject: [PATCH] Updated IMulsitagePrimaryAndStageINputDataProvider Interface,
 and added support in JobListViewModel

---
 .../Implementation/JobListViewModel.cs        | 27 ++++++++++++++-----
 .../Implementation/CreateVifViewModel.cs      |  2 +-
 .../InputData/IInputDataProvider.cs           |  3 +--
 VectoCommon/VectoCommon/VectoCommon.csproj    |  1 +
 4 files changed, 24 insertions(+), 9 deletions(-)

diff --git a/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs
index db0f9f8f17..d9e46ea3ae 100644
--- a/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs
+++ b/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs
@@ -447,10 +447,18 @@ namespace VECTO3GUI2020.ViewModel.Implementation
 					switch (extension) {
 						case Constants.FileExtensions.VectoJobFile:
 							input = JSONInputDataFactory.ReadJsonJob(fullFileName);
-							var tmp = input as IDeclarationInputDataProvider;
-							mode = tmp?.JobInputData.SavedInDeclarationMode ?? false
-								? ExecutionMode.Declaration
-								: ExecutionMode.Engineering;
+							if (input is IDeclarationInputDataProvider tmp) {
+								mode = tmp.JobInputData.SavedInDeclarationMode
+									? ExecutionMode.Declaration
+									: ExecutionMode.Engineering;
+							} else {
+								mode = ExecutionMode.Engineering;
+							}
+
+							break;
+						case Constants.FileExtensions.Json:
+							input = JSONInputDataFactory.ReadJsonJob(fullFileName);
+							mode = ExecutionMode.Declaration;
 							break;
 						case ".xml":
 							var xdoc = XDocument.Load(fullFileName);
@@ -640,9 +648,16 @@ namespace VECTO3GUI2020.ViewModel.Implementation
 			foreach (var jobEntry in jobs)
 			{
 				var w = new FileOutputWriter(GetOutputDirectory(jobEntry.DataSource.SourceFile));
-				foreach (var entry in new Dictionary<string, string>() { { w.XMLFullReportName, "XML ManufacturereReport" }, { w.XMLCustomerReportName, "XML Customer Report" }, { w.XMLVTPReportName, "VTP Report" }, { w.XMLPrimaryVehicleReportName, "Primary Vehicle Information File" } })
+				foreach (var entry in 
+					new Dictionary<string, string>() {
+						{ w.XMLFullReportName, "XML ManufacturereReport" },
+						{ w.XMLCustomerReportName, "XML Customer Report" },
+						{ w.XMLVTPReportName, "VTP Report" },
+						{ w.XMLPrimaryVehicleReportName, "Primary Vehicle Information File" }
+					})
 				{
-					if (File.Exists(entry.Key))
+					if (File.Exists(entry.Key) &&
+						((DateTime.Now - File.GetLastWriteTime(entry.Key) < start.Elapsed)))
 					{
 						outputMessages.Report(
 							new MessageEntry()
diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/CreateVifViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/CreateVifViewModel.cs
index 35f6902108..1202d2069b 100644
--- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/CreateVifViewModel.cs
+++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/CreateVifViewModel.cs
@@ -160,7 +160,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 			
 
 			if (inputDataProvider.StageInputData != null && (inputDataProvider.StageInputData.ExemptedVehicle !=
-															inputDataProvider.PrimaryVehicle.ExemptedVehicle)) {
+															inputDataProvider.PrimaryVehicle.JobInputData.Vehicle.ExemptedVehicle)) {
 				throw new VectoException("Can't combine exempted and non-exempted input data");
 			}
 
diff --git a/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs b/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs
index 495e5ae9b4..3cfeac75b2 100644
--- a/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs
+++ b/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs
@@ -84,7 +84,6 @@ namespace TUGraz.VectoCommon.InputData
 	public interface ISingleBusInputDataProvider : IDeclarationInputDataProvider
 	{
 		IVehicleDeclarationInputData PrimaryVehicle { get; }
-
 		IVehicleDeclarationInputData CompletedVehicle { get; }
 	}
 
@@ -98,7 +97,7 @@ namespace TUGraz.VectoCommon.InputData
 
 	public interface IMultistagePrimaryAndStageInputDataProvider : IInputDataProvider
 	{
-		IVehicleDeclarationInputData PrimaryVehicle { get; }
+		IDeclarationInputDataProvider PrimaryVehicle { get; }
 		IVehicleDeclarationInputData StageInputData { get; }
 	}
 
diff --git a/VectoCommon/VectoCommon/VectoCommon.csproj b/VectoCommon/VectoCommon/VectoCommon.csproj
index a36d024133..ae4a50f9f1 100644
--- a/VectoCommon/VectoCommon/VectoCommon.csproj
+++ b/VectoCommon/VectoCommon/VectoCommon.csproj
@@ -146,6 +146,7 @@
     <Compile Include="Utils\VectoMath.cs" />
   </ItemGroup>
   <ItemGroup>
+    <None Include="InputData\BusInputData.cd" />
     <None Include="packages.config" />
     <None Include="Properties\Version.tt">
       <Generator>TextTemplatingFileGenerator</Generator>
-- 
GitLab