Subversion Repositories eFlore/Applications.coel

Rev

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

package org.tela_botanica.client.modeles.structure;

import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import org.tela_botanica.client.modeles.aDonnee;
import org.tela_botanica.client.modeles.personne.Personne;

import com.google.gwt.json.client.JSONObject;

public class StructureAPersonne extends aDonnee {

        private static final long serialVersionUID = -7265602594281982891L;

        public static final String PREFIXE = "csap";
        
        public static final String FONCTION_DIRECTEUR = "2028";
        public static final String FONCTION_CONSERVATEUR = "2029";
        public static final String FONCTION_TECHNICIEN = "2030";
        public static final String ROLE_ADMIN = "2026";
        public static final String ROLE_EQUIPE = "2027";
        public static final String ETAT_AJOUTE = "A";
        public static String[] champsObligatoires = {"csap_id_personne", "csap_id_structure", "csap_id_role", "cp_id_personne"};
        
        public StructureAPersonne() {
                // Définition des valeurs par défaut de variables obligatoires vis à vis de l'utilisation de l'objet
                set("contact", false);
                set("fonction", "");
                set("statut", "");
                set("travail", 0);
        }
        
        public StructureAPersonne(JSONObject personnel) {
                // Définition des valeurs par défaut de variables obligatoires vis à vis de l'utilisation de l'objet
                set("contact", false);
                set("fonction", "");
                set("statut", "");
                set("travail", 0);
                
                // L'objet JSON est une table de hachage
                Set<String> im = personnel.keySet();

                // Parcourt pour chaque clé
                for (Iterator<String> it = im.iterator(); it.hasNext();) {
                        // Si elle est associée à une valeur, nous l'ajoutons
                        String cle = it.next();
                        if (cle.startsWith(PREFIXE+"_")) {
                                // Suppression de l'abréviation du champ. Inutile dans le contexte d'un objet
                                String cleObjet = cle.replaceFirst("^"+PREFIXE+"_", "");
                                // Sinon, nous ajoutons la clé avec une valeur vide
                                String valeur = "";
                                if (personnel.get(cle).isString() != null) {
                                        valeur = personnel.get(cle).isString().stringValue();
                                }
                                set(cleObjet, valeur);
                                if (cle.equals("mark_contact")) {
                                        set("contact", (valeur.equals("1") ? true : false));
                                } else if (cle.equals("bota_travail_hebdo_tps")) {
                                        set("travail", Integer.parseInt(valeur));
                                }
                        }
                        if (cle.startsWith(Personne.PREFIXE+"_")) {
                                // Suppression de l'abréviation du champ. Inutile dans le contexte d'un objet
                                String cleObjet = cle.replaceFirst("^"+Personne.PREFIXE+"_", "");
                                // Sinon, nous ajoutons la clé avec une valeur vide
                                String valeur = "";
                                if (personnel.get(cle).isString() != null) {
                                        valeur = personnel.get(cle).isString().stringValue();
                                }
                                
                                if (cleObjet.equals("truk_telephone")) {
                                        set("telephone", valeur);
                                        set("tel_fix", getInfoDenormaliseParType(valeur, Personne.TELEPHONE_FIXE));
                                        set("tel_fax", getInfoDenormaliseParType(valeur, Personne.TELEPHONE_FAX));
                                } else if (cleObjet.equals("truk_courriel")) {
                                        set("courriel", getInfoDenormaliseParPosition(valeur, 1));
                                } else if (cleObjet.equals("ce_truk_specialite")) {
                                        set("specialite", getInfoDenormaliseParPosition(valeur, 1));
                                } else {
                                        set(cleObjet, valeur);
                                }
                        }
                }
        }
        
