Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 525 | Rev 556 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 525 Rev 548
Line 25... Line 25...
25
	protected $table = "";
25
	protected $table = "";
26
	private $champs_ontologiques = array();
26
	private $champs_ontologiques = array();
27
	private $format_reponse = 'informations';
27
	private $format_reponse = 'informations';
28
	protected $serviceNom = 'informations';
28
	protected $serviceNom = 'informations';
29
	private $retour_format = 'max';
29
	private $retour_format = 'max';
30
	private $Requete;
-
 
31
	private $Conteneur;
-
 
32
	private $Requete_assemblage;
-
 
33
	private $Bdd;
30
	private $Bdd;
-
 
31
	private $requete_condition = "";
-
 
32
	private $champs_recherches = '*';
Line 34... Line 33...
34
	
33
	
35
	public function consulter($ressources, $parametres) {
34
	public function consulter($ressources, $parametres) {
36
		$this->ressources = $ressources;
35
		$this->ressources = $ressources;
37
		$this->parametres = $parametres;
36
		$this->parametres = $parametres;
38
		$this->traiterParametres();
37
		$this->traiterParametres();
39
		$this->definirTables();
38
		$this->definirTables();
40
		$this->traiterRessources();
39
		$this->traiterRessources();
41
		$resultats = '';
40
		$resultats = '';
42
	foreach ($this->table_version as $version) {
41
	foreach ($this->table_version as $version) {
43
			$this->Requete->table = $version;
42
			$this->table = $version;
44
			$requete = $this->Requete_assemblage->assemblerLaRequete($this->Requete);
43
			$requete = $this->assemblerLaRequete();
45
			$resultat = $this->Bdd->recupererTous($requete);
44
			$resultat = $this->Bdd->recupererTous($requete);
46
			$versionResultat = $this->analyserResultat($resultat);
45
			$versionResultat = $this->analyserResultat($resultat);
47
			if (count($this->table_version) > 1) {
46
			if (count($this->table_version) > 1) {
48
				$resultats[$version] = $versionResultat;
47
				$resultats[$version] = $versionResultat;
49
			} else {
48
			} else {
50
				$resultats = $versionResultat;
49
				$resultats = $versionResultat;
51
			}
50
			}
52
		}
51
		}
53
		return $versionResultat;
52
		return $resultats;
Line 54... Line 53...
54
	}
53
	}
55
	
54
	
56
	public function analyserResultat($resultat) {
55
	public function analyserResultat($resultat) {
Line 64... Line 63...
64
		}
63
		}
65
		return $versionResultat;
64
		return $versionResultat;
66
	}
65
	}
Line 67... Line 66...
67
	
66
	
68
	public function __construct(Conteneur $Conteneur) {
-
 
69
		$this->Conteneur = $Conteneur;
67
	public function __construct(Conteneur $Conteneur) {
70
		$this->Bdd = $Conteneur->getBdd();
-
 
71
		$this->Requete = new Requete();
-
 
72
		$this->Requete_assemblage = $Conteneur->getRequetesAssemblage();
68
		$this->Bdd = $Conteneur->getBdd();
Line 73... Line 69...
73
	}
69
	}
Line 74... Line 70...
74
	
70
	
75
	//+--------------------------traitement ressources ou paramètres  -------------------------------------------+
71
	//+--------------------------traitement ressources ou paramètres  -------------------------------------------+
76
		
72
		
