Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1541 → Rev 1542

/trunk/src/org/tela_botanica/client/util/Util.java
1,7 → 1,12
package org.tela_botanica.client.util;
 
import java.util.HashMap;
import java.util.Map;
 
import org.tela_botanica.client.modeles.objets.ListeObservation;
import org.tela_botanica.client.modeles.objets.Observation;
 
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONString;
 
14,6 → 19,18
return jsonNonNull(jo, index) ? ((JSONString)jo.get(index)).stringValue() : "";
}
public static Map<String, String> getMapValeursOuVide(JSONArray jo, String index) {
Map<String, String> mapValeurs = new HashMap<String, String>();
final int taillemax = jo.size();
JSONObject temp = null;
for (int i = 0; i < taillemax; i++) {
if ((temp = jo.get(i).isObject()) != null) {
mapValeurs.put(temp.get("cle").isString().stringValue(), temp.get("valeur").isString().stringValue());
}
}
return mapValeurs;
}
public static boolean jsonNonNull(JSONObject jo, String index) {
return (jo != null &&
jo.get(index) != null &&
74,6 → 91,52
return lieuModele;
}
public static String obtenirDepartementAPartirChaineCommune(String departement, String commune) {
String dep = "";
if(departement == null) {
departement = "";
}
if(departement.equals("000null") || departement.equals("")) {
String[] depCom = commune.split(" ");
if(depCom.length > 1) {
dep = depCom[1].replace('(', ' ');
} else {
dep = "";
}
} else {
dep = departement;
}
dep = dep.replace(')', ' ');
dep = dep.trim();
dep = dep.replace('\\',' ');
dep = dep.trim();
try
{
int nDep = Integer.parseInt(dep);
if(nDep > 0 && nDep < 110) {
departement = dep ;
}
if(departement.length() == 4) {
departement = "0"+departement;
}
departement = departement.substring(0,2);
}
catch(NumberFormatException e)
{
departement = "" ;
}
return departement;
}
public static String supprimerNumDepartementChaineLocalite(String chaineLocaliteComplete) {
return chaineLocaliteComplete.replaceAll(" \\([0-9]*\\)", "");
}
/trunk/src/org/tela_botanica/client/vues/observation/FormulaireSaisieObservationVue.java
92,13 → 92,13
private String numeroNom = null;
private String numeroOrdre = null;
private String codeInseeCommune = null;
private String referentielTaxo = null;
private String referentielGeo = null;
 
// Pour remise a zero partielle lors d'une validation
private enum Champs {
DATE, LIEUDIT, STATION, MILIEU, COMMENT, COMMUNE, ESPECE, TOUT, LATITUDE, LONGITUDE, ABONDANCE, CERTITUDE;
DATE, LIEUDIT, STATION, MILIEU, COMMENT, COMMUNE, ESPECE, TOUT, LATITUDE, LONGITUDE, ABONDANCE, CERTITUDE, REFERENTIELTAXO, PHENOLOGIE;
@Override
public String toString() {
136,9 → 136,15
case CERTITUDE:
return "identification";
case REFERENTIELTAXO:
return "referentiel";
case PHENOLOGIE:
return "phenologie";
case TOUT:
return "date, commune, lieu dit, station, milieu, espèce, commentaire, latitude, longitude, abondance, identification";
return "date, commune, lieu dit, station, milieu, espèce, commentaire, latitude, longitude, abondance, identification, referentiel, phenologie";
}
return TOUT.toString();
}
152,12 → 158,13
private boolean selectionEspece=false;
private boolean selectionAbondance = false;
private boolean selectionCertitude = false;
private boolean selectionPhenologie = false;
private boolean modification = false ;
private Toolbar bt = null ;
private final String VALEURS_MULTIPLES = "(Valeurs multiples)";
private final String modeleMessageModif = "commune:lieu-dit:station:milieu:latitude:longitude:date:espece:commentaire:abondance:identification";
private final String modeleMessageModif = "commune:lieu-dit:station:milieu:latitude:longitude:date:espece:commentaire:abondance:identification:referentiel:phenologie";
private boolean communeModifiee = false;
private boolean lieuDitModifie = false;
private boolean stationModifiee = false;
167,6 → 174,8
private boolean commModifie = false;
private boolean abondanceModifiee = false;
private boolean certitudeModifiee = false;
private boolean referentielTaxoModifie = false;
private boolean phenologieModifiee = false;;
private final int KEY_ALT = 18;
private final int KEY_BACKSPACE = 8;
239,6 → 248,10
private ComboBox selecteurCertitude = null;
private ComboBox selecteurReferentielTaxo = null;
private ComboBox selecteurStadePheno = null;
/**
* Constructeur sans argument (privé car ne doit pas être utilisé)
*/
253,12 → 266,12
* @param im
*/
public FormulaireSaisieObservationVue(ObservationMediateur obs)
{
{
super("Saisie");
// on associe le médiateur
observationMediateur = obs ;
referentielTaxo = obs.getRefTaxSelectionne().getCode();
panneauFormulaire = new FormPanel(Position.RIGHT);
panneauFormulaire.setBorder(false);
382,57 → 395,7
@Override
public void onAfterLayout(Container c) {
ExtElement lienCoord = Ext.get("lien_coord");
lienCoord.removeAllListeners();
lienCoord.addListener("click", new EventCallback() {
@Override
public void execute(EventObject e) {
coordPanel.setVisible(!coordPanel.isVisible());
if(Ext.isIE()) {
latitude.focus();
}
CarnetEnLigneMediateur.fireResize();
}
}) ;
ExtElement lienCartoCoord = Ext.get("lien_carto_coord");
lienCartoCoord.removeAllListeners();
lienCartoCoord.addListener("click", new EventCallback() {
@Override
public void execute(EventObject e) {
obtenirInformationCoord();
}
}) ;
ExtElement lienCarto = Ext.get("lien_carto");
lienCarto.removeAllListeners();
lienCarto.addListener("click", new EventCallback() {
 
@Override
public void execute(EventObject e) {
if(commune.getValue() != null && !commune.getValue().equals("") && !getDepartement().equals("")) {
obtenirInformationCommune();
longlatAjoutee = true;
} else {
Window.alert("Veuillez renseigner une commune et un numéro de département sous la forme : Commune (departement)");
}
}
});
if(!Ext.isIE() && Window.getClientWidth() < 1200) {
int largeurN = (int)largeur;
latitude.setWidth(largeurN+"px");
longitude.setWidth(largeurN+"px");
lienSelectionCommune.setWidth(largeurN+"px");
}
surPremierAffichageCoordPanel(largeur);
}
});
455,20 → 418,30
//date.setTabIndex(5);
panneauPremierColonne.add(date, new AnchorLayoutData("55%"));
// Selection d'un référentiel par défaut (le premier spécifié dans la config)
referentielTaxo = Configuration.getReferentielsDispos().get(0).getCode();
selecteurReferentielTaxo = new ComboBox();
selecteurReferentielTaxo.setCls("champ-separation");
selecteurReferentielTaxo.setLabel("Référentiel");
selecteurReferentielTaxo.setStore(Ontologies.getValeursReferentiel());
selecteurReferentielTaxo.setValue(referentielTaxo);
selecteurReferentielTaxo.setDisplayField("label") ;
selecteurReferentielTaxo.setValueField("valeur");
selecteurReferentielTaxo.setEditable(false);
selecteurReferentielTaxo.setHideTrigger(false);
selecteurReferentielTaxo.setForceSelection(true);
espece=new ComboBox("Espèce","nom");
final String resultTplEspece = "<div class=\"search-item-espece {indicateurNomRetenu}\">{nom}</div>";
 
espece.setTpl(resultTplEspece);
espece.setMode(ComboBox.REMOTE);
// espece.setPageSize(10); // Ne fonctionne pas
espece.setItemSelector("div.search-item-espece");
espece.setTypeAhead(true);
espece.setLoadingText("Recherche...");
espece.setHideTrigger(true);
//espece.setTabIndex(6);
 
Panel panelSeparationPp = new Panel();
panelSeparationPp.setHeight(15);
475,7 → 448,7
panelSeparationPp.setBorder(false);
panneauPremierColonne.add(panelSeparationPp);
panneauPremierColonne.add(selecteurReferentielTaxo, new AnchorLayoutData("50%"));
panneauPremierColonne.add(espece, new AnchorLayoutData("95%"));
selecteurAbondance = new ComboBox();
522,11 → 495,10
comment.setAllowBlank(true);
comment.setHeight(50);
//comment.setTabIndex(7);
panneauSecondeColonne.add(comment, new AnchorLayoutData("95%") );
Panel panelSeparationPs = new Panel();
panelSeparationPs.setHeight(15);
panelSeparationPs.setHeight(39);
panelSeparationPs.setBorder(false);
panneauSecondeColonne.add(panelSeparationPs);
541,6 → 513,16
selecteurCertitude.setForceSelection(false);
panneauSecondeColonne.add(selecteurCertitude, new AnchorLayoutData("50%"));
selecteurStadePheno = new ComboBox();
selecteurStadePheno.setLabel("Phénologie");
selecteurStadePheno.setStore(Ontologies.getValeursPhenologie());
selecteurStadePheno.setDisplayField("label") ;
selecteurStadePheno.setValueField("valeur");
selecteurStadePheno.setEditable(true);
selecteurStadePheno.setHideTrigger(false);
selecteurStadePheno.setForceSelection(false);
panneauSecondeColonne.add(selecteurStadePheno, new AnchorLayoutData("50%"));
if (Window.getClientWidth() > Window.getClientHeight() || Window.getClientWidth() < 800) {
panneauIntermediaire.add(panneauPremierColonne, new ColumnLayoutData(.5));
panneauIntermediaire.add(panneauSecondeColonne, new ColumnLayoutData(.5));
547,8 → 529,7
}
else {
panneauIntermediaire.add(panneauPremierColonne);
panneauIntermediaire.add(panneauSecondeColonne);
panneauIntermediaire.add(panneauSecondeColonne);
}
panneauFormulaire.add(panneauIntermediaire);
569,8 → 550,7
bt.addSpacer() ;
bt.addText("Mode de saisie ") ;
bt.addField(selecteurMode) ;
if (Ext.isIE()) {
panneauPremierColonne.setButtonAlign(Position.RIGHT);
panneauPremierColonne.addButton(boutonOK);
577,15 → 557,12
panneauSecondeColonne.setButtonAlign(Position.LEFT);
panneauPremierColonne.addButton(boutonAnnuler);
}
else {
else {
panneauFormulaire.addButton(boutonOK);
panneauFormulaire.addButton(boutonAnnuler);
}
selecteurMode.addListener(new ComboBoxListenerAdapter() {
 
@Override
public void onSelect(ComboBox comboBox, Record record, int index) {
593,7 → 570,6
comboBox.setValue(record.getAsString("nom_mode"));
setModification(record.getAsString("mode")) ;
}
 
});
this.add(panneauFormulaire) ;
615,417 → 591,124
htmlPanel.doLayout();
doLayout();
}});
}
});
// on ajoute les listeners
ajouterListeners() ;
saisieTabindex();
}
private void ajouterListeners()
{
// Listener completion communne
final Rafraichissable r = this;
commune.addListener(new ComboBoxListenerAdapter() {
@Override
public void onSelect(ComboBox comboBox, Record record, int index) {
commune.setValue(record.getAsString("commune"));
departement=record.getAsString("departement");
codeInseeCommune=record.getAsString("codeInsee");
selectionCommune=true;
commune.collapse();
}
@Override
public void onExpand(ComboBox comboBox) {
comboBox.focus();
}
});
ListenerConfig listenerConfigCommune=new ListenerConfig();
listenerConfigCommune.setDelay(200);
listenerConfigCommune.setStopPropagation(false);
listenerConfigCommune.setStopEvent(false);
commune.addKeyPressListener(new EventCallback() {
@Override
public void execute(EventObject e) {
switch(e.getKey()) {
case KEY_ALT:
case KEY_CTRL:
case KEY_DOWN:
case KEY_END:
case KEY_ESCAPE:
case KEY_HOME:
case KEY_LEFT:
case KEY_PAGEDOWN:
case KEY_PAGEUP:
case KEY_RIGHT:
case KEY_SHIFT:
case KEY_TAB:
case KEY_UP:
break;
case KEY_ENTER:
if (selectionCommune) {
communeModifiee= true;
selectionCommune=false;
}
else {
validerSaisie(Champs.COMMUNE);
// lancer mise a jour
}
break;
default:
departement="";
commune.collapse();
obtenirListeReferentielCommune();
communeModifiee= true;
break;
}
}
}, listenerConfigCommune
);
date.addKeyPressListener(new EventCallback() {
 
@Override
public void execute(EventObject e) {
// TODO Auto-generated method stub
switch(e.getKey()) {
case KEY_ALT:
case KEY_CTRL:
case KEY_DOWN:
case KEY_END:
case KEY_ESCAPE:
case KEY_HOME:
case KEY_LEFT:
case KEY_PAGEDOWN:
case KEY_PAGEUP:
case KEY_RIGHT:
case KEY_SHIFT:
case KEY_TAB:
if(date.getRawValue().equals(VALEURS_MULTIPLES)) {
date.clearInvalid();
}
case KEY_UP:
break;
case KEY_ENTER:
validerSaisie(Champs.DATE);
break;
default:
dateModifiee = true;
}
private void surPremierAffichageCoordPanel(final double largeur) {
ExtElement lienCoord = Ext.get("lien_coord");
lienCoord.removeAllListeners();
lienCoord.addListener("click", new EventCallback() {
@Override
public void execute(EventObject e) {
coordPanel.setVisible(!coordPanel.isVisible());
if(Ext.isIE()) {
latitude.focus();
}
});
date.addListener(new DatePickerListenerAdapter() {
 
@Override
public void onSelect(DatePicker dataPicker, Date date) {
dateModifiee = true;
}
});
ListenerConfig listenerConfigAutocompletion=new ListenerConfig();
listenerConfigAutocompletion.setDelay(200);
listenerConfigAutocompletion.setStopPropagation(false);
listenerConfigAutocompletion.setStopEvent(false);
 
// Listener completion espece
espece.addListener(new ComboBoxListenerAdapter() {
@Override
public void onSelect(ComboBox comboBox, Record record, int index) {
espece.setValue(record.getAsString("nom"));
numeroNom=record.getAsString("numeroNom");
selectionEspece=true;
observationMediateur.obtenirImageInformationExternes(numeroNom);
}
});
 
ListenerConfig listenerConfigEspece=new ListenerConfig();
listenerConfigEspece.setDelay(10);
listenerConfigEspece.setStopPropagation(false);
listenerConfigEspece.setStopEvent(false);
 
CarnetEnLigneMediateur.fireResize();
}
}) ;
espece.addKeyPressListener(new EventCallback() {
@Override
public void execute(EventObject e) {
switch(e.getKey()) {
case KEY_ALT:
case KEY_CTRL:
case KEY_DOWN:
case KEY_END:
case KEY_ESCAPE:
case KEY_HOME:
case KEY_LEFT:
case KEY_PAGEDOWN:
case KEY_PAGEUP:
case KEY_RIGHT:
case KEY_SHIFT:
case KEY_TAB:
case KEY_UP:
break;
case KEY_ENTER:
if(selectionEspece) {
especeModifiee = true;
selectionEspece=false;
}
else {
validerSaisie(Champs.ESPECE);
}
break;
default:
numeroNom="";
obtenirListeReferentielNom();
especeModifiee = true;
break;
}
ExtElement lienCartoCoord = Ext.get("lien_carto_coord");
lienCartoCoord.removeAllListeners();
lienCartoCoord.addListener("click", new EventCallback() {
@Override
public void execute(EventObject e) {
obtenirInformationCoord();
}
}) ;
ExtElement lienCarto = Ext.get("lien_carto");
lienCarto.removeAllListeners();
lienCarto.addListener("click", new EventCallback() {
 
}
}, listenerConfigEspece
);
comment.addKeyPressListener(new EventCallback() {
 
@Override
public void execute(EventObject e) {
switch(e.getKey()) {
case KEY_ALT:
case KEY_CTRL:
case KEY_DOWN:
case KEY_END:
case KEY_ESCAPE:
case KEY_HOME:
case KEY_LEFT:
case KEY_PAGEDOWN:
case KEY_PAGEUP:
case KEY_RIGHT:
case KEY_SHIFT:
case KEY_TAB:
case KEY_UP:
break;
 
default:
commModifie = true;
}
}
});
tCoord = new Timer() {
 
@Override
public void run() {
double[] coord = coordonneesValides();
if(!rechercheCommuneEnCours && coord != null && (longModifiee || latModifiee)) {
rechercheCommuneEnCours = true;
Ext.get(lienSelectionCommune.getElement()).mask("recherche");
observationMediateur.obtenirInformationCoord(r,LatLng.newInstance(coord[0], coord[1]));
}
}
@Override
public void execute(EventObject e) {
};
latitude.addKeyPressListener(new EventCallback() {
 
@Override
public void execute(EventObject e) {
switch(e.getKey()) {
case KEY_ALT:
case KEY_CTRL:
case KEY_DOWN:
case KEY_END:
case KEY_ESCAPE:
case KEY_HOME:
case KEY_LEFT:
case KEY_PAGEDOWN:
case KEY_PAGEUP:
case KEY_RIGHT:
case KEY_SHIFT:
case KEY_TAB:
case KEY_UP:
break;
case KEY_ENTER:
validerSaisie(Champs.LATITUDE);
break;
 
default:
latModifiee = true;
tCoord.cancel();
tCoord.schedule(250);
}
if(commune.getValue() != null && !commune.getValue().equals("") && !getDepartement().equals("")) {
obtenirInformationCommune();
longlatAjoutee = true;
} else {
Window.alert("Veuillez renseigner une commune et un numéro de département sous la forme : Commune (departement)");
}
});
}
});
if(!Ext.isIE() && Window.getClientWidth() < 1200) {
longitude.addKeyPressListener(new EventCallback() {
 
@Override
public void execute(EventObject e) {
switch(e.getKey()) {
case KEY_ALT:
case KEY_CTRL:
case KEY_DOWN:
case KEY_END:
case KEY_ESCAPE:
case KEY_HOME:
case KEY_LEFT:
case KEY_PAGEDOWN:
case KEY_PAGEUP:
case KEY_RIGHT:
case KEY_SHIFT:
case KEY_UP:
case KEY_TAB:
break;
case KEY_ENTER:
validerSaisie(Champs.LONGITUDE);
break;
 
default:
longModifiee = true;
tCoord.cancel();
tCoord.schedule(250);
}
}
});
int largeurN = (int)largeur;
selecteurAbondance.addListener(new ComboBoxListenerAdapter() {
 
@Override
public void onSelect(ComboBox comboBox, Record record, int index) {
selectionAbondance=true;
abondanceModifiee = true;
}
});
latitude.setWidth(largeurN+"px");
longitude.setWidth(largeurN+"px");
lienSelectionCommune.setWidth(largeurN+"px");
}
}
selecteurAbondance.addKeyPressListener(new EventCallback() {
private void ajouterListeners()
{
// Listener completion communne
final Rafraichissable r = this;
ListenerConfig listenerConfigCommune=new ListenerConfig();
listenerConfigCommune.setDelay(200);
listenerConfigCommune.setStopPropagation(false);
listenerConfigCommune.setStopEvent(false);
 
@Override
public void execute(EventObject e) {
switch(e.getKey()) {
case KEY_ALT:
case KEY_CTRL:
case KEY_DOWN:
case KEY_END:
case KEY_ESCAPE:
case KEY_HOME:
case KEY_LEFT:
case KEY_PAGEDOWN:
case KEY_PAGEUP:
case KEY_RIGHT:
case KEY_SHIFT:
case KEY_TAB:
case KEY_UP:
break;
case KEY_ENTER:
if(!selectionAbondance) {
validerSaisie(Champs.ABONDANCE);
} else {
selectionAbondance = false;
}
break;
date.addListener(new DatePickerListenerAdapter() {
 
default:
selecteurAbondance.setRawValue(selecteurAbondance.getRawValue());
selecteurAbondance.setValue(selecteurAbondance.getRawValue());
abondanceModifiee = true;
selectionAbondance = false;
break;
}
}
});
@Override
public void onSelect(DatePicker dataPicker, Date date) {
dateModifiee = true;
}
});
ListenerConfig listenerConfigAutocompletion=new ListenerConfig();
listenerConfigAutocompletion.setDelay(200);
listenerConfigAutocompletion.setStopPropagation(false);
listenerConfigAutocompletion.setStopEvent(false);
ListenerConfig listenerConfigEspece=new ListenerConfig();
listenerConfigEspece.setDelay(10);
listenerConfigEspece.setStopPropagation(false);
listenerConfigEspece.setStopEvent(false);
selecteurCertitude.addListener(new ComboBoxListenerAdapter() {
tCoord = new Timer() {
 
@Override
public void onSelect(ComboBox comboBox, Record record, int index) {
selectionCertitude=true;
certitudeModifiee = true;
}
});
@Override
public void run() {
double[] coord = coordonneesValides();
if(!rechercheCommuneEnCours && coord != null && (longModifiee || latModifiee)) {
rechercheCommuneEnCours = true;
Ext.get(lienSelectionCommune.getElement()).mask("recherche");
observationMediateur.obtenirInformationCoord(r,LatLng.newInstance(coord[0], coord[1]));
}
}
selecteurCertitude.addKeyPressListener(new EventCallback() {
 
@Override
public void execute(EventObject e) {
switch(e.getKey()) {
case KEY_ALT:
case KEY_CTRL:
case KEY_DOWN:
case KEY_END:
case KEY_ESCAPE:
case KEY_HOME:
case KEY_LEFT:
case KEY_PAGEDOWN:
case KEY_PAGEUP:
case KEY_RIGHT:
case KEY_SHIFT:
case KEY_TAB:
case KEY_UP:
break;
case KEY_ENTER:
if(!selectionCertitude) {
validerSaisie(Champs.CERTITUDE);
} else {
selectionCertitude = false;
}
break;
 
default:
selecteurCertitude.setRawValue(selecteurCertitude.getRawValue());
selecteurCertitude.setValue(selecteurCertitude.getRawValue());
certitudeModifiee = true;
selectionCertitude = false;
break;
}
}
});
 
};
ajouterListenerChampEvenementsClavier(commune, listenerConfigCommune);
ajouterListenerChampEvenementsClavier(date);
ajouterListenerChampEvenementsClavier(selecteurReferentielTaxo);
ajouterListenerChampEvenementsClavier(espece, listenerConfigEspece);
ajouterListenerChampEvenementsClavier(comment);
ajouterListenerChampEvenementsClavier(latitude);
ajouterListenerChampEvenementsClavier(longitude);
ajouterListenerChampEvenementsClavier(selecteurAbondance);
ajouterListenerChampEvenementsClavier(selecteurCertitude);
ajouterListenerChampEvenementsClavier(selecteurStadePheno);
ajouterListenerChampsCombobox();
boutonOK.addListener(new ButtonListenerAdapter() {
@Override
public void onClick(Button button, EventObject e) {
public void onClick(Button button, EventObject e) {
if(modification) {
if(masseModification) {
modifierObservationEnMasse(null);
1036,17 → 719,12
else {
ajouterObservation();
}
}
}
});
boutonAnnuler.addListener(new ButtonListenerAdapter() {
boutonAnnuler.addListener(new ButtonListenerAdapter() {
@Override
public void onClick(Button button, EventObject e) {
public void onClick(Button button, EventObject e) {
if(modification)
{
supprimerObservation() ;
1055,19 → 733,251
{
raz();
}
}
}
});
this.addListener(new ContainerListenerAdapter() {
@Override
public void onAfterLayout(Container self) {
commune.focus();
}
});
});
}
private void ajouterListenerChampsCombobox() {
commune.addListener(new ComboBoxListenerAdapter() {
@Override
public void onSelect(ComboBox comboBox, Record record, int index) {
commune.setValue(record.getAsString("commune"));
departement=record.getAsString("departement");
codeInseeCommune=record.getAsString("codeInsee");
selectionCommune=true;
commune.collapse();
}
@Override
public void onExpand(ComboBox comboBox) {
comboBox.focus();
}
});
selecteurReferentielTaxo.addListener(new ComboBoxListenerAdapter() {
@Override
public void onSelect(ComboBox comboBox, Record record, int index) {
referentielTaxo = record.getAsString("valeur");
observationMediateur.setRefTaxSelectionne(index);
referentielTaxoModifie = true;
}
});
espece.addListener(new ComboBoxListenerAdapter() {
@Override
public void onSelect(ComboBox comboBox, Record record, int index) {
espece.setValue(record.getAsString("nom"));
numeroNom=record.getAsString("numeroNom");
selectionEspece=true;
observationMediateur.obtenirImageInformationExternes(referentielTaxo, numeroNom);
}
});
selecteurAbondance.addListener(new ComboBoxListenerAdapter() {
@Override
public void onSelect(ComboBox comboBox, Record record, int index) {
selectionAbondance=true;
abondanceModifiee = true;
}
});
selecteurCertitude.addListener(new ComboBoxListenerAdapter() {
 
@Override
public void onSelect(ComboBox comboBox, Record record, int index) {
selectionCertitude=true;
certitudeModifiee = true;
}
});
selecteurStadePheno.addListener(new ComboBoxListenerAdapter() {
@Override
public void onSelect(ComboBox comboBox, Record record, int index) {
selectionPhenologie=true;
phenologieModifiee = true;
}
});
}
private void ajouterListenerChampEvenementsClavier(final TextField champ) {
champ.addKeyPressListener(new EventCallback() {
@Override
public void execute(EventObject e) {
surEvenementClavier(e, champ);
}
});
}
private void ajouterListenerChampEvenementsClavier(final TextField champ, final ListenerConfig config) {
champ.addKeyPressListener(new EventCallback() {
@Override
public void execute(EventObject e) {
surEvenementClavier(e, champ);
}
}, config);
}
private void surEvenementClavier(EventObject e, TextField champ) {
switch(e.getKey()) {
case KEY_ALT:
case KEY_CTRL:
case KEY_DOWN:
case KEY_END:
case KEY_ESCAPE:
case KEY_HOME:
case KEY_LEFT:
case KEY_PAGEDOWN:
case KEY_PAGEUP:
case KEY_RIGHT:
case KEY_SHIFT:
case KEY_TAB:
case KEY_UP:
break;
case KEY_ENTER:
surEvenementClavierToucheEntree(champ);
break;
default:
gererEvenementClavierDefaut(champ);
break;
}
}
private void surEvenementClavierToucheEntree(TextField champ) {
//TODO: faire un switch ou une enum
if(champ.equals(selecteurStadePheno)) {
if(!selectionPhenologie) {
validerSaisie(Champs.PHENOLOGIE);
} else {
selectionPhenologie = false;
}
}
if(champ.equals(selecteurCertitude)) {
if(!selectionCertitude) {
validerSaisie(Champs.CERTITUDE);
} else {
selectionCertitude = false;
}
}
if(champ.equals(selecteurAbondance)) {
if(!selectionAbondance) {
validerSaisie(Champs.ABONDANCE);
} else {
selectionAbondance = false;
}
}
if(champ.equals(longitude)) {
validerSaisie(Champs.LONGITUDE);
}
if(champ.equals(latitude)) {
validerSaisie(Champs.LATITUDE);
}
if(champ.equals(espece)) {
if(selectionEspece) {
especeModifiee = true;
selectionEspece=false;
}
else {
validerSaisie(Champs.ESPECE);
}
}
if(champ.equals(selecteurReferentielTaxo)) {
validerSaisie(Champs.REFERENTIELTAXO);
}
if(champ.equals(date)) {
validerSaisie(Champs.DATE);
}
if(champ.equals(commune)) {
if(champ.equals(commune)) {
if (selectionCommune) {
communeModifiee= true;
selectionCommune=false;
}
else {
validerSaisie(Champs.COMMUNE);
}
}
}
}
private void gererEvenementClavierDefaut(TextField champ) {
//TODO: faire un switch ou une enum
if(champ.equals(selecteurStadePheno)) {
selecteurStadePheno.setRawValue(selecteurStadePheno.getRawValue());
selecteurStadePheno.setValue(selecteurStadePheno.getRawValue());
phenologieModifiee = true;
selectionPhenologie = false;
}
if(champ.equals(selecteurCertitude)) {
selecteurCertitude.setRawValue(selecteurCertitude.getRawValue());
selecteurCertitude.setValue(selecteurCertitude.getRawValue());
certitudeModifiee = true;
selectionCertitude = false;
}
if(champ.equals(selecteurAbondance)) {
selecteurAbondance.setRawValue(selecteurAbondance.getRawValue());
selecteurAbondance.setValue(selecteurAbondance.getRawValue());
abondanceModifiee = true;
selectionAbondance = false;
}
if(champ.equals(longitude)) {
longModifiee = true;
tCoord.cancel();
tCoord.schedule(250);
}
if(champ.equals(latitude)) {
latModifiee = true;
tCoord.cancel();
tCoord.schedule(250);
}
if(champ.equals(comment)) {
commModifie = true;
}
if(champ.equals(espece)) {
numeroNom="";
obtenirListeReferentielNom();
especeModifiee = true;
}
if(champ.equals(selecteurReferentielTaxo)) {
referentielTaxoModifie = true;
}
if(champ.equals(date)) {
dateModifiee = true;
}
if(champ.equals(commune)) {
departement="";
commune.collapse();
obtenirListeReferentielCommune();
communeModifiee= true;
}
}
 
/**
* Validation de la saisie
*/
1076,7 → 986,7
if(modification) {
if(masseModification) {
modifierObservationEnMasse(champs);
modifierObservationEnMasse(champs);
} else {
modifierObservation();
}
1144,16 → 1054,14
}
// si l'on a reçu une liste du référentiel nom (complétion referentiel nom)
// si l'on a reçu une liste du référentiel nom (complétion referentiel nom)
if(nouvelleDonnees instanceof ListeReferentielNom)
{
ListeReferentielNom data = (ListeReferentielNom) nouvelleDonnees ;
Object[][] nomData = new Object[data.size()][3];
int i = 0 ;
 
// on la parse et on récupère les informations quiç nous interessent
// on la parse et on récupère les informations qui nous interessent
for (Iterator it = data.keySet().iterator(); it.hasNext();)
{
1200,8 → 1108,6
calculerAfficherDifferences(listeObs);
}
// Sur Mise à jour ou suppression d'une suppression ?
if(nouvelleDonnees instanceof String)
{
String str = (String)nouvelleDonnees ;
1299,7 → 1205,6
}
 
private void rafraichirCommuneEtCoord(EntiteGeographiqueObservation infosCom) {
;
// on ne remplace la commune que si le champ était vide
if(commune.getRawValue() == null || commune.getRawValue().equals("")) {
rafraichirCommune(infosCom);
1328,13 → 1233,12
}
 
public void obtenirListeReferentielNom() {
// FIXME : trouver un autre moyen que le hack "/*" pour rechercher les taxons lors de la saisie d'un espace apres le genre
String esp=espece.getText().replaceAll(" ","/*");
esp=esp.replaceAll("%","");
String referentiel = this.referentielTaxo;
observationMediateur.obtenirListeReferentielNom(this,esp);
observationMediateur.obtenirListeReferentielNom(this,referentiel ,esp);
}
protected void obtenirReferentielStation() {
1357,9 → 1261,7
return;
}
if(departement != null) {
// TODO : regler le probleme a la base plutot que ce patch
if(departement != null) {
if(departement.equals("000null") || departement.equals("")) {
String[] depCom = commune.getText().split(" ");
if(depCom.length > 1) {
1383,22 → 1285,24
}
}
}
 
String dateObs = Util.remplacerSeparateursDateFormatCel(date.getRawValue());
 
Observation obs=new Observation(espece.getText(),numeroNom,commune.getText(),departement,lieudit.getText(),station.getText(),milieu.getText(), comment.getText(),dateObs);
String[] coords = getValeurCoordonnees();
obs.setLatitude(coords[0]);
obs.setLongitude(coords[1]);
 
obs.setAbondance(getAbondance());
obs.setCertitude(getCertitude());
obs.setPhenologie(getPhenologie());
obs.setReferentielTaxo(Ontologies.getInfosReferentielNomParCode(referentielTaxo).getCodeVersionComplet());
observationMediateur.ajouterObservation(obs);
}
 
private void modifierObservation() {
if(!Util.verifierDateFormatCel(date.getRawValue()) && !date.getRawValue().equals("")) {
1442,15 → 1346,18
obs.setAbondance(getAbondance());
obs.setCertitude(getCertitude());
obs.setPhenologie(getPhenologie());
obs.setReferentielTaxo(getReferentielTaxo());
observationMediateur.modifierObservation(obs);
 
selecteurMode.setValue("création");
setModification("false");
}
private void modifierObservationEnMasse(Champs champModifie) {
//TODO: factoriser
String communeM = null;
String departementM = null;
String numNomSelM = null;
1464,6 → 1371,8
String longM = null;
String abondanceM = null;
String certitudeM = null;
String referentielTaxoM = null;
String phenologieM = null;
String champs = modeleMessageModif;
1560,6 → 1469,18
champs = champs.replaceAll(":identification", "");
}
if(referentielTaxoModifie && !selecteurReferentielTaxo.getRawValue().equals(VALEURS_MULTIPLES)) {
referentielTaxoM = getReferentielTaxo();
} else {
champs = champs.replaceAll(":referentiel", "");
}
if(phenologieModifiee && !selecteurStadePheno.getRawValue().equals(VALEURS_MULTIPLES)) {
phenologieM = getPhenologie();
} else {
champs = champs.replaceAll(":phenologie", "");
}
champs = champs.replaceAll(":",", ");
if(champs.startsWith(",")) {
champs = champs.replaceFirst(",", "");
1576,6 → 1497,8
obs.setLongitude(longM);
obs.setAbondance(abondanceM);
obs.setCertitude(certitudeM);
obs.setReferentielTaxo(referentielTaxoM);
obs.setPhenologie(phenologieM);
if(Window.confirm(message)) {
observationMediateur.modifierObservationEnMasse(obs);
reinitialiserValeurModifiees();
1583,8 → 1506,7
}
}
private void supprimerObservation() {
private void supprimerObservation() {
observationMediateur.supprimerObservation(this, numeroOrdre);
}
1672,6 → 1594,18
selecteurCertitude.getStore().load();
selecteurCertitude.setValue(obs.getCertitude());
selecteurStadePheno.getStore().load();
selecteurStadePheno.setValue(obs.getPhenologie());
selecteurReferentielTaxo.getStore().load();
if(obs.getReferentielTaxo() != VALEURS_MULTIPLES) {
referentielTaxo = obs.getCodeCourtReferentielTaxo();
selecteurReferentielTaxo.setValue(referentielTaxo);
} else {
referentielTaxo = "";
selecteurReferentielTaxo.setRawValue(VALEURS_MULTIPLES);
}
}
1683,8 → 1617,6
public void raz(Champs champs)
{
switch (champs) {
case DATE:
date.reset() ;
break;
1705,7 → 1637,6
comment.reset() ;
break;
 
 
case COMMUNE:
commune.reset() ;
departement ="";
1737,6 → 1668,14
selecteurCertitude.setValue("");
break;
case REFERENTIELTAXO:
selecteurReferentielTaxo.setValue("");
break;
case PHENOLOGIE:
selecteurStadePheno.setValue("");
break;
case TOUT:
commune.reset();
date.reset() ;
1751,6 → 1690,9
espece.reset();
selecteurAbondance.clearValue();
selecteurCertitude.clearValue();
selecteurReferentielTaxo.clearValue();
selecteurStadePheno.clearValue();
referentielTaxo = "";
numeroNom = "" ;
numeroOrdre = "";
afficherIndicationCommune(null);
1834,6 → 1776,8
String lon = null;
String abondance = null;
String certitude = null;
String referentielTaxo = null;
String phenologie = null;
String ordreObs = "";
1851,6 → 1795,8
lon = comparerDifferencesChamps(lon, obsEnCours.getLongitude());
abondance = comparerDifferencesChamps(abondance, obsEnCours.getAbondance());
certitude = comparerDifferencesChamps(certitude, obsEnCours.getCertitude());
referentielTaxo = comparerDifferencesChamps(referentielTaxo, obsEnCours.getReferentielTaxo());
phenologie = comparerDifferencesChamps(phenologie, obsEnCours.getPhenologie());
ordreObs += obsEnCours.getNumeroOrdre()+",";
}
1861,6 → 1807,8
obs.setLongitude(lon);
obs.setAbondance(abondance);
obs.setCertitude(certitude);
obs.setReferentielTaxo(referentielTaxo);
obs.setPhenologie(phenologie);
rafraichir(obs, false);
}
1892,6 → 1840,8
longModifiee = false;
abondanceModifiee = false;
certitudeModifiee = false;
referentielTaxoModifie = false;
phenologieModifiee = false;
}
public void saisieTabindex()
1922,8 → 1872,9
espece.setTabIndex(12);
selecteurCertitude.setTabIndex(13);
selecteurAbondance.setTabIndex(14);
boutonOK.setTabIndex(15);
boutonAnnuler.setTabIndex(16);
selecteurStadePheno.setTabIndex(15);
boutonOK.setTabIndex(16);
boutonAnnuler.setTabIndex(17);
}
1937,7 → 1888,7
}
private void obtenirInformationCommune() {
observationMediateur.obtenirInformationCommune(getCommuneSansDepartement(), obtenirDepartementAPartirChampCommune());
observationMediateur.obtenirInformationCommune(getCommuneSansDepartement(), Util.obtenirDepartementAPartirChaineCommune(departement, commune.getText()));
}
public double[] coordonneesValides() {
1967,52 → 1918,6
}
}
private String obtenirDepartementAPartirChampCommune() {
String dep = "";
if(departement == null) {
departement = "";
}
if(departement.equals("000null") || departement.equals("")) {
String[] depCom = commune.getText().split(" ");
if(depCom.length > 1) {
dep = depCom[1].replace('(', ' ');
} else {
dep = "";
}
} else {
dep = departement;
}
dep = dep.replace(')', ' ');
dep = dep.trim();
dep = dep.replace('\\',' ');
dep = dep.trim();
try
{
int nDep = Integer.parseInt(dep);
if(nDep > 0 && nDep < 110) {
departement = dep ;
}
if(departement.length() == 4) {
departement = "0"+departement;
}
departement = departement.substring(0,2);
}
catch(NumberFormatException e)
{
departement = "" ;
}
return departement;
}
public String getCommune() {
String valeurCommune = "";
2024,7 → 1929,7
}
public String getDepartement() {
return obtenirDepartementAPartirChampCommune();
return Util.obtenirDepartementAPartirChaineCommune(departement, commune.getText());
}
public String getCommuneSansDepartement() {
2031,35 → 1936,38
return Util.supprimerNumDepartementChaineLocalite(getCommune());
}
//TODO fusionner les deux fonctions et les objets qu'elles utilisent
// car leur code est à 99% identique
public String getAbondance() {
String valeurAbondance = selecteurAbondance.getValue();
String valeurAbondanceBrute = selecteurAbondance.getRawValue();
private String getValeurChampListeLibre(ComboBox champ) {
String valeurChamp = champ.getValue();
String valeurChampBrute = champ.getRawValue();
// Test idiot qui permet de savoir si l'on utilise la valeur saisie directement ou bien la valeur
// selectionnee car lors du setValue sur le keypress, gwtext ne prends pas en compte le dernier
// caractère
if(valeurAbondance.equals(valeurAbondanceBrute.substring(0, valeurAbondanceBrute.length() -1))) {
valeurAbondance = selecteurAbondance.getRawValue();
if(valeurChamp != null && valeurChamp.length() > 0) {
if(valeurChamp.equals(valeurChampBrute.substring(0, valeurChampBrute.length() -1))) {
valeurChamp = champ.getRawValue();
}
}
return valeurAbondance;
return valeurChamp;
}
 
public String getAbondance() {
return getValeurChampListeLibre(selecteurAbondance);
}
public String getCertitude() {
String valeurCertitude = selecteurCertitude.getValue();
String valeurCertitudeBrute = selecteurCertitude.getRawValue();
// Test idiot qui permet de savoir si l'on utilise la valeur saisie directement ou bien la valeur
// selectionnee car lors du setValue sur le keypress, gwtext ne prends pas en compte le dernier
// caractère
if(valeurCertitude.equals(valeurCertitudeBrute.substring(0, valeurCertitudeBrute.length() -1))) {
valeurCertitude = selecteurCertitude.getRawValue();
}
return valeurCertitude;
return getValeurChampListeLibre(selecteurCertitude);
}
public String getPhenologie() {
return getValeurChampListeLibre(selecteurStadePheno);
}
public String getReferentielTaxo() {
String codeCourt = getValeurChampListeLibre(selecteurReferentielTaxo);
return Ontologies.getInfosReferentielNomParCode(codeCourt).getCodeVersionComplet();
}
 
public boolean communeInitialisee() {
return communeModifiee;
/trunk/src/org/tela_botanica/client/vues/observation/indicateurs/LienExterneVue.java
27,8 → 27,8
public LienExterneVue(ObservationMediateur om) {
oMediateur = om;
refTax = Configuration.getRefTax();
refTaxVersion = Configuration.getRefTaxVersion();
refTax = om.getRefTaxSelectionne().getCode();
refTaxVersion = om.getRefTaxSelectionne().getVersionCourte();
efloreBaseUrl = Configuration.getLienEfloreBaseUrl();
titreLien.setVisible(false);
/trunk/src/org/tela_botanica/client/vues/observation/ListeObservationVue.java
63,57 → 63,28
*/
private ObservationMediateur observationMediateur = null;
 
 
/**
* Config de colonne
*/
private ColumnConfig etatObservation;
/**
* Config de colonne
*/
private ColumnConfig referentielTaxoObservation;
private ColumnConfig nomSaisiObservation;
/**
* Config de colonne
*/
private ColumnConfig nomRetenuObservation;
/**
* Config de colonne
*/
private ColumnConfig lieuObservation;
/**
* Config de colonne
*/
private ColumnConfig dateObservation;
/**
* Config de colonne
*/
private ColumnConfig ordreObservation;
/**
* Config de colonne
*/
private ColumnConfig abondanceObservation;
/**
* Config de colonne
*/
private ColumnConfig certitudeObservation;
/**
* Modele de colonnes
*/
private ColumnConfig abondanceObservation;
private ColumnConfig certitudeObservation;
private ColumnModel modeleColonnes;
 
/**
* Store qui contient les données à afficher
*/
private Store st = null;
/**
* Barre de pagination
*/
private BarrePaginationVue bt = null ;
 
/**
* Numéro de page en cours
*/
141,6 → 112,8
 
 
private boolean tailleInitialisee = false ;
 
private ColumnConfig phenologieObservation;
/**
* Constructeur sans arguments (privé car ne doit pas être utilisé)
161,9 → 134,7
setId("x-list-obs");
setHeader(true);
setHeader(true);
// on place la barre de pagination
bt = new BarrePaginationVue(this);
bt.setLabelElement("Observations");
258,18 → 229,12
public String render(Object value, CellMetadata cellMetadata,
Record record, int rowIndex, int colNum, Store store) {
if(value == null || value.equals("null") || value.equals("000null") || value.equals("0000-00-00 00:00:00")) {
return "" ;
}
else
{
String valeur = "";
if(value != null && !value.equals("null") && !value.equals("000null") && !value.equals("0000-00-00 00:00:00")) {
valeur = value.toString() ;
}
return value.toString() ;
return valeur;
}
} ;
Renderer dateRend = new Renderer() {
313,9 → 278,10
}
});
nomSaisiObservation = new ColumnConfig("Nom saisi", "nomSaisi_observation", 200, true, colRend);
nomRetenuObservation = new ColumnConfig("Nom retenu", "nomRetenu_observation", 200, true, colRend);
lieuObservation = new ColumnConfig("Lieu", "lieu_observation", 200, true, colRend);
referentielTaxoObservation = new ColumnConfig("Référentiel", "referentiel_taxo_observation", 15, true, colRend);
nomSaisiObservation = new ColumnConfig("Nom saisi", "nomSaisi_observation", 130, true, colRend);
nomRetenuObservation = new ColumnConfig("Nom retenu", "nomRetenu_observation", 130, true, colRend);
lieuObservation = new ColumnConfig("Lieu", "lieu_observation", 130, true, colRend);
dateObservation = new ColumnConfig("Date", "date_observation", 70, true, dateRend);
abondanceObservation = new ColumnConfig("Abondance", "abondance", 50, true, colRend);
certitudeObservation = new ColumnConfig("Identification", "certitude", 50, true, new Renderer() {
326,8 → 292,9
}
});
ordreObservation = new ColumnConfig("Ordre", "ordre_observation", 50, true, colRend);
ColumnConfig[] cm = {etatObservation, nomSaisiObservation, certitudeObservation, nomRetenuObservation, abondanceObservation, lieuObservation, dateObservation, ordreObservation};
phenologieObservation = new ColumnConfig("Phénologie", "phenologie", 40, true, colRend);
ordreObservation = new ColumnConfig("Ordre", "ordre_observation", 70, true, colRend);
ColumnConfig[] cm = {etatObservation, referentielTaxoObservation, nomSaisiObservation, certitudeObservation, nomRetenuObservation, abondanceObservation, phenologieObservation, lieuObservation, dateObservation, ordreObservation};
return cm;
}
575,7 → 542,7
if(nouvelleDonnees instanceof ListeObservation)
{
ListeObservation data = (ListeObservation) nouvelleDonnees ;
Object[][] observationData = new Object[data.size()][9];
Object[][] observationData = new Object[data.size()][11];
int i = 0 ;
if(data.size() == 0)
590,14 → 557,16
Observation obs=data.get(it.next());
observationData[i][0] = obs.getTransmis();
observationData[i][1] = obs.getNomSaisi();
observationData[i][2] = obs.getCertitude();
observationData[i][3] = obs.getNomRetenu();
observationData[i][4] = obs.getAbondance();
observationData[i][5] = Util.formaterLieu(obs, modeleLieu);
observationData[i][6] = obs.getDate();
observationData[i][7] = obs.getNumeroOrdre();
observationData[i][8] = obs.getNumeroNomenclaturalSaisi();
observationData[i][1] = obs.getCodeCourtReferentielTaxo();
observationData[i][2] = obs.getNomSaisi();
observationData[i][3] = obs.getCertitude();
observationData[i][4] = obs.getNomRetenu();
observationData[i][5] = obs.getAbondance();
observationData[i][6] = obs.getPhenologie();
observationData[i][7] = Util.formaterLieu(obs, modeleLieu);
observationData[i][8] = obs.getDate();
observationData[i][9] = obs.getNumeroOrdre();
observationData[i][10] = obs.getNumeroNomenclaturalSaisi();
i++ ;
}
634,8 → 603,12
// et on notifie de le mediateur du changement des valeurs
changerPageMaxEtCourante(pageMax,pageEncours,taillePage,pages[0]) ;
masquerChargement();
observationMediateur.obtenirListeObservation(this);
if(nbElements > 0) {
masquerChargement();
observationMediateur.obtenirListeObservation(this);
} else {
this.rafraichir(new ListeObservation(0), false);
}
}
677,10 → 650,12
private FieldDef[] getDefinitionChamps() {
// creation du store qui les contient
FieldDef defEtatObservation = new StringFieldDef("etat_observation");
FieldDef defRefTaxObservation = new StringFieldDef("referentiel_taxo_observation");
FieldDef defNomSaisiObservation = new StringFieldDef("nomSaisi_observation");
FieldDef defCertitudeObservation = new StringFieldDef("certitude");
FieldDef defNomRetenuObservation = new StringFieldDef("nomRetenu_observation");
FieldDef defAbondanceObservation = new StringFieldDef("abondance");
FieldDef defPhenologieObservation = new StringFieldDef("phenologie");
FieldDef defLieuObservation = new StringFieldDef("lieu_observation");
FieldDef defDateObservation = new StringFieldDef("date_observation");
FieldDef defOrdreObservation = new IntegerFieldDef("ordre_observation");
688,8 → 663,8
// Non affiches :
FieldDef defNumeroNomenclaturalSaisiObservation = new StringFieldDef("numeroNomenclaturalSaisi_observation");
 
FieldDef[] defTab = { defEtatObservation, defNomSaisiObservation, defCertitudeObservation, defNomRetenuObservation, defAbondanceObservation,
defLieuObservation, defDateObservation, defOrdreObservation, defNumeroNomenclaturalSaisiObservation };
FieldDef[] defTab = {defEtatObservation, defRefTaxObservation,defNomSaisiObservation, defCertitudeObservation, defNomRetenuObservation, defAbondanceObservation,
defPhenologieObservation, defLieuObservation, defDateObservation, defOrdreObservation, defNumeroNomenclaturalSaisiObservation };
return defTab;
}
/trunk/src/org/tela_botanica/client/interfaces/FournisseurListe.java
5,17 → 5,13
* implémentent cette interface.
* Elle permet de faire transiter le rafraichissable jusqu'au DAO et d'appeler sa méthode rafraichir un fois
* les données reçues, tout celà en préservant bien la séparation des rôles car les classes qui font transiter
* le rafraichissable ne connaissent que cette interface et pas le restye de l'objet
* le rafraichissable ne connaissent que cette interface et pas le reste de l'objet
* @author aurelien
*
*/
public interface FournisseurListe {
/**
* Méthode de mise à jour d'un objet
* @param nouvelleDonnees Un objet de n'importe quel type (programmation générique) qui contient les données de mise à jour
* @param repandreRaffraichissement indique si l'élement doit notifier d'autres éléments de sa mise à jour
*/
public void obtenirListeDonnees(final Rafraichissable r, String critere);
public void obtenirListeDonnees(Rafraichissable r, String referentiel, String critere);
 
}
/trunk/src/org/tela_botanica/client/cel2.java
16,26 → 16,24
* This is the entry point method.
*/
@Override
public void onModuleLoad() {
public void onModuleLoad() {
CarnetEnLigneMediateur carnetEnLigneMediateur= CarnetEnLigneMediateur.Instance();
if(GWT.isScript()) { // Nav
new Viewport(carnetEnLigneMediateur.getPanneauPrincipalCarnetEnLigne()) ;
} else { // Hosted
RootPanel.get().add(carnetEnLigneMediateur.getPanneauPrincipalCarnetEnLigne());
}
CarnetEnLigneMediateur carnetEnLigneMediateur= CarnetEnLigneMediateur.Instance();
if(GWT.isScript()) { // Nav
new Viewport(carnetEnLigneMediateur.getPanneauPrincipalCarnetEnLigne()) ;
} else { // Hosted
RootPanel.get().add(carnetEnLigneMediateur.getPanneauPrincipalCarnetEnLigne());
carnetEnLigneMediateur.getEtatUtilisateur() ;
 
Timer t = new Timer() {
@Override
public void run() {
Ext.get("loading").hide();
}
carnetEnLigneMediateur.getEtatUtilisateur() ;
 
Timer t = new Timer() {
@Override
public void run() {
Ext.get("loading").hide();
}
};
t.schedule(3000);
};
t.schedule(3000);
}
}
/trunk/src/org/tela_botanica/client/modeles/dao/ImageGeneriqueVueAsynchroneDAO.java
40,13 → 40,13
* @param numeroNomenclaturalSaisiObservation
*/
public void obtenirURLImage(final Rafraichissable r, String numeroNomenclaturalSaisiObservation) {
public void obtenirURLImage(final Rafraichissable r, String referentielTaxo, String numeroNomenclaturalSaisiObservation) {
String referentielDefaut = Configuration.getReferentielsDispos().get(0).getCode();
referentielTaxo = (referentielTaxo != null && !referentielTaxo.isEmpty()) ? referentielTaxo : referentielDefaut;
// on envoie le get asynchrone
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET,Configuration.getServiceBaseUrl()
+"/NameImage/"+numeroNomenclaturalSaisiObservation) ;
+"/NameImage/"+referentielTaxo+"/"+numeroNomenclaturalSaisiObservation) ;
try {
rb.sendRequest(null, new RequestCallback() {
/trunk/src/org/tela_botanica/client/modeles/dao/ImageInformationRepartitionAsynchroneDAO.java
40,13 → 40,14
* @param numeroNomenclaturalSaisiObservation
*/
public void obtenirURLImage(final Rafraichissable r, String numeroNomenclaturalSaisiObservation) {
public void obtenirURLImage(final Rafraichissable r, String referentielTaxo, String numeroNomenclaturalSaisiObservation) {
String referentielDefaut = Configuration.getReferentielsDispos().get(0).getCode();
referentielTaxo = (referentielTaxo != null && !referentielTaxo.isEmpty()) ? referentielTaxo : referentielDefaut;
// on envoie le get asynchrone
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET,Configuration.getServiceBaseUrl()
+"/NameMap/"+numeroNomenclaturalSaisiObservation) ;
+"/NameMap/"+referentielTaxo+"/"+numeroNomenclaturalSaisiObservation) ;
try {
rb.sendRequest(null, new RequestCallback() {
/trunk/src/org/tela_botanica/client/modeles/dao/ListeReferentielNomAsynchroneDAO.java
56,16 → 56,11
* @param r le rafraichissable qui demande la mise à jour
* @param criteres un string contenant le terme a rechercher
*/
@Override
public void obtenirListeDonnees(final Rafraichissable r, final String critere)
public void obtenirListeDonnees(final Rafraichissable r,final String referentiel, final String critere)
{
ListeReferentielNom referentielNomDataFromCache=null;
// En cache ?
if ((referentielNomDataFromCache=getFromCache(critere))!=null) {
r.rafraichir(referentielNomDataFromCache,true);
76,7 → 71,7
// On vérifie si un genre et une espèce sont demandées
// et ajoute le / manuellement car sinon il devient urlencode
String[] criteres =critere.split("/");
String urlParams = "/NameSearch/";
String urlParams = "/NameSearch/"+referentiel+"/";
if(criteres.length > 1) {
String critere1 = criteres[0];
String critere2 = criteres[1];
143,14 → 138,16
}
private void addToCache(String query, ListeReferentielNom result) {
cache.put(query.toLowerCase(),result);
}
@Override
public void obtenirListeDonnees(Rafraichissable r, String critere) {
obtenirListeDonnees(r, "bdtfx", critere);
}
private void addToCache(String query, ListeReferentielNom result) {
cache.put(query.toLowerCase(),result);
}
 
private ListeReferentielNom getFromCache (String query) {
return cache.get(query.toLowerCase());
}
 
 
private ListeReferentielNom getFromCache (String query) {
return cache.get(query.toLowerCase());
}
}
/trunk/src/org/tela_botanica/client/modeles/dao/ListeReferentielCommuneAsynchroneDAO.java
76,73 → 76,71
}
else {
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, Configuration.getServiceBaseUrl() + "/LocationSearch/" + URL.encodeComponent(critere));
try {
rb.sendRequest(null, new RequestCallback() {
 
@Override
public void onError(final Request request, final Throwable exception) {
// TODO Auto-generated method stub
}
 
@Override
public void onResponseReceived(final Request request,
final Response response) {
final ListeReferentielCommune referentielCommuneData;
final JSONValue responseValue = JSONParser.parse(response.getText());
JSONArray reponse = null;
 
// si c'est un tableau
if ((reponse = responseValue.isArray()) != null) {
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, Configuration.getServiceBaseUrl() + "/LocationSearch/" + URL.encodeComponent(critere));
try {
rb.sendRequest(null, new RequestCallback() {
@Override
public void onError(final Request request, final Throwable exception) {
// TODO Auto-generated method stub
JSONArray communes;
final int taillemax = reponse.size();
}
@Override
public void onResponseReceived(final Request request,
final Response response) {
referentielCommuneData = new ListeReferentielCommune(taillemax);
final ListeReferentielCommune referentielCommuneData;
final JSONValue responseValue = JSONParser.parse(response.getText());
JSONArray reponse = null;
// si c'est un tableau
if ((reponse = responseValue.isArray()) != null) {
JSONArray communes;
final int taillemax = reponse.size();
referentielCommuneData = new ListeReferentielCommune(taillemax);
for (int i = 0; i < taillemax; i++) {
if ((communes = reponse.get(i).isArray()) != null) {
String commune = ((JSONString) communes.get(0)).stringValue();
String departement = ((JSONString) communes.get(1)).stringValue();
ReferentielCommune com = new ReferentielCommune(commune, departement);
referentielCommuneData.put(com.getCommune() + com.getDepartement(), com);
}
}
} else {
referentielCommuneData = new ListeReferentielCommune(0);
}
addToCache(critere, referentielCommuneData);
r.rafraichir(referentielCommuneData, true);
for (int i = 0; i < taillemax; i++) {
if ((communes = reponse.get(i).isArray()) != null) {
String commune = ((JSONString) communes.get(0)).stringValue();
String departement = ((JSONString) communes.get(1)).stringValue();
ReferentielCommune com = new ReferentielCommune(commune, departement);
referentielCommuneData.put(com.getCommune() + com.getDepartement(), com);
}
}
} else {
referentielCommuneData = new ListeReferentielCommune(0);
}
addToCache(critere, referentielCommuneData);
r.rafraichir(referentielCommuneData, true);
}
}
});
});
} catch (RequestException e) {
e.printStackTrace();
}
} catch (RequestException e) {
e.printStackTrace();
}
} // Fin else si pas de cache
}
private void addToCache(String query, ListeReferentielCommune result) {
cache.put(query.toLowerCase(),result);
}
/**
* Fonction à implémenter dans le futur, lors de l'utilisation de plusieurs
* référentiels de localité
*/
@Override
public void obtenirListeDonnees(Rafraichissable r, String referentiel, String critere) {
// TODO Auto-generated method stub
}
private void addToCache(String query, ListeReferentielCommune result) {
cache.put(query.toLowerCase(),result);
}
 
private ListeReferentielCommune getFromCache (String query) {
return cache.get(query.toLowerCase());
}
 
 
private ListeReferentielCommune getFromCache (String query) {
return cache.get(query.toLowerCase());
}
}
/trunk/src/org/tela_botanica/client/modeles/dao/ObservationAsynchroneDAO.java
65,7 → 65,9
+"&latitude="+URL.encodeComponent(""+obs.getLatitude())
+"&longitude="+URL.encodeComponent(""+obs.getLongitude())
+"&abondance="+URL.encodeComponent(""+obs.getAbondance())
+"&certitude="+URL.encodeComponent(""+obs.getCertitude());
+"&certitude="+URL.encodeComponent(""+obs.getCertitude())
+"&phenologie="+URL.encodeComponent(""+obs.getPhenologie())
+"&nom_referentiel="+URL.encodeComponent(""+obs.getReferentielTaxo());
try {
rb.sendRequest(postData, new RequestCallback() {
115,7 → 117,9
+"&latitude="+URL.encodeComponent(""+obs.getLatitude())
+"&longitude="+URL.encodeComponent(""+obs.getLongitude())
+"&abondance="+URL.encodeComponent(""+obs.getAbondance())
+"&certitude="+URL.encodeComponent(""+obs.getCertitude());
+"&certitude="+URL.encodeComponent(""+obs.getCertitude())
+"&phenologie="+URL.encodeComponent(""+obs.getPhenologie())
+"&nom_referentiel="+URL.encodeComponent(""+obs.getReferentielTaxo());
try {
rb.sendRequest(postData, new RequestCallback() {
/trunk/src/org/tela_botanica/client/modeles/dao/ListeObservationAsynchroneDAO.java
187,6 → 187,14
if(obs.getCertitude() != null) {
postData += "&certitude="+URL.encodeComponent(""+obs.getCertitude());
}
if(obs.getPhenologie() != null) {
postData += "&phenologie="+URL.encodeComponent(""+obs.getPhenologie());
}
if(obs.getReferentielTaxo() != null) {
postData += "&nom_referentiel="+URL.encodeComponent(""+obs.getReferentielTaxo());
}
 
try {
rb.sendRequest(postData, new RequestCallback() {
/trunk/src/org/tela_botanica/client/modeles/objets/Configuration.java
1,6 → 1,12
package org.tela_botanica.client.modeles.objets;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import com.google.gwt.i18n.client.Dictionary;
import com.google.gwt.user.client.Window;
 
/**
* Classe chargeant certains paramètres de configuration à partir d'un fichier
49,6 → 55,8
private static String imageRedirectUrl;
private static String tailleMaxUpload;
private static List<InfosReferentielNom> referentielsDispos;
 
/**
* Constructeur sans argument
82,12 → 90,6
lienEfloreBaseUrl = Dictionary.getDictionary("configuration").get(
"lienEfloreBaseUrl");
refTax = Dictionary.getDictionary("configuration").get(
"refTax");
refTaxVersion = Dictionary.getDictionary("configuration").get(
"refTaxVersion");
formatOriginal = Dictionary.getDictionary("configuration").get(
"formatOriginal");
109,8 → 111,19
tailleMaxUpload = Dictionary.getDictionary("configuration").get(
"tailleMaxUpload");
//licence = Dictionary.getDictionary("configuration").get("licence");
referentielsDispos = parserReferentielsDispos(Dictionary.getDictionary("configuration").get(
"referentielsDispos"));
}
private List<InfosReferentielNom> parserReferentielsDispos(String chaineListeReferentiels) {
String[] tabReferentiels = chaineListeReferentiels.split(";");
List<InfosReferentielNom> referentiels = new ArrayList<InfosReferentielNom>(tabReferentiels.length);
for (int i = 0; i < tabReferentiels.length; i++) {
InfosReferentielNom infoRef = new InfosReferentielNom(tabReferentiels[i]);
referentiels.add(infoRef);
}
return referentiels;
}
 
/**
* Accesseur pour l'url de base du serveur jrest
179,14 → 192,6
return lienEfloreBaseUrl;
}
public static String getRefTax() {
return refTax;
}
public static String getRefTaxVersion() {
return refTaxVersion;
}
public static String getLicence() {
return licence;
}
218,4 → 223,8
public static String getTailleMaxUpload() {
return tailleMaxUpload;
}
public static List<InfosReferentielNom> getReferentielsDispos() {
return referentielsDispos;
}
}
/trunk/src/org/tela_botanica/client/modeles/objets/InfosReferentielNom.java
New file
0,0 → 1,64
package org.tela_botanica.client.modeles.objets;
 
import com.google.gwt.user.client.Window;
 
public class InfosReferentielNom {
private String code = null;
private String version = null;
private String versionCourte = null;
private String intitule = null;
 
public InfosReferentielNom(String infosReferentiel) {
String[] codeCompletIntitule = infosReferentiel.split(",");
intitule = codeCompletIntitule[1];
String[] codeVersion = codeCompletIntitule[0].split(":");
code = codeVersion[0];
version = codeVersion[1];
versionCourte = formaterVersionCourte(version);
}
public InfosReferentielNom(String code, String version, String intitule) {
super();
this.code = code;
this.version = version;
this.intitule = intitule;
this.versionCourte = formaterVersionCourte(version);
}
private String formaterVersionCourte(String version) {
return version.replaceAll("v","");
}
public String getCodeVersionComplet() {
return code+":"+version;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getIntitule() {
return intitule;
}
public void setIntitule(String intitule) {
this.intitule = intitule;
}
 
public String getVersionCourte() {
return versionCourte;
}
 
public void setVersionCourte(String versionCourte) {
this.versionCourte = versionCourte;
}
}
/trunk/src/org/tela_botanica/client/modeles/objets/ReferentielNom.java
1,15 → 1,11
package org.tela_botanica.client.modeles.objets;
 
 
 
 
 
/**
*
* Classe representant un element du referentiel de nom
*
*/
 
public class ReferentielNom {
 
 
22,7 → 18,6
}
 
/**
* @param nom
* @param numeroNom
29,14 → 24,10
* @param statut
*
*/
public ReferentielNom(String nom, String numeroNom, String statut) {
this.nom = nom;
this.numeroNom = numeroNom;
this.statut = statut;
 
}
 
 
44,7 → 35,6
return nom;
}
 
 
public String getNumeroNom() {
return numeroNom;
}
/trunk/src/org/tela_botanica/client/modeles/objets/Ontologies.java
1,6 → 1,8
package org.tela_botanica.client.modeles.objets;
 
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
 
import com.gwtext.client.data.SimpleStore;
import com.gwtext.client.data.Store;
7,7 → 9,10
 
public class Ontologies {
//TODO: extraire toutes ces valeurs dans des fichiers de configuration
// ou bien via l'appel d'un web service spécialisé.
private static HashMap<String, String> valeursCertitude = null;
private static List<InfosReferentielNom> listeReferentielsNoms = null;
 
public static Store getValeursCertitude() {
Object[][] valeurs = {{"Certaine","certain"},
20,15 → 25,30
}
public static Store getValeursAbondance() {
Object[][] valeurs = {{"i : un seul individu","i"},
{"r : rare (quelques pieds)","r"},
{"+ : recouvrement R < 1%","+"},
{"1 : 1% < R < 5%","1"},
{"2 : 5% < R < 25%","2"},
{"3 : 25% < R < 50%","3"},
{"4 : 50% < R < 75%","4"},
{"5 : recouvrement R > 75%","5"}
};
Object[][] valeurs = {
{"5 : recouvrement R > 75%","5"},
{"4 : 50% < R < 75%","4"},
{"3 : 25% < R < 50%","3"},
{"2 : 5% < R < 25%","2"},
{"1 : 1% < R < 5%","1"},
{"+ : recouvrement R < 1%","+"},
{"r : rare (quelques pieds)","r"},
{"i : un seul individu","i"},
{"1-5 individus","1-5"},
{"5-10 individus","5-10"},
{"10-50 individus","10-50"},
{"50-100 individus","50-100"},
{"100-500 individus","100-500"},
{">500 individus",">500"},
{"E : exceptionnel","E"},
{"RR : très rare","RR"},
{"R : rare","R"},
{"AR : assez rare","E"},
{"PC : peu commun","PC"},
{"AC : assez commun","AC"},
{"C : commun","C"},
{"CC : très commun","C"}
};
SimpleStore storeAbondance = new SimpleStore(new String[] {"label","valeur"},valeurs);
storeAbondance.load();
return storeAbondance;
46,4 → 66,61
return valeur == null ? cle : valeur;
}
public static Store getValeursReferentiel() {
List<InfosReferentielNom> listeReferentiels = Configuration.getReferentielsDispos();
Object[][] valeurs = new Object[listeReferentiels.size()][2];
int i = 0;
for (Iterator<InfosReferentielNom> iterator = listeReferentiels.iterator(); iterator
.hasNext();) {
InfosReferentielNom infosReferentielNom = iterator.next();
String[] valeur = {infosReferentielNom.getIntitule(), infosReferentielNom.getCode()};
valeurs[i] = valeur;
i++;
}
SimpleStore storeReferentiels = new SimpleStore(new String[] {"label","valeur"},valeurs);
storeReferentiels.load();
return storeReferentiels;
}
 
public static InfosReferentielNom getInfosReferentielNomParCode(String code) {
InfosReferentielNom infos = null;
List<InfosReferentielNom> listeReferentiels = Configuration.getReferentielsDispos();
for (Iterator<InfosReferentielNom> iterator = listeReferentiels.iterator(); iterator
.hasNext();) {
InfosReferentielNom infosReferentielNom = iterator.next();
if(infosReferentielNom.getCode().equals(code)) {
infos = infosReferentielNom;
break;
}
}
return infos;
}
public static Store getValeursPhenologie() {
Object[][] valeurs = {
{"00-09: germination, développement des bourgeons", "00-09"},
{"10-19: développement des feuilles", "10-19"},
{"11: par ex, environ 10% des feuilles épanouies", "11"},
{"15: par ex, environ 50% des feuilles épanouies", "15"},
{"20-29: formation de pousses latérales, tallage", "20-29"},
{"30-39: développement des tiges, croissance des rosettes", "30-39"},
{"40-49: développement des organes de propagation végétative", "40-49"},
{"50-59: apparition de l'inflorescence, épiaison", "50-59"},
{"60-69: floraison", "60-69"},
{"61 : par ex, environ 10% des fleurs épanouies", "61"},
{"65 : par ex, environ 50% des fleurs épanouies", "65"},
{"70-79: fructification", "70-79"},
{"80-89: maturité des fruits et des graines", "80-89"},
{"85: par ex, 50% des fruits matures", "85"},
{"90-99: sénescence et dormance", "90-99"},
{"91: par ex, environ 10% des feuilles jaunes", "91"},
{"95: par ex, environ 50% des feuilles jaunes", "95"}
};
SimpleStore storeAbondance = new SimpleStore(new String[] {"label","valeur"},valeurs);
storeAbondance.load();
return storeAbondance;
}
}
/trunk/src/org/tela_botanica/client/modeles/objets/Observation.java
1,5 → 1,8
package org.tela_botanica.client.modeles.objets;
 
import java.util.List;
import java.util.Map;
 
import org.tela_botanica.client.util.Util;
 
import com.google.gwt.json.client.JSONObject;
27,8 → 30,13
private String latitude=null;
private String longitude=null;
private String referentielGeo=null;
private String referentielTaxo=null;
private String abondance=null;
private String certitude=null;
private String phenologie=null;
private String altitude=null;
private Map<String, String> champsEtendus=null;
 
public Observation() {
}
106,6 → 114,8
this.motsCles = Util.getValeurJsonOuVide(observation,"mots_cles");
this.abondance = Util.getValeurJsonOuVide(observation,"abondance");
this.certitude = Util.getValeurJsonOuVide(observation,"certitude");
this.phenologie = Util.getValeurJsonOuVide(observation,"phenologie");
this.setReferentielTaxo(Util.getValeurJsonOuVide(observation,"nom_referentiel"));
}
/**
287,4 → 297,60
public void setCertitude(String certitude) {
this.certitude = certitude;
}
 
public String getReferentielTaxo() {
return referentielTaxo;
}
 
public String getCodeCourtReferentielTaxo() {
String codeRef = "";
if(!getReferentielTaxo().equals("") && getReferentielTaxo().length() >= 5) {
codeRef = referentielTaxo.substring(0, 5);
}
return codeRef;
}
 
public void setReferentielTaxo(String referentielTaxo) {
this.referentielTaxo = referentielTaxo;
}
public String getPhenologie() {
return phenologie;
}
public void setPhenologie(String phenologie) {
this.phenologie = phenologie;
}
 
public String getAltitude() {
return altitude;
}
 
 
public void setAltitude(String altitude) {
this.altitude = altitude;
}
 
 
public void setValeurChampEtendu(String cle, String valeur) {
champsEtendus.put(cle, valeur);
}
 
public String getValeurChampEtendu(String cle) {
String valeur = "";
if(champsEtendus.containsKey(cle)) {
valeur = champsEtendus.get(cle);
}
return valeur;
}
public Map<String, String> getChampsEtendus() {
return champsEtendus;
}
 
 
public void setChampsEtendus(Map<String, String> champsEtendus) {
this.champsEtendus = champsEtendus;
}
}
/trunk/src/org/tela_botanica/client/observation/ObservationModele.java
197,12 → 197,12
* @param r
* @param critere
*/
public void obtenirListeReferentielNom(Rafraichissable r, String critere) {
public void obtenirListeReferentielNom(Rafraichissable r, String referentiel, String critere) {
if (nomDAO==null) {
nomDAO=new ListeReferentielNomAsynchroneDAO(this);
}
nomDAO.obtenirListeDonnees(r, critere);
nomDAO.obtenirListeDonnees(r, referentiel, critere);
}
274,10 → 274,10
*/
 
 
public void obtenirImageInformationRepartition( Rafraichissable r,String numeroNomenclaturalSaisiObservation) {
public void obtenirImageInformationRepartition(Rafraichissable r, String referentielTaxo, String numeroNomenclaturalSaisiObservation) {
ImageInformationRepartitionAsynchroneDAO repDAO=new ImageInformationRepartitionAsynchroneDAO(this);
repDAO.obtenirURLImage(r, numeroNomenclaturalSaisiObservation);
ImageInformationRepartitionAsynchroneDAO repDAO= new ImageInformationRepartitionAsynchroneDAO(this);
repDAO.obtenirURLImage(r, referentielTaxo, numeroNomenclaturalSaisiObservation);
}
288,10 → 288,10
* @param numeroNomenclaturalSaisiObservation
*/
 
public void obtenirImageGenerique( Rafraichissable r,String numeroNomenclaturalSaisiObservation) {
public void obtenirImageGenerique( Rafraichissable r, String referentielTaxo, String numeroNomenclaturalSaisiObservation) {
ImageGeneriqueVueAsynchroneDAO imgDAO=new ImageGeneriqueVueAsynchroneDAO(this);
imgDAO.obtenirURLImage(r, numeroNomenclaturalSaisiObservation);
ImageGeneriqueVueAsynchroneDAO imgDAO= new ImageGeneriqueVueAsynchroneDAO(this);
imgDAO.obtenirURLImage(r, referentielTaxo, numeroNomenclaturalSaisiObservation);
}
/trunk/src/org/tela_botanica/client/observation/ObservationMediateur.java
5,7 → 5,9
// TODO : systematiser les onQuelquechose, appelle depuis les vues
import org.tela_botanica.client.CarnetEnLigneMediateur;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.objets.Configuration;
import org.tela_botanica.client.modeles.objets.EntiteGeographiqueObservation;
import org.tela_botanica.client.modeles.objets.InfosReferentielNom;
import org.tela_botanica.client.modeles.objets.ListeObservation;
import org.tela_botanica.client.modeles.objets.Observation;
import org.tela_botanica.client.modeles.objets.Utilisateur;
153,6 → 155,8
 
private com.gwtext.client.widgets.Window fenetreCarto;
public boolean changementTabProg = false;
private InfosReferentielNom refTaxSelectionne = null;
 
private Panel centre;
163,11 → 167,12
private ObservationMediateur(CarnetEnLigneMediateur carnetEnLigneMediateur )
{
this.carnetEnLigneMediateur=carnetEnLigneMediateur;
this.carnetEnLigneMediateur=carnetEnLigneMediateur;
// on crée un modèle
observationModele = ObservationModele.Instance(this);
// initialisation du référentiel par défaut
setRefTaxSelectionne(Configuration.getReferentielsDispos().get(0));
listeObservation = new ListeObservationVue(this);
listeObservation.setTitle("Observations");
273,7 → 278,7
String[] selectionListe = listeObservation.getIdSelectionnees();
if(selectionListe.length > 0) {
Observation obs = listeObservation.getCacheListeObservation().get(selectionListe[0]);
obtenirImageInformationExternes(obs.getNumeroNomenclaturalSaisi());
obtenirImageInformationExternes(obs.getCodeCourtReferentielTaxo(), obs.getNumeroNomenclaturalSaisi());
}
CarnetEnLigneMediateur.fireResize();
}
329,7 → 334,6
panneauPrincipalObservation.add(filtres,regionOuest);
panneauPrincipalObservation.add(centre,regionCentre);
}
/**
440,9 → 444,9
// Affichage de la carte de repartition correspondante
String numeroNomenclaturalSaisiObservation = obs.getNumeroNomenclaturalRetenu() ;
if(numeroNomenclaturalSaisiObservation != null && !numeroNomenclaturalSaisiObservation.isEmpty()) {
observationModele.obtenirImageInformationRepartition(informationRepartitionVue,numeroNomenclaturalSaisiObservation) ;
observationModele.obtenirImageInformationRepartition(informationRepartitionVue,obs.getCodeCourtReferentielTaxo(), numeroNomenclaturalSaisiObservation) ;
liExtVue.rafraichir(numeroNomenclaturalSaisiObservation, false);
observationModele.obtenirImageGenerique(imageGeneriqueVue,numeroNomenclaturalSaisiObservation) ;
observationModele.obtenirImageGenerique(imageGeneriqueVue,obs.getCodeCourtReferentielTaxo(), numeroNomenclaturalSaisiObservation) ;
observationModele.obtenirLiaisonImage(mvz, obs.getId()) ;
 
}
450,7 → 454,7
filtres.getArbreMotsClesObservationVue().rafraichir(obs.getMotsCles(), false);
}
public void obtenirImageInformationExternes(String numeroNomenclaturalSaisiObservation) {
public void obtenirImageInformationExternes(String referentielTaxo, String numeroNomenclaturalSaisiObservation) {
if(details.isVisible()) {
if(GWT.isScript()) {
457,8 → 461,8
masquerChargementInfosObservations() ;
}
liExtVue.rafraichir(numeroNomenclaturalSaisiObservation, false);
observationModele.obtenirImageInformationRepartition(informationRepartitionVue,numeroNomenclaturalSaisiObservation) ;
observationModele.obtenirImageGenerique(imageGeneriqueVue,numeroNomenclaturalSaisiObservation) ;
observationModele.obtenirImageInformationRepartition(informationRepartitionVue, referentielTaxo, numeroNomenclaturalSaisiObservation) ;
observationModele.obtenirImageGenerique(imageGeneriqueVue, referentielTaxo, numeroNomenclaturalSaisiObservation) ;
}
}
472,12 → 476,7
// ACCES au Modèle
// C du CRUD
/**
* TODO : afficher un message du type "observation ajouté".
* Lance la creation d'une observation
484,7 → 483,6
* @param obs : l'observation saisie
*/
public void ajouterObservation(Observation obs) {
// On rafraichit la liste d'observation
observationModele.ajouterObservation(listeObservation, obs) ;
filtres.getArbreEntiteGeographiqueObservationFiltreVue().rafraichir(obs,true) ;
492,10 → 490,7
}
// R du CRUD
/**
* Demande au modele le nombre d'Observation à afficher
* TODO : grouper cette demande avec la demande d'affichage de liste ?
637,9 → 632,9
* @param critere : les criteres de selection
*/
public void obtenirListeReferentielNom(Rafraichissable r, String critere) {
public void obtenirListeReferentielNom(Rafraichissable r,String referentiel, String critere) {
 
observationModele.obtenirListeReferentielNom(r,critere) ;
observationModele.obtenirListeReferentielNom(r, referentiel, critere) ;
}
// Etat du syteme
1173,7 → 1168,6
}
 
private void razFiltres() {
filtres.getArbreDateObservationFiltreVue().raz() ;
filtres.getArbreEntiteGeographiqueObservationFiltreVue().raz() ;
filtres.getArbreMotsClesObservationVue().raz();
1187,7 → 1181,6
}
 
public Component getListeObservation() {
return listeObservation;
}
 
1201,9 → 1194,7
if (formImportObs==null) { // lazy inst.
formImportObs = new FormulaireImportObservationVue(this);
}
formImportObs.afficher();
formImportObs.afficher();
}
 
public void setImporterObservationsAnonymes(boolean importerObservations) {
1259,4 → 1250,16
fenetreCarto.hide();
}
}
 
public InfosReferentielNom getRefTaxSelectionne() {
return refTaxSelectionne;
}
public void setRefTaxSelectionne(int index) {
refTaxSelectionne = Configuration.getReferentielsDispos().get(index);
}
public void setRefTaxSelectionne(InfosReferentielNom refTax) {
refTaxSelectionne = refTax;
}
}