Subversion Repositories eFlore/Projets.eflore-projets

Compare Revisions

Ignore whitespace Rev 958 → Rev 959

/trunk/services/modules/0.1/baseflor/InformationsBaseflor.php
477,7 → 477,7
public function assemblerLaRequete() {
$requete = ' SELECT '.$this->champs_recherches.' FROM '.$this->table.' '
.$this->retournerRequeteCondition().' ';
.Informations::retournerRequeteCondition($this->requete_condition).' ';
if ($this->nb_ressources != 1 ) {
$requete .= $this->delimiterResultatsRequete();
}
484,48 → 484,24
return $requete;
}
public function calculerTotalResultat() {
$requete = 'SELECT count(*) as nombre FROM '.$this->table.' '.$this->retournerRequeteCondition();
$res = $this->getBdd()->recuperer($requete);
if ($res) {
$this->total_resultat = $res['nombre'];
} else {
$this->total_resultat = 0;
$e = 'Données introuvables dans la base';
$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE, $e);
}
}
public function delimiterResultatsRequete() {
$this->calculerTotalResultat();
$requete_limite = '';
if ($this->limite_requete['limite'] != '*') {
if ( ($this->limite_requete['depart'] <= $this->total_resultat)){
if (($this->limite_requete['limite'] + $this->limite_requete['depart'] )
< $this->total_resultat ){
$requete_limite = 'LIMIT '.$this->limite_requete['depart'].', '
.$this->limite_requete['limite'];
}
} else {
$e = "Erreur : la valeur pour le paramètre navigation.départ est supérieure".
" au nombre total de résultats.";
throw new Exception($e, RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE);
}
}
return $requete_limite;
}
public function retournerRequeteCondition() {
$condition = '';
if (empty($this->requete_condition) == false) {
$condition = ' WHERE '.implode(' AND ', $this->requete_condition);
}
return $condition;
}
$this->total_resultat = self::calculerTotalResultat(
$this->getBdd(),
$this->table,
Array(),
$this->requete_condition);
if ($this->limite_requete['limite'] == '*') return '';
 
if ( ($this->limite_requete['depart'] > $this->total_resultat)) {
throw new Exception(
"Erreur : la valeur pour le paramètre navigation.départ est supérieure au nombre total de résultats.",
RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE);
}
 
if (($this->limite_requete['limite'] + $this->limite_requete['depart'] ) < $this->total_resultat) {
return 'LIMIT '.$this->limite_requete['depart'].', ' .$this->limite_requete['limite'];
}
// ?
return '';
}
}
?>
/trunk/services/modules/0.1/baseflor/Informations.php
26,8 → 26,8
protected $limite_requete = array( 'depart' => 0, 'limite' => 10);
private $tables;
private $champs_recherches = '*';
private $requete_jointure = "";
private $requete_condition = "";
private $requete_jointure = array();
private $requete_condition = array();
private $total_resultat;
protected $serviceNom = 'informations';
private $masque;
235,36 → 235,38
public function assemblerLaRequete() {
$requete = ' SELECT '.$this->champs_recherches.' FROM '.$this->tables['index'].' '
.$this->retournerRequeteJointure().' '.$this->retournerRequeteCondition().
' '.$this->delimiterResultatsRequete();
$requete = ' SELECT '.$this->champs_recherches.
' FROM '.$this->tables['index'].' '
.self::retournerRequeteJointure($this->requete_jointure).' '
.self::retournerRequeteCondition($this->requete_condition).' '
.$this->delimiterResultatsRequete();
return $requete;
}
public function retournerRequeteCondition() {
$condition = '';
if ($this->requete_condition !== "") {
$condition = ' WHERE '.implode(' AND ', $this->requete_condition);
}
return $condition;
 
static function retournerRequeteCondition($cond) {
return $cond ? (' WHERE '.implode(' AND ', $cond)) : '';
}
public function calculerTotalResultat() {
$requete = 'SELECT count(*) as nombre FROM '.$this->tables['index'].' '
.$this->retournerRequeteJointure().' '.$this->retournerRequeteCondition();
$res = $this->getBdd()->recuperer($requete);
if ($res) {
$this->total_resultat = $res['nombre'];
} else {
$this->total_resultat = 0;
$e = 'Données introuvables dans la base';
$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE, $e);
}
static function calculerTotalResultat($db, $table, Array $join, Array $cond) {
$requete = sprintf(
'SELECT count(*) as nombre FROM %s %s %s -- %s:%d',
$table,
$join ? implode(' ', $join) : '',
$cond ? (' WHERE '.implode(' AND ', $cond)) : '',
__FILE__,
__LINE__);
$res = $db->recuperer($requete);
if ($res && $res['nombre']) return $res['nombre'];
throw new Exception('Données introuvables dans la base', RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE);
}
public function delimiterResultatsRequete() {
$this->calculerTotalResultat();
$this->total_resultat = self::calculerTotalResultat(
$this->getBdd(),
$this->tables['index'],
$this->requete_jointure,
$this->requete_condition);
$requete_limite = '';
if (($this->limite_requete['depart'] <= $this->total_resultat) ){
if ( $this->limite_requete['depart'] < $this->total_resultat ){
279,12 → 281,8
return $requete_limite;
}
public function retournerRequeteJointure() {
$jointure = '';
if ($this->requete_jointure !== "") {
$jointure = implode(' ', $this->requete_jointure);
}
return $jointure;
static function retournerRequeteJointure($join) {
return $join ? implode(' ', $join) : '';
}
}
/trunk/services/tests/0.1/baseflor/InformationsBaseflorTest.php
16,11 → 16,7
$ressources = array('dgoju.nn:73256');
$parametres = array();
$retour = ServiceEflorePhpUnit::consulterBrut($this->service, $this->projet, $ressources, $parametres);
$messageAttendu =
"Erreur dans l'url de votre requête :".
" </br> Le référentiel \" dgoju \" n'existe pas.";
$this->assertEquals($messageAttendu, $retour,
"Il faut indiquer un référentiel inconnu.");
$this->assertEquals("Données introuvables dans la base", $retour, "Il faut renvoyer \"données introuvables\" en cas de référentiel inconnu.");
}
public function testRessourceInconnue() {
37,9 → 33,7
$ressources = array('bdtfx.nn:3');
$parametres = array();
$retour = ServiceEflorePhpUnit::consulterBrut($this->service, $this->projet, $ressources, $parametres);
$messageAttendu = "Les données recherchées sont introuvables.";
$this->assertEquals($messageAttendu, $retour,
"Il faut indiquer si une requête ne renvoie pas de résultats.");
$this->assertEquals("Données introuvables dans la base", $retour, "Il faut indiquer si une requête ne renvoie pas de résultats.");
}
//++ ------------------------------------Test des paramètres -----------------------------++