77
	public function traiterRessources() {
73
	public function traiterRessources() {
78
			if(preg_match('/^(.+)\.nn:([0-9]+)$/', $this->ressources[0], $retour)==1){
74
			if(preg_match('/^(.+)\.nn:([0-9]+)$/', $this->ressources[0], $retour)==1){
79
				switch ($retour[1]) {
75
				switch ($retour[1]) {
80
					case 'bdtfx' :
76
					case 'bdtfx' :
81
						$this->Requete->requete_condition[] = "num_nomen = ".$retour[2]." AND bdnt = 'bdtfx' ";
77
						$this->requete_condition[] = "num_nomen = ".$retour[2]." AND bdnt = 'bdtfx' ";
82
						break;
78
						break;
83
					default :
79
					default :
Line 97... Line 93...
97
		if (isset($this->parametres) && !empty($this->parametres) ) {
93
		if (isset($this->parametres) && !empty($this->parametres) ) {
98
			foreach ($this->parametres as $param => $valeur) {
94
			foreach ($this->parametres as $param => $valeur) {
99
				switch ($param) {
95
				switch ($param) {
100
					case 'categorie'  :
96
					case 'categorie'  :
101
						if ($valeur == "ecologie"){
97
						if ($valeur == "ecologie"){
102
							$this->Requete->champs_recherches = ' num_nomen, bdnt, ve_lumiere_min , ve_lumiere_max,'
98
							$this->champs_recherches = ' num_nomen, bdnt, ve_lumiere_min , ve_lumiere_max,'
103
							.' ve_temperature_min, ve_temperature_max, ve_continentalite_min,'
99
							.' ve_temperature_min, ve_temperature_max, ve_continentalite_min,'
104
							.' ve_continentalite_max, ve_humidite_atmos_min, ve_humidite_atmos_max,'
100
							.' ve_continentalite_max, ve_humidite_atmos_min, ve_humidite_atmos_max,'
105
							.' ve_humidite_edaph_min, ve_humidite_edaph_max, ve_reaction_sol_min,'
101
							.' ve_humidite_edaph_min, ve_humidite_edaph_max, ve_reaction_sol_min,'
106
							.' ve_reaction_sol_max, ve_nutriments_sol_min, ve_nutriments_sol_max,'
102
							.' ve_reaction_sol_max, ve_nutriments_sol_min, ve_nutriments_sol_max,'
107
							.' ve_salinite_min, ve_salinite_max, ve_texture_sol_min,ve_texture_sol_max,'
103
							.' ve_salinite_min, ve_salinite_max, ve_texture_sol_min,ve_texture_sol_max,'
Line 145... Line 141...
145
			$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;
141
			$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;
146
			throw new Exception($message, $code);
142
			throw new Exception($message, $code);
147
		}
143
		}
148
	}
144
	}
Line 149... Line 145...
149
 
145
 
150
	public function DefinirTables() {
146
	public function definirTables() {
151
		$table_num_version = $this->recupererVersionDisponible();
147
		$table_num_version = $this->recupererVersionDisponible();
152
		$prefixe_table = config::get('bdd_table_rang_sup');
148
		$prefixe_table = config::get('bdd_table_rang_sup');
153
		if ( in_array($this->version_projet,$table_num_version) ) {
149
		if ( in_array($this->version_projet,$table_num_version) ) {
154
			$this->table_version[] = $prefixe_table.'_v'.$this->version_projet;
150
			$this->table_version[] = $prefixe_table.'_v'.$this->version_projet;
Line 168... Line 164...
168
	
164
	
Line 169... Line 165...
169
	//+--------------------------formatages de resultats  -------------------------------------------+
165
	//+--------------------------formatages de resultats  -------------------------------------------+
170
	
166
	
171
	
167
	
172
	public function retournerResultatFormate($resultat) {
-
 
173
		$resultat_json = $resultat[0];
168
	public function retournerResultatFormate($resultat) {
174
		if ($this->retour_format == 'max') {
-
 
175
			$this->champs_ontologiques = $this->recupererTableauConfig('champs_ontologiques');
-
 
176
			$graphique_presence = false;
-
 
177
			foreach ($this->champs_ontologiques as $cle => $valeur){
-
 
178
				if ($resultat_json[$cle.'_min'] != ""){
-
 
179
					$graphique_presence = true;
-
 
180
					$tab_ontologie = $this->recupererOntologies($resultat_json[$cle.'_min'], $cle.'_min');
-
 
181
					unset($resultat_json[$cle.'_min']);
-
 
182
					$resultat_json= array_merge($resultat_json,$tab_ontologie);
-
 
183
				}
-
 
184
				if ($resultat_json[$cle.'_max'] != ""){
-
 
185
					$tab_ontologie = $this->recupererOntologies($resultat_json[$cle.'_max'], $cle.'_max');
-
 
186
					unset($resultat_json[$cle.'_max']);
-
 
187
					$resultat_json= array_merge($resultat_json,$tab_ontologie);
169
		$this->resultat_json = $resultat[0];
188
				}
-
 
189
			}
-
 
190
			if ($graphique_presence) {
170
		if ($this->retour_format == 'max') {
191
				$resultat_json['graphique_climat']['libelle'] = 'climat';
-
 
192
				$resultat_json['graphique_climat']['href'] = $this->ajouterHref('graphiques/climat', strtolower($resultat_json['bdnt']).'.nn:'.$resultat_json['num_nomen']);
171
			$graphique_presence = $this->traiterOntologieEcologie() ;
193
				$resultat_json['graphique_sol']['libelle'] = 'sol';
172
			if ($graphique_presence) {
194
				$resultat_json['graphique_sol']['href'] = $this->ajouterHref('graphiques/sol', strtolower($resultat_json['bdnt']).'.nn:'.$resultat_json['num_nomen']);
173
				$this->ajouterLiensGraphique();
Line 195... Line 174...
195
			}
174
			}
Line -... Line 175...
-
 
175
		}
-
 
176
		return $this->resultat_json ;
-
 
177
		
-
 
178
	}
-
 
179
	
-
 
180
	public function traiterOntologieEcologie() {
-
 
181
		$donnees_presence =  false;
-
 
182
		$this->champs_ontologiques = $this->recupererTableauConfig('champs_ontologiques');
-
 
183
		foreach ($this->champs_ontologiques as $cle => $valeur){
-
 
184
			if ($this->resultat_json[$cle.'_min'] != ""){
-
 
185
				$donnees_presence = true;
-
 
186
				$tab_ontologie = $this->recupererOntologies($this->resultat_json[$cle.'_min'], $cle.'_min');
-
 
187
				unset($this->resultat_json[$cle.'_min']);
-
 
188
			}
-
 
189
			if ($this->resultat_json[$cle.'_max'] != ""){
-
 
190
				$this->recupererOntologies($this->resultat_json[$cle.'_max'], $cle.'_max');
-
 
191
				unset($this->resultat_json[$cle.'_max']);
-
 
192
			}
-
 
193
		}
-
 
194
		return $donnees_presence;
-
 
195
	}
-
 
196
	
-
 
197
	
-
 
198
	public function ajouterLiensGraphique() {
-
 
199
		$this->resultat_json['graphique_climat']['libelle'] = 'climat';
-
 
200
		$this->resultat_json['graphique_climat']['href'] = $this->ajouterHref('graphiques/climat', 
-
 
201
			strtolower($this->resultat_json['bdnt']).'.nn:'.$this->resultat_json['num_nomen']);
196
		}
202
		$this->resultat_json['graphique_sol']['libelle'] = 'sol';
Line 197... Line 203...
197
		return $resultat_json ;
203
		$this->resultat_json['graphique_sol']['href'] = $this->ajouterHref('graphiques/sol', 
198
		
204
			strtolower($this->resultat_json['bdnt']).'.nn:'.$this->resultat_json['num_nomen']);
199
	}
205
	}
200
	
206
	
201
	//+--------------------------traitement ontologies -------------------------------------------+
207
	//+--------------------------traitement ontologies -------------------------------------------+
202
	
208
	
203
	public function recupererOntologies($valeur, $champs){
209
	public function recupererOntologies($valeur, $champs){
204
		$chps_sans = preg_replace("/_min|_max/", '', $champs);
210
		$chps_sans = preg_replace("/_min|_max/", '', $champs);
205
		$url = Config::get('url_service_base').Config::get('nom_projet').
-
 
206
			'/ontologies/'.$this->champs_ontologiques[$chps_sans].':'.urlencode(urlencode($valeur));
211
		$url = Config::get('url_service_base').Config::get('nom_projet').
Line -... Line 212...
-
 
212
			'/ontologies/'.$this->champs_ontologiques[$chps_sans].':'.urlencode(urlencode($valeur));
-
 
213
		$val = $this->consulterHref($url);
-
 
214
		$this->resultat_json[$champs.'.libelle'] = $val->nom;
-
 
215
		$this->resultat_json[$champs.'.code'] = $valeur;
-
 
216
		$this->resultat_json[$champs.'.href'] = $url;
-
 
217
	}
-
 
218
	
-
 
219
	
Line -... Line 220...
-
 
220
	//+--------------------------FONCTIONS D'ASSEMBLAGE DE LA REQUETE-------------------------------------------+
-
 
221
	
-
 
222
	public function assemblerLaRequete() {
-
 
223
		$requete = 	' SELECT '.$this->champs_recherches.' FROM '.$this->table.' '
-
 
224
		.$this->retournerRequeteCondition();
-
 
225
		return $requete;
-
 
226
	}
-
 
227
	
207
		$val = $this->consulterHref($url);
228
	
208
		$resultat_json[$champs.'.libelle'] = $val->nom;
229
	
209
		$resultat_json[$champs.'.code'] = $valeur;
230
	public  function retournerRequeteCondition() {