/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 -----------------------------++ |
/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->total_resultat = self::calculerTotalResultat( |
$this->getBdd(), |
$this->table, |
Array(), |
$this->requete_condition); |
if ($this->limite_requete['limite'] == '*') return ''; |
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']; |
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); |
} |
} 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); |
if (($this->limite_requete['limite'] + $this->limite_requete['depart'] ) < $this->total_resultat) { |
return 'LIMIT '.$this->limite_requete['depart'].', ' .$this->limite_requete['limite']; |
} |
return $condition; |
// ? |
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); |
static function retournerRequeteCondition($cond) { |
return $cond ? (' WHERE '.implode(' AND ', $cond)) : ''; |
} |
return $condition; |
} |
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); |
static function retournerRequeteJointure($join) { |
return $join ? implode(' ', $join) : ''; |
} |
return $jointure; |
} |
} |