Blame view

src/InputOutput/IHMImpl/TimeTables/IHMInputOutputTTClass.php 4.08 KB
0b6b2080   Elena.Budnik   TT download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php

/**
 * @class IHMInputOutputTTClass
 * @brief 
 * @details
*/
class IHMInputOutputTTClass implements InputOutputInterface
{
 
/*
	* @brief Constructor
*/
	function __construct()
	{
		 
	}

/*
	* @brief translate input data from IHM client to AMDA_Integration module for a tt process request
*/
	public function getInputData($input, $function, $requestId="")
	{
		if (isset($this->processDatas))
			unset($this->processDatas);
			
		$final = "";
		
		if (is_dir(IHMConfigClass::getDownloadTmpPath())) {
			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();
881bd225   Benjamin Renard   Add shared TT sup...
38
39
40
41
42
43
44
45
46
47
48
			if (strpos($tt->id,"sharedtimeTable_") === 0) {
				//Shared TimeTable
				$result = IHMSharedObjectsClass::getPath("timeTable", $tt->id);
				if (!$result['success'])
					throw new Exception('Shared TimeTable '.$tt->name.' not found');
				$ttName = $result['path'];
			}
			else {
				//User TimeTable
				$ttName = IHMConfigClass::getUserTTPath().$tt->id.'.xml';
			}
0b6b2080   Elena.Budnik   TT download
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
			if (!file_exists($ttName))
				throw new Exception('TimeTable '.$tt->name.' not found');
			$processData->setInputFileName($ttName);
			$processData->setInputFileFormat(TTRequestFileFormatEnum::INTERNAL);			 
			$processData->setOutputDir(IHMConfigClass::getDownloadTmpPath());
			
			switch ($input->fileformat) {
				case 'vot' :	
					$processData->setOutputFileFormat(TTRequestFileFormatEnum::VOTABLE);
					$outputName = $tt->name.'.xml';
					break;
				default    :
					$processData->setOutputFileFormat(TTRequestFileFormatEnum::ASCII);
					$outputName = $tt->name;
			}	
			
		//	$processData->setOutputTimeFormat($input->timeformat);
			$processData->setOutputFileName($outputName);
			$final .= " ".$outputName;
			$processData->setType($function);
			$processData->setCmd("ttConversion");
									
			$this->processDatas[] = $processData;
		}
		
		$this->postProcessTT = new PostProcessTTClass();
		$this->postProcessTT->setOutputDirAlias($this->processDatas[0]->getOutputDir());
		
		if ($input->compression !== 'none') {
			$this->postProcessTT->compression = true;
			$archive = "Timetable_archive_".date('Ymd_Hi');
			switch ($input->compression) {
				case 'zip' :
					$postCmd = "zip -Dj ".$archive.".zip ".$final." 1> /dev/null 2> /dev/null";
					$outputFileName = $archive.".zip";					
					break;
				case 'tar+gzip':				       
				default :
					$postCmd="tar cfz ".$archive.".tar.gz --directory=".$this->processDatas[0]->getOutputDir()." ".$final;
					$outputFileName = $archive.".tar.gz";
					break;				
			}				
			$this->postProcessTT->setPostCmd($postCmd);
			$this->postProcessTT->setOutputFileName($outputFileName);
			$this->postProcessTT->setOutputDir($this->processDatas[0]->getOutputDir());			
		}
		
		return $this->processDatas;
	}

/*
	* @brief translate output data from AMDA_Integration module to IHM client  request
*/
	public function getOutput($data)
	{
		if ( $this->postProcessTT->compression ) {
		
ddb6bf06   Elena.Budnik   wait for process ...
106
107
		      $timeStart = time();
		      
0b6b2080   Elena.Budnik   TT download
108
109
			$cmd = $this->postProcessTT->getPostCmd();			
			system($cmd);
ddb6bf06   Elena.Budnik   wait for process ...
110
111
112
113
			
		 	while (!file_exists($this->postProcessTT->getOutputFileName()) && ( time() - $timeStart ) < KernelConfigClass::getTimeToBatchMode())
						sleep(1);	 
				 		 	                     
0b6b2080   Elena.Budnik   TT download
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
			
			foreach ($data as $d)
			{
				$rawFileName = $d->getOutputDir().$d->getOutputFileName();				
				if (file_exists($rawFileName)) 							 
					unlink($rawFileName);
			}
			
			$result  = array('success'=>true,
				'download'=>$this->postProcessTT->getOutputDirAlias().$this->postProcessTT->getOutputFileName(), 
				'compression' => $this->postProcessTT->compression);
				
			
		}
		else {
			$result  = array('success'=>$data[0]->getSuccess(), 
				'download' => $this->postProcessTT->getOutputDirAlias().$data[0]->getOutputFileName());
		}
				 		
		return $result;
	}
} 

?>