        public StructureAPersonne(Personne personne, String fonction, String roleId, String codeEtat) {
                Map<String, Object> a = personne.getProperties();
        
                Set<String> cles = a.keySet();
                Iterator<String> it = cles.iterator();
                while (it.hasNext()) {
                        String cle = it.next();
                        String cleObjet = cle.replaceFirst("^"+Personne.PREFIXE+"_", "");
                        String valeur = (String)a.get(cle);
                        if (a.get(cle) != null) {
                                if (cle.equals("truk_telephone")) {
                                        set("telephone", a.get(cle));
                                        set("tel_fix", getInfoDenormaliseParType(valeur, Personne.TELEPHONE_FIXE));
                                        set("tel_fax", getInfoDenormaliseParType(valeur, Personne.TELEPHONE_FAX));
                                } else if (cleObjet.equals("truk_courriel")) {
                                        set("courriel", getInfoDenormaliseParPosition(valeur, 1));
                                } else if (cleObjet.equals("ce_truk_specialite")) {
                                        set("specialite", getInfoDenormaliseParPosition(valeur, 1));
                                } else {
                                        this.set(cleObjet, a.get(cle));
                                }
                        }
                }
                
                setFonction(fonction);
                setIdRole(roleId);
                
                // Définition des valeurs par défaut de variables obligatoires vis à vis de l'utilisation de l'objet
                set("contact", false);
                set("fonction", fonction);
                set("statut", "");
                set("travail", 0);
                set("etat", codeEtat);
        }

        
        /**
         * Constructeur avec la fonction à passer en paramètre
         * 
         * @param fonction fonction de la personne dans la structure.
         * @param role identifiant du rôle de la personne vis à vis de la structure.
         */
        public StructureAPersonne(String fonction, String roleId) {
                setFonction(fonction);
                setIdRole(roleId);
                
                // Définition des valeurs par défaut de variables obligatoires vis à vis de l'utilisation de l'objet
                set("contact", false);
                set("fonction", fonction);
                set("statut", "");
                set("travail", 0);
        }
        
        /**
         * Constructeur avec la fonction à passer en paramètre
         * 
         * @param fonction fonction de la personne dans la structure.
         * @param role identifiant du rôle de la personne vis à vis de la structure.
         */
        public StructureAPersonne(String fonction, String roleId, String codeEtat) {
                setFonction(fonction);
                setIdRole(roleId);
                
                // Définition des valeurs par défaut de variables obligatoires vis à vis de l'utilisation de l'objet
                set("contact", false);
                set("fonction", fonction);
                set("statut", "");
                set("travail", 0);
                set("etat", codeEtat);
        }
        
        @Override
        protected String getPrefixe() {
                return PREFIXE;
        }
        
        protected String[] getChampsObligatoires()      {
                return champsObligatoires;
        }
        
        
        // ID
        /** Génère un identifiant de StructureAPersonne.
         * 
         * C'est une concaténation des clés primaires de la table coel_structure_a_personne séparées par un tiret "-".
         * 
         * @return identifiant unique d'une relation "structure à personne".
         */
        public String getId() {
                String idStructure = renvoyerValeurCorrecte("id_structure");
                String idPersonne = renvoyerValeurCorrecte("id_personne");
                String idRole = renvoyerValeurCorrecte("id_role");
                if (idStructure.equals("") && idPersonne.equals("") && idRole.equals("")) {
                        return null;
                } else {
                        return (idStructure+"-"+idPersonne+"-"+idRole);
                }
        }
        
        //+---------------------------------------------------------------------------------------------------------------+
        // CHAMPS PROVENANT de la TABLE COEL_STRUCTURE_A_PERSONNE
        
        // ID STRUCTURE
        public String getIdStructure() {
                return renvoyerValeurCorrecte("id_structure");
        }
        public void setIdStructure(String is) {
                set("id_structure", is);
        }
        
        // ID PERSONNE
        public String getIdPersonne() {
                return renvoyerValeurCorrecte("id_personne");
        }
        public void setIdPersonne(String ip) {
                set("id_personne", ip);
        }
        
        // ID RôLE
        public String getIdRole() {
                return renvoyerValeurCorrecte("id_role");
        }
        public void setIdRole(String ir) {
                set("id_role", ir);
        }
        
        // FONCTION
        public String getFonction() {
                return renvoyerValeurCorrecte("ce_truk_fonction");
        }
        public void setFonction(String ctf) {
                set("ce_truk_fonction", ctf);
        }
        public void setFonction(String type, String valeur) {
                setChaineDenormaliseUnique("ce_truk_fonction", type, valeur);
        }
        
