Subversion Repositories eFlore/Applications.coel

Rev

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

package org.tela_botanica.client;

import java.util.Iterator;
import java.util.List;

import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.PersonneListe;
import org.tela_botanica.client.modeles.PersonneAsyncDao;
import org.tela_botanica.client.modeles.ProjetListe;
import org.tela_botanica.client.modeles.ProjetAsyncDao;
import org.tela_botanica.client.modeles.Publication;
import org.tela_botanica.client.modeles.PublicationListe;
import org.tela_botanica.client.modeles.PublicationAsyncDao;
import org.tela_botanica.client.modeles.Structure;
import org.tela_botanica.client.modeles.StructureAPersonne;
import org.tela_botanica.client.modeles.StructureAPersonneAsyncDao;
import org.tela_botanica.client.modeles.StructureAPersonneListe;
import org.tela_botanica.client.modeles.StructureAsyncDao;
import org.tela_botanica.client.modeles.StructureConservation;
import org.tela_botanica.client.modeles.StructureListe;
import org.tela_botanica.client.modeles.StructureValorisation;
import org.tela_botanica.client.modeles.Utilisateur;
import org.tela_botanica.client.modeles.UtilisateurAsyncDao;
import org.tela_botanica.client.modeles.ValeurListe;
import org.tela_botanica.client.modeles.ValeurListeAsyncDao;

import com.extjs.gxt.ui.client.Registry;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Window;

// TODO : le transformer en SINGLETON
public class Modele implements Rafraichissable {

        public Modele() {
                Registry.register(RegistreId.MODELE, this);
        }

