Subversion Repositories eFlore/Applications.coel

Rev

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

package org.tela_botanica.client.modeles.publication;

import java.util.ArrayList;
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.collection.CollectionAPublication;
import org.tela_botanica.client.modeles.structure.Structure;
import org.tela_botanica.client.util.Debug;
import org.tela_botanica.client.util.UtilString;

import com.extjs.gxt.ui.client.data.ModelData;
import com.google.gwt.json.client.JSONObject;

public class Publication extends aDonnee {

        private static final long serialVersionUID = 4142843068041690126L;

        public static final String PREFIXE = "cpu";
        private boolean removePrefix = true;
        private Structure editeur = null;
        public static String[] champsObligatoires = {"cpu_id_publication"};
        public ArrayList<String> cles = null;
        
        public Publication() {
        }
        
        public Publication(boolean removePrefix) {
                this.removePrefix = removePrefix;
                cles = new ArrayList<String>();
                cles.add("id_publication");
        }
        
        public Publication(JSONObject publication) {
                initialiserModele(publication);
                editeur = new Structure(publication);
                cles = new ArrayList<String>();
                cles.add("id_publication");
        }
        
        public Publication(ModelData model, boolean removePrefix)
        {
                this.removePrefix = removePrefix;
                cles = new ArrayList<String>();
                cles.add("id_publication");
                
                Map<String, Object> a = model.getProperties();

                Set<String> cles = a.keySet();
                Iterator<String> it = cles.iterator();
                while (it.hasNext()) {
                        String cle = it.next();                 
                        if (a.get(cle) != null) {
                                String cleObjet = "";
                                if (removePrefix) {
                                        cleObjet = cle.replaceFirst("^"+getPrefixe()+"_", "");
                                }
                                else {
                                        cleObjet=cle;
                                        String valeur = "";
                                        if (a.get(cle) instanceof Integer) valeur = String.valueOf(a.get(cle));
                                        else if (a.get(cle) instanceof String) valeur = (String)a.get(cle);
                                        traiterClesEtrangeres(cle, valeur);
                                }
                                this.set(cleObjet, a.get(cle));
                        }
                }
        }
        
        // Action
        //--------
        // cette méthode sert dans le cas suivant : le contructeur reçoit un object ModelData
        // qui contient cpuap_id_publication mais pas cpu_id_publication ou id_publication. Sans
        // la méthode ci-dessous, on aurait des problèmes. Celle-ci affecte à id_publication la
        // valeur des clés étrangères rencontrées (cpuap_id_publication, cpuac_id_publication, etc.)
        private void traiterClesEtrangeres(String cle, String valeur) {
                // on recupere le nom de la clé de la propriété (sans son prefixe)
                String nomSansPrefixe = cle.replaceFirst("^[a-zA-Z]+_", "");
                // on regarde si cette clé est une clé primaire de la table Publication
                if (cles.contains(nomSansPrefixe)) {
                        // si c'est le cas et que la valeur est non nulle
                        if (valeur != null && !UtilString.isEmpty(valeur)) {
                                // on affecte la valeur de la clés étrangère à la clé primaire
                                if (removePrefix) this.set(nomSansPrefixe, valeur);
                                else this.set(PREFIXE+"_"+nomSansPrefixe, valeur);
                        }
                }
        }
        
        protected String getPrefixe() {
                return PREFIXE;
        }
                
        protected String[] getChampsObligatoires()      {
                return champsObligatoires;
        }
        
        public void setStructureEditeur(Structure structure) {
                editeur = structure;
        }
        
        public String getId() {
                if (removePrefix) return renvoyerValeurCorrecte("id_publication");
                else return renvoyerValeurCorrecte(PREFIXE+"_id_publication");
        }
        public void setId(String idPublication) {
                if (removePrefix) this.set("id_publication", idPublication);
                else this.set(PREFIXE+"_id_publication", idPublication);
        }
        
        public String getIdProjet() {
                if (removePrefix) return renvoyerValeurCorrecte("ce_projet");
                else return renvoyerValeurCorrecte(PREFIXE+"_ce_projet");
        }
        public void setIdProjet(String idProjet) {
                if (removePrefix) this.set("ce_projet", idProjet);
                else this.set(PREFIXE+"_ce_projet", idProjet);
        }
        