        // SERVICE
        public String getService() {
                return renvoyerValeurCorrecte("service");
        }
        public void setService(String s) {
                set("service", s);
        }
        
        // STATUT
        public String getStatut() {
                return renvoyerValeurCorrecte("ce_truk_statut");
        }
        public void setStatut(String cts) {
                set("ce_truk_statut", cts);
        }
        public void setStatut(String type, String valeur) {
                setChaineDenormaliseUnique("ce_truk_statut", type, valeur);
        }
        
        // CONTACT
        public String getContact() {
                return renvoyerValeurCorrecte("mark_contact");
        }
        public void setContact(String c) {
                //set("contact", (c.equals("1") ? true : false));
                set("mark_contact", c);
        }
        public void setContact(Boolean c) {
                setContact((c.equals(Boolean.TRUE) ? "1" : "0"));
        }
        
        // BOTA TRAVAIL HEBDO TPS
        public String getBotaTravailHebdoTps() {
                return renvoyerValeurCorrecte("bota_travail_hebdo_tps");
        }
        public void setBotaTravailHebdoTps(String btht) {
                set("bota_travail_hebdo_tps", btht);
        }
        
        //+---------------------------------------------------------------------------------------------------------------+
        // CHAMPS PROVENANT de la TABLE COEL_PERSONNE
        
        // PRÉNOM
        public String getPrenom() {
                return renvoyerValeurCorrecte("prenom");
        }
        public void setPrenom(String prenom) {
                set("prenom", prenom);
        }
        
        // NOM
        public String getNom() {
                return renvoyerValeurCorrecte("nom");
        }
        public void setNom(String nom) {
                set("nom", nom);
        }
        
        // NOM COMPLET
        public String getNomComplet() {
                return renvoyerValeurCorrecte("fmt_nom_complet");
        }
        public void setNomComplet(String nomComplet) {
                set("fmt_nom_complet", nomComplet);
        }
        
        // TÉLÉPHONE
        public String getTelephone() {
                return renvoyerValeurCorrecte("telephone");
        }
        public void setTelephone(String tel) {
                set("telephone", tel);
        }
        
        // TÉLÉPHONE FIXE
        public String getTelephoneFixe() {
                return getInfoDenormaliseParType(renvoyerValeurCorrecte("telephone"), Personne.TELEPHONE_FIXE);
        }
        public void setTelephoneFixe(String fixe) {
                // Nous remplaçons le premier numéro de Téléphone FIXE de la personne
                modifierChaineDenormaliseParType("telephone", Personne.TELEPHONE_FIXE, fixe);
        }
        
        // TÉLÉPHONE FAX
        public String getFax() {
                return getInfoDenormaliseParType(renvoyerValeurCorrecte("telephone"), Personne.TELEPHONE_FAX);
        }
        public void setFax(String fax) {
                // Nous remplaçons le premier numéro de FAX de la personne
                modifierChaineDenormaliseParType("telephone", Personne.TELEPHONE_FAX, fax);
        }
        
        // COURRIEL
        public String getCourriel() {
                return renvoyerValeurCorrecte("courriel");
        }
        public void setCourriel(String courriel) {
                // Nous remplaçons le courriel en position 1 (principal)
                this.modifierChaineDenormaliseParPosition("courriel", 1, courriel);
        }
        public String selectionnerCourriel(int position) {
                return getInfoDenormaliseParPosition(renvoyerValeurCorrecte("courriel"), position);
        }
        
        // SPÉCIALITÉ
        public String getSpecialite() {
                return renvoyerValeurCorrecte("specialite");
        }
        public void setSpecialite(String specialite) {
                setChaineDenormaliseUnique("specialite", "AUTRE", specialite);
        }
        public String afficherSpecialite() {
                return getChaineDenormaliseUnique("specialite");
        }
        
        public String getDeces() {
                return renvoyerValeurCorrecte("ce_deces");
        }
        public void setDeces(String etat) {
                set("ce_deces", etat);
        }
}