5,7 → 5,6 |
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; |
13,7 → 12,6 |
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; |
36,7 → 34,6 |
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; |
76,37 → 73,7 |
// Pour remise a zero partielle lors d'une validation |
|
private enum Champs { |
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(); |
} |
DATE, LIEUDIT, STATION, MILIEU, COMMENT, COMMUNE, ESPECE, TOUT |
}; |
|
|
121,17 → 88,6 |
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; |
168,8 → 124,6 |
private Panel panneauPremierColonne; |
|
private Panel panneauSecondeColonne; |
|
private boolean masseModification =false ; |
|
/** |
* Constructeur sans argument (privé car ne doit pas être utilisé) |
329,6 → 283,7 |
panneauIntermediaire.setHeight(rawHeight); |
}}); |
|
|
// on ajoute les listeners |
|
|
338,6 → 293,10 |
|
private void ajouterListeners() |
{ |
|
|
|
|
// Listener completion communne |
|
commune.addListener(new ComboBoxListenerAdapter() { |
380,7 → 339,6 |
case KEY_ENTER: |
|
if (selectionCommune) { |
communeModifiee= true; |
selectionCommune=false; |
} |
else { |
394,7 → 352,6 |
|
departement=""; |
obtenirListeReferentielCommune(); |
communeModifiee= true; |
|
break; |
} |
406,7 → 363,6 |
|
public void execute(EventObject e) { |
// TODO Auto-generated method stub |
dateModifiee = true; |
switch(e.getKey()) { |
|
case KEY_ENTER: |
422,7 → 378,6 |
|
public void execute(EventObject e) { |
// TODO Auto-generated method stub |
StationModifiee = true; |
switch(e.getKey()) { |
|
case KEY_ENTER: |
480,8 → 435,7 |
case KEY_ENTER: |
|
if(selectionEspece) { |
especeModifiee = true; |
selectionEspece=false; |
selectionEspece=false; |
} |
else { |
validerSaisie(Champs.ESPECE); |
493,7 → 447,6 |
|
numeroNom=""; |
obtenirListeReferentielNom(); |
especeModifiee = true; |
|
break; |
} |
510,7 → 463,6 |
|
public void execute(EventObject e) { |
// TODO Auto-generated method stub |
LieuDitModifie = true; |
switch(e.getKey()) { |
|
case KEY_ENTER: |
526,7 → 478,6 |
|
public void execute(EventObject e) { |
// TODO Auto-generated method stub |
milieuModifie = true; |
switch(e.getKey()) { |
|
case KEY_ENTER: |
538,13 → 489,20 |
} |
}); |
|
comment.addKeyPressListener(new EventCallback() { |
/*comment.addKeyPressListener(new EventCallback() { |
|
public void execute(EventObject e) { |
// TODO Auto-generated method stub |
commModifie = true; |
switch(e.getKey()) { |
|
case KEY_ENTER: |
validerSaisie(Champs.COMMENT); |
break; |
|
default: |
} |
} |
}); |
});*/ |
|
|
|
553,11 → 511,7 |
public void onClick(Button button, EventObject e) { |
|
if(modification) { |
if(masseModification) { |
modifierObservationEnMasse(null); |
} else { |
modifierObservation() ; |
} |
modifierObservation() ; |
} |
else { |
ajouterObservation(); |
601,13 → 555,8 |
private void validerSaisie(Champs champs) { |
|
if(modification) { |
if(masseModification) { |
modifierObservationEnMasse(champs); |
} else { |
modifierObservation(); |
} |
|
raz(champs); |
modifierObservation() ; |
|
} |
else { |
ajouterObservation(); |
723,11 → 672,6 |
afficherDetailsObservation(obs) ; |
} |
|
if(nouvelleDonnees instanceof ListeObservation) { |
ListeObservation listeObs = (ListeObservation)nouvelleDonnees; |
calculerAfficherDifferences(listeObs); |
} |
|
// Sur Mise à jour ou suppression d'une suppression ? |
|
if(nouvelleDonnees instanceof String) |
744,6 → 688,8 |
} |
|
} |
|
|
public void obtenirListeReferentielCommune() { |
|
String com=commune.getText().replaceAll(" ","/"); |
794,86 → 740,19 |
} |
|
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); |
|
observationMediateur.modifierObservation(obs); |
|
selecteurMode.setValue("création"); |
setModification("false"); |
|
} |
|
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); |
observationMediateur.supprimerObservation(this, numeroOrdre); |
} |
|
|
880,17 → 759,14 |
public void afficherDetailsObservation(Observation obs) |
{ |
raz() ; |
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(); |
} |
char g ; |
|
String idLoc =obs.getIdentifiantLocalite().replaceAll(" ","/"); |
idLoc = idLoc.replaceAll("%",""); |
idLoc = idLoc.replaceAll("\"",""); |
idLoc = idLoc.replace('\\',' '); |
idLoc = idLoc.trim(); |
|
if(!obs.getDate().equals("null") && !obs.getDate().equals("000null")) { |
String[] dateEtHeure = obs.getDate().split(" ", 2); |
if(verifierFormatDate(dateEtHeure[0])) { |
914,7 → 790,7 |
comment.setValue(obs.getCommentaire()) ; |
} |
if(!obs.getLocalite().equals("null") && !obs.getLocalite().equals("000null")) { |
if(!idLoc.equals("000null") && !idLoc.equals(VALEURS_MULTIPLES)) { |
if(!idLoc.equals("000null")) { |
commune.setValue(obs.getLocalite()+" ("+idLoc+")") ; |
} |
else |
1008,10 → 884,11 |
modification = true ; |
selecteurMode.removeClass("x-selec-crea") ; |
selecteurMode.setCls("x-selec-modif") ; |
observationMediateur.onModeModification(); |
|
} |
else |
{ |
|
boutonOK.setText("Ajouter") ; |
setTitle("Saisir") ; |
boutonAnnuler.setText("Réinitialiser") ; |
1031,15 → 908,6 |
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}" ; |
1050,97 → 918,6 |
return false; |
} |
} |
|
|
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; |
} |
} |