Subversion Repositories eFlore/Applications.cel

Compare Revisions

No changes between revisions

Ignore whitespace Rev 1023 → Rev 1024

/branches/cel3/src/org/tela_botanica/cel/client/vues/observation/panneauPrincipalObservationVue.ui.xml
New file
0,0 → 1,32
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder
xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'
xmlns:vues="urn:import:org.tela_botanica.client.vues.observation">
<ui:style>
.panneau-cel
{
border: 3px solid green;
}
</ui:style>
 
<g:SplitLayoutPanel>
<g:west size='250'>
<g:HTML addStyleNames="{style.panneau-cel}">Ici il y aura les filtres !</g:HTML>
</g:west>
 
<g:center>
<g:VerticalSplitPanel addStyleNames="{style.panneau-cel}">
<vues:FormulaireAutocompletion></vues:FormulaireAutocompletion>
<vues:ListeObservation></vues:ListeObservation>
</g:VerticalSplitPanel>
</g:center>
<g:east size='250'>
<g:HTML addStyleNames="{style.panneau-cel}">Ici il y aura les infos supplémentaires !</g:HTML>
</g:east>
</g:SplitLayoutPanel>
 
</ui:UiBinder>
/branches/cel3/src/org/tela_botanica/cel/client/vues/observation/PanneauPrincipalObservationPresenteur.java
New file
0,0 → 1,5
package org.tela_botanica.cel.client.vues.observation;
 
public class PanneauPrincipalObservationPresenteur {
 
}
/branches/cel3/src/org/tela_botanica/cel/client/vues/observation/PanneauPrincipalObservationVue.java
New file
0,0 → 1,5
package org.tela_botanica.cel.client.vues.observation;
 
public class PanneauPrincipalObservationVue {
 
}
/branches/cel3/src/org/tela_botanica/cel/client/vues/general/CelPanneauPrincipalVue.java
New file
0,0 → 1,7
package org.tela_botanica.cel.client.vues.general;
 
import com.google.gwt.user.client.ui.Composite;
 
public class CelPanneauPrincipalVue extends Composite {
}
/branches/cel3/src/org/tela_botanica/cel/client/vues/general/CelPanneauPrincipal.ui.xml
New file
0,0 → 1,32
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui"
xmlns:vues="urn:import:org.tela_botanica.cel.client.vues.observation">
<ui:style>
.tabPanelExample1
{
border: 3px solid green;
}
</ui:style>
<g:HTMLPanel>
<g:VerticalPanel>
</g:VerticalPanel>
<g:VerticalPanel>
<g:TabLayoutPanel addStyleNames="{style.tabPanelExample1}" ui:field="tabPanel" barUnit="PX" barHeight="20">
<g:tab>
<g:header>
Observations
</g:header>
<g:VerticalPanel></g:VerticalPanel>
</g:tab>
<g:tab>
<g:header>
Images
</g:header>
<g:HTML><h2>Hello tab 2</h2></g:HTML>
</g:tab>
</g:TabLayoutPanel>
</g:VerticalPanel>
</g:HTMLPanel>
</ui:UiBinder>
/branches/cel3/src/org/tela_botanica/cel/client/vues/general/CelPanneauPrincipalPresenteur.java
New file
0,0 → 1,5
package org.tela_botanica.cel.client.vues.general;
 
public class CelPanneauPrincipalPresenteur {
 
}
/branches/cel3/src/org/tela_botanica/cel/client/vues/general/panneaugestionutilisateur/PanneauGestionUtilisateurPresenteur.java
New file
0,0 → 1,5
package org.tela_botanica.cel.client.vues.general.panneaugestionutilisateur;
 
public class PanneauGestionUtilisateurPresenteur {
 
}
/branches/cel3/src/org/tela_botanica/cel/client/vues/general/panneaugestionutilisateur/PanneauGestionUtilisateurVue.java
New file
0,0 → 1,5
package org.tela_botanica.cel.client.vues.general.panneaugestionutilisateur;
 
public class PanneauGestionUtilisateurVue {
 
}
/branches/cel3/src/org/tela_botanica/cel/client/vues/general/panneaugestionutilisateur/PanneauGestionUtilisateur.ui.xml
New file
0,0 → 1,10
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder
xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
 
<g:HTMLPanel>
<div style="border:3px solid green;width:100%;height:100%"> Carnet en ligne panneau nord </div>
</g:HTMLPanel>
 
</ui:UiBinder>
/branches/cel3/src/org/tela_botanica/cel/client/vues/image/PanneauPrincipalImagePresenteur.java
New file
0,0 → 1,5
package org.tela_botanica.cel.client.vues.image;
 
public class PanneauPrincipalImagePresenteur {
 
}
/branches/cel3/src/org/tela_botanica/cel/client/vues/image/PanneauPrincipalImageVue.java
New file
0,0 → 1,5
package org.tela_botanica.cel.client.vues.image;
 
public class PanneauPrincipalImageVue {
 
}
/branches/cel3/src/org/tela_botanica/cel/client/cache/CacheClient.java
New file
0,0 → 1,101
package org.tela_botanica.cel.client.cache;
 
import org.tela_botanica.cel.client.modeles.InformationsRecherche;
import org.tela_botanica.cel.client.modeles.Utilisateur;
 
public class CacheClient {
 
private int numPageRechercheImage = 0;
private int nbTotalImagesRecherchees = 0;
 
private int pasPagination = 12;
private int pageCouranteRechercheImage = 1;
private int pageCouranteRechercheObservations = 1;
private InformationsRecherche informationsRechercheImage;
private InformationsRecherche informationsRechercheObservation;
private Utilisateur utilisateur;
 
private static CacheClient instance;
 
private CacheClient() {
instance = this;
}
 
public Utilisateur getUtilisateur() {
if (this.utilisateur == null) {
this.utilisateur = new Utilisateur(null);
}
return this.utilisateur;
}
public void setUtilisateur(Utilisateur utilisateur) {
this.utilisateur = utilisateur;
}
public static CacheClient getInstance() {
if (instance == null) {
instance = new CacheClient();
}
return instance;
}
 
public int getNumPageRechercheImage() {
return numPageRechercheImage;
}
 
// Pour la recherche :
public int getPasPagination() {
return pasPagination;
}
 
public void setPasPagination(int pasPagination) {
this.pasPagination = pasPagination;
}
 
public void setPageCouranteRechercheImages(int pageCouranteRecherche) {
this.pageCouranteRechercheImage = pageCouranteRecherche;
}
 
public int getPageCouranteRechercheImage() {
return this.pageCouranteRechercheImage;
}
 
public void setNbTotalImagesRecherchees(int nbTotalImagesRecherchees) {
this.nbTotalImagesRecherchees = nbTotalImagesRecherchees;
}
 
public int getNbTotalImagesRecherchees() {
return this.nbTotalImagesRecherchees;
}
 
public InformationsRecherche getInformationsRechercheImage() {
if(informationsRechercheImage == null) {
informationsRechercheImage = new InformationsRecherche();
}
return informationsRechercheImage;
}
 
public InformationsRecherche getInformationsRechercheObservation() {
if(informationsRechercheObservation == null) {
informationsRechercheObservation = new InformationsRecherche();
}
return informationsRechercheObservation;
}
 
public void setInformationsRechercheImage(InformationsRecherche informationsRechercheImage) {
this.informationsRechercheImage = informationsRechercheImage;
}
 
public void setInformationsRechercheObservation(InformationsRecherche informationsRechercheObservation) {
this.informationsRechercheObservation = informationsRechercheObservation;
}
 
public int getPageCouranteRechercheObservations() {
return pageCouranteRechercheObservations;
}
 
public void setPageCouranteRechercheObservations(int pageCouranteRechercheObservations) {
this.pageCouranteRechercheObservations = pageCouranteRechercheObservations;
}
 
}
/branches/cel3/src/org/tela_botanica/cel/client/services/rest/UtilisateurServiceConcret.java
New file
0,0 → 1,51
package org.tela_botanica.cel.client.services.rest;
 
import org.tela_botanica.cel.client.services.rest.async.UtilisateurCallback;
import org.tela_botanica.cel.client.utils.Configuration;
 
import com.google.gwt.http.client.RequestBuilder;
 
public class UtilisateurServiceConcret implements UtilisateurService {
private String baseUrl;
public UtilisateurServiceConcret() {
Configuration config = new Configuration();
this.baseUrl = config.getServiceBaseUrl();
}
public UtilisateurServiceConcret(Configuration config) {
this.baseUrl = config.getServiceBaseUrl();
}
@Override
public void connecterUtilisateur(String login, String motDePasse, UtilisateurCallback callback) {
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, baseUrl + "Utilisateur/");
try {
rb.sendRequest("login="+login+"&pass="+motDePasse, callback);
} catch (Exception e) {
// TODO: handle exception
}
}
 
@Override
public void deconnecterUtilisateur(String login, UtilisateurCallback callback) {
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, baseUrl + "Utilisateur/"+login);
try {
rb.sendRequest("action=DELETE", callback);
} catch (Exception e) {
// TODO: handle exception
}
}
 
@Override
public void obtenirUtilisateur(UtilisateurCallback callback) {
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, baseUrl + "Utilisateur/");
try {
rb.sendRequest(null, callback);
} catch (Exception e) {
// TODO: handle exception
}
}
 
}
/branches/cel3/src/org/tela_botanica/cel/client/services/rest/UtilisateurService.java
New file
0,0 → 1,11
package org.tela_botanica.cel.client.services.rest;
 
import org.tela_botanica.cel.client.services.rest.async.UtilisateurCallback;
 
public interface UtilisateurService {
public void connecterUtilisateur(String login, String motDePasse, UtilisateurCallback callback);
public void deconnecterUtilisateur(String login, UtilisateurCallback callback);
public void obtenirUtilisateur(UtilisateurCallback callback);
}
/branches/cel3/src/org/tela_botanica/cel/client/services/rest/async/UtilisateurCallback.java
New file
0,0 → 1,27
package org.tela_botanica.cel.client.services.rest.async;
 
import org.tela_botanica.cel.client.modeles.Utilisateur;
import org.tela_botanica.cel.client.utils.UtilitairesServiceResultat;
 
import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.Response;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.user.client.Window;
 
public abstract class UtilisateurCallback implements RequestCallback {
 
@Override
public void onResponseReceived(Request request, Response response) {
Utilisateur utilisateur = UtilitairesServiceResultat.parserUtilisateurJson(JSONParser.parseStrict(response.getText()));
surRetourUtilisateur(utilisateur);
}
 
@Override
public void onError(Request request, Throwable exception) {
Window.alert(exception.getMessage());
}
public abstract void surRetourUtilisateur(Utilisateur utilisateur);
 
}
/branches/cel3/src/org/tela_botanica/cel/client/gestionhistorique/ConstantesNavigation.java
New file
0,0 → 1,7
package org.tela_botanica.cel.client.gestionhistorique;
 
public class ConstantesNavigation {
public static final String PAGE_PRINCIPALE = "page_principale";
public static final String PAGE_IMAGES = "page_images";
public static final String PAGE_OBSERVATIONS = "page_observations";
}
/branches/cel3/src/org/tela_botanica/cel/client/gestionhistorique/GestionnaireHistorique.java
New file
0,0 → 1,13
package org.tela_botanica.cel.client.gestionhistorique;
 
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.user.client.ui.RootPanel;
 
public class GestionnaireHistorique implements ValueChangeHandler<String> {
 
public void onValueChange(ValueChangeEvent<String> event) {
 
RootPanel.get("navigation").clear();
}
}
/branches/cel3/src/org/tela_botanica/cel/client/Cel3.java
New file
0,0 → 1,15
package org.tela_botanica.cel.client;
 
import org.tela_botanica.cel.client.gestionhistorique.GestionnaireHistorique;
 
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.History;
 
public class Cel3 implements EntryPoint {
@Override
public void onModuleLoad() {
//History.addValueChangeHandler(new GestionnaireHistorique());
//History.fireCurrentHistoryState();
}
}
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/branches/cel3/src/org/tela_botanica/cel/client/composants/formulaires/AutoCompletionComboBoxPresenteur.java
New file
0,0 → 1,172
package org.tela_botanica.cel.client.composants.formulaires;
 
import com.google.gwt.event.dom.client.HasKeyPressHandlers;
import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.event.dom.client.KeyPressHandler;
import com.google.gwt.event.logical.shared.HasSelectionHandlers;
import com.google.gwt.event.logical.shared.SelectionEvent;
import com.google.gwt.event.logical.shared.SelectionHandler;
import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.http.client.URL;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.SuggestOracle;
import com.google.gwt.user.client.ui.SuggestOracle.Suggestion;
 
