Subversion Repositories Applications.referentiel

Rev

Rev 45 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
// declare(encoding='UTF-8');
/**
 * DAO des traitements à réaliser sur les référentiels.
 *
 * @package             Referentiel
 * @category    Php 5.2
 * @author              Jean-Pascal MILCENT <jpm@tela-botanica.org>
 * @copyright   2010 Tela-Botanica
 * @license             http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
 * @license             http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
 * @version             $Id$
 *
 */
class TraitementDao extends Dao {
        const SERVICE = 'Traitement';
        
        private $url = null;
        
        public function __construct() {
                parent::__construct();
                $this->url = $this->url_jrest.self::SERVICE;
        }
        
        /**
         * Retourne les infos d'un traitement enregistré dans la bdd pour un id donné.
         * 
         * @param integer l'id du traitement.
         * @return array le tableau d'infos ou false en cas d'échec.
         */
        public function getInfos($id_traitement) {
                $url = $this->url."/Info/$id_traitement";
                
                $json = $this->envoyerRequeteConsultation($url);
                $infos = json_decode($json, true);
                return $infos;
        }
        
        /**
         * Retourne l'ensemble des traitements en attente.
         * 
         * @param string le code du projet de référentiel.
         * @param string le nom du script à lancer en minuscule.
         * @return mixed un tableau contenant les informations sur les traitements en attente ou false en cas d'échec.
         */
        public function getTraitementsEnAttente($code_projet, $script) {
                $url = $this->url."/EnAttente/$code_projet/$script";
                
                $json = $this->envoyerRequeteConsultation($url);
                $traitements = json_decode($json, true);
                return $traitements;
        }
        
        /**
         * Retourne l'ensemble des traitements en cours.
         * 
         * @param string le code du projet de référentiel.
         * @param string le nom du script à lancer en minuscule.
         * @return mixed un tableau contenant les informations sur les traitements en cours ou false en cas d'échec.
         */
        public function getTraitementsEnCours($code_projet, $script) {
                $url = $this->url."/EnCours/$code_projet/$script";
                
                $json = $this->envoyerRequeteConsultation($url);
                $traitements = json_decode($json, true);
                return $traitements;
        }
        
        /**
         * Retourne les ids de l'ensemble des traitements obsolètes.
         * 
         * @param string le code du projet de référentiel.
         * @param string le nom du script à lancer en minuscule.
         * @return mixed un tableau contenant les ids des traitements obsolètes ou false en cas d'échec.
         */
        public function getTraitementsObsoletes($code_projet, $script) {
                $url = $this->url."/Obsolete/$code_projet/$script";
                
                $json = $this->envoyerRequeteConsultation($url);
                $traitements = json_decode($json, true);
                return $traitements;
        }
        
        /**
         * Retourne le dernier traitement demandé et non traité pour un projet donné.
         * 
         * @param string le code du projet de référentiel.
         * @param string le nom du script à lancer en minuscule.
         * @return mixed un tableau contenant les informations sur le dernier traitement demandé et non traité ou false en cas d'échec.
         */
        public function getDernierTraitement($code_projet, $script) {
                $url = $this->url."/DerniereDemande/$code_projet/$script";
                
                $json = $this->envoyerRequeteConsultation($url);
                $traitements = json_decode($json, true);
                return $traitements;
        }
        
        /**
         * Retourne l'ensemble des traitements terminés.
         * 
         * @param string le code du projet de référentiel.
         * @param string le nom du script à lancer en minuscule.
         * @return mixed un tableau contenant les informations sur les traitements terminés ou false en cas d'échec.
         */
        public function getTraitementsTermines($code_projet, $script) {
                $url = $this->url."/Termines/$code_projet/$script";
                
                $json = $this->envoyerRequeteConsultation($url);
                $traitements = json_decode($json, true);
                return $traitements;
        }
        
        /**
         * Ajoute une demande de traitement pour une référentiel donné.
         * 
         * @param string le code du référentiel.
         * @param string le nom du script à lancer en minuscule.
         * @return mixed l'id du traitement ou false en cas d'échec.
         */
        public function ajouterTraitement($code_projet, $script) {
                return $this->ajouterTraitementParametre($code_projet, null, $script);
        }
        
        /**
         * Ajoute une demande de traitement pour une référentiel donné
         * en passant des paramêtres au script.
         * 
         * @param string le code du référentiel.
         * @param string les données serialisées.
         * @param string le nom du script à lancer en minuscule.
         * @return mixed l'id du traitement ou false en cas d'échec.
         */
        public function ajouterTraitementParametre($code_projet, $parametres, $script) {
                // Préparation des données à passer par POST
                $donnees['referentiel_code'] = $code_projet;
                $donnees['script'] = $script;
                $donnees['script_parametres'] = (isset($parametres)) ? $parametres : null;
                
                // Envoie des données et récupération du retour
                $json = $this->envoyerRequeteAjout($this->url, $donnees);
                $id = json_decode($json, true);
                return $id;
        }
        
        /**
         * Modifie un traitement pour indiquer qu'il est débuté.
         * 
         * @param integer l'id du traitement
         * @return boolean true en cas de succés sinon false.
         */
        public function debuterTraitement($id_traitement) {
                $url = $this->url."/$id_traitement";
                $donnees['action'] = 'Debuter';
                
                // Envoie des données et récupération du retour
                $json = $this->envoyerRequeteModif($url, $donnees);
                $ok = json_decode($json, true);
                return $ok;
        }
        
        /**
         * Modifie un traitement pour indiquer qu'il est terminé.
         * 
         * @param integer l'id du traitement
         * @return boolean true en cas de succés sinon false.
         */
        public function terminerTraitement($id_traitement) {
                $url = $this->url."/$id_traitement";
                $donnees['action'] = 'Terminer';
                
                // Envoie des données et récupération du retour
                $json = $this->envoyerRequeteModif($url, $donnees);
                $ok = json_decode($json, true);
                return $ok;
        }
        
        /**
         * Supprime des traitments en fonction de leur id.
         * 
         * @param array le tableau des id des traitements à supprimer
         * @return boolean true en cas de succès ou false en cas d'échec.
         */
        public function supprimer(Array $ids) {
                // Préparation de l'url
                $url = $this->url.'/'.implode(',', $ids);
                
                // Envoie des données et récupération du retour
                $json = $this->envoyerRequeteSuppression($url);
                $ok = json_decode($json, true);
                return $ok;
        }
}
?>