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; |
} |
} |