Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 843 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
class RessourcesVerificateur {

        private $ressources = null;
        private $projetsDispo = array();
        private $servicesDispo = array();

        public function __construct(Ressources $ressources, Array $projetsDispo, Array $servicesDispo) {
                $this->ressources = $ressources;
                $this->projetsDispo = $projetsDispo;
                $this->servicesDispo = $servicesDispo;
        }

        public function verifier() {
                $this->verifierPresenceRessources();
                $this->verifierPresenceProjet();
                $this->verifierPresenceService();
        }

        private function verifierPresenceRessources() {
                if ($this->ressources->getNombre() == 0) {
                        $message = "Aucune ressource n'a été indiquée.\n".
                                "Veuillez indiquer au moins un code de projet et un type de service.";
                        $code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;
                        throw new Exception($message, $code);
                }
        }

        private function verifierPresenceProjet() {
                $projet = $this->ressources->getProjetNom();
                if (in_array($projet, $this->projetsDispo) === false) {
                        $message = "La ressource '$projet' n'indique pas un projet existant.\n".
                                "Les projets existant sont :\n".implode(', ', $this->projetsDispo);
                        $code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;
                        throw new Exception($message, $code);
                }
        }

        private function verifierPresenceService() {
                $service = $this->ressources->getServiceNom();
                if (in_array($service, $this->servicesDispo) === false) {
                        $message = "La service demandé '$service' n'est pas disponible pour le projet '{$this->ressources->getProjetNom()}' !\n".
                                "Les services disponibles sont : ".implode(', ', $this->servicesDispo);
                        $code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
                        throw new Exception($message, $code);
                }
        }


}
?>