        public String getNomComplet() {
                if (removePrefix) return renvoyerValeurCorrecte("fmt_nom_complet");
                else return renvoyerValeurCorrecte(PREFIXE+"_fmt_nom_complet");
        }
        public void setNomComplet(String nomComplet) {
                if (removePrefix) this.set("fmt_nom_complet", nomComplet);
                else this.set(PREFIXE+"_fmt_nom_complet", nomComplet);
        }
        
        public String getURI() {
                if (removePrefix) return renvoyerValeurCorrecte("uri");
                else return renvoyerValeurCorrecte(PREFIXE+"_uri");
        }
        public void setUri(String uri) {
                if (removePrefix) this.set("uri", uri);
                else this.set(PREFIXE+"_uri", uri);
        }

        public String getAuteur() {
                if (removePrefix) return renvoyerValeurCorrecte("fmt_auteur");
                else return renvoyerValeurCorrecte(PREFIXE+"_fmt_auteur");
        }
        public void setAuteur(String auteurFormate) {
                if (removePrefix) this.set("fmt_auteur", auteurFormate);
                else this.set(PREFIXE+"_fmt_auteur", auteurFormate);
        }

        public String getCollection() {
                if (removePrefix) return renvoyerValeurCorrecte("collection");
                else return renvoyerValeurCorrecte(PREFIXE+"_collection");
        }
        public void setCollection(String collection) {
                if (removePrefix) this.set("collection", collection);
                else this.set(PREFIXE+"_collection", collection);
        }
        
        public String getTitre() {
                if (removePrefix) return renvoyerValeurCorrecte("titre");
                else return renvoyerValeurCorrecte(PREFIXE+"_titre");
        }
        public void setTitre(String titre) {
                if (removePrefix) this.set("titre", UtilString.ucFirst(titre));
                else this.set(PREFIXE+"_titre", UtilString.ucFirst(titre));
        }

        public String getNomEditeur() {
                String editeurNom = getEditeur();
                if (editeurNom.matches("[0-9]+")) {
                        editeurNom = editeur.getNom();
                }
                return editeurNom;
        }
        public String getEditeur() {
                if (removePrefix) return getChaineDenormaliseUnique("ce_truk_editeur");
                else return getChaineDenormaliseUnique(PREFIXE+"_ce_truk_editeur");
        }
        public void setEditeur(String editeur) {
                if (removePrefix) setChaineDenormaliseUnique("ce_truk_editeur", "AUTRE", editeur);
                else setChaineDenormaliseUnique(PREFIXE+"_ce_truk_editeur", "AUTRE", editeur);
        }

        public String getAnneeParution() {
                String date;
                if (removePrefix) date = renvoyerValeurCorrecte("date_parution");
                else date = renvoyerValeurCorrecte(PREFIXE+"_date_parution");
                if (date != null && !UtilString.isEmpty(date))
                        return date.substring(0, 4);
                else
                        return null;    
        }
        public String getDateParution() {
                if (removePrefix) return renvoyerValeurCorrecte("date_parution");
                else return renvoyerValeurCorrecte(PREFIXE+"_date_parution");
        }
        public void setDateParution(String date) {
                if (removePrefix) this.set("date_parution", date);
                else this.set(PREFIXE+"_date_parution", date);
        }

        public String getIndicationNvt() {
                if (removePrefix) return renvoyerValeurCorrecte("indication_nvt");
                else return renvoyerValeurCorrecte(PREFIXE+"_indication_nvt");
        }
        public void setIndicationNvt(String nvt) {
                if (removePrefix) this.set("indication_nvt", nvt);
                else this.set(PREFIXE+"_indication_nvt", nvt);
        }
        
        public String getFascicule() {
                if (removePrefix) return renvoyerValeurCorrecte("fascicule");
                else return renvoyerValeurCorrecte(PREFIXE+"_fascicule");
        }
        public void setFascicule(String fascicule) {
                if (removePrefix) this.set("fascicule", fascicule);
                else this.set(PREFIXE+"_fascicule", fascicule);
        }
        
        public String getPages() {
                if (removePrefix) return renvoyerValeurCorrecte("truk_pages");
                else return renvoyerValeurCorrecte(PREFIXE+"_truk_pages");
        }
        public void setPages(String pages) {
                if (removePrefix) this.set("truk_pages", pages);
                else this.set(PREFIXE+"_truk_pages", pages);
        }
        
}