public abstract class AutoCompletionComboBoxPresenteur {
public interface Vue extends IsWidget {
public void ajouterVue(HasWidgets composite);
public HasKeyPressHandlers getSuggestBoxHasKeyPressHandlers();
public String getValeur();
public void remplirListe(String[] suggestions);
public void afficherSuggestions(SuggestOracle.Request request,SuggestOracle.Callback response);
public void afficherListeDeroulante();
public void nettoyer();
public void setValeur(String valeur);
HasSelectionHandlers<Suggestion> getSuggestBoxHasSelectionChangeHandlers();
}
private Vue autoCompletionComboBoxVue;
SuggestOracle.Request requeteOracle;
SuggestOracle.Callback callBackOracle;
Timer suggestionTimer = null;
int tempsAvantRequete = 500;
String urlRequete = "";
public AutoCompletionComboBoxPresenteur(Vue vue, String urlRequete) {
this.autoCompletionComboBoxVue = vue;
this.urlRequete = urlRequete;
gererEvenements();
}
public void go(HasWidgets composite) {
autoCompletionComboBoxVue.ajouterVue(composite);
}
public void gererEvenements() {
autoCompletionComboBoxVue.getSuggestBoxHasKeyPressHandlers().addKeyPressHandler(new KeyPressHandler() {
public void onKeyPress(KeyPressEvent event) {
if(event.getUnicodeCharCode() != 0) {
gererTimer();
}
}
});
requeteOracle = new SuggestOracle.Request();
callBackOracle = new SuggestOracle.Callback() {
 
public void onSuggestionsReady(SuggestOracle.Request request, SuggestOracle.Response response) {
autoCompletionComboBoxVue.afficherListeDeroulante();
}
};
autoCompletionComboBoxVue.getSuggestBoxHasSelectionChangeHandlers().addSelectionHandler(new SelectionHandler<SuggestOracle.Suggestion>(){
@Override
public void onSelection(SelectionEvent<Suggestion> event) {
surSelectionSuggestion(event.getSelectedItem().getReplacementString());
}
});
}
public void gererTimer() {
if(suggestionTimer == null) {
suggestionTimer = new Timer() {
public void run() {
requeteSuggestions();
}
};
suggestionTimer.schedule(tempsAvantRequete);
} else {
suggestionTimer.schedule(tempsAvantRequete);
}
}
public void setTempsAvantRequete(int temps) {
tempsAvantRequete = temps;
}
public int getTempsAvantRequete(int temps) {
return tempsAvantRequete;
}
public String getValeur() {
return autoCompletionComboBoxVue.getValeur();
}
public void setValeur(String taxon) {
autoCompletionComboBoxVue.setValeur(taxon);
}
public void nettoyer() {
autoCompletionComboBoxVue.nettoyer();
}
public void requeteSuggestions() {
final String requete = autoCompletionComboBoxVue.getValeur();
String requeteAjax = effectuerPreTraitementChaineRequete(requete);
String urlProxy = URL.encode(urlRequete+requeteAjax);
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, urlProxy) ;
try {
rb.sendRequest(null, new RequestCallback() {
public void onError(final Request request, final Throwable exception) {
// TODO Auto-generated method stub
}
 
public void onResponseReceived(final Request request,
final Response response) {
surReponseRequete(requete, response);
}
}) ;
 
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void surReponseRequete(String requete, Response response) {
String[] valeurs = parserResultatRequete(response);
autoCompletionComboBoxVue.remplirListe(valeurs);
requeteOracle.setQuery(requete);
autoCompletionComboBoxVue.afficherSuggestions(requeteOracle, callBackOracle);
}
protected void surSelectionSuggestion(String suggestion) {
return;
}
/**
* Permet d'intervenir sur la chaine tapée par l'utilisateur avant que celle-ci ne soit passée
* à la requête asynchrone pour pouvoir la formater (pour mettre en minuscule, séparer des termes)
* par défaut renvoie la chaine telle quelle, à surcharger au besoin
* @param String requete chaine de recherche contenant ce que l'utilisateur à tapé
* @return String une chaine transformée
*/
protected String effectuerPreTraitementChaineRequete(String requete) {
return requete;
}
/**
* Parse les résultats de la requete afin de pouvoir les utiliser à implémenter par le
* composants qui crée la combobox selon le contexte et le web service appelé.
* @param Response la réponse à la requête asynchrone
* @return String[] le tableau des suggestions qui sera affiché dans la combobox
*/
protected abstract String[] parserResultatRequete(Response response);
 
public Vue getAutoCompletionComboBoxVue() {
return autoCompletionComboBoxVue;
}
}
/branches/cel3/src/org/tela_botanica/cel/client/composants/formulaires/AutoCompletionComboBoxVue.java
New file
0,0 → 1,74
package org.tela_botanica.cel.client.composants.formulaires;
 
import com.google.gwt.event.dom.client.HasKeyPressHandlers;
import com.google.gwt.event.logical.shared.HasSelectionHandlers;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.LayoutPanel;
import com.google.gwt.user.client.ui.MultiWordSuggestOracle;
import com.google.gwt.user.client.ui.SuggestBox;
import com.google.gwt.user.client.ui.SuggestOracle;
import com.google.gwt.user.client.ui.SuggestOracle.Suggestion;
import com.google.gwt.view.client.SelectionChangeEvent.HasSelectionChangedHandlers;
 
public class AutoCompletionComboBoxVue extends LayoutPanel implements AutoCompletionComboBoxPresenteur.Vue {
 
MultiWordSuggestOracle msu = new MultiWordSuggestOracle();
SuggestBox suggestions = new SuggestBox(msu);
 
public AutoCompletionComboBoxVue() {
add(suggestions);
//TODO: voir avec greg si la taille doit être définie ici
setHeight("25px");
setWidth("100%");
}
public SuggestBox getSuggestBox() {
return suggestions;
}
public void remplirListe(String[] listePropositions) {
msu.clear();
for (int i = 0; i < listePropositions.length; i++) {
msu.add(listePropositions[i]);
}
}
@Override
public void afficherSuggestions(SuggestOracle.Request requeteOracle, SuggestOracle.Callback callBackOracle) {
msu.requestSuggestions(requeteOracle, callBackOracle);
}
@Override
public void afficherListeDeroulante() {
suggestions.showSuggestionList();
}
public void nettoyer() {
suggestions.setText("");
}
public void setValeur(String taxon) {
suggestions.setValue(taxon);
}
 
@Override
public HasKeyPressHandlers getSuggestBoxHasKeyPressHandlers() {
return suggestions;
}
@Override
public HasSelectionHandlers<Suggestion> getSuggestBoxHasSelectionChangeHandlers() {
return suggestions;
}
 
@Override
public String getValeur() {
return suggestions.getText();
}
 
@Override
public void ajouterVue(HasWidgets composite) {
composite.add(this.asWidget());
}
}
/branches/cel3/src/org/tela_botanica/cel/client/composants/identification/FormulaireIdentificationVue.ui.xml
New file
0,0 → 1,24
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui' ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat'
ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator"
ui:generateLocales="default">
<ui:with field='res' type='org.tela_botanica.cel.client.resources.Ressources' />
<ui:with field="constants" type="org.tela_botanica.cel.client.i18n.Vocabulary" />
 
<ui:style src="identification.css" />
<g:HTMLPanel styleName="{style.zoneIdentification}">
<g:HTMLPanel ui:field="zoneUtilisateur">
<g:Label ui:field="connecter" styleName="{style.connecter}" text="{constants.seConnecter}" />
<g:HorizontalPanel><g:Label ui:field="email" styleName="{style.email}">Email</g:Label><g:Label ui:field="deconnecter" styleName="{style.deconnecter}" text="{constants.seDeconnecter}" /></g:HorizontalPanel>
</g:HTMLPanel>
<g:HTMLPanel ui:field="zoneFormulaire" styleName="{style.zoneFormulaire}">
<g:Label ui:field="erreurIdentification" styleName="{style.erreur}"></g:Label>
<g:Label text="{constants.login}" />
<g:TextBox ui:field="login" styleName="{style.login}" />
<g:Label text="{constants.motdepasse}" />
<g:PasswordTextBox ui:field="motdepasse" styleName="{style.motdepasse}"></g:PasswordTextBox>
<g:Button ui:field="boutonOK">OK</g:Button>
</g:HTMLPanel>
</g:HTMLPanel>
</ui:UiBinder>
/branches/cel3/src/org/tela_botanica/cel/client/composants/identification/FormulaireIdentificationPresenteur.java
New file
0,0 → 1,149
package org.tela_botanica.cel.client.composants.identification;
 
import org.tela_botanica.cel.client.cache.CacheClient;
import org.tela_botanica.cel.client.i18n.I18n;
import org.tela_botanica.cel.client.modeles.Utilisateur;
import org.tela_botanica.cel.client.services.rest.UtilisateurService;
import org.tela_botanica.cel.client.services.rest.UtilisateurServiceConcret;
import org.tela_botanica.cel.client.services.rest.async.UtilisateurCallback;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.event.dom.client.HasKeyPressHandlers;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.event.dom.client.KeyPressHandler;
import com.google.gwt.user.client.ui.HasText;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
 
public class FormulaireIdentificationPresenteur {
public abstract interface Vue extends IsWidget {
public void ajouterVue(HasWidgets composite);
public HasClickHandlers getSeConnecter();
public HasClickHandlers getSeDeconnecter();
public void basculerAffichageFormulaire();
public void basculerModeConnecte(Utilisateur utilisateur);
public HasClickHandlers getBoutonOK();
public HasText getLogin();
public HasText getMotdepasse();
public void afficherErreur();
public void masquerErreur();
public void viderFormulaire();
public void setErreur(String idTexte);
public String getErreur();
public HasKeyPressHandlers getLoginHasKeyPressHandler();
public HasKeyPressHandlers getMotdepasseHasKeyPressHandler();
}
private Vue vue;
private Utilisateur utilisateur;
private UtilisateurService utilisateurService;
public FormulaireIdentificationPresenteur(Vue vue, UtilisateurService utilisateurService) {
this.vue = vue;
this.utilisateurService = utilisateurService;
utilisateurService.obtenirUtilisateur(new UtilisateurCallback() {
@Override
public void surRetourUtilisateur(Utilisateur utilisateur) {
CacheClient.getInstance().setUtilisateur(utilisateur);
rafraichir();
}
});
gererEvenements();
}
public void rafraichir() {
utilisateur = CacheClient.getInstance().getUtilisateur();
vue.basculerModeConnecte(this.utilisateur);
}
public void gererEvenements() {
vue.getSeConnecter().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
vue.basculerAffichageFormulaire();
}
});
vue.getBoutonOK().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
surTentativeLogin();
}
});
vue.getSeDeconnecter().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
deconnecterUtilisateur(utilisateur.getCourriel());
}
});
vue.getLoginHasKeyPressHandler().addKeyPressHandler(creerGestionnaireEvenementToucheEntree());
vue.getMotdepasseHasKeyPressHandler().addKeyPressHandler(creerGestionnaireEvenementToucheEntree());
}
private void surTentativeLogin() {
String login = vue.getLogin().getText();
String motdepasse = vue.getMotdepasse().getText();
if (login.equals("") || motdepasse.equals("")) {
gererErreur("saisirLogin");
} else {
connecterUtilisateur(login, motdepasse);
}
}
public KeyPressHandler creerGestionnaireEvenementToucheEntree() {
return new KeyPressHandler() {
public void onKeyPress(KeyPressEvent event) {
if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) {
surTentativeLogin();
}
}
};
}
public void gererErreur(String erreur) {
vue.setErreur(erreur);
vue.afficherErreur();
}
public void connecterUtilisateur(String login, String motdepasse) {
 
utilisateurService.connecterUtilisateur(login, motdepasse, new UtilisateurCallback() {
@Override
public void surRetourUtilisateur(Utilisateur utilisateur) {
CacheClient.getInstance().setUtilisateur(utilisateur);
if (utilisateur.estIdentifie()) {
vue.masquerErreur();
rafraichir();
vue.basculerAffichageFormulaire();
vue.viderFormulaire();
} else {
vue.setErreur("identificationRefus");
vue.afficherErreur();
}
}
});
}
public void deconnecterUtilisateur(String courriel) {
utilisateurService.deconnecterUtilisateur(courriel, new UtilisateurCallback() {
@Override
public void surRetourUtilisateur(Utilisateur utilisateur) {
CacheClient.getInstance().setUtilisateur(utilisateur);
rafraichir();
}
});
}
public void go(HasWidgets composite) {
vue.ajouterVue(composite);
}
}
/branches/cel3/src/org/tela_botanica/cel/client/composants/identification/FormulaireIdentificationVue.java
New file
0,0 → 1,126
package org.tela_botanica.cel.client.composants.identification;
 
import org.tela_botanica.cel.client.i18n.I18n;
import org.tela_botanica.cel.client.modeles.Utilisateur;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.event.dom.client.HasKeyPressHandlers;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
 
