diff --git a/src/InputOutput/IHMImpl/Process/IHMInputOutputDeleteProcessClass.php b/src/InputOutput/IHMImpl/Process/IHMInputOutputDeleteProcessClass.php index 1174866..2ef0821 100644 --- a/src/InputOutput/IHMImpl/Process/IHMInputOutputDeleteProcessClass.php +++ b/src/InputOutput/IHMImpl/Process/IHMInputOutputDeleteProcessClass.php @@ -7,7 +7,7 @@ */ class IHMInputOutputDeleteProcessClass implements InputOutputInterface { - private $jobsManager = null; + protected $jobsManager = null; private $paramsData = null; /* diff --git a/src/InputOutput/WSImpl/Config/WSConfigClass.php b/src/InputOutput/WSImpl/Config/WSConfigClass.php index e7476bc..2fcd18f 100644 --- a/src/InputOutput/WSImpl/Config/WSConfigClass.php +++ b/src/InputOutput/WSImpl/Config/WSConfigClass.php @@ -18,6 +18,13 @@ class WSConfigClass private static $wsResultDir = "WSRESULT"; private static $jobsFile = "WSresults.xml"; + private static $WebUrl = "http://apus.irap.omp.eu/NEWAMDA/data/"; + + public static function getUrl() + { + return self::$WebUrl.self::$wsResultDir.'/'; + } + public static function getWsResultDir() { return IHMConfigClass::getDataDir().self::$wsResultDir.'/'; diff --git a/src/InputOutput/WSImpl/Params/DownloadImpl/WSInputOutputParamsDownloadClass.php b/src/InputOutput/WSImpl/Params/DownloadImpl/WSInputOutputParamsDownloadClass.php index 83ad972..00c5124 100644 --- a/src/InputOutput/WSImpl/Params/DownloadImpl/WSInputOutputParamsDownloadClass.php +++ b/src/InputOutput/WSImpl/Params/DownloadImpl/WSInputOutputParamsDownloadClass.php @@ -66,8 +66,12 @@ class WSInputOutputParamsDownloadClass extends IHMInputOutputParamsAbstractClass } //add params to output + $resultFile = "download"; + foreach ($input->list as $param) { + $resultFile .= "_".$param->paramid; + $paramInfo = $this->paramManager->addExistingParam($param->paramid, $this->paramsData, $param->template_args); switch ($param->type) { case 0: @@ -127,29 +131,30 @@ class WSInputOutputParamsDownloadClass extends IHMInputOutputParamsAbstractClass else { $downloadNode->setStructure(RequestOutputDownloadStructureEnum::ONE_FILE_PER_PARAMETER_PER_INTERVAL); } - - $extension = ""; - $resultFilePrefix = "output-"; + switch ($input->compression) { case "1" : $extension = $formatExtension.".gz"; $downloadNode->addPostProcessing(RequestOutputPostProcessingEnumClass::GZIP); + $resultFilePrefix = "download_"; break; case "0" : default : $extension = $formatExtension; + $resultFilePrefix = "output-"; } - - - $resultFile = "result_".$this->requestID; - $this->paramsData->addWaitingResult(WSInputOutputClass::getService(), $resultFile); + $resultFile .= "_".strtotime($input->startDate)."_".strtotime($input->stopDate); + + $this->paramsData->addWaitingResult(WSInputOutputClass::getService(), $resultFile.$extension); + // internal kernel output $postProcessCmd = "mv ".$resultFilePrefix."*"; $postProcessCmd .= $extension; - $postProcessCmd .= " ".$resultFile.$extension; + $postProcessCmd .= " ".WSConfigClass::getWsResultDir().$resultFile.$extension; + $this->paramsData->setPostCmd($postProcessCmd); @@ -180,7 +185,7 @@ class WSInputOutputParamsDownloadClass extends IHMInputOutputParamsAbstractClass protected function addToJobsFile($data,$resultKey) { $waitingResult = $data->getWaitingResult($resultKey); - + return $this->jobsManager->addJob( $this->input, $data->getId(), @@ -188,7 +193,7 @@ class WSInputOutputParamsDownloadClass extends IHMInputOutputParamsAbstractClass $data->getStatus() == ProcessStatusEnumClass::RUNNING, $data->getStart(), $waitingResult, - $data->getErrorCode()); + $data->getErrorCode()); } /* @@ -207,11 +212,6 @@ class WSInputOutputParamsDownloadClass extends IHMInputOutputParamsAbstractClass case ProcessStatusEnumClass::RUNNING : case ProcessStatusEnumClass::DONE : return $this->addToJobsFile($data, WSInputOutputClass::getService()); -// return array( -// 'success' => true, -// 'status' => $data->getStatus(), -// 'result' => 'result_'.$this->requestID, -// 'folder' => $this->getWorkingDirName()); default : return array( 'success' => false, diff --git a/src/InputOutput/WSImpl/Process/WSInputOutputDeleteProcessClass.php b/src/InputOutput/WSImpl/Process/WSInputOutputDeleteProcessClass.php new file mode 100644 index 0000000..903a790 --- /dev/null +++ b/src/InputOutput/WSImpl/Process/WSInputOutputDeleteProcessClass.php @@ -0,0 +1,66 @@ +<?php + +/** + * @class WSInputOutputDeleteProcessClass + * @brief Class that's implement an InputOutputInterface used to treat a delete process request + * @details + */ +class WSInputOutputDeleteProcessClass extends IHMInputOutputDeleteProcessClass implements InputOutputInterface +{ + protected $jobsManager = null; + // private $paramsData = null; + + /* + * @brief Constructor + */ + function __construct() + { + $this->jobsManager = new WSJobsManagerClass(); + } + + /* + * @brief translate input data from WS client to AMDA_Integration module for a delete process request + */ +// public function getInputData($input,$function,$requestId="") +// { +// if (isset($this->paramsData)) +// unset($this->paramsData); +// +// $this->paramsData = new ProcessRequestDataClass(); +// +// $this->paramsData->setManagerFilePath(IHMConfigClass::getProcessManagerFilePath()); +// $this->paramsData->setType(ProcessTypeEnumClass::DELETE); +// +// $this->paramsData->setId($input->id); +// +// return $this->paramsData; +// } + + /* + * @brief translate output data from AMDA_Integration module to IHM client for a delete process request + */ +// public function getOutput($data) +// { +// if (!$data->getSuccess()) +// { +// return array( +// 'success' => false, +// 'message' => $data->getLastErrorMessage()); +// } +// +// $res = $this->jobsManager->deleteJob($this->paramsData->getId()); +// +// /*if (!$res['success']) +// { +// return array( +// 'success' => false, +// 'message' => $res['message']); +// }*/ +// +// return array( +// 'success' => true, +// 'id' => $this->paramsData->getId()); +// } +} + +?> \ No newline at end of file diff --git a/src/InputOutput/WSImpl/Process/WSInputOutputGetInfoProcessClass.php b/src/InputOutput/WSImpl/Process/WSInputOutputGetInfoProcessClass.php index d6091ce..9150b9a 100644 --- a/src/InputOutput/WSImpl/Process/WSInputOutputGetInfoProcessClass.php +++ b/src/InputOutput/WSImpl/Process/WSInputOutputGetInfoProcessClass.php @@ -63,9 +63,6 @@ class WSInputOutputGetInfoProcessClass extends IHMInputOutputGetInfoProcessClass 'success' => false, 'message' => $data->getLastErrorMessage()); } - - $r = print_r($jobInfo,true); - error_log($r,1,email); return $jobInfo; } } diff --git a/src/InputOutput/WSImpl/Tools/WSJobsManagerClass.php b/src/InputOutput/WSImpl/Tools/WSJobsManagerClass.php index e06b48d..bc356a7 100644 --- a/src/InputOutput/WSImpl/Tools/WSJobsManagerClass.php +++ b/src/InputOutput/WSImpl/Tools/WSJobsManagerClass.php @@ -72,12 +72,14 @@ class WSJobsManagerClass extends IHMJobsManagerClass { $request_obj = $this->getRequestObjectFile($id); if (isset($request_obj)) { - if (isset($request_obj->format)) + if (isset($request_obj->fileformat)) { $format = strtolower($request_obj->format); if (($format == "pdf") || ($format == "ps")) //auto compression for plot request $compression = ".tar.gz"; + + // if ($format == "ascii") $format = 'txt'; } if (isset($request_obj->compression)) $compression = strtolower($request_obj->compression); @@ -106,8 +108,10 @@ class WSJobsManagerClass extends IHMJobsManagerClass { $running, $start, $result, $exitcode) { $res = $this->init(); + if (!$res['success']) return $res; + $key = WSInputOutputClass::getService(); $newJob = $this->jobXml->createElement('job'); @@ -118,13 +122,13 @@ class WSJobsManagerClass extends IHMJobsManagerClass { switch ($key) { case 'download' : - $name = "download_".time(); - $info = ''; - foreach ($obj->list as $param) - { - $info = $info.' '.$param->paramid; //data - } - break; + $name = "download_".time(); + $info = ''; + foreach ($obj->list as $param) + { + $info .= ' '.$param->paramid; //data + } + break; case 'plot' : $name = "request_".time(); $info = ''; @@ -140,16 +144,11 @@ class WSJobsManagerClass extends IHMJobsManagerClass { } $newJob->setAttribute('name', $name); - $newJob->setAttribute('info', $info); - - $newJob->setAttribute('folder', $folder); - + $newJob->setAttribute('info', $info); $newJob->setAttribute('result', $result); - + $newJob->setAttribute('folder', $folder); $newJob->setAttribute('start', date('d-m-Y H:i:s', $start)); - $newJob->setAttribute('result', $result); - //to know if know if it's an immediate job or not $newJob->setAttribute('immediate', !$running); @@ -183,9 +182,7 @@ class WSJobsManagerClass extends IHMJobsManagerClass { $this->saveRequestObjectFile($obj, $id); - $this->updateJobStatus($id, $running, $exitcode); - - return $this->getJobInfo($id); + return $this->updateJobStatus($id, $running, $exitcode); } /* @@ -222,7 +219,61 @@ class WSJobsManagerClass extends IHMJobsManagerClass { return $this->getJobInfo($id); } + + /* + * @brief delete a job + */ + public function deleteJob($id) + { + $res = $this->init(); + if (!$res['success']) + return $res; + + $job = $this->jobXml->getElementById($id); + + //delete job + if (!$job) + return array('success' => false, 'message' => "Job not reachable"); + + $folder = $job->getAttribute('folder'); + + //be sure that it's an AMDA working dir before deletion... + $fullFolderPath = IHMConfigClass::getRequestPath().$folder.'/'; + + if ((isset($folder)) && + ($folder != "") && + is_dir($fullFolderPath) && + (preg_match("/DD[0-9A-Za-z]*_/",$folder) || + preg_match("/Plot[0-9]*_/",$folder))) + { + foreach (glob($fullFolderPath.'*') as $filename) + { + if (is_dir($filename) && (basename($filename) == 'params')) + { + //recursive deletion only for "params" dir (a full recursive deletion is probably too dangerous...) + foreach (glob($filename.'/*') as $paramname) + unlink($paramname); + rmdir($filename); + } + else + unlink($filename); + } + rmdir($fullFolderPath); + } + + $this->deleteRequestObjectFile($id); + +// $job->parentNode->removeChild($job); +// $res = $this->jobXml->save($this->jobXmlName); + if (!$res) + return array( + 'success' => false, + 'message' => "Cannot save jobs file"); + + return array('success' => true, 'id' => $id); + } + /* * @brief Get all jobs to clean (immediate result jobs) */ diff --git a/src/InputOutput/WSImpl/WSInputOutputClass.php b/src/InputOutput/WSImpl/WSInputOutputClass.php index 65b798a..66d1014 100644 --- a/src/InputOutput/WSImpl/WSInputOutputClass.php +++ b/src/InputOutput/WSImpl/WSInputOutputClass.php @@ -40,7 +40,7 @@ class WSInputOutputClass extends IHMInputOutputClass } break; case FunctionTypeEnumClass::PROCESSDELETE : - $this->inputOutput = new IHMInputOutputDeleteProcessClass(); + $this->inputOutput = new WSInputOutputDeleteProcessClass(); break; case FunctionTypeEnumClass::PROCESSRUNNINGINFO : $this->inputOutput = new IHMInputOutputRunningInfoProcessClass(); -- libgit2 0.21.2