Subversion Repositories eFlore/Applications.coel

Rev

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

package org.tela_botanica.client.modeles;

import java.io.Serializable;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.tela_botanica.client.util.UtilArray;

import com.extjs.gxt.ui.client.data.BaseModelData;
import com.extjs.gxt.ui.client.widget.form.CheckBox;

/**
 * @author jpm
 *
 */
public abstract class aDonnee extends BaseModelData implements Serializable {

        /**
         * Identifiant pour sérialisé l'objet...
         */
        private static final long serialVersionUID = 3527760464061629791L;

        /**
         * Pour éviter que l'on traite des valeurs nulles à l'affichage on passe par
         * cette fonction qui retire les charactères nuls qui font planter
         * l'affichage, il ne faut pas utiliser get directement
         * 
         * @param cle
         * @return la valeur associée à la clé
         */
        protected String renvoyerValeurCorrecte(String cle) {
                String sortie = "";
                if (this.get(cle) != null) {
                        String valeur = this.get(cle);
                        if (! valeur.equals("null")) {
                                char nullChar = '\u0000';
                                String sNull = "" + nullChar;
                                valeur = valeur.replaceAll(sNull, "");
                                sortie =  valeur;
                        }
                }
                return sortie;
        }
        
        /**
         * Permet de constuire correctement une chaine dénormalisée (champ de type "truk").
         * 
         * @param champ le nom du champ dénormalisé
         * @param type le type de la valeur à ajouter
         * @param valeur la valeur à ajouter
         */
        protected void setChaineDenormalise(String champ, String type, Object valeur) {
                if (valeur instanceof String) {
                        String chaineExistante = renvoyerValeurCorrecte(champ);
                        if (chaineExistante.equals("")) {
                                this.set(champ, type+"##"+valeur);
                        } else {
                                this.set(champ, chaineExistante+";;"+type+"##"+valeur);
                        }
                }
        }
        
        /**
         * Permet de constuire correctement une chaine dénormalisée unique (champ de type "ce_truk").
         * 
         * @param champ le nom du champ dénormalisé
         * @param type le type de la valeur à ajouter
         * @param valeur la valeur à ajouter
         */
        protected void setChaineDenormaliseUnique(String champ, String type, Object valeur) {
                if (valeur instanceof String) {
                        this.set(champ, type+"##"+valeur);
                }
        }
        
        protected String getInfoDenormaliseParType(String chaineExistante, String type) {
                String sortie = "";
                if (!chaineExistante.equals("")) {
                        String[] valeurs = chaineExistante.split(";;");
                        for (int i = 0; i < valeurs.length; i++) {
                                if (valeurs[i].startsWith(type+"##")) {
                                        sortie =  valeurs[i].replaceFirst("^"+type+"##", "");
                                }
                        }
                }
                return sortie;
        }
        
        /**
         * Permet de modifier correctement une chaine dénormalisée (champ de type "truk").
         * Remplace par la valeur de la première instance du type indiqué dans la chaine dénormalisée.
         * 
         * @param champ le nom du champ dénormalisé
         * @param type le type de la valeur à modifier
         * @param valeur la valeur pour le type en question
         */
        protected void setChaineDenormaliseParType(String champ, String type, Object valeur) {
                if (valeur instanceof String) {
                        String chaineExistante = renvoyerValeurCorrecte(champ);
                        if (chaineExistante.equals("")) {
                                this.set(champ, type+"##"+valeur);
                        } else {
                                String[] valeurs = chaineExistante.split(";;");
                                for (int i = 0; i < valeurs.length; i++) {
                                        if (valeurs[i].startsWith(type+"##") || i == (valeurs.length -1)) {
                                                valeurs[i] = type+"##"+valeur;
                                                break;
                                        }
                                }
                                this.set(champ, UtilArray.implode(valeurs, ";;"));
                        }
                }
        }
        
        protected String getInfoDenormaliseParPosition(String chaineExistante, int position) {
                String sortie = "";
                if (!chaineExistante.equals("")) {
                        String[] valeurs = chaineExistante.split(";;");
                        if (valeurs.length >= position) {
                                for (int i = 0; i < valeurs.length; i++) {
                                        if (i == (position - 1)) {
                                                if (valeurs[i].contains("##")) {
                                                        sortie =  valeurs[i].replaceFirst("^[^#]+##", "");
                                                } else {
                                                        sortie =  valeurs[i];
                                                }
                                                break;
                                        }
                                }
                        }
                }
                return sortie;
        }
        
        /**
         * Permet de modifier correctement une chaine dénormalisée (champ de type "truk").
         * Remplace par la valeur l'instance dont la position a été indiquée.
         * 
         * @param champ le nom du champ dénormalisé
         * @param position le type de la valeur à modifier
         * @param valeur la valeur à remplacer à la position indiquée
         */
        protected void setChaineDenormaliseParPosition(String champ, int position, Object valeur) {
                if (valeur instanceof String) {
                        String chaineExistante = renvoyerValeurCorrecte(champ);
                        if (!chaineExistante.equals("")) {
                                String[] valeurs = chaineExistante.split(";;");
                                if (valeurs.length == 0) {
                                        this.set(champ, valeur);
                                } else if (valeurs.length >= position) {
                                        for (int i = 0; i < valeurs.length; i++) {
                                                if (i == (position - 1)) {
                                                        valeurs[i] = (String) valeur;
                                                        break;
                                                }
                                        }
                                        this.set(champ, UtilArray.implode(valeurs, ";;"));
                                }
                        }
                }
        }
        
        public String getDateModification() {
                return (String) renvoyerValeurCorrecte("cmhl_date_modification");
        }
        
        public String getNotes() {
                return (String) renvoyerValeurCorrecte("cmhl_notes");
        }
        
        public String getIdModifierPar() {
                return (String) renvoyerValeurCorrecte("cmhl_ce_modifier_par");
        }
        
        public String getIdEtat() {
                return (String) renvoyerValeurCorrecte("cmhl_ce_etat");
        }
        
        public String getIp() {
                return (String) renvoyerValeurCorrecte("cmhl_ip");
        }
        
        /** (non-Javadoc)
         * @see java.lang.Object#toString()
         */
        public String toString() {
                String sortie = "";
                
                // Champs du BaseModelData
                Set<String> proprietes = this.getProperties().keySet();
                for (Iterator<String> it = proprietes.iterator(); it.hasNext();) {
                        String cle = it.next();
                        if (!this.get(cle).equals("")) {
                                sortie += cle+" : "+this.get(cle)+"\n";
                        }
                }
                
                return sortie;
        }
}