Rev 1513 | Rev 1591 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.modeles.personne;
import java.util.Date;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.modeles.aDonnee;
import org.tela_botanica.client.modeles.collection.CollectionAPublication;
import org.tela_botanica.client.modeles.publication.PublicationAPersonneListe;
import org.tela_botanica.client.util.Debug;
import org.tela_botanica.client.util.Log;
import org.tela_botanica.client.util.UtilString;
import com.extjs.gxt.ui.client.data.ModelData;
import com.google.gwt.core.client.GWT;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.json.client.JSONObject;
public class Personne extends aDonnee {
private static final long serialVersionUID = -6974716696155349332L;
public static final String PREFIXE = "cp";
public static final String TELEPHONE_FIXE = "FIX";
public static final String TELEPHONE_GSM = "GSM";
public static final String TELEPHONE_FAX = "FAX";
public static final String ETRE_DECEDE = "30745";
public static final String ETRE_VIVANT = "30746";
public static String[] champsObligatoires = {"cp_id_personne"};
private PublicationAPersonneListe publicationsLiees= null;
public Personne() {}
public Personne(ModelData model) {
creerPersonne(model, false);
}
public Personne(ModelData model, boolean removePrefix) {
creerPersonne(model, removePrefix);
}
private void creerPersonne(ModelData model, boolean removePrefix) {
this.removePrefix = removePrefix;
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 = cleObjet.replaceFirst("^"+PREFIXE+"_", "");
}
else {
cleObjet = cle;
}
this.set(cleObjet, a.get(cle));
}
}
}
public Personne(JSONObject personne) {
initialiserModele(personne);
//Ajout du champ courriel principal
this.setCourrielPrinc(this.getInfoDenormaliseParPosition(this.renvoyerValeurCorrecte("truk_courriel"), 1));
}
@Override
protected String getPrefixe() {
return PREFIXE;
}
protected String[] getChampsObligatoires() {
return champsObligatoires;
}
public Object obtenirValeurChamp(String nomChamp) {
return renvoyerValeurCorrecte(nomChamp);
}
public Date getDate(String nomChamp) {
String strDate = renvoyerValeurCorrecte(nomChamp);
Date dateRetour = null;
try {
if ((strDate != null) && (!strDate.equals("0000-00-00"))) {
dateRetour = DateTimeFormat.getFormat("yyyy-MM-dd").parseStrict(strDate);
}
} catch (StringIndexOutOfBoundsException e) {
GWT.log("Impossible de parser la date " + strDate, e);
}
return dateRetour;
}
public String getString(String nomChamp) {
return String.valueOf(renvoyerValeurCorrecte(nomChamp));
}
//Traitement des truks
protected void remplacerTypeDansChaineDenormalise(String champ, String type, Object valeur) {
if (valeur != null && !valeur.equals("")) {
ajouterChaineDenormaliseAvecType(champ, type, valeur);
} else {
supprimerTypeDansChaineDenormalise(champ, type);
}
}
/**
* Ajoute un nouvel élément sans type à une chaine dénormalisée.
* Champ de type "truk" contenant seulement des valeurs séparées par ";;".
* Si l'élément existe déjà, il ne sera pas ajouté.
*
* @param champ le nom du champ dénormalisé
* @param valeur la valeur à ajouter
*/
protected void ajouterChaineDenormalise(String champ, Object valeur) {
if (valeur instanceof String) {
String chaineExistante = renvoyerValeurCorrecte(champ);
if (chaineExistante.equals("")) {
this.set(champ, valeur);
} else {
// Si la valeur à ajouter n'est pas déjà présente, nous l'ajoutons
if (!chaineExistante.matches("(^|"+SEPARATEUR_VALEURS+")"+valeur+"("+SEPARATEUR_VALEURS+"|$)")) {
this.set(champ, chaineExistante+SEPARATEUR_VALEURS+valeur);
}
}
}
}
// ID PERSONNE
public String getId() {
Log.debug("Dans getId() Personne : "+this.toString());
return renvoyerValeurCorrecte("id_personne");
}
public void setId(String personneId) {
if (removePrefix) this.set("id_personne", personneId);
else this.set(PREFIXE+"_id_personne", personneId);
}
// ID PROJET
public String getIdProjet() {
return renvoyerValeurCorrecte("ce_projet");
}
// NOM COMPLET
public String getNomComplet() {
return renvoyerValeurCorrecte("fmt_nom_complet");
}
public void setNomComplet(String nomComplet) {
this.set("fmt_nom_complet", nomComplet);
}
public void setFmtNomComplet(String prefixe, String suffixe) {
String fmtNomComplet = "";
if ((prefixe != null)&&(!prefixe.trim().equals(""))) {
fmtNomComplet += prefixe + " ";
}
if ((this.getPrenom()!=null)&&(!this.getPrenom().trim().equals(""))) {
fmtNomComplet += this.getPrenom() + " ";
}
if ((this.getNom()!=null)&&(!this.getNom().trim().equals(""))) {
fmtNomComplet += this.getNom() + " ";
}
if ((suffixe!=null)&&(!suffixe.trim().equals(""))) {
fmtNomComplet += suffixe;
}
setNomComplet(UtilString.ucFirst(fmtNomComplet));
}
// NOM
public String getNom() {
if (removePrefix) return renvoyerValeurCorrecte("nom");
else return renvoyerValeurCorrecte(PREFIXE+"_nom");
}
public void setNom(String nom) {
if (removePrefix) set("nom", nom);
else set(PREFIXE+"_nom", nom);
}
// PRÉNOM
public String getPrenom() {
if (removePrefix) return renvoyerValeurCorrecte("prenom");
else return renvoyerValeurCorrecte(PREFIXE+"_prenom");
}
public void setPrenom(String prenom) {
if (removePrefix) set("prenom", prenom);
else set(PREFIXE+"_prenom", prenom);
}
// TÉLÉPHONE
public String getTelephone() {
return renvoyerValeurCorrecte("truk_telephone");
}
public void setTelephone(String t) {
this.set("truk_telephone", t);
}
public void ajouterTelephone(String type, Object valeur) {
ajouterChaineDenormaliseAvecType("truk_telephone", type, valeur);
}
public String selectionnerTelephone(String type) {
return getInfoDenormaliseParType(renvoyerValeurCorrecte("truk_telephone"), type);
}
// FAX
public String getFax() {
return renvoyerValeurCorrecte("truk_fax");
}
public void setFax(String f) {
this.set("truk_fax", f);
}
public void ajouterFax(Object valeur) {
ajouterChaineDenormalise("truk_fax", valeur);
}
public String selectionnerFax(int position) {
return getInfoDenormaliseParPosition(renvoyerValeurCorrecte("truk_fax"), position);
}
// COURRIEL
public String getCourriel() {
return renvoyerValeurCorrecte("truk_courriel");
}
public void setCourriel(String c) {
this.set("truk_courriel", c);
}
public void ajouterCourriel(String c) {
ajouterChaineDenormalise("truk_courriel", c);
}
public String selectionnerCourriel(int position) {
return getInfoDenormaliseParPosition(renvoyerValeurCorrecte("truk_courriel"), position);
}
// SPÉCIALITÉ
public String getSpecialite() {
return renvoyerValeurCorrecte("ce_truk_specialite");
}
public void setSpecialite(String s) {
// Pas de liste pour l'instant, donc tout passe dans "Autre".
setChaineDenormaliseUnique("ce_truk_specialite", "AUTRE", s);
}
public String afficherSpecialite() {
return getChaineDenormaliseUnique("ce_truk_specialite");
}
// NAISSANCE DATE
public String getNaissanceDate() {
String dateNaiss = "";
dateNaiss = get("naissance_date");
if (UtilString.isEmpty(dateNaiss)||dateNaiss.equals("0000-00-00")) {
dateNaiss = Mediateur.i18nC.inconnue();
}
return dateNaiss;
}
public String getDateSouple(String date) {
String valeurDate = date;
String jour = "";
String mois = "";
String annee = "";
// pas de date dans la BD
if (UtilString.isEmpty(valeurDate) || valeurDate.equals("0000-00-00")) {
valeurDate = "";
// YYYY
} else if (valeurDate.endsWith("00-00")) {
valeurDate = valeurDate.substring(0, 4);
if (valeurDate.matches("\\d{4}")) {
jour = "";
mois = "";
annee = valeurDate.substring(0,4);
valeurDate = annee;
}
// YYYY-MM
} else if (valeurDate.endsWith("-00")) {
valeurDate = valeurDate.substring(0, 7);
if (valeurDate.matches("\\d{4}-\\d{2}")) {
jour = "";
mois = valeurDate.substring(5,7);
annee = valeurDate.substring(0,4);
valeurDate = mois+"/"+annee;
}
}
// YYYY-MM-DD
else if (valeurDate.matches("\\d{4}-\\d{2}-\\d{2}")) {
Date objetDate = DateTimeFormat.getFormat("yyyy-MM-dd").parse(valeurDate);
DateTimeFormat fmt = DateTimeFormat.getFormat("dd/MM/yyyy");
valeurDate = fmt.format(objetDate);
}
return valeurDate;
}
public String getAnneeOuDateNaiss() {
String valeurDateNaissance = get("naissance_date");
return getDateSouple(valeurDateNaissance);
}
public void setNaissanceDate(Date naissanceDate) {
if (naissanceDate != null) {
this.set("naissance_date", DateTimeFormat.getFormat("yyyy-MM-dd").format(naissanceDate));
} else {
this.set("naissance_date", null);
}
}
// NAISSANCE LIEU
public String getNaissanceLieu() {
return renvoyerValeurCorrecte("naissance_lieu");
}
public void setNaissanceLieu(String naissanceLieu) {
this.set("naissance_lieu", naissanceLieu);
}
// DÉCÉS
public boolean estDecedee() {
String ceDeces = getDeces();
if (ceDeces.isEmpty() || ceDeces.equals(ETRE_DECEDE)) {
return true;
} else {
return false;
}
}
public String getDeces() {
return renvoyerValeurCorrecte("ce_deces");
}
public String getAnneeOuDateDeces() {
String valeurDateDeces = get("deces_date");
return getDateSouple(valeurDateDeces);
}
public void setDeces(String deces) {
set("ce_deces", deces);
}
public void setDeces(Date decesDate, String lieuDeces) {
set("ce_deces", ETRE_DECEDE);
setDecesDate(decesDate);
setDecesLieu(lieuDeces);
}
public void setNonDecedee() {
set("ce_deces", ETRE_VIVANT);
setDecesDate(null);
setDecesLieu("");
}
// DÉCÉS DATE
public String getDecesDate() {
String dateDeces = renvoyerValeurCorrecte("deces_date");
if (UtilString.isEmpty(dateDeces) || dateDeces.equals("0000-00-00")) {
dateDeces = Mediateur.i18nC.inconnue();
}
return dateDeces;
}
public void setDecesDate(Date decesDate) {
if (decesDate != null) {
this.set("deces_date", DateTimeFormat.getFormat("yyyy-MM-dd").format(decesDate));
} else {
this.set("deces_date", "");
}
}
// DÉCÉS LIEU
public String getDecesLieu() {
return renvoyerValeurCorrecte("deces_lieu");
}
public void setDecesLieu(String decesLieu) {
this.set("deces_lieu", decesLieu);
}
// PARAMÊTRE
public String getParametre() {
return renvoyerValeurCorrecte("parametre");
}
public void setParametre(String parametre) {
this.set("parametre", parametre);
}
public void setCourrielPrinc(String courriel) {
this.set("_courriel_princ_", courriel);
}
public String getCourrielPrinc() {
return (String) this.get("_courriel_princ_");
}
// PUBLICATIONS LIÉES
public PublicationAPersonneListe getPublicationsLiees() {
return publicationsLiees;
}
public void setPublicationsLiees(PublicationAPersonneListe relationsCollectionAPublication) {
publicationsLiees = relationsCollectionAPublication;
}
}