5,6 → 5,7 |
import java.util.Iterator; |
|
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.ListeObservation; |
import org.tela_botanica.client.modeles.ListeReferentielCommune; |
import org.tela_botanica.client.modeles.ListeReferentielNom; |
import org.tela_botanica.client.modeles.Observation; |
12,6 → 13,7 |
import org.tela_botanica.client.modeles.ReferentielNom; |
import org.tela_botanica.client.observation.ObservationMediateur; |
|
import com.google.gwt.user.client.Window; |
import com.gwtext.client.core.EventCallback; |
import com.gwtext.client.core.EventObject; |
import com.gwtext.client.core.ListenerConfig; |
34,6 → 36,7 |
import com.gwtext.client.widgets.event.PanelListenerAdapter; |
import com.gwtext.client.widgets.form.ComboBox; |
import com.gwtext.client.widgets.form.DateField; |
import com.gwtext.client.widgets.form.Field; |
import com.gwtext.client.widgets.form.FormPanel; |
import com.gwtext.client.widgets.form.TextArea; |
import com.gwtext.client.widgets.form.TextField; |
73,7 → 76,37 |
// Pour remise a zero partielle lors d'une validation |
|
private enum Champs { |
DATE, LIEUDIT, STATION, MILIEU, COMMENT, COMMUNE, ESPECE, TOUT |
DATE, LIEUDIT, STATION, MILIEU, COMMENT, COMMUNE, ESPECE, TOUT ; |
|
public String toString() { |
|
switch(this) { |
case DATE: |
return "date"; |
|
case COMMUNE: |
return "commune"; |
|
case LIEUDIT: |
return "lieu dit"; |
|
case STATION: |
return "station"; |
|
case MILIEU: |
return "milieu"; |
|
case COMMENT: |
return "commentaire"; |
|
case ESPECE: |
return "espèce"; |
|
case TOUT: |
return "date, commune, lieu dit, station, milieu, espèce, commentaire"; |
} |
return TOUT.toString(); |
} |
}; |
|
|
88,6 → 121,17 |
private boolean modification = false ; |
private Toolbar bt = null ; |
|
private final String VALEURS_MULTIPLES = "(Valeurs multiples)"; |
private final String modeleMessageModif = "commune lieu dit station milieu date espece commentaire"; |
private boolean communeModifiee = false; |
private boolean LieuDitModifie = false; |
private boolean StationModifiee = false; |
private boolean milieuModifie = false; |
private boolean dateModifiee = false; |
private boolean especeModifiee = false; |
private boolean commModifie = false; |
|
|
private final int KEY_ALT = 18; |
private final int KEY_BACKSPACE = 8; |
private final int KEY_CTRL = 17; |
125,6 → 169,8 |
|
private Panel panneauSecondeColonne; |
|
private boolean masseModification =false ; |
|
/** |
* Constructeur sans argument (privé car ne doit pas être utilisé) |
*/ |
283,7 → 329,6 |
panneauIntermediaire.setHeight(rawHeight); |
}}); |
|
|
// on ajoute les listeners |
|
|
293,10 → 338,6 |
|
private void ajouterListeners() |
{ |
|
|
|
|
// Listener completion communne |
|
commune.addListener(new ComboBoxListenerAdapter() { |
339,6 → 380,7 |
case KEY_ENTER: |
|
if (selectionCommune) { |
communeModifiee= true; |
selectionCommune=false; |
} |
else { |
352,6 → 394,7 |
|
departement=""; |
obtenirListeReferentielCommune(); |
communeModifiee= true; |
|
break; |
} |
363,6 → 406,7 |
|
public void execute(EventObject e) { |
// TODO Auto-generated method stub |
dateModifiee = true; |
switch(e.getKey()) { |
|
case KEY_ENTER: |
378,6 → 422,7 |
|
public void execute(EventObject e) { |
// TODO Auto-generated method stub |
StationModifiee = true; |
switch(e.getKey()) { |
|
case KEY_ENTER: |
435,6 → 480,7 |
case KEY_ENTER: |
|
if(selectionEspece) { |
especeModifiee = true; |
selectionEspece=false; |
} |
else { |
447,6 → 493,7 |
|
numeroNom=""; |
obtenirListeReferentielNom(); |
especeModifiee = true; |
|
break; |
} |
463,6 → 510,7 |
|
public void execute(EventObject e) { |
// TODO Auto-generated method stub |
LieuDitModifie = true; |
switch(e.getKey()) { |
|
case KEY_ENTER: |
478,6 → 526,7 |
|
public void execute(EventObject e) { |
// TODO Auto-generated method stub |
milieuModifie = true; |
switch(e.getKey()) { |
|
case KEY_ENTER: |
489,20 → 538,13 |
} |
}); |
|
/*comment.addKeyPressListener(new EventCallback() { |
comment.addKeyPressListener(new EventCallback() { |
|
public void execute(EventObject e) { |
// TODO Auto-generated method stub |
switch(e.getKey()) { |
|
case KEY_ENTER: |
validerSaisie(Champs.COMMENT); |
break; |
|
default: |
commModifie = true; |
} |
} |
});*/ |
}); |
|
|
|
511,8 → 553,12 |
public void onClick(Button button, EventObject e) { |
|
if(modification) { |
if(masseModification) { |
modifierObservationEnMasse(null); |
} else { |
modifierObservation() ; |
} |
} |
else { |
ajouterObservation(); |
} |
555,8 → 601,13 |
private void validerSaisie(Champs champs) { |
|
if(modification) { |
if(masseModification) { |
modifierObservationEnMasse(champs); |
} else { |
modifierObservation() ; |
} |
|
raz(champs); |
} |
else { |
ajouterObservation(); |
672,6 → 723,11 |
afficherDetailsObservation(obs) ; |
} |
|
if(nouvelleDonnees instanceof ListeObservation) { |
ListeObservation listeObs = (ListeObservation)nouvelleDonnees; |
calculerAfficherDifferences(listeObs); |
} |
|
// Sur Mise à jour ou suppression d'une suppression ? |
|
if(nouvelleDonnees instanceof String) |
688,8 → 744,6 |
} |
|
} |
|
|
public void obtenirListeReferentielCommune() { |
|
String com=commune.getText().replaceAll(" ","/"); |
740,9 → 794,9 |
} |
|
private void modifierObservation() { |
|
Observation obs=new Observation(espece.getText(),numeroNom,commune.getText(),departement,lieudit.getText(),station.getText(),milieu.getText(), comment.getText(),date.getRawValue()); |
obs.setNumeroOrdre(numeroOrdre); |
|
observationMediateur.modifierObservation(obs); |
|
selecteurMode.setValue("création"); |
750,6 → 804,73 |
|
} |
|
private void modifierObservationEnMasse(Champs champModifie) { |
String communeM = null; |
String departementM = null; |
String lieuDitM = null; |
String stationM = null; |
String milieuM = null; |
String dateM = null; |
String especeM = null; |
String commM = null; |
|
String champs = modeleMessageModif; |
|
if(communeModifiee) { |
communeM = commune.getText(); |
} else { |
champs = champs.replaceAll("commune ", ""); |
} |
|
if(LieuDitModifie) { |
lieuDitM = lieudit.getText(); |
}else { |
champs = champs.replaceAll("lieu dit ", ""); |
} |
|
if(StationModifiee) { |
stationM = station.getText(); |
}else { |
champs = champs.replaceAll("station ", ""); |
} |
|
if(milieuModifie) { |
milieuM = milieu.getText(); |
}else { |
champs = champs.replaceAll("milieu ", ""); |
} |
|
if(dateModifiee) { |
dateM = date.getRawValue(); |
}else { |
champs = champs.replaceAll("date ", ""); |
} |
|
if(especeModifiee) { |
especeM = espece.getText(); |
}else { |
champs = champs.replaceAll("espece ", ""); |
} |
|
if(commModifie) { |
commM = comment.getText(); |
}else { |
champs = champs.replaceAll("commentaire", ""); |
} |
|
String message = "Voulez vous modifier les champs suivants : "+champs+" pour les observations selectionnées ?" ; |
|
if(champs.trim().equals("")) { |
Window.alert("Aucun champ n'a été modifié"); |
} else { |
Observation obs = new Observation(especeM,numeroNom,communeM,departementM,lieuDitM,stationM,milieuM, commM,dateM); |
obs.setNumeroOrdre(numeroOrdre); |
if(Window.confirm(message)) { |
observationMediateur.modifierObservationEnMasse(obs); |
} |
} |
} |
|
private void supprimerObservation() { |
|
observationMediateur.supprimerObservation(this, numeroOrdre); |
759,13 → 880,16 |
public void afficherDetailsObservation(Observation obs) |
{ |
raz() ; |
char g ; |
|
String idLoc =obs.getIdentifiantLocalite().replaceAll(" ","/"); |
String idLoc ; |
if(obs.getIdentifiantLocalite() != VALEURS_MULTIPLES) { |
idLoc =obs.getIdentifiantLocalite().replaceAll(" ","/"); |
idLoc = idLoc.replaceAll("%",""); |
idLoc = idLoc.replaceAll("\"",""); |
idLoc = idLoc.replace('\\',' '); |
idLoc = idLoc.trim(); |
} else { |
idLoc = obs.getIdentifiantLocalite(); |
} |
|
if(!obs.getDate().equals("null") && !obs.getDate().equals("000null")) { |
String[] dateEtHeure = obs.getDate().split(" ", 2); |
790,7 → 914,7 |
comment.setValue(obs.getCommentaire()) ; |
} |
if(!obs.getLocalite().equals("null") && !obs.getLocalite().equals("000null")) { |
if(!idLoc.equals("000null")) { |
if(!idLoc.equals("000null") && !idLoc.equals(VALEURS_MULTIPLES)) { |
commune.setValue(obs.getLocalite()+" ("+idLoc+")") ; |
} |
else |
884,11 → 1008,10 |
modification = true ; |
selecteurMode.removeClass("x-selec-crea") ; |
selecteurMode.setCls("x-selec-modif") ; |
|
observationMediateur.onModeModification(); |
} |
else |
{ |
|
boutonOK.setText("Ajouter") ; |
setTitle("Saisir") ; |
boutonAnnuler.setText("Réinitialiser") ; |
908,6 → 1031,15 |
return modification ; |
} |
|
/** |
* renvoie vrai si on est en mode modification de masse, faux sinon |
* @return |
*/ |
public boolean getMasseModification() |
{ |
return masseModification ; |
} |
|
public boolean verifierFormatDate(String date) { |
|
String regex = "[1-9][0-9]{3}-[0-9]{2}-[0-9]{2}" ; |
919,5 → 1051,96 |
} |
} |
|
public void setMasseModification(boolean masseModification) { |
this.masseModification = masseModification; |
if(masseModification) { |
reinitialiserValeurModifiees(); |
} |
} |
|
private void calculerAfficherDifferences(ListeObservation listeObs) { |
|
String departement = null; |
String commune = null; |
String lieuDit = null; |
String station = null; |
String milieu = null; |
String espece = null; |
String date = null; |
String notes = null; |
|
String ordreObs = ""; |
|
for(Iterator<String> it = listeObs.keySet().iterator();it.hasNext();) { |
Observation obsEnCours = listeObs.get(it.next()); |
departement = comparerDifferencesChamps(departement, obsEnCours.getIdentifiantLocalite()); |
commune = comparerDifferencesChamps(commune, obsEnCours.getLocalite()); |
lieuDit = comparerDifferencesChamps(lieuDit, obsEnCours.getLieudit()); |
station = comparerDifferencesChamps(station, obsEnCours.getStation()); |
milieu = comparerDifferencesChamps(milieu, obsEnCours.getMilieu()); |
espece = comparerDifferencesChamps(espece, obsEnCours.getNomSaisi()); |
date = comparerDifferencesChamps(date, obsEnCours.getDate()); |
notes = comparerDifferencesChamps(notes, obsEnCours.getCommentaire()); |
|
ordreObs += obsEnCours.getNumeroOrdre()+","; |
} |
|
Observation obs=new Observation(espece,numeroNom,commune,departement,lieuDit,station,milieu, notes,date); |
obs.setNumeroOrdre(ordreObs); |
rafraichir(obs, false); |
|
} |
|
private String comparerDifferencesChamps(String valeurActuelle, String nouvelleValeur) { |
|
String retour = "000null"; |
|
if(valeurActuelle == null) { |
retour = nouvelleValeur; |
} else { |
if(valeurActuelle.equals(nouvelleValeur)) { |
retour = valeurActuelle; |
} else { |
retour = VALEURS_MULTIPLES; |
} |
} |
return retour; |
} |
|
private void reinitialiserValeurModifiees() { |
|
communeModifiee = false; |
LieuDitModifie = false; |
StationModifiee = false; |
milieuModifie = false; |
dateModifiee = false; |
especeModifiee = false; |
commModifie = false; |
} |
|
private Field obtenirCorrespondanceChampsEnum(Champs champ) { |
switch(champ) { |
case DATE: |
return date; |
|
case COMMUNE: |
return commune; |
|
case LIEUDIT: |
return lieudit; |
|
case STATION: |
return station; |
|
case MILIEU: |
return milieu; |
|
case COMMENT: |
return comment; |
|
case ESPECE: |
return espece; |
} |
return null; |
} |
} |