From a0d6e95386478a5fe4f7124b54b94903c84b9e84 Mon Sep 17 00:00:00 2001
From: Benjamin Renard <benjamin.renard@akka.eu>
Date: Mon, 12 Aug 2019 15:29:22 +0200
Subject: [PATCH] Update TT/Catalog conversion

---
 src/InputOutput/IHMImpl/TimeTables/IHMInputOutputConvertTTClass.php | 80 +++++++++++++++++++++++++++++++++++++++-----------------------------------------
 src/InputOutput/IHMImpl/TimeTables/IHMInputOutputTTClass.php        | 49 ++++++++++++++++++++++++++++++++++++++-----------
 src/Request/TTRequestImpl/TTRequestClass.php                        |  8 ++++----
 src/Request/TTRequestImpl/TTRequestDataClass.php                    |  2 +-
 4 files changed, 82 insertions(+), 57 deletions(-)

diff --git a/src/InputOutput/IHMImpl/TimeTables/IHMInputOutputConvertTTClass.php b/src/InputOutput/IHMImpl/TimeTables/IHMInputOutputConvertTTClass.php
index 0dbf24e..b0dd742 100644
--- a/src/InputOutput/IHMImpl/TimeTables/IHMInputOutputConvertTTClass.php
+++ b/src/InputOutput/IHMImpl/TimeTables/IHMInputOutputConvertTTClass.php
@@ -1,70 +1,68 @@
 <?php
 
 /**
- * @class IHMInputOutputTTClass
+ * @class IHMInputOutputConvertTTClass
  * @brief 
  * @details
 */
-class IHMInputOutputTTClass implements InputOutputInterface
+class IHMInputOutputConvertTTClass implements InputOutputInterface
 {
+	private $processData = NULL;
+
+ 
 	/*
 	 * @brief Constructor
-	*/
+	 */
 	function __construct()
 	{
-		//$this->jobsManager      = new IHMJobsManagerClass();
+		 
 	}
 
 	/*
-	 * @brief translate input data from IHM client to AMDA_Integration module for a tt process request
-	*/
+	 * @brief translate input data from AMDA IHM to AMDA_Integration module for a tt process request
+	 */
 	public function getInputData($input, $function, $requestId="")
 	{
-		if (isset($this->processDatas))
-			unset($this->processDatas);
+		if (isset($this->processData))
+			unset($this->processData);
 
-		if (!$res['success'])
-			throw new Exception($res['message']);
-		
-			
-		foreach($input->list as $tt)
-		{
-			//create a list of data to treat
-			$processData = new TTRequestDataClass();
-				
-			$processData->setInputTimeTable($tt);
-			$processData->setInputFormat($input);
-			$processData->setOutputDir();
-			$processData->setOutputTimeTable($tt);
-			$processData->setOutputFormat();
-			
-			$processData->setCompression();
-			
-			$this->processDatas[] = $processData;
+		$processData = new TTRequestDataClass();
+		$processData->setInputFileName($input['inputFile']);
+		switch ($input['inputFormat']) {
+			case 'ASCII':
+				$processData->setInputFileFormat(TTRequestFileFormatEnum::ASCII);
+				break;
+			case 'VOTABLE':
+				$processData->setInputFileFormat(TTRequestFileFormatEnum::VOTABLE);
+				break;
+			case 'INTERNAL':
+				$processData->setInputFileFormat(TTRequestFileFormatEnum::INTERNAL);
+				break;
+			default:
+				throw new Exception('Unknown input format');
 		}
+		$processData->setOutputDir($input['outputDir']);
+		$processData->setOutputFileFormat(TTRequestFileFormatEnum::INTERNAL);
+		$processData->setOutputFileName($input['outputFileName']);
+		$processData->setType($function);
+		$processData->setCmd("ttConversion");
 
-		return $this->processDatas;
+		$this->processData = $processData;
+	
+		return $this->processData;
 	}
 
 	/*
-	 * @brief translate output data from AMDA_Integration module to IHM client  request
-	*/
+	 * @brief translate output data from AMDA_Integration module to AMDA IHM request
+	 */
 	public function getOutput($data)
 	{
-		$result = array();
-
-		foreach ($data as $d)
-		{
-			
-			
-			if (!$d->getSuccess())
-				continue;
-			 
+		$result  = array('success' => $data->getSuccess());
+		if ($result['success']) {
+			$result['file'] = $data->getOutputDir()."/".$data->getOutputFileName();
 		}
-
 		return $result;
 	}
 } 
-		 
-}
+
 ?>
diff --git a/src/InputOutput/IHMImpl/TimeTables/IHMInputOutputTTClass.php b/src/InputOutput/IHMImpl/TimeTables/IHMInputOutputTTClass.php
index 7baf03b..2f6007a 100644
--- a/src/InputOutput/IHMImpl/TimeTables/IHMInputOutputTTClass.php
+++ b/src/InputOutput/IHMImpl/TimeTables/IHMInputOutputTTClass.php
@@ -26,7 +26,9 @@ class IHMInputOutputTTClass implements InputOutputInterface
 
 		$sendToSamp = isset($input->sendToSamp) && $input->sendToSamp;
 		$compression = !$sendToSamp && ($input->compression !== 'none');
-		$format = $sendToSamp ? 'vot' : $input->fileformat;
+		$formatstr = $sendToSamp ? 'vot' : $input->fileformat;
+		$tmp = new TTRequestDataClass(); // just to be sure that TTRequestDataClass is loaded with the 'autoload' => TTRequestDataClass is defined
+		$outputformat = $this->getFormatFromString(!empty($formatstr) ? $formatstr : 'vot');
 			
 		$final = "";
 		
@@ -34,38 +36,46 @@ class IHMInputOutputTTClass implements InputOutputInterface
 			foreach (glob(IHMConfigClass::getDownloadTmpPath().'*.zip') as $filename)  unlink($filename);
 			foreach (glob(IHMConfigClass::getDownloadTmpPath().'*.tar.gz') as $filename)  unlink($filename);
 		}
