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