        public void rafraichir(Object nouvelleDonnees) {
                if (nouvelleDonnees instanceof StructureListe) {
                        ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).afficherListeStructures((StructureListe) nouvelleDonnees);
                } else if (nouvelleDonnees instanceof Utilisateur) {
                        ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).mettreAJourEtatIdentification((Utilisateur) nouvelleDonnees);
                } else if (nouvelleDonnees instanceof ValeurListe) {
                        ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).afficherListeValeurs((ValeurListe) nouvelleDonnees);
                } else if (nouvelleDonnees instanceof PublicationListe) {
                        ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).afficherListePublication((PublicationListe) nouvelleDonnees);
                } else if (nouvelleDonnees instanceof PersonneListe) {
                        ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).afficherListePersonnes((PersonneListe) nouvelleDonnees);
                } else if (nouvelleDonnees instanceof ProjetListe)      {
                        ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).afficherListeProjets((ProjetListe) nouvelleDonnees);                   
                }
        }
        
        //+----------------------------------------------------------------------------------------------------------------+
        //                                                                                              GESTION DES VALEURS ET LISTES
        //+----------------------------------------------------------------------------------------------------------------+
        
        public void obtenirListeValeurs(Integer id) {
                ValeurListeAsyncDao lsDao = new ValeurListeAsyncDao(this);
                lsDao.obtenirListe(id);
        }
        
        //+----------------------------------------------------------------------------------------------------------------+
        //                                                                                              GESTION DES UTILISATEURS
        //+----------------------------------------------------------------------------------------------------------------+
        
        // pour obtenir la liste de personne et la fournir à des éléments spécifiques
        public void obtenirListePersonnes(Rafraichissable r) {
                // Lance le service JREST associé au personne via la class PersonneListeAsyncDAO
                PersonneAsyncDao plDao = new PersonneAsyncDao(r);
                plDao.obtenirListePersonnes();
        }

        public void connecterUtilisateur(String login, String mdp) {
                Utilisateur utilisateur = (Utilisateur) Registry.get(RegistreId.UTILISATEUR);
                utilisateur.setLogin(login);
                utilisateur.setMotDePasse(mdp);
                UtilisateurAsyncDao uDao = new UtilisateurAsyncDao(this);
                uDao.connecterUtilisateur();            
        }
        
        public void deconnecterUtilisateur() {
                UtilisateurAsyncDao uDao = new UtilisateurAsyncDao(this);
                uDao.deconnecterUtilisateur();          
        }
        
        //+----------------------------------------------------------------------------------------------------------------+
        //                                                                                              GESTION DES STRUCTURES
        //+----------------------------------------------------------------------------------------------------------------+

        public void obtenirListeStructures(Rafraichissable r, String utilisateurId, String projetId) {
                StructureAsyncDao sDao = new StructureAsyncDao();
                sDao.selectionner(r, utilisateurId, projetId,"");
        }
        
        public void selectionnerStructure(Rafraichissable vue, String utilisateurId, String projetId, String structureId) {
                // Gestion des données des tables coel_structure, coel_structure_conservation et coel_structure_valorisation 
                StructureAsyncDao sDao = new StructureAsyncDao();
                sDao.selectionner(vue, utilisateurId, projetId, structureId);
        }
        
        public void selectionnerStructures(String utilisateurId, String projetId) {
                selectionnerStructure(this, utilisateurId, projetId, null);
        }
        
        /** Lance la creation d'une Structure
         * @param vue la vue demandant a être rafraichie
         * @param structure les données de la structure
         */
        public void ajouterStructure(Rafraichissable vue, String idUtilisateur, Structure structure) {
                StructureAsyncDao structureDao = new StructureAsyncDao();
                structureDao.ajouter(vue, idUtilisateur, structure);
        }

        public void supprimerStructure(Rafraichissable vue, String idUtilisateur, String idStr) {
                StructureAsyncDao structureDao = new StructureAsyncDao();
                structureDao.supprimer(vue, idUtilisateur, idStr);
        }
        
        public void modifierStructure(Rafraichissable vue, String utilisateurId, Structure structure, StructureConservation conservation, StructureValorisation valorisation) {
                StructureAsyncDao structureDao = new StructureAsyncDao();
                structureDao.modifier(vue, utilisateurId, structure, conservation, valorisation);
        }

        //+----------------------------------------------------------------------------------------------------------------+
        // GESTION de la relation STRUCTURE A PERSONNE
        
        public void selectionnerStructureAPersonne(Rafraichissable r, String idUtilisateur, String projetId, String structureId, String roleId) {
                // Gestion des données de la table coel_structure_a_personne
                if (structureId != null && roleId != null) {
                        StructureAPersonneAsyncDao sapDao = new StructureAPersonneAsyncDao();
                        sapDao.selectionner(r, idUtilisateur, structureId, roleId);
                }
        }
        
        public void modifierStructureAPersonne(Rafraichissable vue, String utilisateurId, StructureAPersonne personnel) {
                StructureAPersonneAsyncDao structureAPersonneDao = new StructureAPersonneAsyncDao();
                structureAPersonneDao.modifier(vue, utilisateurId, personnel);
        }
        
        public void ajouterStructureAPersonne(Rafraichissable vue, String utilisateurId, String structureId, StructureAPersonne personnel) {
                StructureAPersonneAsyncDao structureAPersonneDao = new StructureAPersonneAsyncDao();
                structureAPersonneDao.ajouter(vue, utilisateurId, structureId, personnel);      
        }
        
        public void supprimerStructureAPersonne(Rafraichissable vue, String utilisateurId, String personnelId) {
                StructureAPersonneAsyncDao structureAPersonneDao = new StructureAPersonneAsyncDao();
                structureAPersonneDao.supprimer(vue, utilisateurId, personnelId);
        }
        
        //+----------------------------------------------------------------------------------------------------------------+
        //                                                                                              GESTION DES PROJETS
        //+----------------------------------------------------------------------------------------------------------------+
        
        public void obtenirListeProjets ()      {
                ProjetAsyncDao projetsDao = new ProjetAsyncDao(this);
                projetsDao.selectionner();
                
        }

        public void supprimerPersonne(Rafraichissable vue, String utilisateurId,
                        String idStr) {
                PersonneAsyncDao personneDao = new PersonneAsyncDao(vue);
                personneDao.supprimer(vue, utilisateurId, idStr);
                
        }

        //+----------------------------------------------------------------------------------------------------------------+
        //                                                                                              GESTION DES PERSONNES
        //+----------------------------------------------------------------------------------------------------------------+
        
        public void obtenirListePersonnes() {
                // Lance le service JREST associé au personne via la class PersonneListeAsyncDAO
                PersonneAsyncDao plDao = new PersonneAsyncDao(this);
                plDao.obtenirListePersonnes();
        }
        
        public void selectionnerPersonne(Rafraichissable vue, String personneId, String projetId, String nomComplet) {
                PersonneAsyncDao pDao = new PersonneAsyncDao(vue);
                pDao.selectionner(personneId, projetId, nomComplet);
        }
        
        //+----------------------------------------------------------------------------------------------------------------+
        //                                                                                              GESTION DES PUBLICATIONS
        //+----------------------------------------------------------------------------------------------------------------+
        
        public void obtenirListePublications() {                
                PublicationAsyncDao lsDao = new PublicationAsyncDao(this);
                lsDao.obtenirListePublication();
        }
        
        public void modifierPublication(String utilisateurId, Publication publi) {
                PublicationAsyncDao pDao = new PublicationAsyncDao(this);
                pDao.modifierPublication(this, utilisateurId, publi);
        }

        public void ajouterPublication(String utilisateurId, Publication publi) {
                PublicationAsyncDao pDao = new PublicationAsyncDao(this);
                pDao.ajouterPublication(this, utilisateurId, publi);
        }

        public void supprimerPublication(String utilisateurId,
                        List<Publication> publicationListe) {
                String idPubs = "";
                for(Iterator<Publication> it = publicationListe.iterator(); it.hasNext();) {
                        Publication pub = it.next();
                        idPubs += pub.getId();
                        if(it.hasNext()) {
                                idPubs += ",";
                        }
                }
                PublicationAsyncDao pDao = new PublicationAsyncDao(this);
                pDao.supprimerPublication(this, utilisateurId, idPubs); 
        }

}