public class FormulaireIdentificationVue extends Composite implements FormulaireIdentificationPresenteur.Vue {
interface Binder extends UiBinder<Widget, FormulaireIdentificationVue> {
}
private static Binder uiBinder = GWT.create(Binder.class);
@UiField
Label connecter, deconnecter, email, erreurIdentification;
@UiField Panel zoneFormulaire;
@UiField Button boutonOK;
@UiField TextBox login, motdepasse;
public FormulaireIdentificationVue() {
initWidget(uiBinder.createAndBindUi(this));
basculerAffichageFormulaire();
connecter.setVisible(false);
erreurIdentification.setVisible(false);
}
@Override
public void ajouterVue(HasWidgets composite) {
composite.add(this.asWidget());
}
 
@Override
public HasClickHandlers getSeConnecter() {
return connecter;
}
 
@Override
public void basculerAffichageFormulaire() {
zoneFormulaire.setVisible(!zoneFormulaire.isVisible());
}
 
@Override
public void basculerModeConnecte(Utilisateur utilisateur) {
boolean estConnecte = utilisateur.estIdentifie();
connecter.setVisible(!estConnecte);
deconnecter.setVisible(estConnecte);
email.setText(utilisateur.getNomPrenomFormate());
email.setVisible(estConnecte);
}
 
@Override
public HasClickHandlers getBoutonOK() {
return boutonOK;
}
 
@Override
public TextBox getLogin() {
return login;
}
 
@Override
public TextBox getMotdepasse() {
return motdepasse;
}
 
@Override
public HasClickHandlers getSeDeconnecter() {
return deconnecter;
}
@Override
public void afficherErreur() {
erreurIdentification.setVisible(true);
}
@Override
public void masquerErreur() {
erreurIdentification.setVisible(false);
}
@Override
public void viderFormulaire() {
login.setText("");
motdepasse.setText("");
}
@Override
public void setErreur(String idTexte) {
String texte = "";
if (idTexte.equals("saisirLogin")) {
texte = I18n.getMessages().saisirLogin();
} else {
texte = I18n.getMessages().identificationRefus();
}
erreurIdentification.setText(texte);
}
public String getErreur() {
return erreurIdentification.getText();
}
 
@Override
public HasKeyPressHandlers getLoginHasKeyPressHandler() {
return login;
}
 
@Override
public HasKeyPressHandlers getMotdepasseHasKeyPressHandler() {
return motdepasse;
}
}
/branches/cel3/src/org/tela_botanica/cel/client/composants/identification/identification.css
New file
0,0 → 1,8
.zoneIdentification {}
.connecter { text-decoration:underline; color:blue; cursor:pointer}
.deconnecter { text-decoration:underline; color:blue; cursor:pointer}
.email {padding-right:10px}
.zoneFormulaire {position:absolute; padding:10px; margin-top:10px; border:solid 2px #8eb533; background:white; box-shadow:2px 2px 2px #666}
.login {}
.motdepasse {}
.erreur {color:red;}
/branches/cel3/src/org/tela_botanica/cel/client/composants/pagination/pagination.css
New file
0,0 → 1,16
.pagination {width:100%;}
.selecteurElements {float:right; width:2em}
.pageCourante {width:2em}
.pagination button {border:none; border-right:solid 1px #DDD; cursor:pointer; width:30px}
.zoneLiens {}
.zoneLiens button:hover {background:#8EB533}
select {background:white}
 
.boutonPrecedent {border:solid 1px #8EB533; width:20px; height:20px; background:url(./img/prev.png) no-repeat}
.boutonSuivant {border:solid 1px #8EB533; width:20px; height:20px; background:url(./img/next.png) no-repeat}
.boutonPremierePage {width:20px; height:20px; background:url(./img/first.png) no-repeat}
.boutonDernierePage {width:20px; height:20px; background:url(./img/last.png) no-repeat}
 
.nombreTotal {margin-left:10px}
.labelSelecteurPas{margin-left:5px;margin-right:5px; margin-top: 3px;}
.labelSelecteurPasAfficher{margin-left:10px;;margin-right:5px; margin-top: 3px;}
/branches/cel3/src/org/tela_botanica/cel/client/composants/pagination/PaginationVue.ui.xml
New file
0,0 → 1,18
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui' ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat' ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator" ui:generateLocales="default">
<ui:with field='res' type='org.tela_botanica.cel.client.resources.Ressources'/>
<ui:with field="constants" type="org.tela_botanica.cel.client.i18n.Vocabulary"/>
<ui:style src="pagination.css" />
<g:HorizontalPanel styleName="{style.pagination}">
<g:Button ui:field="boutonPremierePage" styleName="{style.boutonPremierePage}" text=" " />
<g:Button ui:field="boutonPrecedent" styleName="{style.boutonPrecedent}" text=" " />
<g:TextBox styleName="{style.pageCourante} petit" ui:field="saisiePageCourante"/>
<g:Button ui:field="boutonSuivant" styleName="{style.boutonSuivant}" text=" "/>
<g:Button ui:field="boutonDernierePage" styleName="{style.boutonDernierePage}" text=" " />
<g:Label styleName="{style.nombreTotal}" ui:field="nbTotalPages" />
<g:Label styleName="{style.labelSelecteurPasAfficher} petit" text="{constants.afficher}" />
<g:TextBox ui:field="selecteurPas" styleName="{style.selecteurElements} petit" text="10"/>
<g:Label styleName="{style.labelSelecteurPas} petit" text="{constants.elements_par_page}" />
</g:HorizontalPanel>
</ui:UiBinder>
/branches/cel3/src/org/tela_botanica/cel/client/composants/pagination/PaginationPresenteur.java
New file
0,0 → 1,298
package org.tela_botanica.cel.client.composants.pagination;
 
import org.tela_botanica.cel.client.evenements.BusEvenementiel;
import org.tela_botanica.cel.client.evenements.pagination.EvenementChangementPage;
import org.tela_botanica.cel.client.evenements.pagination.EvenementChangementPas;
import org.tela_botanica.cel.client.evenements.pagination.GestionnaireEvenementChangementPage;
import org.tela_botanica.cel.client.evenements.pagination.GestionnaireEvenementChangementPas;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasChangeHandlers;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
 
/**
* @author gregoire Pagination GENERIQUE qui permet d'afficher un nombre donné
* d'éléments (pas) La méthode changerPage est abstraite et doit être
* définie lors de l'instanciation de la classe pagination pour
* permettre d'afficher la suite des éléments La méthode
* actualiserPasCache est abstraite car le pas est différent en fonction
* de la page où l'on se trouve
* */
public abstract class PaginationPresenteur {
 
public interface Vue extends IsWidget {
public HasClickHandlers getBoutonSuivant();
public HasClickHandlers getBoutonPrecedent();
public HasClickHandlers getBoutonPremierePage();
public HasClickHandlers getBoutonDernierePage();
public void masquerBoutonPrecedent();
public void afficherBoutonPrecedent();
public void masquerBoutonSuivant();
public void afficherBoutonSuivant();
public boolean boutonPrecedentEstAffiche();
public boolean boutonSuivantEstAffiche();
public HasChangeHandlers getSelecteurPas();
public int getPasSelectionne();
public void afficherPas(int pas);
public void mettreNbTotalPages(int nbPages);
public HasChangeHandlers getSaisiePageCourante();
public int getPageSaisie();
public void setPageCourante(int pageCourante);
}
 
private Vue vue;
private int nbPage = 1;
private int pageCourante = 1;
private int nbElementsTotal = 0;
private int pas = 10;
 
private String groupePagination = null;
 
/**
* Constructeur de l'application
*
* @param nbElementsTotal
* : le nombre total des éléments à paginer
* @param pas
* : le nombre d'éléments à afficher par page
* */
public PaginationPresenteur(Vue vue, int nbElementsTotal, int pas, int pageCourante) {
this.nbElementsTotal = nbElementsTotal;
this.vue = vue;
this.pas = pas;
this.pageCourante = pageCourante;
vue.setPageCourante(pageCourante);
this.nbPage = calculerNbPage();
}
 
/**
* Methode go du modèle MVP
*
* @param container
* : la vue ou éxécuter l'affichage
*/
public void go(HasWidgets container) {
container.add(vue.asWidget());
gererEvenements();
actualiserPas();
actualiserAffichageBoutons();
}
 
/**
* Gérer les évènements sur les boutons statiques (précédent, suivant et
* selecteur pas)
* */
protected void gererEvenements() {
vue.getSaisiePageCourante().addChangeHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
int pageSaisie;
try {
pageSaisie = vue.getPageSaisie();
if (pageSaisie < 0) {
pageSaisie = 1;
} else if (pageSaisie > nbPage){
pageSaisie = nbPage;
}
} catch (NumberFormatException e) {
pageSaisie = pageCourante;
}
pageCourante = pageSaisie;
chargerElements(pas * (pageCourante - 1), pas * (pageCourante));
vue.setPageCourante(pageCourante);
actualiserAffichageBoutons();
}
});
vue.getSelecteurPas().addChangeHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
int pasSelectionne;
try {
pasSelectionne = vue.getPasSelectionne();
if (pasSelectionne < 0) {
pasSelectionne = 1;
} else if (pasSelectionne > 99){
pasSelectionne = 99;
}
} catch (NumberFormatException e) {
pasSelectionne = pas;
}
changerPas(pasSelectionne);
}
});
 
vue.getBoutonPrecedent().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
allerALaPagePrecedente();
}
});
 
vue.getBoutonSuivant().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
allerALapageSuivante();
}
});
 
vue.getBoutonPremierePage().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
allerALaPremierePage();
}
});
 
vue.getBoutonDernierePage().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
allerAlaDernierePage();
}
});
 
BusEvenementiel.getInstance().addHandler(EvenementChangementPage.TYPE, new GestionnaireEvenementChangementPage() {
 
@Override
public void onChangementPage(EvenementChangementPage event) {
if (event.getGroupePagination() == groupePagination) {
pageCourante = event.getPageAAfficher();
vue.setPageCourante(pageCourante);
actualiserAffichageBoutons();
}
}
});
 
BusEvenementiel.getInstance().addHandler(EvenementChangementPas.TYPE, new GestionnaireEvenementChangementPas() {
 
@Override
public void onChangementPas(EvenementChangementPas event) {
if (event.getGroupePagination() == groupePagination) {
// modifie le pas et les liens en fonction
pas = event.getPas();
actualiserPas();
}
}
});
}
 
private void gererDecalagePageCourante(int ancienPas, int nouveauPas) {
if (ancienPas != nouveauPas) {
double rapportPas = (double) ancienPas / (double) nouveauPas;
pageCourante = (int) (Math.ceil((double) pageCourante * (double) rapportPas));
}
}
 
public void actualiserPas() {
actualiserPasCache(pas);
vue.afficherPas(pas);
}
 
public int getPageCourante() {
return this.pageCourante;
}
 
public int getPas() {
return this.pas;
}
 
public void setPageCourante(int pageCourante) {
this.pageCourante = pageCourante;
}
 
public void changerPas(int nouveauPas) {
 
// TODO corriger bug qui ne charge pas la bonne page ds certains cas
// gererDecalagePageCourante(pas, nouveauPas);
// pas = nouveauPas;
// chargerElements((pageCourante - 1)*pas, pageCourante*pas);
pas = nouveauPas;
chargerElements(0, pas);
BusEvenementiel.getInstance().fireEvent(new EvenementChangementPas(nouveauPas, groupePagination));
BusEvenementiel.getInstance().fireEvent(new EvenementChangementPage(1, groupePagination));
}
 
public void allerALaPagePrecedente() {
if (pageCourante > 1) {
int pageAAfficher = pageCourante - 1;
pageCourante = pageAAfficher;
chargerElements(pas * (pageAAfficher - 1), pas * (pageAAfficher));
BusEvenementiel.getInstance().fireEvent(new EvenementChangementPage(pageAAfficher, groupePagination));
}
 
}
 
public void allerALapageSuivante() {
if (pageCourante < nbPage) {
int pageAAfficher = pageCourante + 1;
pageCourante = pageAAfficher;
chargerElements(pas * (pageAAfficher - 1), pas * (pageAAfficher));
BusEvenementiel.getInstance().fireEvent(new EvenementChangementPage(pageAAfficher, groupePagination));
}
}
 
public void allerALaPremierePage() {
int pageAAfficher = 1;
pageCourante = pageAAfficher;
chargerElements(0, pas);
BusEvenementiel.getInstance().fireEvent(new EvenementChangementPage(pageAAfficher, groupePagination));
}
 
public void allerAlaDernierePage() {
int pageAAfficher = nbPage;
pageCourante = pageAAfficher;
chargerElements(pas * (pageAAfficher - 1), pas * (pageAAfficher));
BusEvenementiel.getInstance().fireEvent(new EvenementChangementPage(pageAAfficher, groupePagination));
}
 
/** calcule le nombre de page en fonction du pas */
private int calculerNbPage() {
Double nombrePages = Math.ceil((double) nbElementsTotal / (double) pas);
return nombrePages.intValue();
}
 
public void setNbPages(int nbPages) {
this.nbPage = nbPages;
}
 
public int getNbPages() {
return nbPage;
}
 
public Vue getVue() {
return vue;
}
 
public abstract void chargerElements(int debut, int fin);
 
public abstract void actualiserPasCache(int pas);
 
public void setPas(int pas) {
this.pas = pas;
}
 
public void setGroupePagination(String groupePagination) {
this.groupePagination = groupePagination;
}
 
public String getGroupePagination() {
return groupePagination;
}
 
public void actualiserAffichageBoutons() {
if (pageCourante == 1) {
vue.masquerBoutonPrecedent();
vue.afficherBoutonSuivant();
} else {
vue.afficherBoutonPrecedent();
if (pageCourante == nbPage) {
vue.masquerBoutonSuivant();
}
}
}
}
/branches/cel3/src/org/tela_botanica/cel/client/composants/pagination/PaginationVue.java
New file
0,0 → 1,125
package org.tela_botanica.cel.client.composants.pagination;
 