-		
+
 		foreach($input->list as $tt)
 		{
 			//create a list of data to treat
 			$processData = new TTRequestDataClass();
-			
-			if (strpos($tt->id,"sharedtimeTable_") === 0 || strpos($tt->id,"sharedcatalog_") === 0) {
+
+			if (!isset($tt->id) && !empty($tt->path))  {
+				$ttName = $tt->path;
+				$inputformat = $this->getFormatFromString(!empty($tt->format) ? $tt->format : 'internal');
+			}
+			else if (strpos($tt->id,"sharedtimeTable_") === 0 || strpos($tt->id,"sharedcatalog_") === 0) {
 				//Shared TimeTable /Catalog
 				$objectType = strpos($tt->id,"timeTable") != 0 ? "timeTable" : "catalog";
 				$result = IHMSharedObjectsClass::getPath($objectType, $tt->id);
 				if (!$result['success'])
 					throw new Exception('Shared '.$objectType.' '.$tt->name.' not found');
 				$ttName = $result['path'];
+				$inputformat = TTRequestFileFormatEnum::INTERNAL;
 			}
 			else {
 				//User TimeTable / Catalog
 				$ttName = IHMConfigClass::getUserTTPath().$tt->id.'.xml';
+				$inputformat = TTRequestFileFormatEnum::INTERNAL;
 			}
 			if (!file_exists($ttName))
-				throw new Exception('TimeTable '.$tt->name.' not found');
+				throw new Exception('TimeTable or Catalog '.$tt->name.' not found');
 			$processData->setInputFileName($ttName);
-			$processData->setInputFileFormat(TTRequestFileFormatEnum::INTERNAL);			 
+			$processData->setInputFileFormat($inputformat);			 
 			$processData->setOutputDir(IHMConfigClass::getDownloadTmpPath());
+			$processData->setOutputFileFormat($outputformat);
 			
-			switch ($format) {
-				case 'vot' :	
-					$processData->setOutputFileFormat(TTRequestFileFormatEnum::VOTABLE);
+			switch ($outputformat) {
+				case TTRequestFileFormatEnum::VOTABLE :	
 					$outputName = $tt->name.'.xml';
 					break;
+				case TTRequestFileFormatEnum::ASCII :
+					$outputName = $tt->name.'.txt';
+					break;
 				default    :
-					$processData->setOutputFileFormat(TTRequestFileFormatEnum::ASCII);
-					$outputName = $tt->name;
+					$outputName = $tt->name.'.xml';
 			}	
 			
 		//	$processData->setOutputTimeFormat($input->timeformat);
@@ -103,6 +113,23 @@ class IHMInputOutputTTClass implements InputOutputInterface
 		return $this->processDatas;
 	}
 
+	/*
+	 * @brief Get format from input string
+	 */
+	private function getFormatFromString($str) {
+		switch (strtolower($str)) {
+			case 'vot':
+			case 'votable':
+				return TTRequestFileFormatEnum::VOTABLE;
+			case 'ascii':
+			case 'text':
+			case 'txt':
+			case 'asc':
+				return TTRequestFileFormatEnum::ASCII;
+		}
+		return TTRequestFileFormatEnum::INTERNAL;
+	}
+
 /*
 	* @brief translate output data from AMDA_Integration module to IHM client  request
 */
diff --git a/src/Request/TTRequestImpl/TTRequestClass.php b/src/Request/TTRequestImpl/TTRequestClass.php
index ab86b28..9abd2bb 100644
--- a/src/Request/TTRequestImpl/TTRequestClass.php
+++ b/src/Request/TTRequestImpl/TTRequestClass.php
@@ -60,9 +60,9 @@ class TTRequestClass extends RequestAbstractClass
 			case FunctionTypeEnumClass::TTCONVERT :
 				//run process 
 				 
-				$args = $this->requestData->getInputFileName()." ".$this->requestData->getInputFileFormat() 
-				        ." ".$this->requestData->getOutputDir()." ".$this->requestData->getOutputFileName()
-				        ." ".$this->requestData->getOutputFileFormat();
+				$args = "\"".$this->requestData->getInputFileName()."\" ".$this->requestData->getInputFileFormat() 
+				        ." \"".$this->requestData->getOutputDir()."\" \"".$this->requestData->getOutputFileName()
+				        ."\" ".$this->requestData->getOutputFileFormat();
 			              
 				$cmd = $this->requestData->getCmd()." ".$args;
 				 
@@ -93,4 +93,4 @@ class TTRequestClass extends RequestAbstractClass
 	}
 	  
 }
-?>
\ No newline at end of file
+?>
diff --git a/src/Request/TTRequestImpl/TTRequestDataClass.php b/src/Request/TTRequestImpl/TTRequestDataClass.php
index b7d54d1..bb20ba7 100644
--- a/src/Request/TTRequestImpl/TTRequestDataClass.php
+++ b/src/Request/TTRequestImpl/TTRequestDataClass.php
@@ -90,7 +90,7 @@ class TTRequestDataClass extends RequestDataClass
 		$this->sendToSamp = $sendToSamp;
 	}
 
-	public function getSendToSamp($sendToSamp)
+	public function getSendToSamp()
 	{
 		return $this->sendToSamp;
 	}
--
libgit2 0.21.2