Subversion Repositories eFlore/Projets.eflore-projets

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
582 mathilde 1
<?php
2
/**
3
* 	Classe Syntaxons.php permet de faire des requetes de baseveg autour du code CATMINAT ou des niveaux de syntaxons
4
*  Un syntaxon est une unité de végétation ( groupement  )
5
*  Cette classe analyse les ressources pour rediriger vers la classe du web service correpondant
6
*
7
* @see http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=EfloreApi01Syntaxons
8
*
9
* Encodage en entrée : utf8
10
* Encodage en sortie : utf8
11
* @package eflore-projets
12
* @author Mathilde SALTHUN-LASSALLE <mathilde@tela-botanica.org>
13
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
14
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
15
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
16
* @version 1.0
17
* @copyright 1999-2012 Tela Botanica (accueil@tela-botanica.org)
18
*/
19
 
20
class Syntaxons  extends Commun {// héritage de commun à cause du cache !
21
 
22
	private $sousService;
23
 
24
	public function consulter($ressources, $parametres) {
25
		spl_autoload_register(array($this, 'chargerSyntaxons'));
26
		$this->parametres = $parametres;
27
		$this->ressources = $ressources;
28
		$this->analyserRessources();
29
 
30
		$resultat = $this->executerSousService();
31
		return $resultat;
32
	}
33
 
34
	private function analyserRessources() {
35
		$nb_ressources = count($this->ressources);
36
		switch ($nb_ressources) {
37
			case 0 : // syntaxons/
38
				$this->sousService = 'SyntaxonsTous';
39
				break;
40
			case 1 : // syntaxons/#type_code:#code
41
				$this->sousService = 'SyntaxonsCode';
42
				break;
43
			case 2 : // syntaxons/code catminat/relations
44
				$this->sousService = 'SyntaxonsRelationsToutes';
45
				break;
46
			case 3 : // syntaxons/code catminat/relations /#type_relation
47
				$this->sousService = 'SyntaxonsRelation';
48
				break;
49
			default:
50
				$message = 'Erreur dans l\'url de votre requête : </br> La ressource demandée n\'existe pas.';
51
				$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
52
				throw new Exception($message, $code);
53
				break;
54
		}
55
 
56
	}
57
 
58
	private function executerSousService() {
59
		if (isset($this->sousService)) {
60
			$classe = $this->sousService;
61
 
62
			//require_once dirname(__FILE__).DS.'syntaxons'.DS.$classe.'.php';
63
 
64
			$sousService = new $classe(new Conteneur());
65
			$resultat = $sousService->consulter($this->ressources, $this->parametres);
66
		} else {
67
			$message = "L'analyse des ressources n'a pu aboutir à déterminer le sous service à executer.";
68
			$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
69
			throw new Exception($message, $code);
70
		}
71
		return $resultat;
72
	}
73
 
74
 
75
	private function chargerSyntaxons($classe) {
76
		$base = dirname(__FILE__).DS;
77
		$chemin = $base.DS.'syntaxons'.DS;
78
			$fichierATester = $chemin.$classe.'.php';
79
			if (file_exists($fichierATester)) {
80
				include_once $fichierATester;
81
				return null;
82
			}
83
	}
84
}
85
?>