import org.tela_botanica.cel.client.i18n.I18n;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.HasChangeHandlers;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
 
public class PaginationVue extends Composite implements PaginationPresenteur.Vue {
 
@UiField
TextBox saisiePageCourante;
 
@UiField
TextBox selecteurPas;
 
@UiField
Button boutonPrecedent, boutonSuivant, boutonPremierePage, boutonDernierePage;
 
@UiField
Label nbTotalPages;
 
interface MyUiBinder extends UiBinder<Widget, PaginationVue> {
}
 
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
 
public PaginationVue() {
initWidget(uiBinder.createAndBindUi(this));
}
 
public void afficherPas(int pas) {
selecteurPas.setText(String.valueOf(pas));
}
 
public void mettreNbTotalPages(int nbPages) {
nbTotalPages.setText((I18n.getMessages().parmi_nb_pages(nbPages)));
}
 
public void masquerBoutonPrecedent() {
boutonPremierePage.setVisible(false);
boutonPrecedent.setVisible(false);
}
 
public void afficherBoutonPrecedent() {
boutonPremierePage.setVisible(true);
boutonPrecedent.setVisible(true);
}
 
public void masquerBoutonSuivant() {
boutonDernierePage.setVisible(false);
boutonSuivant.setVisible(false);
}
 
public void afficherBoutonSuivant() {
boutonDernierePage.setVisible(true);
boutonSuivant.setVisible(true);
}
 
public TextBox getSelecteurPas() {
return selecteurPas;
}
 
@Override
public HasChangeHandlers getSaisiePageCourante() {
return saisiePageCourante;
}
 
@Override
public HasClickHandlers getBoutonSuivant() {
return boutonSuivant;
}
 
@Override
public HasClickHandlers getBoutonPrecedent() {
return boutonPrecedent;
}
 
@Override
public HasClickHandlers getBoutonPremierePage() {
return boutonPremierePage;
}
 
@Override
public HasClickHandlers getBoutonDernierePage() {
return boutonDernierePage;
}
 
@Override
public int getPasSelectionne() throws NumberFormatException {
return Integer.parseInt(selecteurPas.getText());
}
 
@Override
public boolean boutonPrecedentEstAffiche() {
return boutonPrecedent.isVisible() && boutonPremierePage.isVisible();
}
 
@Override
public boolean boutonSuivantEstAffiche() {
return boutonSuivant.isVisible() && boutonDernierePage.isVisible();
}
 
public Label getNbTotalPages() {
return nbTotalPages;
}
 
@Override
public int getPageSaisie() throws NumberFormatException {
return Integer.parseInt(saisiePageCourante.getText());
}
@Override
public void setPageCourante(int pageCourante) {
saisiePageCourante.setText(String.valueOf(pageCourante));
}
 
}
/branches/cel3/src/org/tela_botanica/cel/client/modeles/ImageServiceResultat.java
New file
0,0 → 1,61
package org.tela_botanica.cel.client.modeles;
 
import java.util.ArrayList;
import java.util.List;
 
import org.tela_botanica.cel.client.utils.UtilitairesServiceResultat;
 
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONValue;
 
public class ImageServiceResultat {
 
private List<Image> images;
 
private int nbTotalImagesPourLaRecherche;
 
public ImageServiceResultat(JSONValue retourJson) {
 
try {
// TODO ajouter vérifications plus précises
double total = retourJson.isObject().get("total").isNumber().doubleValue();
nbTotalImagesPourLaRecherche = (int) total;
 
JSONArray tableauObs = retourJson.isObject().get("contenu").isArray();
images = new ArrayList<Image>();
 
int nbResultats = tableauObs.size();
for (int i = 0; i < nbResultats; i++) {
 
JSONObject imageJson = tableauObs.get(i).isObject();
Image image = UtilitairesServiceResultat.parserImageJSON(imageJson);
 
if (imageJson.get("observation") != null && imageJson.get("observation").isObject() != null) {
JSONObject observationJson = imageJson.get("observation").isObject();
image.setObservation(UtilitairesServiceResultat.parserObservationEtCreerPropositionDetermination(observationJson));
}
 
images.add(image);
}
} catch (Exception e) {
 
}
}
 
public List<Image> getImages() {
return images;
}
 
public void setImages(List<Image> images) {
this.images = images;
}
 
public int getNbTotalImagesPourLaRecherche() {
return nbTotalImagesPourLaRecherche;
}
 
public void setNbTotalImagesPourLaRecherche(int nbTotalImagesPourLaRecherche) {
this.nbTotalImagesPourLaRecherche = nbTotalImagesPourLaRecherche;
}
}
/branches/cel3/src/org/tela_botanica/cel/client/modeles/Utilisateur.java
New file
0,0 → 1,58
package org.tela_botanica.cel.client.modeles;
 
