Subversion Repositories eFlore/Applications.coel

Compare Revisions

Ignore whitespace Rev 1844 → Rev 1845

/trunk/src/org/tela_botanica/client/util/UtilDate.java
16,4 → 16,12
}
return dateChaine;
}
public static String formaterEnStringFormatFr(Date date) {
String dateChaine = "0000-00-00";
if (date != null) {
dateChaine = formatDateFr.format(date);
}
return dateChaine;
}
}
/trunk/src/org/tela_botanica/client/vues/personne/PersonneForm.java
11,12 → 11,10
import org.tela_botanica.client.ComposantClass;
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.composants.ChampComboBoxRechercheTempsReelPaginable;
import org.tela_botanica.client.composants.ChampMultiValeurs;
import org.tela_botanica.client.composants.ChampMultiValeursImage;
import org.tela_botanica.client.composants.ChampMultiValeursMultiTypes;
import org.tela_botanica.client.composants.ChampMultiValeursMultiTypesPaginable;
import org.tela_botanica.client.composants.ChampMultiValeursPaginable;
import org.tela_botanica.client.composants.HashMapComposants;
import org.tela_botanica.client.configuration.Configuration;
import org.tela_botanica.client.images.Images;
27,6 → 25,7
import org.tela_botanica.client.modeles.Valeur;
import org.tela_botanica.client.modeles.ValeurListe;
import org.tela_botanica.client.modeles.personne.Personne;
import org.tela_botanica.client.modeles.personne.PersonneAsyncDao;
import org.tela_botanica.client.modeles.personne.PersonneListe;
import org.tela_botanica.client.modeles.publication.Publication;
import org.tela_botanica.client.modeles.publication.PublicationAPersonneListe;
34,6 → 33,7
import org.tela_botanica.client.synchronisation.Sequenceur;
import org.tela_botanica.client.util.Debug;
import org.tela_botanica.client.util.Pattern;
import org.tela_botanica.client.util.UtilDate;
import org.tela_botanica.client.util.UtilString;
import org.tela_botanica.client.vues.Formulaire;
 
49,6 → 49,7
import com.extjs.gxt.ui.client.binding.FieldBinding;
import com.extjs.gxt.ui.client.binding.FormBinding;
 
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.KeyListener;
93,7 → 94,10
import com.extjs.gxt.ui.client.widget.layout.TableLayout;
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
import com.google.gwt.core.client.Callback;
import com.google.gwt.core.client.GWT;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.user.client.Window;
 