public class Utilisateur {
 
private String nom = "";
private String prenom = "";
private String courriel = "";
private String id = "0";
private boolean identifie = false;
public Utilisateur(String id) {
this.id = id;
}
public Utilisateur(String id, String prenom, String nom, String courriel) {
this(id);
this.prenom = prenom;
this.nom = nom;
this.courriel = courriel;
identifie = true;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public String getPrenom() {
return prenom;
}
public void setPrenom(String prenom) {
this.prenom = prenom;
}
public String getCourriel() {
return courriel;
}
public void setCourriel(String courriel) {
this.courriel = courriel;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public boolean estIdentifie() {
return identifie;
}
public void setIdentifie(boolean identifie) {
this.identifie = identifie;
}
public String getNomPrenomFormate() {
//TODO: chaine pour anonyme dans i18n
return identifie ? prenom+" "+nom : "";
}
}
/branches/cel3/src/org/tela_botanica/cel/client/modeles/Observation.java
New file
0,0 → 1,206
package org.tela_botanica.cel.client.modeles;
 
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
 
public class Observation implements Serializable {
 
private static final long serialVersionUID = 840032625524143547L;
private String id, ordre, auteur, nomSaisi, nomRetenu, famille, dateTransmission,
latitude, longitude, referentielGeo, lieuDit, milieu, station, localite, idLocalite,
numNomenclaturalNomRetenu, numNomenclaturalNomSaisi, nomCommun, commentaire, dateReleve;
 
private List<String> motsCles = new ArrayList<String>();
private List<Image> images = new ArrayList<Image>();
 
public String getAuteur() {
return auteur;
}
 
public void setAuteur(String auteur) {
this.auteur = auteur;
}
public String getNomSaisi() {
return nomSaisi;
}
 
public void setNomSaisi(String nomSaisi) {
this.nomSaisi = nomSaisi;
}
 
public String getNomRetenu() {
return nomRetenu;
}
 
public void setNomRetenu(String nomRetenu) {
this.nomRetenu = nomRetenu;
}
 
public String getNomCommun() {
return nomCommun;
}
public void setNomCommun(String nomCommun) {
this.nomCommun = nomCommun;
}
public String getLieuDit() {
return this.lieuDit;
}
public void setLieuDit(String lieuDit) {
this.lieuDit = lieuDit;
}
public String getStation() {
return this.station;
}
public void setStation(String station) {
this.station = station;
}
public String getMilieu() {
return milieu;
}
public void setMilieu(String milieu) {
this.milieu = milieu;
}
public String getCommentaire() {
return commentaire;
}
public void setCommentaire(String commentaire) {
this.commentaire = commentaire;
}
public String getFamille() {
return famille;
}
 
public void setFamille(String famille) {
this.famille = famille;
}
 
public String getIdLocalite() {
return idLocalite;
}
 
public void setIdLocalite(String idlocalite) {
this.idLocalite = idlocalite;
}
public String getLocalite() {
return localite;
}
public String getLocaliteAvecIdFormatee() {
String localiteFormatee = this.localite;
if(idLocalite != null && idLocalite.length() >= 2) {
localiteFormatee += " ("+idLocalite.substring(0, 2)+")";
}
return localiteFormatee;
}
 
public void setLocalite(String localite) {
this.localite = localite;
}
 
public String getDateTransmission() {
return dateTransmission;
}
public void setDateTransmission(String date) {
this.dateTransmission = date;
}
 
public String getDateReleve() {
return dateReleve;
}
public void setDateReleve(String dateReleve) {
this.dateReleve = dateReleve;
}
public String getNumNomenclaturalNomRetenu() {
return numNomenclaturalNomRetenu;
}
 
public void setNumNomenclaturalNomRetenu(String numNomenclaturalNomRetenu) {
this.numNomenclaturalNomRetenu = numNomenclaturalNomRetenu;
}
public String getNumNomenclaturalNomSaisi() {
return numNomenclaturalNomSaisi;
}
 
public void setNumNomenclaturalNomSaisi(String numNomenclaturalNomSaisi) {
this.numNomenclaturalNomSaisi = numNomenclaturalNomSaisi;
}
public void setLatitude(String latitude) {
this.latitude = latitude;
}
public String getLatitude() {
return latitude;
}
public void setLongitude(String longitude) {
this.longitude = longitude;
}
public String getLongitude() {
return longitude;
}
public String getReferentielGeo() {
return referentielGeo;
}
 
public List<String> getMotsCles() {
return motsCles;
}
 
public void setMotsCles(List<String> motsCles) {
this.motsCles = motsCles;
}
public void ajouterMotsClef(String motsCles) {
if (this.motsCles == null) {
this.motsCles = new ArrayList<String>();
}
this.motsCles.add(motsCles);
}
 
public List<Image> getImages() {
return images;
}
 
public void setImages(List<Image> images) {
this.images = images;
}
public String getOrdre() {
return ordre;
}
 
public void setOrdre(String ordre) {
this.ordre = ordre;
}
 
public String getId() {
return id;
}
 
public void setId(String id) {
this.id = id;
}
 
}
/branches/cel3/src/org/tela_botanica/cel/client/modeles/ObservationServiceResultat.java
New file
0,0 → 1,64
package org.tela_botanica.cel.client.modeles;
 
import java.util.ArrayList;
import java.util.List;
 
import org.tela_botanica.cel.client.utils.UtilitairesServiceResultat;
 
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONValue;
 
public class ObservationServiceResultat {
private List<Observation> observations;
private int nbTotalObservationsPourLaRecherche;
 
public ObservationServiceResultat(JSONValue retourJson) {
//TODO ajouter vérifications plus précises
double total = retourJson.isObject().get("total").isNumber().doubleValue();
nbTotalObservationsPourLaRecherche = (int) total;
JSONArray tableauObs = retourJson.isObject().get("contenu").isArray();
observations = new ArrayList<Observation>();
int nbResultats = tableauObs.size();
for (int i = 0; i < nbResultats; i++) {
JSONObject observationJson = tableauObs.get(i).isObject();
Observation observation = UtilitairesServiceResultat.parserObservationEtCreerPropositionDetermination(observationJson);
JSONArray tableauImagesObs = observationJson.get("images").isArray();
List<Image> imagesPourObs = new ArrayList<Image>();
int nbImages = tableauImagesObs.size();
for (int j = 0; j < nbImages; j++) {
JSONObject imageJson = tableauImagesObs.get(j).isObject();
Image image = UtilitairesServiceResultat.parserImageJSON(imageJson);
image.setObservation(observation);
imagesPourObs.add(image);
}
observation.setImages(imagesPourObs);
observations.add(observation);
}
}
 
public List<Observation> getObservations() {
return observations;
}
 
public void setObservations(List<Observation> observations) {
this.observations = observations;
}
 
public int getNbTotalObservationsPourLaRecherche() {
return nbTotalObservationsPourLaRecherche;
}
 
public void setNbTotalObservationsPourLaRecherche(int nbTotalObservationsPourLaRecherche) {
this.nbTotalObservationsPourLaRecherche = nbTotalObservationsPourLaRecherche;
}
}
/branches/cel3/src/org/tela_botanica/cel/client/modeles/InformationsRecherche.java
New file
0,0 → 1,123
package org.tela_botanica.cel.client.modeles;
 
import com.google.gwt.http.client.URL;
 
public class InformationsRecherche {
 
private String rechercheLibre;
 
private String departement;
 
private String taxon;
 
private String genre;
 
private String motClef;
 
private String date;
 
private String commune;
 
private String famille;
 
private String tag;
 
public String getRechercheLibre() {
return rechercheLibre;
}
 
public void setRechercheLibre(String rechercheLibre) {
this.rechercheLibre = rechercheLibre;
}
 
public String getDepartement() {
return departement;
}
 
public void setDepartement(String departement) {
this.departement = departement;
}
 
public String getTaxon() {
return taxon;
}
 
public void setTaxon(String taxon) {
this.taxon = taxon;
}
 
public String getGenre() {
return genre;
}
 
public void setGenre(String genre) {
this.genre = genre;
}
 
public String getMotClef() {
return motClef;
}
 
public void setMotClef(String motClef) {
this.motClef = motClef;
}
 
public String getDate() {
return date;
}
 
public void setDate(String date) {
this.date = date;
}
 
public String getCommune() {
return commune;
}
 
public void setCommune(String commune) {
String[] tableauCommuneDpt = commune.split(" ");
if (tableauCommuneDpt.length == 2) {
String dpt = tableauCommuneDpt[1].replaceAll("\\(", "").replaceAll("\\)", "");
setDepartement(dpt);
this.commune = tableauCommuneDpt[0];
} else {
this.commune = commune;
}
 
}
 
public String getFamille() {
return famille;
}
 
public void setFamille(String famille) {
this.famille = famille;
}
 
public String getTag() {
return tag;
}
 
public void setTag(String tag) {
this.tag = tag;
}
 
public String versChaineRequete() {
String chaine = "";
chaine += estNonNull(rechercheLibre) ? "&recherche=" + URL.encode(rechercheLibre) : "";
chaine += estNonNull(departement) ? "&dpt=" + URL.encode(departement) : "";
chaine += estNonNull(taxon) ? "&taxon=" + URL.encode(taxon) : "";
chaine += estNonNull(genre) ? "&genre=" + URL.encode(genre) : "";
chaine += estNonNull(motClef) ? "&mot_cle=" + URL.encode(motClef) : "";
chaine += estNonNull(date) ? "&date=" + URL.encode(date) : "";
chaine += estNonNull(commune) ? "&commune=" + URL.encode(commune) : "";
chaine += estNonNull(famille) ? "&famille=" + URL.encode(famille) : "";
chaine += estNonNull(tag) ? "&tag=" + URL.encode(tag) : "";
 
return chaine;
}
 
private boolean estNonNull(String critere) {
return critere != null && !critere.trim().isEmpty();
}
}
/branches/cel3/src/org/tela_botanica/cel/client/modeles/Image.java
New file
0,0 → 1,58
package org.tela_botanica.cel.client.modeles;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import com.google.gwt.user.client.Window;
 
public class Image {
 
private String idImage;
private Observation observation;
private String url;
private String urlFormat;
private String miniature;
 
public String getUrl() {
return url;
}
 
public String getMiniature() {
return miniature;
}
 
public String getUrlFormat(String format) {
return urlFormat.replaceAll("%s%", format);
}
 
public void setUrlFormat(String urlFormat) {
this.urlFormat = urlFormat;
}
 
public void setUrl(String url) {
this.url = url;
}
 
public void setMiniature(String url) {
miniature = url;
}
 
public String getIdImage() {
return idImage;
}
 
public void setIdImage(String idImage) {
this.idImage = idImage;
}
 
public Observation getObservation() {
return observation;
}
 
public void setObservation(Observation observation) {
this.observation = observation;
}
 
}
/branches/cel3/src/org/tela_botanica/cel/client/evenements/rechercheobservation/GestionnaireEvenementRechercheObservation.java
New file
0,0 → 1,8
package org.tela_botanica.cel.client.evenements.rechercheobservation;
 
 
import com.google.gwt.event.shared.EventHandler;
 
public interface GestionnaireEvenementRechercheObservation extends EventHandler {
public void onRechercheObservation(EvenementRechercheObservation event);
}
/branches/cel3/src/org/tela_botanica/cel/client/evenements/rechercheobservation/EvenementRechercheObservation.java
New file
0,0 → 1,22
package org.tela_botanica.cel.client.evenements.rechercheobservation;
 
import com.google.gwt.event.shared.GwtEvent;
 
public class EvenementRechercheObservation extends GwtEvent<GestionnaireEvenementRechercheObservation> {
 
public static com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementRechercheObservation> TYPE = new com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementRechercheObservation>();
 
public EvenementRechercheObservation() {
}
 
@Override
protected void dispatch(GestionnaireEvenementRechercheObservation handler) {
handler.onRechercheObservation(this);
}
 
@Override
public com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementRechercheObservation> getAssociatedType() {
return TYPE;
}
 
}
/branches/cel3/src/org/tela_botanica/cel/client/evenements/pagination/EvenementChangementPage.java
New file
0,0 → 1,46
package org.tela_botanica.cel.client.evenements.pagination;
 
import com.google.gwt.event.shared.GwtEvent;
 
public class EvenementChangementPage extends GwtEvent<GestionnaireEvenementChangementPage> {
 
public static com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementChangementPage> TYPE = new com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementChangementPage>();
 
private int pageAAfficher;
private String groupePagination = null;
 
public EvenementChangementPage(int pageAAfficher) {
this.pageAAfficher = pageAAfficher;
}
public EvenementChangementPage(int pageAAfficher, String groupePagination) {
this.pageAAfficher = pageAAfficher;
this.groupePagination = groupePagination;
}
 
@Override
protected void dispatch(GestionnaireEvenementChangementPage handler) {
handler.onChangementPage(this);
}
 
@Override
public com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementChangementPage> getAssociatedType() {
return TYPE;
}
 
public int getPageAAfficher() {
return pageAAfficher;
}
 
public void setPageAAfficher(int pageAAfficher) {
this.pageAAfficher = pageAAfficher;
}
public String getGroupePagination() {
return groupePagination;
}
 
public void setGroupePagination(String groupePagination) {
this.groupePagination = groupePagination;
}
}
/branches/cel3/src/org/tela_botanica/cel/client/evenements/pagination/EvenementChangementPas.java
New file
0,0 → 1,47
package org.tela_botanica.cel.client.evenements.pagination;
 
import com.google.gwt.event.shared.GwtEvent;
 
public class EvenementChangementPas extends GwtEvent<GestionnaireEvenementChangementPas> {
 
public static com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementChangementPas> TYPE = new com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementChangementPas>();
 
private int pas;
private String groupePagination = null;
 
public EvenementChangementPas(int pas) {
this.pas = pas;
}
public EvenementChangementPas(int pas, String groupePagination) {
this.pas = pas;
this.groupePagination = groupePagination;
}
 
@Override
protected void dispatch(GestionnaireEvenementChangementPas handler) {
handler.onChangementPas(this);
}
 
@Override
public com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementChangementPas> getAssociatedType() {
return TYPE;
}
 
public int getPas() {
return pas;
}
 
public void setPas(int pas) {
this.pas = pas;
}
public String getGroupePagination() {
return groupePagination;
}
 
public void setGroupePagination(String groupePagination) {
this.groupePagination = groupePagination;
}
 
}
/branches/cel3/src/org/tela_botanica/cel/client/evenements/pagination/GestionnaireEvenementChangementPage.java
New file
0,0 → 1,7
package org.tela_botanica.cel.client.evenements.pagination;
 
import com.google.gwt.event.shared.EventHandler;
 
public interface GestionnaireEvenementChangementPage extends EventHandler {
public void onChangementPage(EvenementChangementPage event);
}
/branches/cel3/src/org/tela_botanica/cel/client/evenements/pagination/GestionnaireEvenementChangementPas.java
New file
0,0 → 1,7
package org.tela_botanica.cel.client.evenements.pagination;
 
import com.google.gwt.event.shared.EventHandler;
 
public interface GestionnaireEvenementChangementPas extends EventHandler {
public void onChangementPas(EvenementChangementPas event);
}
/branches/cel3/src/org/tela_botanica/cel/client/evenements/BusEvenementiel.java
New file
0,0 → 1,56
package org.tela_botanica.cel.client.evenements;
 
import org.tela_botanica.cel.client.evenements.rechercheimage.EvenementRechercheImage;
import org.tela_botanica.cel.client.evenements.rechercheimage.GestionnaireEvenementRechercheImage;
import org.tela_botanica.cel.client.evenements.rechercheobservation.EvenementRechercheObservation;
import org.tela_botanica.cel.client.evenements.rechercheobservation.GestionnaireEvenementRechercheObservation;
 
import com.google.gwt.event.shared.HandlerManager;
 
public class BusEvenementiel extends HandlerManager {
 
private static BusEvenementiel instance;
 
private BusEvenementiel() {
super(null);
instance = this;
creerHandler();
}
 
public static BusEvenementiel getInstance() {
if (instance == null) {
instance = new BusEvenementiel();
}
return instance;
}
 
private void creerHandler() {
 
addHandler(EvenementRechercheImage.TYPE, new GestionnaireEvenementRechercheImage() {
 
@Override
public void onRechercheImage(EvenementRechercheImage event) {
doRechercheImage();
}
});
 
addHandler(EvenementRechercheObservation.TYPE, new GestionnaireEvenementRechercheObservation() {
 
@Override
public void onRechercheObservation(EvenementRechercheObservation event) {
doRechercheObservation();
 
}
});
 
}
 
private void doRechercheImage() {
}
 
private void doRechercheObservation() {
}
 
}
/branches/cel3/src/org/tela_botanica/cel/client/evenements/rechercheimage/GestionnaireEvenementRechercheImage.java
New file
0,0 → 1,8
package org.tela_botanica.cel.client.evenements.rechercheimage;
 
 
import com.google.gwt.event.shared.EventHandler;
 
public interface GestionnaireEvenementRechercheImage extends EventHandler {
public void onRechercheImage(EvenementRechercheImage event);
}
/branches/cel3/src/org/tela_botanica/cel/client/evenements/rechercheimage/EvenementRechercheImage.java
New file
0,0 → 1,22
package org.tela_botanica.cel.client.evenements.rechercheimage;
 
import com.google.gwt.event.shared.GwtEvent;
 
public class EvenementRechercheImage extends GwtEvent<GestionnaireEvenementRechercheImage> {
 
public static com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementRechercheImage> TYPE = new com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementRechercheImage>();
 
public EvenementRechercheImage() {
}
 
@Override
protected void dispatch(GestionnaireEvenementRechercheImage handler) {
handler.onRechercheImage(this);
}
 
@Override
public com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementRechercheImage> getAssociatedType() {
return TYPE;
}
 
}
/branches/cel3/src/org/tela_botanica/cel/client/resources/Ressources.java
New file
0,0 → 1,19
package org.tela_botanica.cel.client.resources;
 
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.ImageResource;
 
/**
* Resources used by the entire application.
*/
public interface Ressources extends ClientBundle {
 
@Source("logo.jpg")
ImageResource logo();
 
@Source("flecheGauche.png")
ImageResource arrowLeft();
 
@Source("flecheDroite.png")
ImageResource arrowRight();
}
/branches/cel3/src/org/tela_botanica/cel/client/resources/logo.jpg
Cannot display: file marked as a binary type.
svn:mime-type = image/jpeg
/branches/cel3/src/org/tela_botanica/cel/client/resources/logo.jpg
New file
Property changes:
Added: svn:mime-type
+image/jpeg
\ No newline at end of property
/branches/cel3/src/org/tela_botanica/cel/client/resources/flecheDroite.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/branches/cel3/src/org/tela_botanica/cel/client/resources/flecheDroite.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/branches/cel3/src/org/tela_botanica/cel/client/resources/flecheGauche.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/branches/cel3/src/org/tela_botanica/cel/client/resources/flecheGauche.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/branches/cel3/src/org/tela_botanica/cel/client/i18n/I18n.java
New file
0,0 → 1,18
package org.tela_botanica.cel.client.i18n;
 
import com.google.gwt.core.client.GWT;
 
public class I18n {
public I18n() {
}
 
public static Vocabulary getVocabulary() {
return (Vocabulary) GWT.create(Vocabulary.class);
}
 
public static Messages getMessages() {
return (Messages) GWT.create(Messages.class);
}
 
}
/branches/cel3/src/org/tela_botanica/cel/client/i18n/Messages.properties
New file
0,0 → 1,6
rechercher_taxon=Rechercher le taxon {0}
 
#composant pagination
parmi_nb_pages = Parmi {0} pages
identificationRefus = Identification refusée
saisirLogin = Vous devez saisir un login et un mot de passe
/branches/cel3/src/org/tela_botanica/cel/client/i18n/Vocabulary.properties
New file
0,0 → 1,130
###########################################################################################
# ATTENTION : le fichier doit être en UTF-8 ! #
# Pour la nomenclature, nommer comme en JAVA puisque ça devient des méthodes : #
# Ex : #
# monLabelPerso = Ma définition #
###########################################################################################
 
# COMMUN
oui = oui
non = non
accepter = Valider
annuler = Annuler
chargement = Chargement
ok = ok
fermer = Fermer
vider = Vider
moyenne = Moyenne
nombreVotes = Nb votes
observateur = Observateur
nomRetenu = Nom retenu
date = Date
famille = Famille
localite = Localite
nom = Nom
auteur = Publié par
protocole = Protocole
protocoleDefaut = Protocole par défaut
labelProtocole = Choisir un protocole
vous = Vous
contributeur= Contributeur
commentaire = Commentaire
commentaires= Commentaires
autre = Autre
nomCommun = Nom commun
lieuDit = Lieu dit
milieu = Milieu
dateReleve = Le
dateTransmission = Transmis le
motdepasse = Mot de passe
login = Login
seConnecter = Se connecter
seDeconnecter = Se déconnecter
aucunResultat = Aucun resultat trouvé
par = par
publiee = Publiée le
 
#ecran recherche image
rechercherImage = Rechercher une image
entrerMotClef = Recherchez par espèce, genre, famille, numéro ou nom de département, commune, auteur ou mot-clé.
rechercherTaxon = Rechercher le taxon
tri = Tri :
triParNbVotes = Votes
triParDate = Date
triParNbVotesAscendant = Tri par nombre de votes du maximum au minimum
triParDateAscendant = Tri par date du plus ancien au plus récent
triParNbVotesDescendant = Tri par nombre de votes du minimum au maximum
triParDateDescendant = Tri par date du plus récent au plus ancien
introRechercheImages = Cette galerie vous permet de rechercher les illustrations des membres du réseau issues du carnet en ligne... et de voter pour la qualité des images selon un protocole défini.
 
#ecran recherche observation
rechercherObservation = Identifier une plante
introRechercheObservations = Cet espace vous permet d'échanger sur la détermination d'espèces. Vous ne parvenez pas à déterminer une plante? Soumettez la aux membres du réseau. Vous avez relevé des erreurs dans les images soumises par le réseau? Postez un commentaire ou proposez une nouvelle determination.
 
 
 
#ecran determination
proposerSaDetermination = Proposer votre détermination
infoProposerDetermination = Pour proposer une détermination, remplissez les champs ci-dessous et cliquez sur le bouton Proposer !
boutonProposer = Valider ma détermination
infoVous = Vos nom et prénom
fiabilite = Fiabilite
infoFiabilite = Indiquez votre niveau de certitude vis-à-vis de votre proposition.
autresInformations = Autres informations
choisirUnTaxon = Choisir un taxon
infoTaxon = <b>Saisissez <b>un nouveau nom</b> dans le champ ci-après.
autreProposition = Autre Proposition
confianceSimpleSuggestion = Simple Suggestion
confianceProbable = Probable
confianceSurCent = Sûr à 100%
comparer = Comparer cette image
infoComparer = Vous pouvez comparer cette image à d'autres photos. Saisissez le nom de l'espèce et cliquez sur OK
lesPropositions = Propositions
infoPropositions = D'autres utilisateurs ont laissé une détermination
 
#ecran comparaison
dateObservation = Date de la prise de vue
taxonADeterminer = Taxon à déterminer
imageEflore = Photos d'eFlore
metadonneesPhoto = Meta-donnees de la photo
motsClefs = Mots-clés
validePar = Validé par
dateValidation = Date de dernière validation
transmisLe = Transmis le
 
#ecran votes protcoles
votes = Moyenne des votes
infoVotes = Voici la moyenne des votes en fonction du protocole choisi :
protocoleEsthetisme = Esthétisme
protocoleIdentificationAuto = Identification automatique
monVote = Mon vote
nbVotes = vote(s)
votez = Votez
 
#composant recherche simple
rechercher = Rechercher
rechercheLibre=Recherche libre
 
#composant recherche avancee
rechercheAvancee= Recherche avancée
contientMots = Contient les mots
departement = Département (numéro ou nom)
taxon = Espèce
genre = Genre
mot_clef= Mot-clé
date= Date
commune = Commune
famille = Famille (Latin)
tag = Tag
 
 
#composant pagination
afficher = Afficher
elements_par_page = éléments par page
 
#utilisateur
nom = Nom
prenom = Prénom
courriel = Courriel
anonyme = Anonyme
identifie = Identifié
/branches/cel3/src/org/tela_botanica/cel/client/i18n/VocabularyConsumer.java
New file
0,0 → 1,18
package org.tela_botanica.cel.client.i18n;
 
import com.google.gwt.core.client.GWT;
 
public class VocabularyConsumer {
public VocabularyConsumer() {
}
 
public static Vocabulary getVocabulary() {
return (Vocabulary) GWT.create(Vocabulary.class);
}
 
public static Messages getMessages() {
return (Messages) GWT.create(Messages.class);
}
 
}
/branches/cel3/src/org/tela_botanica/cel/client/i18n/Messages_en.properties
--- src/org/tela_botanica/cel/client/i18n/Vocabulary_en.properties (revision 0)
+++ src/org/tela_botanica/cel/client/i18n/Vocabulary_en.properties (revision 1024)
@@ -0,0 +1,3 @@
+#sample constant property to be translated in language specific versions of this property file
+
+
/branches/cel3/src/org/tela_botanica/cel/client/i18n/Messages.java
New file
0,0 → 1,16
package org.tela_botanica.cel.client.i18n;
 
/**
* Interface to represent the constants contained in resource bundle:
* 'D:/dev/svn/del/src/org/tela_botanica/del/client/i18n/Messages.properties'.
*/
public interface Messages extends com.google.gwt.i18n.client.Messages {
 
String rechercher_taxon(String nomTaxon);
 
String parmi_nb_pages(int nbPages);
String saisirLogin();
String identificationRefus();
}
/branches/cel3/src/org/tela_botanica/cel/client/i18n/Vocabulary.java
New file
0,0 → 1,890
package org.tela_botanica.cel.client.i18n;
 
/**
* Interface to represent the constants contained in resource bundle:
* '/home/aurelien/web/del/src/org/tela_botanica/del/client/i18n/Vocabulary.properties'.
*/
public interface Vocabulary extends com.google.gwt.i18n.client.Constants {
/**
* Translated "Valider".
*
* @return translated "Valider"
*/
@DefaultStringValue("Valider")
@Key("accepter")
String accepter();
 
/**
* Translated "Afficher".
*
* @return translated "Afficher"
*/
@DefaultStringValue("Afficher")
@Key("afficher")
String afficher();
 
/**
* Translated "Annuler".
*
* @return translated "Annuler"
*/
@DefaultStringValue("Annuler")
@Key("annuler")
String annuler();
 
/**
* Translated "Anonyme".
*
* @return translated "Anonyme"
*/
@DefaultStringValue("Anonyme")
@Key("anonyme")
String anonyme();
 
/**
* Translated "Aucun resultat trouvé".
*
* @return translated "Aucun resultat trouvé"
*/
@DefaultStringValue("Aucun resultat trouvé")
@Key("aucunResultat")
String aucunResultat();
 
/**
* Translated "Publié par".
*
* @return translated "Publié par"
*/
@DefaultStringValue("Publié par")
@Key("auteur")
String auteur();
 
/**
* Translated "Autre".
*
* @return translated "Autre"
*/
@DefaultStringValue("Autre")
@Key("autre")
String autre();
 
/**
* Translated "Autre Proposition".
*
* @return translated "Autre Proposition"
*/
@DefaultStringValue("Autre Proposition")
@Key("autreProposition")
String autreProposition();
 
/**
* Translated "Autres informations ".
*
* @return translated "Autres informations "
*/
@DefaultStringValue("Autres informations ")
@Key("autresInformations")
String autresInformations();
 
/**
* Translated "Valider ma détermination".
*
* @return translated "Valider ma détermination"
*/
@DefaultStringValue("Valider ma détermination")
@Key("boutonProposer")
String boutonProposer();
 
/**
* Translated "Chargement".
*
* @return translated "Chargement"
*/
@DefaultStringValue("Chargement")
@Key("chargement")
String chargement();
 
/**
* Translated "Choisir un taxon".
*
* @return translated "Choisir un taxon"
*/
@DefaultStringValue("Choisir un taxon")
@Key("choisirUnTaxon")
String choisirUnTaxon();
 
/**
* Translated "Commentaire".
*
* @return translated "Commentaire"
*/
@DefaultStringValue("Commentaire")
@Key("commentaire")
String commentaire();
 
/**
* Translated "Commentaires".
*
* @return translated "Commentaires"
*/
@DefaultStringValue("Commentaires")
@Key("commentaires")
String commentaires();
 
/**
* Translated "Commune".
*
* @return translated "Commune"
*/
@DefaultStringValue("Commune")
@Key("commune")
String commune();
 
/**
* Translated "Comparer cette image".
*
* @return translated "Comparer cette image"
*/
@DefaultStringValue("Comparer cette image")
@Key("comparer")
String comparer();
 
/**
* Translated "Probable".
*
* @return translated "Probable"
*/
@DefaultStringValue("Probable")
@Key("confianceProbable")
String confianceProbable();
 
/**
* Translated "Simple Suggestion".
*
* @return translated "Simple Suggestion"
*/
@DefaultStringValue("Simple Suggestion")
@Key("confianceSimpleSuggestion")
String confianceSimpleSuggestion();
 
/**
* Translated "Sûr à 100%".
*
* @return translated "Sûr à 100%"
*/
@DefaultStringValue("Sûr à 100%")
@Key("confianceSurCent")
String confianceSurCent();
 
/**
* Translated "Contient les mots".
*
* @return translated "Contient les mots"
*/
@DefaultStringValue("Contient les mots")
@Key("contientMots")
String contientMots();
 
/**
* Translated "Contributeur".
*
* @return translated "Contributeur"
*/
@DefaultStringValue("Contributeur")
@Key("contributeur")
String contributeur();
 
/**
* Translated "Courriel".
*
* @return translated "Courriel"
*/
@DefaultStringValue("Courriel")
@Key("courriel")
String courriel();
 
/**
* Translated "Date".
*
* @return translated "Date"
*/
@DefaultStringValue("Date")
@Key("date")
String date();
 
/**
* Translated "Date de la prise de vue".
*
* @return translated "Date de la prise de vue"
*/
@DefaultStringValue("Date de la prise de vue")
@Key("dateObservation")
String dateObservation();
 
/**
* Translated "Le".
*
* @return translated "Le"
*/
@DefaultStringValue("Le")
@Key("dateReleve")
String dateReleve();
 
/**
* Translated "Transmis le".
*
* @return translated "Transmis le"
*/
@DefaultStringValue("Transmis le")
@Key("dateTransmission")
String dateTransmission();
 
/**
* Translated "Date de dernière validation".
*
* @return translated "Date de dernière validation"
*/
@DefaultStringValue("Date de dernière validation")
@Key("dateValidation")
String dateValidation();
 
/**
* Translated "Département (numéro ou nom)".
*
* @return translated "Département (numéro ou nom)"
*/
@DefaultStringValue("Département (numéro ou nom)")
@Key("departement")
String departement();
 
/**
* Translated "éléments par page".
*
* @return translated "éléments par page"
*/
@DefaultStringValue("éléments par page")
@Key("elements_par_page")
String elements_par_page();
 
/**
* Translated "Recherchez par espèce, genre, famille, numéro ou nom de département, commune, auteur ou mot-clé.".
*
* @return translated "Recherchez par espèce, genre, famille, numéro ou nom de département, commune, auteur ou mot-clé."
*/
@DefaultStringValue("Recherchez par espèce, genre, famille, numéro ou nom de département, commune, auteur ou mot-clé.")
@Key("entrerMotClef")
String entrerMotClef();
 
/**
* Translated "Famille (Latin)".
*
* @return translated "Famille (Latin)"
*/
@DefaultStringValue("Famille (Latin)")
@Key("famille")
String famille();
 
/**
* Translated "Fermer".
*
* @return translated "Fermer"
*/
@DefaultStringValue("Fermer")
@Key("fermer")
String fermer();
 
/**
* Translated "Fiabilite".
*
* @return translated "Fiabilite"
*/
@DefaultStringValue("Fiabilite")
@Key("fiabilite")
String fiabilite();
 
/**
* Translated "Genre".
*
* @return translated "Genre"
*/
@DefaultStringValue("Genre")
@Key("genre")
String genre();
 
/**
* Translated "Identifié".
*
* @return translated "Identifié"
*/
@DefaultStringValue("Identifié")
@Key("identifie")
String identifie();
 
/**
* Translated "Photos d'eFlore".
*
* @return translated "Photos d'eFlore"
*/
@DefaultStringValue("Photos d'eFlore")
@Key("imageEflore")
String imageEflore();
 
/**
* Translated "Vous pouvez comparer cette image à d'autres photos. Saisissez le nom de l'espèce et cliquez sur OK".
*
* @return translated "Vous pouvez comparer cette image à d'autres photos. Saisissez le nom de l'espèce et cliquez sur OK"
*/
@DefaultStringValue("Vous pouvez comparer cette image à d'autres photos. Saisissez le nom de l'espèce et cliquez sur OK")
@Key("infoComparer")
String infoComparer();
 
/**
* Translated "Indiquez votre niveau de certitude vis-à-vis de votre proposition.".
*
* @return translated "Indiquez votre niveau de certitude vis-à-vis de votre proposition."
*/
@DefaultStringValue("Indiquez votre niveau de certitude vis-à-vis de votre proposition.")
@Key("infoFiabilite")
String infoFiabilite();
 
/**
* Translated "Pour proposer une détermination, remplissez les champs ci-dessous et cliquez sur le bouton Proposer !".
*
* @return translated "Pour proposer une détermination, remplissez les champs ci-dessous et cliquez sur le bouton Proposer !"
*/
@DefaultStringValue("Pour proposer une détermination, remplissez les champs ci-dessous et cliquez sur le bouton Proposer !")
@Key("infoProposerDetermination")
String infoProposerDetermination();
 
/**
* Translated "D'autres utilisateurs ont laissé une détermination".
*
* @return translated "D'autres utilisateurs ont laissé une détermination"
*/
@DefaultStringValue("D'autres utilisateurs ont laissé une détermination")
@Key("infoPropositions")
String infoPropositions();
 
/**
* Translated "<b>Saisissez <b>un nouveau nom</b> dans le champ ci-après.".
*
* @return translated "<b>Saisissez <b>un nouveau nom</b> dans le champ ci-après."
*/
@DefaultStringValue("<b>Saisissez <b>un nouveau nom</b> dans le champ ci-après.")
@Key("infoTaxon")
String infoTaxon();
 
/**
* Translated "Voici la moyenne des votes en fonction du protocole choisi :".
*
* @return translated "Voici la moyenne des votes en fonction du protocole choisi :"
*/
@DefaultStringValue("Voici la moyenne des votes en fonction du protocole choisi :")
@Key("infoVotes")
String infoVotes();
 
/**
* Translated "Vos nom et prénom".
*
* @return translated "Vos nom et prénom"
*/
@DefaultStringValue("Vos nom et prénom")
@Key("infoVous")
String infoVous();
 
/**
* Translated "Cette galerie vous permet de rechercher les illustrations des membres du réseau issues du carnet en ligne... et de voter pour la qualité des images selon un protocole défini.".
*
* @return translated "Cette galerie vous permet de rechercher les illustrations des membres du réseau issues du carnet en ligne... et de voter pour la qualité des images selon un protocole défini."
*/
@DefaultStringValue("Cette galerie vous permet de rechercher les illustrations des membres du réseau issues du carnet en ligne... et de voter pour la qualité des images selon un protocole défini.")
@Key("introRechercheImages")
String introRechercheImages();
 
/**
* Translated "Cet espace vous permet d'échanger sur la détermination d'espèces. Vous ne parvenez pas à déterminer une plante? Soumettez la aux membres du réseau. Vous avez relevé des erreurs dans les images soumises par le réseau? Postez un commentaire ou proposez une nouvelle determination.".
*
* @return translated "Cet espace vous permet d'échanger sur la détermination d'espèces. Vous ne parvenez pas à déterminer une plante? Soumettez la aux membres du réseau. Vous avez relevé des erreurs dans les images soumises par le réseau? Postez un commentaire ou proposez une nouvelle determination."
*/
@DefaultStringValue("Cet espace vous permet d'échanger sur la détermination d'espèces. Vous ne parvenez pas à déterminer une plante? Soumettez la aux membres du réseau. Vous avez relevé des erreurs dans les images soumises par le réseau? Postez un commentaire ou proposez une nouvelle determination.")
@Key("introRechercheObservations")
String introRechercheObservations();
 
/**
* Translated "Choisir un protocole".
*
* @return translated "Choisir un protocole"
*/
@DefaultStringValue("Choisir un protocole")
@Key("labelProtocole")
String labelProtocole();
 
/**
* Translated "Propositions ".
*
* @return translated "Propositions "
*/
@DefaultStringValue("Propositions ")
@Key("lesPropositions")
String lesPropositions();
 
/**
* Translated "Lieu dit".
*
* @return translated "Lieu dit"
*/
@DefaultStringValue("Lieu dit")
@Key("lieuDit")
String lieuDit();
 
/**
* Translated "Localite".
*
* @return translated "Localite"
*/
@DefaultStringValue("Localite")
@Key("localite")
String localite();
 
/**
* Translated "Login".
*
* @return translated "Login"
*/
@DefaultStringValue("Login")
@Key("login")
String login();
 
/**
* Translated "Meta-donnees de la photo".
*
* @return translated "Meta-donnees de la photo"
*/
@DefaultStringValue("Meta-donnees de la photo")
@Key("metadonneesPhoto")
String metadonneesPhoto();
 
/**
* Translated "Milieu".
*
* @return translated "Milieu"
*/
@DefaultStringValue("Milieu")
@Key("milieu")
String milieu();
 
/**
* Translated "Mon vote".
*
* @return translated "Mon vote"
*/
@DefaultStringValue("Mon vote")
@Key("monVote")
String monVote();
 
/**
* Translated "Mot-clé".
*
* @return translated "Mot-clé"
*/
@DefaultStringValue("Mot-clé")
@Key("mot_clef")
String mot_clef();
 
/**
* Translated "Mot de passe".
*
* @return translated "Mot de passe"
*/
@DefaultStringValue("Mot de passe")
@Key("motdepasse")
String motdepasse();
 
/**
* Translated "Mots-clés".
*
* @return translated "Mots-clés"
*/
@DefaultStringValue("Mots-clés")
@Key("motsClefs")
String motsClefs();
 
/**
* Translated "Moyenne".
*
* @return translated "Moyenne"
*/
@DefaultStringValue("Moyenne")
@Key("moyenne")
String moyenne();
 
/**
* Translated "vote(s)".
*
* @return translated "vote(s)"
*/
@DefaultStringValue("vote(s)")
@Key("nbVotes")
String nbVotes();
 
/**
* Translated "Nom".
*
* @return translated "Nom"
*/
@DefaultStringValue("Nom")
@Key("nom")
String nom();
 
/**
* Translated "Nom commun".
*
* @return translated "Nom commun"
*/
@DefaultStringValue("Nom commun")
@Key("nomCommun")
String nomCommun();
 
/**
* Translated "Nom retenu".
*
* @return translated "Nom retenu"
*/
@DefaultStringValue("Nom retenu")
@Key("nomRetenu")
String nomRetenu();
 
/**
* Translated "Nb votes".
*
* @return translated "Nb votes"
*/
@DefaultStringValue("Nb votes")
@Key("nombreVotes")
String nombreVotes();
 
/**
* Translated "non".
*
* @return translated "non"
*/
@DefaultStringValue("non")
@Key("non")
String non();
 
/**
* Translated "Observateur".
*
* @return translated "Observateur"
*/
@DefaultStringValue("Observateur")
@Key("observateur")
String observateur();
 
/**
* Translated "ok".
*
* @return translated "ok"
*/
@DefaultStringValue("ok")
@Key("ok")
String ok();
 
/**
* Translated "oui".
*
* @return translated "oui"
*/
@DefaultStringValue("oui")
@Key("oui")
String oui();
 
/**
* Translated "par".
*
* @return translated "par"
*/
@DefaultStringValue("par")
@Key("par")
String par();
 
/**
* Translated "Prénom".
*
* @return translated "Prénom"
*/
@DefaultStringValue("Prénom")
@Key("prenom")
String prenom();
 
/**
* Translated "Proposer votre détermination".
*
* @return translated "Proposer votre détermination"
*/
@DefaultStringValue("Proposer votre détermination")
@Key("proposerSaDetermination")
String proposerSaDetermination();
 
/**
* Translated "Protocole".
*
* @return translated "Protocole"
*/
@DefaultStringValue("Protocole")
@Key("protocole")
String protocole();
 
/**
* Translated "Protocole par défaut".
*
* @return translated "Protocole par défaut"
*/
@DefaultStringValue("Protocole par défaut")
@Key("protocoleDefaut")
String protocoleDefaut();
 
/**
* Translated "Esthétisme".
*
* @return translated "Esthétisme"
*/
@DefaultStringValue("Esthétisme")
@Key("protocoleEsthetisme")
String protocoleEsthetisme();
 
/**
* Translated "Identification automatique".
*
* @return translated "Identification automatique"
*/
@DefaultStringValue("Identification automatique")
@Key("protocoleIdentificationAuto")
String protocoleIdentificationAuto();
 
/**
* Translated "Publiée le".
*
* @return translated "Publiée le"
*/
@DefaultStringValue("Publiée le")
@Key("publiee")
String publiee();
 
/**
* Translated "Recherche avancée".
*
* @return translated "Recherche avancée"
*/
@DefaultStringValue("Recherche avancée")
@Key("rechercheAvancee")
String rechercheAvancee();
 
/**
* Translated "Recherche libre".
*
* @return translated "Recherche libre"
*/
@DefaultStringValue("Recherche libre")
@Key("rechercheLibre")
String rechercheLibre();
 
/**
* Translated "Rechercher".
*
* @return translated "Rechercher"
*/
@DefaultStringValue("Rechercher")
@Key("rechercher")
String rechercher();
 
/**
* Translated "Rechercher une image".
*
* @return translated "Rechercher une image"
*/
@DefaultStringValue("Rechercher une image")
@Key("rechercherImage")
String rechercherImage();
 
/**
* Translated "Identifier une plante".
*
* @return translated "Identifier une plante"
*/
@DefaultStringValue("Identifier une plante")
@Key("rechercherObservation")
String rechercherObservation();
 
/**
* Translated "Rechercher le taxon".
*
* @return translated "Rechercher le taxon"
*/
@DefaultStringValue("Rechercher le taxon")
@Key("rechercherTaxon")
String rechercherTaxon();
 
/**
* Translated "Se connecter".
*
* @return translated "Se connecter"
*/
@DefaultStringValue("Se connecter")
@Key("seConnecter")
String seConnecter();
 
/**
* Translated "Se déconnecter".
*
* @return translated "Se déconnecter"
*/
@DefaultStringValue("Se déconnecter")
@Key("seDeconnecter")
String seDeconnecter();
 
/**
* Translated "Tag".
*
* @return translated "Tag"
*/
@DefaultStringValue("Tag")
@Key("tag")
String tag();
 
/**
* Translated "Espèce".
*
* @return translated "Espèce"
*/
@DefaultStringValue("Espèce")
@Key("taxon")
String taxon();
 
/**
* Translated "Taxon à déterminer".
*
* @return translated "Taxon à déterminer"
*/
@DefaultStringValue("Taxon à déterminer")
@Key("taxonADeterminer")
String taxonADeterminer();
 
/**
* Translated "Transmis le".
*
* @return translated "Transmis le"
*/
@DefaultStringValue("Transmis le")
@Key("transmisLe")
String transmisLe();
 
/**
* Translated "Tri : ".
*
* @return translated "Tri : "
*/
@DefaultStringValue("Tri : ")
@Key("tri")
String tri();
 
/**
* Translated "Date".
*
* @return translated "Date"
*/
@DefaultStringValue("Date")
@Key("triParDate")
String triParDate();
 
/**
* Translated "Tri par date du plus ancien au plus récent".
*
* @return translated "Tri par date du plus ancien au plus récent"
*/
@DefaultStringValue("Tri par date du plus ancien au plus récent")
@Key("triParDateAscendant")
String triParDateAscendant();
 
/**
* Translated "Tri par date du plus récent au plus ancien".
*
* @return translated "Tri par date du plus récent au plus ancien"
*/
@DefaultStringValue("Tri par date du plus récent au plus ancien")
@Key("triParDateDescendant")
String triParDateDescendant();
 
/**
* Translated "Votes".
*
* @return translated "Votes"
*/
@DefaultStringValue("Votes")
@Key("triParNbVotes")
String triParNbVotes();
 
/**
* Translated "Tri par nombre de votes du maximum au minimum".
*
* @return translated "Tri par nombre de votes du maximum au minimum"
*/
@DefaultStringValue("Tri par nombre de votes du maximum au minimum")
@Key("triParNbVotesAscendant")
String triParNbVotesAscendant();
 
/**
* Translated "Tri par nombre de votes du minimum au maximum".
*
* @return translated "Tri par nombre de votes du minimum au maximum"
*/
@DefaultStringValue("Tri par nombre de votes du minimum au maximum")
@Key("triParNbVotesDescendant")
String triParNbVotesDescendant();
 
/**
* Translated "Validé par".
*
* @return translated "Validé par"
*/
@DefaultStringValue("Validé par")
@Key("validePar")
String validePar();
 
/**
* Translated "Vider".
*
* @return translated "Vider"
*/
@DefaultStringValue("Vider")
@Key("vider")
String vider();
 
/**
* Translated "Moyenne des votes".
*
* @return translated "Moyenne des votes"
*/
@DefaultStringValue("Moyenne des votes")
@Key("votes")
String votes();
 
/**
* Translated "Votez".
*
* @return translated "Votez"
*/
@DefaultStringValue("Votez")
@Key("votez")
String votez();
 
/**
* Translated "Vous".
*
* @return translated "Vous"
*/
@DefaultStringValue("Vous")
@Key("vous")
String vous();
}
/branches/cel3/src/org/tela_botanica/cel/client/utils/CelUtil.java
New file
0,0 → 1,172
package org.tela_botanica.cel.client.utils;
 
import org.tela_botanica.cel.client.modeles.Observation;
 
 
public class CelUtil {
 
public CelUtil() {
}
 
public static String toCelString(String str) {
return str.substring(1, str.length() - 1);
//
}
public static String formaterLieu(Observation obs, String modeleLieu) {
String lieuModele = modeleLieu;
String commune = obs.getLocalite();
String lieuDit = obs.getLieuDit();
String station = obs.getStation();
String lieuCommuneFormate = "";
String lieuDitFormate = "";
String stationFormatee = "";
if(commune != null && !commune.contains("000null") && !commune.trim().equals("")) {
String idLoc =obs.getIdLocalite().replaceAll(" ","/");
if(idLoc != null && !idLoc.contains("000null") && !idLoc.trim().equals("")) {
 
idLoc = idLoc.replaceAll("%","");
idLoc = idLoc.replaceAll("\"","");
idLoc = idLoc.replace('\\',' ');
idLoc = idLoc.trim();
lieuCommuneFormate += idLoc+" - ";
}
lieuCommuneFormate += commune;
lieuModele = lieuModele.replaceAll("IDLOCCOMMUNE", lieuCommuneFormate);
} else {
lieuModele = lieuModele.replaceAll("IDLOCCOMMUNE,", lieuCommuneFormate);
}
if(lieuDit != null && !lieuDit.contains("000null") && !lieuDit.trim().equals("")) {
lieuDitFormate += lieuDit;
lieuModele = lieuModele.replaceAll("LIEUDIT", lieuDitFormate);
} else {
lieuModele = lieuModele.replaceAll("LIEUDIT,", lieuDitFormate);
}
if(station != null && !station.contains("000null") && !station.trim().equals("")) {
stationFormatee += station;
lieuModele = lieuModele.replaceAll("STATION", stationFormatee);
} else {
lieuModele = lieuModele.replaceAll("STATION", stationFormatee);
}
lieuModele = lieuModele.trim();
lieuModele = lieuModele.replaceAll(",$","");
lieuModele = lieuModele.replaceAll(",^$",", ");
return lieuModele;
}
public static String supprimerNumDepartementChaineLocalite(String chaineLocaliteComplete) {
return chaineLocaliteComplete.replaceAll("\\([0-9][1-9]\\)", "");
}
/***
* Fusionne les éléments d'un tableau en une chaîne
* @param delim : la chaîne de séparation
* @param args : la tableau
* @return la chaîne fusionnée
*/
public static String implode(String delim, String[] args){
StringBuffer sb = new StringBuffer();
int lgArgs = args.length;
for(int i = 0; i < lgArgs; i++){
if (i > 0) {
sb.append(delim);
}
sb.append(args[i]);
}
return sb.toString();
}
public static boolean filtreValide(String[] filtre) {
return (filtre.length == 2 &&
filtre[0] != null &&
!filtre[0].equals("") &&
filtre[1] != null &&
!filtre[1].equals(""));
}
public static String renvoyerMois(int numMois) {
switch (numMois) {
case 1:
return "janvier" ;
case 2:
return "fevrier" ;
case 3:
return "mars" ;
case 4:
return "avril" ;
case 5:
return "mai" ;
case 6:
return "juin" ;
case 7:
return "juillet" ;
case 8:
return "août" ;
case 9:
return "septembre" ;
case 10:
return "octobre" ;
case 11:
return "novembre" ;
case 12:
return "décembre" ;
default:
return "Inconnu" ;
}
}
public static String remplacerSautsDeligneMalEncodes(String chaineAvecSautsDeLignesMalEncodes) {
String chaineAvecSautsDeLignesBienEncodes = chaineAvecSautsDeLignesMalEncodes.replace('\\','%');
chaineAvecSautsDeLignesBienEncodes = chaineAvecSautsDeLignesBienEncodes.replaceAll("%n","%");
chaineAvecSautsDeLignesBienEncodes = chaineAvecSautsDeLignesBienEncodes.replace('%','\n');
return chaineAvecSautsDeLignesBienEncodes;
}
public static boolean verifierDateFormatCel(String dateAVerifier) {
String dateRemplacee = remplacerSeparateursDateFormatCel(dateAVerifier);
String[] tabDate = dateRemplacee.split("/");
boolean retour = false;
if(tabDate.length == 3) {
try {
int jour = Integer.parseInt(tabDate[0]);
int mois = Integer.parseInt(tabDate[1]);
int annee = Integer.parseInt(tabDate[2]);
if(jour < 31 && mois < 12 && tabDate[2].length() == 4) {
retour = true;
}
} catch (Exception e) {
 
}
}
return retour;
}
public static String remplacerSeparateursDateFormatCel(String date) {
String dateRemplacee = date.replaceAll("-", "/");
return dateRemplacee;
}
}
/branches/cel3/src/org/tela_botanica/cel/client/utils/UtilitairesServiceResultat.java
New file
0,0 → 1,112
package org.tela_botanica.cel.client.utils;
 
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
import org.tela_botanica.cel.client.modeles.Image;
import org.tela_botanica.cel.client.modeles.Observation;
import org.tela_botanica.cel.client.modeles.Utilisateur;
 
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONValue;
 
public class UtilitairesServiceResultat {
public static Image parserImageJSON (JSONObject imageJson) {
Image image = new Image();
String idImage = "1"+imageJson.get("id_image").isString().stringValue();
image.setIdImage(idImage);
image.setUrlFormat("http://www.tela-botanica.org/appli:cel-img:"+getIdAvecPadding(idImage)+"%s%.jpg");
image.setUrl("http://www.tela-botanica.org/appli:cel-img:"+getIdAvecPadding(idImage)+"CRS.jpg");
image.setMiniature("http://www.tela-botanica.org/appli:cel-img:"+getIdAvecPadding(idImage)+"XS.jpg");
return image;
}
public static Observation parserObservationEtCreerPropositionDetermination(JSONObject observationJson) {
Observation observation = parserObservationJSON(observationJson);
return observation;
}
public static Observation parserObservationJSON(JSONObject observationJson) {
Observation observation = new Observation();
observation.setAuteur(observationJson.get("prenom_utilisateur").isString().stringValue()+
" "+observationJson.get("nom_utilisateur").isString().stringValue());
observation.setDateTransmission(observationJson.get("date_observation").isString().stringValue());
observation.setDateReleve(observationJson.get("date_observation").isString().stringValue());
observation.setFamille(observationJson.get("famille").isString().stringValue());
observation.setId(observationJson.get("id_observation").isString().stringValue());
observation.setIdLocalite(observationJson.get("ce_zone_geo").isString().stringValue());
observation.setLocalite(observationJson.get("zone_geo").isString().stringValue());
observation.setNomRetenu(observationJson.get("nom_ret").isString().stringValue());
observation.setMilieu(observationJson.get("milieu").isString().stringValue());
observation.setLieuDit(observationJson.get("lieudit").isString().stringValue());
observation.setNumNomenclaturalNomRetenu(observationJson.get("nom_ret_nn").isString().stringValue());
observation.setNumNomenclaturalNomSaisi(observationJson.get("nom_sel_nn").isString().stringValue());
observation.setLatitude(observationJson.get("latitude").isString().stringValue());
observation.setLongitude(observationJson.get("longitude").isString().stringValue());
observation.setMotsCles(parserMotsCles(observationJson.get("mots_cles").isString().stringValue()));
//TODO: ajouter ce qui manque s'il en manque
return observation;
}
public static Date parserDateObservation(String date) {
Date dateParsee = new Date();
DateTimeFormat formatDateObs = DateTimeFormat.getFormat("yyyy-MM-dd HH:mm:ss");
try{
dateParsee = formatDateObs.parse(date);
} catch (IllegalArgumentException e) {
dateParsee = new java.sql.Date(0);
}
return dateParsee;
}
public static List<String> parserMotsCles(String motsClesTexte) {
String[] tabMotsCle = motsClesTexte.split(",");
List<String> motsClesParses = new ArrayList<String>();
for (int i = 0; i < tabMotsCle.length; i++) {
motsClesParses.add(tabMotsCle[i]);
}
return motsClesParses;
}
public static String getIdAvecPadding(String id) {
 
int maxZeros = 9 - id.length();
 
for (int i = 0; i < maxZeros; i++) {
id = "0" + id;
}
return id;
}
public static Utilisateur parserUtilisateurJson(JSONValue valeurJson) {
JSONObject utilisateurJson = valeurJson.isObject();
boolean connecteUtilisateur = utilisateurJson.get("connecte").isBoolean().booleanValue();
String idUtilisateur = utilisateurJson.get("id_utilisateur").isString().stringValue();
Utilisateur utilisateur;
if(connecteUtilisateur) {
String courrielUtilisateur = utilisateurJson.get("courriel").isString().stringValue();
String nomUtilisateur = utilisateurJson.get("nom").isString().stringValue();
String prenomUtilisateur = utilisateurJson.get("prenom").isString().stringValue();
utilisateur = new Utilisateur(idUtilisateur, prenomUtilisateur, nomUtilisateur, courrielUtilisateur);
} else {
utilisateur = new Utilisateur(idUtilisateur);
}
return utilisateur;
}
}
/branches/cel3/src/org/tela_botanica/cel/client/utils/Configuration.java
New file
0,0 → 1,207
package org.tela_botanica.cel.client.utils;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.i18n.client.Dictionary;
 
/**
* Classe chargeant certains paramètres de configuration à partir d'un fichier
* javascript (config.js)
*
* @author aurelien
*
*/
public class Configuration {
 
/**
* L'url de base du serveur jrest
*/
private static String serviceBaseUrl;
 
private static String imageBaseUrl;
private static String suiviBugUrl ;
private static String aideBaseUrl ;
private static String emailContact;
private static String referentielGeo ;
private static String cleGoogleMaps ;
 
private static String lienEfloreBaseUrl;
private static String refTax;
private static String refTaxVersion;
private static String licence ="";
private static String formatOriginal = "";
private static String formatZoom = "";
private static String formatGalerie = "";
private static String formatListe = "";
 
/**
* Constructeur sans argument
*/
public Configuration() {
// on utilise le dictionnaire d'internationalisation pour lire les
// variables du fichier javascript
//if(GWT.isScript()) {
serviceBaseUrl = Dictionary.getDictionary("configuration").get(
"serviceBaseUrl");
emailContact = Dictionary.getDictionary("configuration").get(
"emailContact");
suiviBugUrl = Dictionary.getDictionary("configuration").get(
"suiviBugUrl");
imageBaseUrl = Dictionary.getDictionary("configuration").get(
"imageBaseUrl");
aideBaseUrl = Dictionary.getDictionary("configuration").get(
"aideBaseUrl");
referentielGeo = Dictionary.getDictionary("configuration").get(
"referentielGeo");
cleGoogleMaps = Dictionary.getDictionary("configuration").get(
"cleGoogleMaps");
lienEfloreBaseUrl = Dictionary.getDictionary("configuration").get(
"lienEfloreBaseUrl");
refTax = Dictionary.getDictionary("configuration").get(
"refTax");
refTaxVersion = Dictionary.getDictionary("configuration").get(
"refTaxVersion");
formatOriginal = Dictionary.getDictionary("configuration").get(
"formatOriginal");
formatZoom = Dictionary.getDictionary("configuration").get(
"formatZoom");
formatGalerie = Dictionary.getDictionary("configuration").get(
"formatGalerie");
formatListe = Dictionary.getDictionary("configuration").get(
"formatListe");
//licence = Dictionary.getDictionary("configuration").get("licence");
}
 
/**
* Accesseur pour l'url de base du serveur jrest
*
* @return une url de la forme http://emplacement_serveur/jrest
*/
public static String getServiceBaseUrl() {
/*if(!GWT.isScript()) {
serviceBaseUrl = "http://localhost:8888/jrest";
}*/
return serviceBaseUrl;
}
/**
* Accesseur pour l'url de base du suivi de bug
*
* @return une url pointant vers le suivi des bugs
*/
public static String getSuiviBugUrl() {
return suiviBugUrl;
}
/**
* Accesseur pour l'url de base des images
*
* @return une url pointant vers la racine du dossier contenant les images
*/
public static String getImageBaseUrl() {
return imageBaseUrl ;
}
/**
* Accesseur pour l'url de base de l'aide
*
* @return une url pointant vers la racine de l'aide
*/
public static String getAideBaseUrl() {
return aideBaseUrl ;
}
/**
* Accesseur pour l'email de contact du carnet en ligne
*
* @return une chaine contenant l'email de contact
*/
public static String getEmailContact() {
return emailContact;
}
/**
* Accesseur pour le référentiel geo
*
* @return le référentiel geo
*/
public static String getReferentielGeo() {
return referentielGeo ;
}
/**
* Accesseur pour la clé google maps
*
* @return la clé google maps
*/
public static String getCleGoogleMaps() {
return cleGoogleMaps ;
}
 
public static String getLienEfloreBaseUrl() {
return lienEfloreBaseUrl;
}
public static String getRefTax() {
return refTax;
}
public static String getRefTaxVersion() {
return refTaxVersion;
}
public static String getLicence() {
return licence;
}
public static String getFormatOriginal() {
 
return formatOriginal;
}
public static String getFormatZoom() {
 
return formatZoom;
}
public static String getFormatGalerie() {
 
return formatGalerie;
}
public static String getFormatListe() {
 
return formatListe;
}
}
/branches/cel3/src/org/tela_botanica/cel3.gwt.xml
9,16 → 9,12
<inherits name='com.google.gwt.user.theme.standard.Standard'/>
<!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
<!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/> -->
 
<!-- Other module inherits -->
<inherits name="com.google.gwt.activity.Activity"/>
<inherits name="com.google.gwt.place.Place"/>
<!-- Parsing JSON -->
<inherits name='com.google.gwt.json.JSON' />
 
<!-- Specify the app entry point class. -->
<entry-point class='org.tela_botanica.client.Cel3'/>
<entry-point class='org.tela_botanica.cel.client.Cel3.java'/>
 
<!-- Specify the paths for translatable code -->
<source path='client'/>