public class PersonneForm extends Formulaire implements Rafraichissable {
124,6 → 128,9
private ComboBox<Publication> cbPubli;
private ListStore<Publication> storePubli;
// Gestion de la vérification des doublons
private boolean verificationDoublonEffectuee = false;
// CONSTRUCTEUR
public PersonneForm(Mediateur mediateurCourrant, String personneId) {
initialiserPersonneForm(mediateurCourrant, personneId);
268,6 → 275,14
 
fsNoms.add(tfPrenom, new FormData(300, 0));
hmIdentite.put("tfPrenom", tfPrenom);
tfPrenom.addListener(Events.Blur, creerEcouteurNomPrenomExistant());
tfPrenom.addListener(Events.Change, new Listener<BaseEvent>() {
@Override
public void handleEvent(BaseEvent be) {
verificationDoublonEffectuee = false;
}
});
 
//Nom
TextField<String> tfNom = new TextField<String>();
277,6 → 292,14
tfNom.addStyleName(ComposantClass.OBLIGATOIRE);
tfNom.addListener(Events.Valid, creerEcouteurChampObligatoire());
tfNom.addListener(Events.Blur, creerEcouteurNomPrenomExistant());
tfNom.addListener(Events.Change, new Listener<BaseEvent>() {
@Override
public void handleEvent(BaseEvent be) {
verificationDoublonEffectuee = false;
}
});
fsNoms.add(tfNom, new FormData(300, 0));
hmIdentite.put("tfNom", tfNom);
1300,4 → 1323,86
public String getPersonneId() {
return this.personneId;
}
}
private Listener<BaseEvent> creerEcouteurNomPrenomExistant() {
return new Listener<BaseEvent>() {
public void handleEvent(BaseEvent be) {
if(mode.equals(MODE_AJOUTER) && !verificationDoublonEffectuee) {
TextField<String> nom = (TextField<String>) hmIdentite.get("tfNom");
TextField<String> prenom = (TextField<String>) hmIdentite.get("tfPrenom");
LabelField nomComplet = (LabelField) hmIdentite.get("nomComplet");
if(nom.getValue() != null && !nom.getValue().isEmpty()) {
PersonneAsyncDao dao = new PersonneAsyncDao(PersonneForm.this);
// Suppression d'éventuels doubles espaces (ou plus) et ajout d'un joker devant
// (pour gérer la recherche lorsqu'on a qu'un nom de famille)
String nomCompletStr = "%"+nomComplet.getValue().toString().trim().replaceAll(" +", " ");
if(prenom.getValue() != null && !prenom.getValue().isEmpty()) {
// Ajouter un % derrière le prénom permet de gérer facilement le cas de l'initiale
// et également de rechercher des noms potentiels si l'on a saisi qu'une initiale
nomCompletStr = nomCompletStr.replaceAll(prenom+" ", prenom+"%");
}
dao.testerExistencePersonne(nomCompletStr, new Callback<JSONObject, String>() {
@Override
public void onSuccess(JSONObject objet) {
String message = formaterMessageAvertissementDoublon(objet);
verificationDoublonEffectuee = true;
if(!message.isEmpty()) {
Window.alert(message);
}
}
@Override
public void onFailure(String reason) {
// TODO Auto-generated method stub
}
});
}
}
}
};
}
private String formaterMessageAvertissementDoublon(JSONObject objet) {
double nbPers = objet.get("nbElements").isNumber().getValue();
JSONArray personnes = objet.isObject().get("personnes").isArray();
String message = "";
if(nbPers > 0) {
String pers = nbPers == 1 ? "personne" : "personnes";
String exist = nbPers == 1 ? "existe" : "existent";
message = "Attention : "+(int)nbPers+" "+pers+" portant ce nom "+exist+" déjà"+"\n";
for(int i = 0; i < personnes.size(); i++) {
message += "- "+personnes.get(i).isObject().get("cp_fmt_nom_complet").isString().stringValue();
if(personnes.get(i).isObject().get("cp_ville") != null && personnes.get(i).isObject().get("cp_ville").isString() != null) {
message += " à "+personnes.get(i).isObject().get("cp_ville").isString().stringValue();
}
if(personnes.get(i).isObject().get("cp_naissance_date") != null
&& personnes.get(i).isObject().get("cp_naissance_date").isString()!= null
&& !personnes.get(i).isObject().get("cp_naissance_date").isString().stringValue().equals("0000-00-00")) {
String dateChaine = personnes.get(i).isObject().get("cp_naissance_date").isString().stringValue();
String dateNaissance = "";
// Quelque fois on ne possède que l'année de naissance de la personne,
// dans ce cas là la date est de la forme XXXX-00-00
if(dateChaine.endsWith("-00-00")) {
dateNaissance = dateChaine.substring(0, 4);
} else {
dateNaissance = UtilDate.formaterEnStringFormatFr(UtilString.formaterEnDate(dateChaine));
}
 
message += ", date de naissance : "+dateNaissance;
}
message += "\n";
}
}
return message;
}
}
/trunk/src/org/tela_botanica/client/modeles/personne/PersonneAsyncDao.java
9,16 → 9,14
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Information;
import org.tela_botanica.client.synchronisation.Reponse;
import org.tela_botanica.client.synchronisation.Sequenceur;
import org.tela_botanica.client.util.Debug;
import org.tela_botanica.client.util.UtilDAO;
 
import com.extjs.gxt.ui.client.Registry;
import com.google.gwt.core.client.Callback;
import com.google.gwt.core.client.GWT;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.Window;
 
public class PersonneAsyncDao {
private static final String SERVICE_NOM = "CoelPersonne";
130,6 → 128,25
}
}
public void testerExistencePersonne(String nomComplet, final Callback<JSONObject, String> cb) {
String[] parametres = {null, nomComplet};
/** CONSTRUCTION DE LA REQUETE **/
final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres);
 
/** ENVOI DE LA REQUETE **/
rb.envoyerRequete(null, new JsonRestRequestCallback()
{
/** RECEPTION DE LA REPONSE **/
public void surReponse(JSONValue responseValue)
{
if (responseValue.isObject() != null) {
cb.onSuccess(responseValue.isObject());
}
}
});
}
public void ajouter(Personne personne) {
String postDonneesEncodees = personne.obtenirChainePOST();
postDonneesEncodees += "&cmhl_ce_modifier_par=" + utilisateurId;