Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 938 → Rev 939

/trunk/src/org/tela_botanica/del/client/services/rest/CommentaireService.java
1,8 → 1,11
package org.tela_botanica.del.client.services.rest;
 
import org.tela_botanica.del.client.modeles.Commentaire;
import org.tela_botanica.del.client.services.rest.async.CommentaireCallback;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.services.rest.async.AjoutCommentaireCallback;
import org.tela_botanica.del.client.services.rest.async.ListeCommentairesCallback;
 
public interface CommentaireService {
public void ajouterCommentaire(Commentaire commentaire, CommentaireCallback callback);
public void ajouterCommentaire(Commentaire commentaire, AjoutCommentaireCallback callback);
public void chargerCommentaires(PropositionDetermination propositionDetermination, ListeCommentairesCallback commentaireCallback);
}
/trunk/src/org/tela_botanica/del/client/services/rest/ObservationServiceConcret.java
3,6 → 3,7
import org.tela_botanica.del.client.config.Config;
import org.tela_botanica.del.client.modeles.InformationsRecherche;
import org.tela_botanica.del.client.services.rest.async.ObservationsCallback;
import org.tela_botanica.del.client.services.rest.async.PHPCallback.ModeRequete;
 
import com.google.gwt.http.client.RequestBuilder;
 
22,6 → 23,7
@Override
public void getObservations(InformationsRecherche infos, int debut, int fin, ObservationsCallback callback) {
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, baseUrl + "observations" + assemblerChaineRequete(infos, debut, fin));
callback.setMode(ModeRequete.LECTURE);
try {
rb.sendRequest(null, callback);
} catch (Exception e) {
41,6 → 43,7
public void getObservation(String idObservation,
ObservationsCallback callback) {
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, baseUrl + "observations/"+idObservation);
callback.setMode(ModeRequete.LECTURE);
try {
rb.sendRequest(null, callback);
} catch (Exception e) {
/trunk/src/org/tela_botanica/del/client/services/rest/async/VoteDeterminationCallback.java
File deleted
/trunk/src/org/tela_botanica/del/client/services/rest/async/CommentaireCallback.java
File deleted
/trunk/src/org/tela_botanica/del/client/services/rest/async/ObservationsCallback.java
2,34 → 2,13
 
import org.tela_botanica.del.client.modeles.ObservationServiceResultat;
 
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 ObservationsCallback implements RequestCallback {
public abstract class ObservationsCallback extends PHPCallback<ObservationServiceResultat> {
 
public ObservationsCallback() {
 
}
 
@Override
public void onResponseReceived(Request request, Response response) {
ObservationServiceResultat observationsRecues = convertirReponseVersListeObservation(response);
surObservationsRecues(observationsRecues);
public ObservationServiceResultat parserJSON(String retourService) {
return new ObservationServiceResultat(JSONParser.parseStrict(retourService));
}
 
@Override
public void onError(Request request, Throwable exception) {
Window.alert(exception.getMessage());
}
 
public abstract void surObservationsRecues(ObservationServiceResultat observationsRecues);
 
private ObservationServiceResultat convertirReponseVersListeObservation(Response reponse) {
ObservationServiceResultat resultat = new ObservationServiceResultat(JSONParser.parseStrict(reponse.getText()));
return resultat;
}
 
}
/trunk/src/org/tela_botanica/del/client/services/rest/async/ImagesParTaxonCallback.java
2,33 → 2,13
 
import org.tela_botanica.del.client.modeles.ImageServiceResultat;
 
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 ImagesParTaxonCallback implements RequestCallback {
public abstract class ImagesParTaxonCallback extends PHPCallback<ImageServiceResultat> {
 
public ImagesParTaxonCallback() {
 
}
 
@Override
public void onResponseReceived(Request request, Response response) {
ImageServiceResultat imagesRecues = convertirReponseVersListeImage(response);
surImagesRecues(imagesRecues);
}
 
@Override
public void onError(Request request, Throwable exception) {
Window.alert(exception.getMessage());
}
 
public abstract void surImagesRecues(ImageServiceResultat imagesRecues);
 
private ImageServiceResultat convertirReponseVersListeImage(Response reponse) {
ImageServiceResultat resultat = new ImageServiceResultat(JSONParser.parseStrict(reponse.getText()));
public ImageServiceResultat parserJSON(String retourService) {
ImageServiceResultat resultat = new ImageServiceResultat(JSONParser.parseStrict(retourService));
return resultat;
}
 
/trunk/src/org/tela_botanica/del/client/services/rest/async/AjoutVoteDeterminationCallback.java
New file
0,0 → 1,11
package org.tela_botanica.del.client.services.rest.async;
 
 
public abstract class AjoutVoteDeterminationCallback extends PHPCallback<Void> {
 
@Override
public Void parserJSON(String retourService) {
return null;
}
 
}
/trunk/src/org/tela_botanica/del/client/services/rest/async/ListeVotesDeterminationCallback.java
New file
0,0 → 1,15
package org.tela_botanica.del.client.services.rest.async;
 
import java.util.HashMap;
 
import org.tela_botanica.del.client.modeles.VoteDetermination;
import org.tela_botanica.del.client.utils.UtilitairesServiceResultat;
 
public abstract class ListeVotesDeterminationCallback extends PHPCallback<HashMap<String, VoteDetermination>> {
 
@Override
public HashMap<String, VoteDetermination> parserJSON(String retourService) {
return UtilitairesServiceResultat.parserRetourListeVotesDetermination(retourService);
}
 
}
/trunk/src/org/tela_botanica/del/client/services/rest/async/VoteProtocoleCallback.java
1,58 → 1,10
package org.tela_botanica.del.client.services.rest.async;
 
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.user.client.Window;
public abstract class VoteProtocoleCallback extends PHPCallback<Void> {
 
public abstract class VoteProtocoleCallback implements RequestCallback {
public enum ModeRequete {
AJOUT, MODIFICATION
}
protected ModeRequete mode;
public VoteProtocoleCallback(ModeRequete mode) {
this.mode = mode;
}
 
public VoteProtocoleCallback() {
// TODO Auto-generated constructor stub
}
public void setMode(ModeRequete mode) {
this.mode = mode;
}
 
@Override
public void onResponseReceived(Request request, Response response){
int statusCode = response.getStatusCode();
int codeAttendu = 500;
switch (mode) {
case AJOUT:
codeAttendu = 201;
break;
case MODIFICATION:
codeAttendu = 200;
break;
default:
codeAttendu = 500;
break;
}
if (statusCode == codeAttendu) {
surRetour(response.getText());
} else {
surErreur("Erreur " + statusCode + ": " + response.getText());
}
public Void parserJSON(String retourService) {
return null;
}
 
@Override
public void onError(Request request, Throwable exception) {
Window.alert(exception.getMessage());
}
public abstract void surRetour(String messageRetour);
public abstract void surErreur(String messageErreur);
}
/trunk/src/org/tela_botanica/del/client/services/rest/async/AjoutCommentaireCallback.java
New file
0,0 → 1,12
package org.tela_botanica.del.client.services.rest.async;
 
import org.tela_botanica.del.client.utils.UtilitairesServiceResultat;
 
public abstract class AjoutCommentaireCallback extends PHPCallback<String>{
 
@Override
public String parserJSON(String retourService) {
return UtilitairesServiceResultat.convertirEtParserRetourAjoutCommentaire(retourService);
}
 
}
/trunk/src/org/tela_botanica/del/client/services/rest/async/ListeCommentairesCallback.java
New file
0,0 → 1,17
package org.tela_botanica.del.client.services.rest.async;
 
import java.util.List;
 
import org.tela_botanica.del.client.modeles.Commentaire;
import org.tela_botanica.del.client.utils.UtilitairesServiceResultat;
 
import com.google.gwt.json.client.JSONParser;
 
public abstract class ListeCommentairesCallback extends PHPCallback<List<Commentaire>> {
 
@Override
public List<Commentaire> parserJSON(String retourService) {
return UtilitairesServiceResultat.parserCommentaires(JSONParser.parseStrict(retourService).isObject().get("resultats").isObject());
}
 
}
/trunk/src/org/tela_botanica/del/client/services/rest/async/PHPCallback.java
New file
0,0 → 1,79
package org.tela_botanica.del.client.services.rest.async;
 
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.user.client.Window;
 
/**
* Cette classe correspond au retour asynchrone d'un service php qui retourne
* l'objet generique T si l'appel de service est un succcès
*
* @author LIENS
*
* @param <T>
*/
public abstract class PHPCallback<T> implements RequestCallback {
 
public enum ModeRequete {
AJOUT, MODIFICATION, SUPPRESSION, LECTURE
}
 
protected ModeRequete mode;
 
public PHPCallback() {
}
 
public void setMode(ModeRequete mode) {
this.mode = mode;
}
 
@Override
public void onResponseReceived(Request request, Response response) {
int statusCode = response.getStatusCode();
int codeAttendu = 500;
switch (mode) {
case AJOUT:
codeAttendu = 201;
break;
case MODIFICATION:
codeAttendu = 200;
break;
case SUPPRESSION:
codeAttendu = 200;
break;
case LECTURE:
codeAttendu = 200;
break;
default:
codeAttendu = 500;
break;
}
 
if (statusCode == codeAttendu) {
surRetour(parserJSON(response.getText()));
} else {
surErreur("Erreur " + statusCode + ": " + response.getText());
}
}
 
/**
* Cette methode permet de pareser le JSON retourné par le webservice pour
* le transformer en objet métier
*
* @param retourService
* @return
*/
public abstract T parserJSON(String retourService);
 
@Override
public void onError(Request request, Throwable exception) {
surErreur(exception.getMessage());
}
 
public abstract void surRetour(T objetRetour);
 
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
}
}
/trunk/src/org/tela_botanica/del/client/services/rest/async/PropositionDeterminationCallBack.java
2,67 → 2,13
 
import org.tela_botanica.del.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 PropositionDeterminationCallBack implements RequestCallback {
public abstract class PropositionDeterminationCallBack extends PHPCallback<String> {
 
//TODO: voir si l'on fusionne les classes de vote callback qui sont tout à fait semblables
// pour ne pas dire identiques
public enum ModeRequete {
AJOUT, MODIFICATION, SUPPRESSION
}
protected ModeRequete mode;
public PropositionDeterminationCallBack(ModeRequete mode) {
this.mode = mode;
}
@Override
public String parserJSON(String retourService) {
return UtilitairesServiceResultat.parserRetourAjoutCommentaire(JSONParser.parseStrict(retourService).isObject());
}
 
public PropositionDeterminationCallBack() {
// TODO Auto-generated constructor stub
}
public void setMode(ModeRequete mode) {
this.mode = mode;
}
 
@Override
public void onResponseReceived(Request request, Response response){
int statusCode = response.getStatusCode();
int codeAttendu = 500;
switch (mode) {
case AJOUT:
codeAttendu = 201;
break;
case MODIFICATION:
codeAttendu = 200;
break;
case SUPPRESSION:
codeAttendu = 200;
break;
default:
codeAttendu = 500;
break;
}
if (statusCode == codeAttendu) {
String id = UtilitairesServiceResultat.parserRetourAjoutCommentaire(JSONParser.parseStrict(response.getText()).isObject());
surRetour(id);
} else {
surErreur("Erreur " + statusCode + ": " + response.getText());
}
}
 
@Override
public void onError(Request request, Throwable exception) {
Window.alert(exception.getMessage());
}
public abstract void surRetour(String messageRetour);
public abstract void surErreur(String messageErreur);
 
}
/trunk/src/org/tela_botanica/del/client/services/rest/async/ProtocolesCallback.java
2,34 → 2,13
 
import org.tela_botanica.del.client.modeles.ProtocoleServiceResultat;
 
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 ProtocolesCallback implements RequestCallback {
public abstract class ProtocolesCallback extends PHPCallback<ProtocoleServiceResultat> {
 
public ProtocolesCallback() {
 
}
 
@Override
public void onResponseReceived(Request request, Response response) {
ProtocoleServiceResultat protocolesRecus = convertirReponseVersListeProtocoles(response);
surProtocolesRecus(protocolesRecus);
public ProtocoleServiceResultat parserJSON(String retourService) {
return new ProtocoleServiceResultat(JSONParser.parseStrict(retourService));
}
 
@Override
public void onError(Request request, Throwable exception) {
Window.alert(exception.getMessage());
}
 
public abstract void surProtocolesRecus(ProtocoleServiceResultat protocolesRecus);
 
private ProtocoleServiceResultat convertirReponseVersListeProtocoles(Response reponse) {
ProtocoleServiceResultat resultat = new ProtocoleServiceResultat(JSONParser.parseStrict(reponse.getText()));
return resultat;
}
 
}
/trunk/src/org/tela_botanica/del/client/services/rest/async/UtilisateurCallback.java
3,30 → 3,13
import org.tela_botanica.del.client.modeles.Utilisateur;
import org.tela_botanica.del.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 {
public abstract class UtilisateurCallback extends PHPCallback<Utilisateur> {
 
@Override
public void onResponseReceived(Request request, Response response){
int statusCode = response.getStatusCode();
if (statusCode == 200) {
Utilisateur utilisateur = UtilitairesServiceResultat.parserUtilisateurJson(JSONParser.parseStrict(response.getText()));
surRetourUtilisateur(utilisateur);
} else {
surErreurUtilisateur("Erreur " + statusCode + ": " + response.getText());
}
public Utilisateur parserJSON(String retourService) {
return UtilitairesServiceResultat.parserUtilisateurJson(JSONParser.parseStrict(retourService));
}
 
@Override
public void onError(Request request, Throwable exception) {
Window.alert(exception.getMessage());
}
public abstract void surRetourUtilisateur(Utilisateur utilisateur);
public abstract void surErreurUtilisateur(String erreur);
}
/trunk/src/org/tela_botanica/del/client/services/rest/VoteDeterminationServiceConcret.java
3,8 → 3,9
import org.tela_botanica.del.client.config.Config;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.modeles.VoteDetermination;
import org.tela_botanica.del.client.services.rest.async.VoteDeterminationCallback;
import org.tela_botanica.del.client.services.rest.async.VoteDeterminationCallback.ModeRequete;
import org.tela_botanica.del.client.services.rest.async.AjoutVoteDeterminationCallback;
import org.tela_botanica.del.client.services.rest.async.ListeVotesDeterminationCallback;
import org.tela_botanica.del.client.services.rest.async.PHPCallback.ModeRequete;
 
import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.user.client.Window;
23,7 → 24,7
}
@Override
public void ajouterVote(VoteDetermination voteDetermination, VoteDeterminationCallback callback) {
public void ajouterVote(VoteDetermination voteDetermination, AjoutVoteDeterminationCallback callback) {
String idObservation = voteDetermination.getPropositionDetermination().getObservation().getId();
47,7 → 48,7
}
 
@Override
public void modifierVote(VoteDetermination voteDetermination, VoteDeterminationCallback callback) {
public void modifierVote(VoteDetermination voteDetermination, AjoutVoteDeterminationCallback callback) {
String idObservation = voteDetermination.getPropositionDetermination().getObservation().getId();
String idProposition = voteDetermination.getPropositionDetermination().getId();
//cas de la proposition de détermination crée automatiquement à partir de l'obs
74,7 → 75,7
}
 
@Override
public void consulterVotesPourPropositionDetermination(PropositionDetermination propositionDetermination, VoteDeterminationCallback callback) {
public void consulterVotesPourPropositionDetermination(PropositionDetermination propositionDetermination, ListeVotesDeterminationCallback callback) {
String idObservation = propositionDetermination.getObservation().getId();
String idProposition = propositionDetermination.getId();
//cas de la proposition de détermination crée automatiquement à partir de l'obs
/trunk/src/org/tela_botanica/del/client/services/rest/CommentaireServiceConcret.java
3,8 → 3,9
import org.tela_botanica.del.client.config.Config;
import org.tela_botanica.del.client.modeles.Commentaire;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.services.rest.async.CommentaireCallback;
import org.tela_botanica.del.client.services.rest.async.CommentaireCallback.ModeRequete;
import org.tela_botanica.del.client.services.rest.async.AjoutCommentaireCallback;
import org.tela_botanica.del.client.services.rest.async.ListeCommentairesCallback;
import org.tela_botanica.del.client.services.rest.async.PHPCallback.ModeRequete;
 
import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.http.client.URL;
23,7 → 24,7
}
@Override
public void ajouterCommentaire(Commentaire commentaire, CommentaireCallback callback) {
public void ajouterCommentaire(Commentaire commentaire, AjoutCommentaireCallback callback) {
String urlService = baseUrl+"commentaires/";
RequestBuilder rb = new RequestBuilder(RequestBuilder.PUT, urlService);
61,7 → 62,7
return chaineRequete;
}
 
public void chargerCommentaires(PropositionDetermination propositionDetermination, CommentaireCallback commentaireCallback) {
public void chargerCommentaires(PropositionDetermination propositionDetermination, ListeCommentairesCallback commentaireCallback) {
String urlService = baseUrl+"commentaires/?masque.proposition="+propositionDetermination.getId();
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, urlService);
/trunk/src/org/tela_botanica/del/client/services/rest/VoteProtocoleServiceConcret.java
4,8 → 4,9
 
import org.tela_botanica.del.client.config.Config;
import org.tela_botanica.del.client.modeles.VoteProtocole;
import org.tela_botanica.del.client.services.rest.async.PHPCallback.ModeRequete;
import org.tela_botanica.del.client.services.rest.async.VoteProtocoleCallback;
import org.tela_botanica.del.client.services.rest.async.VoteProtocoleCallback.ModeRequete;
 
import com.google.gwt.http.client.RequestBuilder;
 
public class VoteProtocoleServiceConcret implements VoteProtocoleService {
/trunk/src/org/tela_botanica/del/client/services/rest/ProtocoleServiceConcret.java
1,6 → 1,7
package org.tela_botanica.del.client.services.rest;
 
import org.tela_botanica.del.client.config.Config;
import org.tela_botanica.del.client.services.rest.async.PHPCallback.ModeRequete;
import org.tela_botanica.del.client.services.rest.async.ProtocolesCallback;
import com.google.gwt.http.client.RequestBuilder;
 
27,6 → 28,7
//TODO: inventer un système de cache car sinon c'est chargé à fois qu'on accède à la partie
// recherche image
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, baseUrl + "protocoles");
callback.setMode(ModeRequete.LECTURE);
try {
rb.sendRequest(null, callback);
} catch (Exception e) {
/trunk/src/org/tela_botanica/del/client/services/rest/PropositionDeterminationServiceConcret.java
2,8 → 2,8
 
import org.tela_botanica.del.client.config.Config;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.services.rest.async.PHPCallback.ModeRequete;
import org.tela_botanica.del.client.services.rest.async.PropositionDeterminationCallBack;
import org.tela_botanica.del.client.services.rest.async.PropositionDeterminationCallBack.ModeRequete;
 
import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.http.client.URL;
/trunk/src/org/tela_botanica/del/client/services/rest/UtilisateurServiceConcret.java
2,6 → 2,7
 
import org.tela_botanica.del.client.config.Config;
import org.tela_botanica.del.client.services.rest.async.UtilisateurCallback;
import org.tela_botanica.del.client.services.rest.async.PHPCallback.ModeRequete;
 
import com.google.gwt.http.client.RequestBuilder;
 
21,6 → 22,7
@Override
public void connecterUtilisateur(String login, String motDePasse, UtilisateurCallback callback) {
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, baseUrl + "utilisateurs/" + login + "/" + motDePasse);
callback.setMode(ModeRequete.LECTURE);
try {
rb.sendRequest(null, callback);
} catch (Exception e) {
31,6 → 33,7
@Override
public void deconnecterUtilisateur(UtilisateurCallback callback) {
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, baseUrl + "utilisateurs/deconnecter");
callback.setMode(ModeRequete.LECTURE);
try {
rb.sendRequest(null, callback);
} catch (Exception e) {
41,6 → 44,7
@Override
public void obtenirUtilisateur(UtilisateurCallback callback) {
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, baseUrl + "utilisateurs/");
callback.setMode(ModeRequete.LECTURE);
try {
rb.sendRequest(null, callback);
} catch (Exception e) {
/trunk/src/org/tela_botanica/del/client/services/rest/VoteDeterminationService.java
2,12 → 2,13
 
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.modeles.VoteDetermination;
import org.tela_botanica.del.client.services.rest.async.VoteDeterminationCallback;
import org.tela_botanica.del.client.services.rest.async.AjoutVoteDeterminationCallback;
import org.tela_botanica.del.client.services.rest.async.ListeVotesDeterminationCallback;
 
public interface VoteDeterminationService {
 
void ajouterVote(VoteDetermination voteDetermination, VoteDeterminationCallback callback);
public void modifierVote(VoteDetermination voteDetermination, VoteDeterminationCallback callback);
void consulterVotesPourPropositionDetermination(PropositionDetermination propositionDetermination, VoteDeterminationCallback callBack);
void ajouterVote(VoteDetermination voteDetermination, AjoutVoteDeterminationCallback callback);
public void modifierVote(VoteDetermination voteDetermination, AjoutVoteDeterminationCallback callback);
void consulterVotesPourPropositionDetermination(PropositionDetermination propositionDetermination, ListeVotesDeterminationCallback callBack);
}
/trunk/src/org/tela_botanica/del/client/services/rest/ImageServiceConcret.java
3,6 → 3,7
import org.tela_botanica.del.client.config.Config;
import org.tela_botanica.del.client.modeles.InformationsRecherche;
import org.tela_botanica.del.client.services.rest.async.ImagesParTaxonCallback;
import org.tela_botanica.del.client.services.rest.async.PHPCallback.ModeRequete;
 
import com.google.gwt.http.client.RequestBuilder;
 
27,6 → 28,7
// adresse ajoutee temporairement le temps de faire fonctionner le
// service d'images eflore
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, baseUrl + "images?nom_taxon=" + taxon);
callback.setMode(ModeRequete.LECTURE);
try {
rb.sendRequest(null, callback);
} catch (Exception e) {
37,6 → 39,7
@Override
public void getImagesParTaxon(InformationsRecherche infos, int debut, int fin, ImagesParTaxonCallback callback) {
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, baseUrl + "images" + assemblerChaineRequete(infos, debut, fin));
callback.setMode(ModeRequete.LECTURE);
try {
rb.sendRequest(null, callback);
} catch (Exception e) {
47,6 → 50,7
public void getImagesParObservation(String observationId, ImagesParTaxonCallback callback) {
// TODO implementer avec une methode realiste
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, baseUrl + "observations/"+observationId);
callback.setMode(ModeRequete.LECTURE);
try {
rb.sendRequest(null, callback);
} catch (Exception e) {
/trunk/src/org/tela_botanica/del/client/composants/commentaires/DetailCommentairePresenteur.java
5,55 → 5,96
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
import org.tela_botanica.del.client.modeles.Commentaire;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.services.rest.CommentaireService;
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret;
import org.tela_botanica.del.client.services.rest.async.CommentaireCallback;
import org.tela_botanica.del.client.utils.UtilitairesServiceResultat;
import org.tela_botanica.del.client.services.rest.async.ListeCommentairesCallback;
 
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
 
/**
* Cette classe permet d'afficher une popup avec la liste des commentaires
* associées à une proposition de determination
*
* @author LIENS
*
*/
public class DetailCommentairePresenteur extends Presenteur {
 
/**
* Interface de la vue correspondante
*
* @author LIENS
*
*/
public interface Vue extends IsWidget {
public void afficherCommentairesProposition(PropositionDetermination propositionDetermination);
 
void stopChargement();
public void afficherAucuneDonnees();
 
void startChargement();
public void stopChargement();
 
public void afficherAucuneDonnees();
public void startChargement();
}
 
// La vue correspondante
private Vue vue;
 
// La proposition de determination
private PropositionDetermination propositionDetermination;
 
/**
* Constructeur
*
* @param vue
* @param propositionDetermination
*/
public DetailCommentairePresenteur(Vue vue, PropositionDetermination propositionDetermination) {
this.vue = vue;
this.propositionDetermination = propositionDetermination;
}
 
/**
* Declenchement du présenteur
*/
public void go(HasWidgets container) {
container.add(vue.asWidget());
}
 
/**
* Affichage des commentaires
*/
public void afficherCommentaires() {
 
// affichage de l'icone de chargement
vue.startChargement();
CommentaireServiceConcret commentaireService = new CommentaireServiceConcret();
commentaireService.chargerCommentaires(propositionDetermination, new CommentaireCallback() {
 
// Appel du service
CommentaireService commentaireService = new CommentaireServiceConcret();
commentaireService.chargerCommentaires(propositionDetermination, new ListeCommentairesCallback() {
 
@Override
public void surRetour(String messageRetour) {
List<Commentaire> commentaires = UtilitairesServiceResultat.parserCommentaires(JSONParser.parseStrict(messageRetour).isObject().get("resultats").isObject(), propositionDetermination.getObservation());
public void surRetour(List<Commentaire> commentaires) {
 
propositionDetermination.setListeCommentaires(commentaires);
int nbCommentaires = propositionDetermination.getTotalCommentaires();
if (nbCommentaires > 0) {
 
// s'il existe des commentaires ils sont affichés
if (propositionDetermination.getTotalCommentaires() > 0) {
 
// affichage des commentaires associés à la proposition dans
// la vue
vue.afficherCommentairesProposition(propositionDetermination);
 
// supression de l'icone de chargement
vue.stopChargement();
} else {
 
// affichage d'un message precisant qu'il n'y a pas de
// commentaires
vue.afficherAucuneDonnees();
 
// supression de l'icone de chargement
vue.stopChargement();
}
 
67,6 → 108,9
});
}
 
/**
* Gestion des evenements du presenteur
*/
@Override
protected void gererEvenements() {
// TODO Auto-generated method stub
/trunk/src/org/tela_botanica/del/client/composants/commentaires/DetailCommentaireVue.java
15,6 → 15,13
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.Widget;
 
/**
* Cette classe permet d'afficher une popup avec la liste des commentaires
* associées à une proposition de determination
*
* @author LIENS
*
*/
public class DetailCommentaireVue extends Composite implements DetailCommentairePresenteur.Vue {
 
private static DetailListeVotesDeterminationVueUIiBinder uiBinder = GWT.create(DetailListeVotesDeterminationVueUIiBinder.class);
35,6 → 42,9
initWidget(uiBinder.createAndBindUi(this));
}
 
/**
* Affiche les commentaires associées à une proposition de determination
*/
@Override
public void afficherCommentairesProposition(PropositionDetermination propositionDetermination) {
 
50,6 → 60,10
creerListeCommentaireRecursive(propositionDetermination.getListeCommentaires());
}
 
/**
* Affiche une liste de commentaires recursivement
* @param commentaires
*/
private void creerListeCommentaireRecursive(List<Commentaire> commentaires) {
 
for (Commentaire commentaire : commentaires) {
60,6 → 74,10
}
}
 
/**
* Affiche un commentaire
* @param commentaire
*/
private void chargerCommentaire(Commentaire commentaire) {
int ligne = htmlTableau.getRowCount() + 1;
htmlTableau.setHTML(ligne, 1, commentaire.getAuteur());
67,6 → 85,9
htmlTableau.setHTML(ligne, 3, commentaire.getDate() + "");
}
 
/**
* Affiche les en-têtes du tableau de commentaires
*/
private void creerEntetes() {
htmlTableau.setHTML(1, 1, I18n.getVocabulary().contributeur());
htmlTableau.setHTML(1, 2, I18n.getVocabulary().commentaire());
73,6 → 94,9
htmlTableau.setHTML(1, 3, I18n.getVocabulary().date());
}
 
/**
* Affiche un icone de début de chargement
*/
@Override
public void startChargement() {
panneauChargement.setHeight((this.getOffsetHeight() / 2) + "px");
80,11 → 104,17
panneauChargement.setVisible(true);
}
 
/**
* Cache l'icone de début de chargement
*/
@Override
public void stopChargement() {
panneauChargement.setVisible(false);
}
 
/**
* Affiche un message indiquant qu'il n'y a aucun commentaire à présenter
*/
@Override
public void afficherAucuneDonnees() {
aucuneDonnees.setVisible(true);
/trunk/src/org/tela_botanica/del/client/composants/formulaires/formulairecommentaire/FormulaireCommentairePresenteur.java
14,9 → 14,7
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire;
import org.tela_botanica.del.client.services.rest.CommentaireService;
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret;
import org.tela_botanica.del.client.services.rest.async.CommentaireCallback;
import org.tela_botanica.del.client.services.rest.async.CommentaireCallback.ModeRequete;
import org.tela_botanica.del.client.utils.UtilitairesServiceResultat;
import org.tela_botanica.del.client.services.rest.async.AjoutCommentaireCallback;
 
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
38,15 → 36,15
public interface Vue extends IsWidget {
 
public HasText getNomObjet();
 
public HasText getPrenomObjet();
 
public String getNom();
 
public String getPrenom();
 
public String getCourriel();
 
public abstract HasText getCommentaire();
 
public abstract HasClickHandlers getBoutonValidationCommentaire();
54,7 → 52,7
public void afficherStyleErreurNom(String styleErreur);
 
public void supprimerStyleErreurNom(String styleErreur);
 
public void afficherStyleErreurPrenom(String styleErreur);
 
public void supprimerStyleErreurPrenom(String styleErreur);
62,7 → 60,7
public void afficherStyleErreurCommentaire(String styleErreur);
 
public void supprimerStyleErreurCommentaire(String styleErreur);
 
void afficherNomPrenomEtDesactiver(String nom, String prenom, String courriel);
}
 
106,18 → 104,18
}
});
}
 
public void surValidationCommentaire() {
 
String texteCommentaire = vue.getCommentaire().getText();
String idUtilisateur = null;
if(CacheClient.getInstance().getUtilisateur().estIdentifie()) {
if (CacheClient.getInstance().getUtilisateur().estIdentifie()) {
idUtilisateur = CacheClient.getInstance().getUtilisateur().getId();
}
 
Contributeur contributeur = new Contributeur(idUtilisateur, vue.getNom(), vue.getPrenom(), vue.getCourriel());
final Commentaire commentaire = new Commentaire(contributeur, new Date(), texteCommentaire);
 
if (observation != null) {
commentaire.setObservation(observation);
commentaire.setParent(null);
125,12 → 123,12
commentaire.setObservation(CacheClient.getInstance().getObservationCourante());
commentaire.setParent(possesseurDeCommentaires);
}
commentaireService.ajouterCommentaire(commentaire, new CommentaireCallback(ModeRequete.AJOUT) {
 
commentaireService.ajouterCommentaire(commentaire, new AjoutCommentaireCallback() {
 
@Override
public void surRetour(String messageRetour) {
commentaire.setId(UtilitairesServiceResultat.convertirEtParserRetourAjoutCommentaire(messageRetour));
public void surRetour(String objetRetour) {
commentaire.setId(objetRetour);
if (observation != null) {
observation.getInterventionsForum().add(commentaire);
} else if (possesseurDeCommentaires != null) {
138,7 → 136,7
}
BusEvenementiel.getInstance().fireEvent(new EvenementAjoutCommentaire(commentaire));
}
 
@Override
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
/trunk/src/org/tela_botanica/del/client/composants/formulaires/identification/FormulaireIdentificationPresenteur.java
1,11 → 1,10
package org.tela_botanica.del.client.composants.formulaires.identification;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.i18n.I18n;
import org.tela_botanica.del.client.modeles.Utilisateur;
import org.tela_botanica.del.client.services.rest.UtilisateurService;
import org.tela_botanica.del.client.services.rest.UtilisateurServiceConcret;
import org.tela_botanica.del.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;
18,61 → 17,72
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) {
public void surRetour(Utilisateur objetRetour) {
CacheClient.getInstance().setUtilisateur(utilisateur);
rafraichir();
}
public void surErreurUtilisateur(String message) {
/*null*/
}
});
gererEvenements();
 
}
 
public void rafraichir() {
utilisateur = CacheClient.getInstance().getUtilisateur();
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) {
79,22 → 89,22
surTentativeLogin();
}
});
 
vue.getSeDeconnecter().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
deconnecterUtilisateur();
deconnecterUtilisateur();
}
});
 
vue.getLoginHasKeyPressHandler().addKeyPressHandler(creerGestionnaireEvenementToucheEntree());
vue.getMotdepasseHasKeyPressHandler().addKeyPressHandler(creerGestionnaireEvenementToucheEntree());
}
 
private void surTentativeLogin() {
String login = vue.getLogin().getText();
String login = vue.getLogin().getText();
String motdepasse = vue.getMotdepasse().getText();
 
if (login.equals("") || motdepasse.equals("")) {
gererErreur("saisirLogin");
} else {
101,7 → 111,7
connecterUtilisateur(login, motdepasse);
}
}
 
public KeyPressHandler creerGestionnaireEvenementToucheEntree() {
return new KeyPressHandler() {
public void onKeyPress(KeyPressEvent event) {
111,17 → 121,23
}
};
}
 
public void gererErreur(String erreur) {
vue.setErreur(erreur);
vue.afficherErreur();
}
 
public void connecterUtilisateur(String login, String motdepasse) {
 
utilisateurService.connecterUtilisateur(login, motdepasse, new UtilisateurCallback() {
 
public void surErreur(String message) {
vue.setErreur("identificationRefus");
vue.afficherErreur();
}
 
@Override
public void surRetourUtilisateur(Utilisateur utilisateur) {
public void surRetour(Utilisateur objetRetour) {
CacheClient.getInstance().setUtilisateur(utilisateur);
if (utilisateur.estIdentifie()) {
vue.masquerErreur();
128,31 → 144,27
rafraichir();
vue.basculerAffichageFormulaire();
vue.viderFormulaire();
}
}
}
public void surErreurUtilisateur(String message) {
vue.setErreur("identificationRefus");
vue.afficherErreur();
}
});
}
 
public void deconnecterUtilisateur() {
utilisateurService.deconnecterUtilisateur(new UtilisateurCallback() {
 
public void surErreur(String message) {
vue.setErreur("identificationRefus");
vue.afficherErreur();
}
 
@Override
public void surRetourUtilisateur(Utilisateur utilisateur) {
public void surRetour(Utilisateur objetRetour) {
CacheClient.getInstance().setUtilisateur(utilisateur);
rafraichir();
}
public void surErreurUtilisateur(String message) {
vue.setErreur("identificationRefus");
vue.afficherErreur();
}
});
}
 
public void go(HasWidgets composite) {
vue.ajouterVue(composite);
}
/trunk/src/org/tela_botanica/del/client/composants/formulaires/formulaireproposition/FormulairePropositionPresenteur.java
5,11 → 5,9
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.composants.formulaires.autocompletion.AutoCompletionComboBoxPresenteur;
import org.tela_botanica.del.client.composants.formulaires.autocompletion.AutoCompletionComboBoxVue;
 
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
import org.tela_botanica.del.client.composants.validation.ValidateurChampTexteNonNul;
import org.tela_botanica.del.client.config.Config;
import org.tela_botanica.del.client.modeles.Commentaire;
import org.tela_botanica.del.client.modeles.Contributeur;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.modeles.Utilisateur;
18,7 → 16,6
import org.tela_botanica.del.client.services.rest.PropositionDeterminationService;
import org.tela_botanica.del.client.services.rest.PropositionDeterminationServiceConcret;
import org.tela_botanica.del.client.services.rest.async.PropositionDeterminationCallBack;
import org.tela_botanica.del.client.services.rest.async.PropositionDeterminationCallBack.ModeRequete;
import org.tela_botanica.del.client.utils.UtilitairesAutoCompletionService;
import org.tela_botanica.del.client.utils.UtilitairesServiceResultat;
 
26,35 → 23,47
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.http.client.Response;
import com.google.gwt.user.client.Window;
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 FormulairePropositionPresenteur extends Presenteur {
 
public interface Vue extends IsWidget {
public HasText getObjetNom();
 
public HasText getObjetPrenom();
 
public HasWidgets getPropositionTaxon();
 
public HasText getCommentaires();
 
public HasClickHandlers getBoutonValidationProposition();
 
public void afficherNomPrenomEtDesactiver(String nom, String prenom);
 
public String getCourriel();
 
public void afficherEmailEtDesactiver(String courriel);
 
public String getNom();
 
public String getPrenom();
 
public void afficherStyleErreurNom(String styleErreur);
 
public void supprimerStyleErreurNom(String styleErreur);
 
public void afficherStyleErreurPrenom(String styleErreur);
 
public void supprimerStyleErreurPrenom(String styleErreur);
}
 
private Vue vue;
private Config config;
private AutoCompletionComboBoxPresenteur autoCompletionNomTaxonsPresenteur;
private PropositionDeterminationService propositionDeterminationService = new PropositionDeterminationServiceConcret();
 
public FormulairePropositionPresenteur(Vue vue) {
this.vue = vue;
config = new Config();
61,22 → 70,22
creerCompletionTaxons();
remplirAvecInfosUtilisateur();
}
 
private void remplirAvecInfosUtilisateur() {
Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
if(utilisateur.estIdentifie()) {
Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
if (utilisateur.estIdentifie()) {
vue.afficherNomPrenomEtDesactiver(utilisateur.getNom(), utilisateur.getPrenom());
vue.afficherEmailEtDesactiver(utilisateur.getCourriel());
}
}
 
private void creerCompletionTaxons() {
String url = this.config.getUrl("nomSciCompletionService");
autoCompletionNomTaxonsPresenteur = new AutoCompletionComboBoxPresenteur(new AutoCompletionComboBoxVue(), url) {
autoCompletionNomTaxonsPresenteur = new AutoCompletionComboBoxPresenteur(new AutoCompletionComboBoxVue(), url) {
protected String effectuerPreTraitementChaineRequete(String requete) {
return UtilitairesAutoCompletionService.effectuerPreTraitementChaineRequeteGenreEspeceSlash(requete);
}
 
@Override
protected String[] parserResultatRequete(Response response) {
return UtilitairesAutoCompletionService.parserRetourSimple(response);
99,8 → 108,8
return;
} else {
final PropositionDetermination propositionAjoutee = collecterValeursSaisieProposition();
propositionDeterminationService.ajouterProposition(propositionAjoutee, new PropositionDeterminationCallBack(ModeRequete.AJOUT) {
propositionDeterminationService.ajouterProposition(propositionAjoutee, new PropositionDeterminationCallBack() {
 
@Override
public void surRetour(String messageRetour) {
propositionAjoutee.setId(UtilitairesServiceResultat.convertirEtParserRetourAjoutCommentaire(messageRetour));
108,11 → 117,7
EvenementAjoutDetermination evenementAjoutDetermination = new EvenementAjoutDetermination(propositionAjoutee);
BusEvenementiel.getInstance().fireEvent(evenementAjoutDetermination);
}
@Override
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
}
 
});
}
}
126,25 → 131,25
public void afficherStyleErreur(String styleErreur) {
vue.afficherStyleErreurNom(styleErreur);
}
 
@Override
public void supprimerStyleErreur(String styleErreur) {
vue.supprimerStyleErreurNom(styleErreur);
}
};
 
ValidateurChampTexteNonNul validateurPrenom = new ValidateurChampTexteNonNul(vue.getObjetPrenom()) {
@Override
public void afficherStyleErreur(String styleErreur) {
vue.afficherStyleErreurPrenom(styleErreur);
}
 
@Override
public void supprimerStyleErreur(String styleErreur) {
vue.supprimerStyleErreurPrenom(styleErreur);
}
};
 
boolean nomSaisi = validateurNom.valider();
boolean prenomSaisi = validateurPrenom.valider();
 
154,9 → 159,9
private PropositionDetermination collecterValeursSaisieProposition() {
PropositionDetermination propositionAjoutee = new PropositionDetermination(CacheClient.getInstance().getObservationCourante());
propositionAjoutee.setId(CacheClient.getInstance().getObservationCourante().getId());
 
String idUtilisateur = null;
if(CacheClient.getInstance().getUtilisateur().estIdentifie()) {
if (CacheClient.getInstance().getUtilisateur().estIdentifie()) {
idUtilisateur = CacheClient.getInstance().getUtilisateur().getId();
}
 
164,7 → 169,7
propositionAjoutee.setContributeur(contributeur);
propositionAjoutee.setDate(new Date());
propositionAjoutee.setEspece(autoCompletionNomTaxonsPresenteur.getValeur());
 
if (vue.getCommentaires().getText() != "") {
String contenuCommentaire = vue.getCommentaires().getText();
propositionAjoutee.setCommentaire(contenuCommentaire);
/trunk/src/org/tela_botanica/del/client/composants/votes/details/DetailListeVotesDeterminationPresenteur.java
6,8 → 6,7
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.modeles.VoteDetermination;
import org.tela_botanica.del.client.services.rest.VoteDeterminationServiceConcret;
import org.tela_botanica.del.client.services.rest.async.VoteDeterminationCallback;
import org.tela_botanica.del.client.utils.UtilitairesServiceResultat;
import org.tela_botanica.del.client.services.rest.async.ListeVotesDeterminationCallback;
 
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.HasWidgets;
17,32 → 16,45
 
public interface Vue extends IsWidget {
public void afficherVotes(PropositionDetermination propositionDetermination);
 
void ajouterVote(VoteDetermination vote);
 
void stopChargement();
 
void startChargement();
 
public void afficherAucuneDonnees();
}
 
private Vue vue;
 
public DetailListeVotesDeterminationPresenteur(Vue vue) {
this.vue = vue;
}
 
public void go(HasWidgets container) {
container.add(vue.asWidget());
}
 
public void afficherVotes(final PropositionDetermination propositionDetermination) {
vue.startChargement();
VoteDeterminationServiceConcret voteService = new VoteDeterminationServiceConcret();
voteService.consulterVotesPourPropositionDetermination(propositionDetermination, new VoteDeterminationCallback() {
voteService.consulterVotesPourPropositionDetermination(propositionDetermination, new ListeVotesDeterminationCallback() {
 
@Override
public void surRetour(String messageRetour) {
HashMap<String, VoteDetermination> votesComplets = UtilitairesServiceResultat.parserRetourListeVotesDetermination(messageRetour, propositionDetermination);
if(votesComplets != null) {
propositionDetermination.setVotesDeterminations(UtilitairesServiceResultat.parserRetourListeVotesDetermination(messageRetour, propositionDetermination));
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
vue.stopChargement();
}
 
@Override
public void surRetour(HashMap<String, VoteDetermination> votesComplets) {
if (votesComplets != null && votesComplets.size() > 0) {
for (VoteDetermination voteDetermination : votesComplets.values()) {
voteDetermination.setPropositionDetermination(propositionDetermination);
}
 
propositionDetermination.setVotesDeterminations(votesComplets);
vue.afficherVotes(propositionDetermination);
vue.stopChargement();
} else {
49,19 → 61,12
vue.afficherAucuneDonnees();
vue.stopChargement();
}
 
}
 
@Override
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
vue.stopChargement();
}
});
}
 
@Override
protected void gererEvenements() {
// TODO Auto-generated method stub
}
// TODO Auto-generated method stub
}
}
/trunk/src/org/tela_botanica/del/client/composants/votes/moyennevotes/MoyenneVotePresenteur.java
1,7 → 1,6
package org.tela_botanica.del.client.composants.votes.moyennevotes;
 
import java.util.Iterator;
import java.util.List;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.modeles.Image;
10,10 → 9,10
import org.tela_botanica.del.client.services.rest.VoteProtocoleService;
import org.tela_botanica.del.client.services.rest.VoteProtocoleServiceConcret;
import org.tela_botanica.del.client.services.rest.async.VoteProtocoleCallback;
 
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.user.client.Window;
import com.google.gwt.user.client.ui.HasText;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
22,32 → 21,45
 
public interface Vue extends IsWidget {
public HasClickHandlers getBoutonVoter();
 
public HasClickHandlers getBoutonAnnuler();
 
public HasText getNbVotes();
 
public HasClickHandlers getVotes();
 
public int getValeurVote();
 
public void afficherBoutonVoter();
 
public void afficherBoutonAnnuler();
 
public void masquerBoutonVoter();
 
public void masquerBoutonAnnuler();
 
public void afficherNbVotes();
public void masquerNbVotes();
 
public void masquerNbVotes();
 
public void reinitialiserVotes();
 
public void rafraichir(int moyenneVote, int nbVotes);
 
public void ajouterAuParent(HasWidgets composite);
}
 
private Vue vue;
private Protocole protocole;
private Image image;
 
private int valeurVoteDefaut = -1;
private int valeurVoteUtilisateur = -1;
private int valeurVoteTotal = 0;
//TODO: on devrait passer un conteneur qui permet d'accéder à ces services
 
// TODO: on devrait passer un conteneur qui permet d'accéder à ces services
private VoteProtocoleService voteProtocoleService = new VoteProtocoleServiceConcret();
 
public MoyenneVotePresenteur(Image image, Protocole protocole, Vue vue) {
this.vue = vue;
this.protocole = protocole;
59,7 → 71,7
gererEvenements();
rafraichirVue();
}
 
public void gererEvenements() {
vue.getVotes().addClickHandler(new ClickHandler() {
@Override
70,7 → 82,7
vue.masquerNbVotes();
}
});
 
vue.getBoutonAnnuler().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
81,7 → 93,7
vue.reinitialiserVotes();
}
});
 
vue.getBoutonVoter().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
93,13 → 105,13
}
});
}
 
public void setValeurVoteUtilisateur(int valeurVoteUtilisateur) {
this.valeurVoteUtilisateur = valeurVoteUtilisateur;
}
 
public void enregistrerVote() {
final VoteProtocole voteProtocole = new VoteProtocole();
final VoteProtocole voteProtocole = new VoteProtocole();
voteProtocole.setProtocole(this.protocole);
voteProtocole.setVote(valeurVoteUtilisateur);
String idContributeur = CacheClient.getInstance().getUtilisateur().getId();
107,26 → 119,23
// TODO: Mettre un message de chargement pendant l'envoi du vote ?
// C'est très rapide mais bon
VoteProtocoleCallback vpc = new VoteProtocoleCallback() {
 
@Override
public void surRetour(String messageRetour) {
//TODO: voir si l'on affiche un message en cas de succès ?
public void surRetour(Void objetRetour) {
// TODO: voir si l'on affiche un message en cas de succès ?
image.ajouterVoteProtocole(voteProtocole);
rafraichirVue();
}
@Override
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
}
 
};
if(image.utilisateurAVotePourProtocole(this.protocole.getId()+"", idContributeur)) {
 
if (image.utilisateurAVotePourProtocole(this.protocole.getId() + "", idContributeur)) {
voteProtocoleService.modifierVote(image.getIdImage(), voteProtocole, vpc);
} else {
voteProtocoleService.ajouterVote(image.getIdImage(), voteProtocole, vpc);
}
}
 
public int getValeurVoteTotal() {
return valeurVoteTotal;
}
134,26 → 143,26
public IsWidget getVue() {
return vue;
}
 
private void rafraichirVue() {
valeurVoteTotal = calculerMoyenneVotes();
vue.rafraichir(valeurVoteTotal, image.getVotesProtocoles(protocole.getId()).size());
}
 
public int calculerMoyenneVotes() {
double valeurVote = 0;
int nbVote = 0;
for (Iterator<String> iterator = image.getVotesProtocoles(protocole.getId()).keySet().iterator(); iterator.hasNext();) {
VoteProtocole imageCelValidationData = image.getVotesProtocoles(protocole.getId()).get(iterator.next());
valeurVote += (double)imageCelValidationData.getVote()/5;
valeurVote += (double) imageCelValidationData.getVote() / 5;
nbVote++;
}
 
if (nbVote > 0) {
valeurVote /= nbVote;
valeurVote *= 5;
}
 
return (int)Math.round(valeurVote);
return (int) Math.round(valeurVote);
}
}
/trunk/src/org/tela_botanica/del/client/composants/votes/barrerepartition/BarreRepartitionVotePresenteur.java
7,11 → 7,10
import org.tela_botanica.del.client.modeles.VoteDetermination;
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.EvenementVoteDetermination;
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.GestionnaireEvenementVoteDetermination;
import org.tela_botanica.del.client.services.CalculVoteDeterminationService;
import org.tela_botanica.del.client.services.rest.VoteDeterminationService;
import org.tela_botanica.del.client.services.rest.VoteDeterminationServiceConcret;
import org.tela_botanica.del.client.services.rest.async.VoteDeterminationCallback;
import org.tela_botanica.del.client.services.rest.async.AjoutVoteDeterminationCallback;
 
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
21,29 → 20,36
import com.google.gwt.user.client.ui.IsWidget;
 
public class BarreRepartitionVotePresenteur {
 
public interface Vue extends IsWidget {
public void afficherVotes(int pourcentage, String NomTaxon);
 
public HasClickHandlers getBoutonOui();
 
public HasClickHandlers getBoutonNon();
 
public void desactiverBoutons();
 
public void activerBoutons();
 
public void setVoteOuiEffectue();
 
public void setVoteNonEffectue();
 
public void afficherVotePrisEnCompte(boolean b);
}
 
private Vue vue;
private MoyenneVote moyenneVote;
 
// TODO: classe conteneur qui est passé en paramètre au constructeur
private VoteDeterminationService voteDeterminationService = new VoteDeterminationServiceConcret();
 
public BarreRepartitionVotePresenteur(Vue vue) {
this.vue = vue;
gererEvenements();
}
 
public void go(HasWidgets container) {
container.add(vue.asWidget());
}
51,43 → 57,49
public void afficherVotes(MoyenneVote moyenneVote) {
this.moyenneVote = moyenneVote;
int score = moyenneVote.getScore();
String intitule =moyenneVote.getIntituleAssocie();
String intitule = moyenneVote.getIntituleAssocie();
vue.afficherVotes(score, intitule);
}
 
public Vue getBarreRepartitionVoteVue() {
return vue;
}
 
public MoyenneVote getMoyenneVote() {
return moyenneVote;
}
 
public void gererEvenements() {
 
vue.getBoutonOui().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
voter(true);
vue.afficherVotePrisEnCompte(true);
}
}
});
 
vue.getBoutonNon().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
voter(false);
vue.afficherVotePrisEnCompte(false);
}
}
});
}
 
private void surVoteDetermination(final VoteDetermination vd) {
if(vd.getPropositionDetermination().equals(moyenneVote.getPropositionAssociee())) {
VoteDeterminationCallback vdc = new VoteDeterminationCallback() {
if (vd.getPropositionDetermination().equals(moyenneVote.getPropositionAssociee())) {
AjoutVoteDeterminationCallback vdc = new AjoutVoteDeterminationCallback() {
 
@Override
public void surRetour(String messageRetour) {
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
vue.activerBoutons();
}
 
@Override
public void surRetour(Void objetRetour) {
moyenneVote.getPropositionAssociee().ajouterVoteDetermination(vd);
moyenneVote = CalculVoteDeterminationService.calculerVoteDetermination(moyenneVote.getPropositionAssociee());
afficherVotes(moyenneVote);
95,34 → 107,28
// l'évènement n'est lancé que si le vote est validé
BusEvenementiel.getInstance().fireEvent(new EvenementVoteDetermination(vd));
}
};
 
@Override
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
vue.activerBoutons();
}
};
if(moyenneVote.getPropositionAssociee().utilisateurAVotePourDetermination(vd.getContributeur())) {
if (moyenneVote.getPropositionAssociee().utilisateurAVotePourDetermination(vd.getContributeur())) {
voteDeterminationService.modifierVote(vd, vdc);
} else {
voteDeterminationService.ajouterVote(vd, vdc);
}
}
}
}
 
public void voter(boolean oui) {
 
VoteDetermination vd = new VoteDetermination();
vd.setPropositionDetermination(moyenneVote.getPropositionAssociee());
vd.setContributeur(CacheClient.getInstance().getUtilisateur().getId());
vd.setDate(new Date());
 
int valeurVote = oui ? 1 : 0;
vd.setVote(valeurVote);
vd.setId(CacheClient.getInstance().getUtilisateur().getId());
if(oui) {
 
if (oui) {
vue.setVoteOuiEffectue();
} else {
vue.setVoteNonEffectue();
/trunk/src/org/tela_botanica/del/client/utils/UtilitairesServiceResultat.java
65,7 → 65,10
JSONValue propositions = observationJson.get("commentaires");
 
if (propositions != null && propositions.isObject() != null) {
List<InterventionForum> interventions = parserInterventions(propositions.isObject(), observation);
List<InterventionForum> interventions = parserInterventions(propositions.isObject());
for (InterventionForum interventionForum : interventions) {
interventionForum.setObservation(observation);
}
observation.setInterventionsForum(interventions);
} else {
observation.ajouterPropositionDetermination(creerPropositionDeterminationAPartirObservation(observation));
73,8 → 76,8
return observation;
}
 
public static List<Commentaire> parserCommentaires(JSONObject commentaires, Observation observation) {
List<InterventionForum> interventionForums = parserInterventions(commentaires, observation);
public static List<Commentaire> parserCommentaires(JSONObject commentaires) {
List<InterventionForum> interventionForums = parserInterventions(commentaires);
List<Commentaire> commentairesListe = new ArrayList<Commentaire>();
for (InterventionForum interventionForum : interventionForums) {
if (interventionForum instanceof Commentaire) {
85,13 → 88,13
 
}
 
public static List<InterventionForum> parserInterventions(JSONObject interventions, Observation observation) {
public static List<InterventionForum> parserInterventions(JSONObject interventions) {
HashMap<String, InterventionForum> interventionsNonTypees = new HashMap<String, InterventionForum>();
 
List<InterventionForum> retour = new ArrayList<InterventionForum>();
 
// parcourir les interventions et en faire un tableau
if(interventions==null){
if (interventions == null) {
return retour;
}
Iterator<String> itInterventions = interventions.keySet().iterator();
123,12 → 126,12
String nbCommentaires = getValeurOuVide(jsonIntervention, "nb_commentaires");
 
PropositionDetermination intervention = new PropositionDetermination(id, contributeur, texte);
intervention.setObservation(observation);
// intervention.setObservation(observation);
intervention.setEspece(nom_sel);
 
if (!nbCommentaires.equals("")) {
int nbComm = Integer.parseInt(nbCommentaires);
if(!texte.equals("")) {
if (!texte.equals("")) {
nbComm++;
}
intervention.setNbCommentaires(nbComm);
139,7 → 142,7
}
 
if (jsonIntervention.get("votes") != null && jsonIntervention.get("votes").isObject() != null) {
intervention.setVotesDeterminations(parserVotesDetermination(jsonIntervention.get("votes").isObject(), intervention));
intervention.setVotesDeterminations(parserVotesDetermination(jsonIntervention.get("votes").isObject()));
}
 
intervention.setDate(date);
167,11 → 170,10
}
}
 
retour.addAll(interventionsNonTypees.values());
return retour;
}
 
public static String convertirEtParserRetourAjoutCommentaire(String retour) {
JSONObject retourJson = JSONParser.parseStrict(retour).isObject();
return parserRetourAjoutCommentaire(retourJson);
205,7 → 207,7
return propositionDetermination;
}
 
public static HashMap<String, VoteDetermination> parserRetourListeVotesDetermination(String votesString, PropositionDetermination proposition) {
public static HashMap<String, VoteDetermination> parserRetourListeVotesDetermination(String votesString) {
 
HashMap<String, VoteDetermination> retour = null;
 
212,12 → 214,12
JSONObject votes = JSONParser.parseStrict(votesString).isObject();
if (votes != null && votes.get("resultats") != null && votes.get("resultats").isObject() != null) {
JSONObject resultat = votes.get("resultats").isObject();
retour = parserVotesDetermination(resultat, proposition);
retour = parserVotesDetermination(resultat);
}
return retour;
}
 
public static HashMap<String, VoteDetermination> parserVotesDetermination(JSONObject votes, PropositionDetermination proposition) {
public static HashMap<String, VoteDetermination> parserVotesDetermination(JSONObject votes) {
HashMap<String, VoteDetermination> votesDetermination = new HashMap<String, VoteDetermination>();
java.util.Iterator<String> itVotes = votes.keySet().iterator();
while (itVotes.hasNext()) {
226,7 → 228,6
vd.setContributeur(getValeurOuVide(vote, "auteur.id"));
vd.setDate(new Date());
vd.setId(getValeurOuVide(vote, "vote.id"));
vd.setPropositionDetermination(proposition);
vd.setVote(Integer.parseInt(getValeurOuVide(vote, "vote")));
vd.setContributeur(getValeurOuVide(vote, "auteur.id"));
 
/trunk/src/org/tela_botanica/del/client/utils/MockDatasource.java
23,7 → 23,7
import org.tela_botanica.del.client.services.rest.PropositionDeterminationService;
import org.tela_botanica.del.client.services.rest.ProtocoleService;
import org.tela_botanica.del.client.services.rest.VoteProtocoleService;
import org.tela_botanica.del.client.services.rest.async.CommentaireCallback;
import org.tela_botanica.del.client.services.rest.async.ListeCommentairesCallback;
import org.tela_botanica.del.client.services.rest.async.ImagesParTaxonCallback;
import org.tela_botanica.del.client.services.rest.async.ObservationsCallback;
import org.tela_botanica.del.client.services.rest.async.PropositionDeterminationCallBack;
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/resultats/ResultatsRechercheObservationsPresenteur.java
16,9 → 16,9
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.user.client.Window;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Label;
 
public class ResultatsRechercheObservationsPresenteur extends Presenteur {
 
27,16 → 27,27
* */
public abstract interface Vue extends IsWidget {
public HasWidgets getZoneObservations();
 
public HasWidgets getZonePaginationHaut();
 
public HasWidgets getZonePaginationBas();
 
public void startChargement();
 
public void stopChargement();
 
public void nettoyer();
 
public HasClickHandlers getTriParDateAscendant();
 
public HasClickHandlers getTriParDateDescendant();
 
public void afficherElementsAucunResultatTrouve();
public void afficherElementsResultatsTrouves();
 
public void afficherElementsResultatsTrouves();
 
public HasClickHandlers getLabelDate();
 
public void setModeTri(ModeTri mode);
}
 
44,11 → 55,13
private ObservationService serviceObs;
private ModeTri triCourantDate = ModeTri.TRI_DESCENDANT;
private CacheClient cache = CacheClient.getInstance();
 
/**
* Constructeur de la classe
* @param ObservationService serviceObs le service pour récupérer les observations
* @Vue Vue l'objet implémentant l'interface
* Constructeur de la classe
*
* @param ObservationService
* serviceObs le service pour récupérer les observations
* @Vue Vue l'objet implémentant l'interface
* */
public ResultatsRechercheObservationsPresenteur(ObservationService serviceObs, Vue vue) {
this.vue = vue;
58,7 → 71,9
 
/**
* Lancer l'affichage de la recherche dans le composant passé en paramètre
* @param HasWidgets composite le conteneur de widgets dans lequel ajouter la vue
*
* @param HasWidgets
* composite le conteneur de widgets dans lequel ajouter la vue
* */
public void go(HasWidgets composite) {
composite.add(vue.asWidget());
67,26 → 82,36
}
 
/**
* Initier un callback pour créer le widget de pagination et afficher les observations recues
* et lancer la recherche avec le service
* Initier un callback pour créer le widget de pagination et afficher les
* observations recues et lancer la recherche avec le service
* */
public void lancerRechercheEtCreerWidgetPagination() {
 
int debut = (cache.getPageCouranteRechercheObservations() - 1) * cache.getPasPagination();
int fin = cache.getPageCouranteRechercheObservations() * cache.getPasPagination();
 
ObservationsCallback callback = new ObservationsCallback() {
public void surObservationsRecues(ObservationServiceResultat observationsRecues) {
 
@Override
public void surRetour(ObservationServiceResultat observationsRecues) {
creerWidgetPagination(observationsRecues.getNbTotalObservationsPourLaRecherche());
afficherObservations(observationsRecues);
 
}
 
@Override
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
 
}
};
 
serviceObs.getObservations(cache.getInformationsRechercheObservation(), debut, fin, callback);
}
 
/**
* Créer les widgets de pagination en fonction du nombre d'observation
*
* @param int nbObservations le nombre d'observations à afficher
* */
private void creerWidgetPagination(int nbObservations) {
94,15 → 119,16
PaginationPresenteur paginationPresenteurHaut = creerPresenteurPagination(nbObservations);
paginationPresenteurHaut.setGroupePagination("pagination_observations");
paginationPresenteurHaut.go(vue.getZonePaginationHaut());
 
vue.getZonePaginationBas().clear();
PaginationPresenteur paginationPresenteurBas = creerPresenteurPagination(nbObservations);
paginationPresenteurBas.setGroupePagination("pagination_observations");
paginationPresenteurBas.go(vue.getZonePaginationBas());
}
 
/**
* Créer un présenteur du widget pagination
*
* @param int nbObservations le nombre total d'observation à afficher
* */
private PaginationPresenteur creerPresenteurPagination(int nbObservations) {
122,26 → 148,26
};
return presenteur;
}
 
/**
* Gestion des évènements de la vue recherche Observation
* */
protected void gererEvenements() {
 
ClickHandler surClicDate = new ClickHandler() {
/**
* Gestion du clic sur l'option de tri par date d'observation
* Masque les éléments de tri qui sont en cours et affiche les autres
* Gestion du clic sur l'option de tri par date d'observation Masque
* les éléments de tri qui sont en cours et affiche les autres
* */
public void onClick(ClickEvent event) {
toggleModeTri();
 
InformationsRecherche informationsRechercheObservations = cache.getInformationsRechercheObservation();
informationsRechercheObservations.setTriParDate(triCourantDate);
chercherEtAfficherObservationsPageEnCours();
}
};
 
vue.getLabelDate().addClickHandler(surClicDate);
vue.getTriParDateAscendant().addClickHandler(surClicDate);
vue.getTriParDateDescendant().addClickHandler(surClicDate);
156,12 → 182,13
} else {
triCourantDate = ModeTri.TRI_ASCENDANT;
}
 
vue.setModeTri(triCourantDate);
}
 
/**
* Initialiser les variable de début et fin et lancer le chargement des observations
* Initialiser les variable de début et fin et lancer le chargement des
* observations
* */
public void chercherEtAfficherObservationsPageEnCours() {
int debut = (cache.getPageCouranteRechercheObservations() - 1) * cache.getPasPagination();
168,9 → 195,11
int fin = (cache.getPageCouranteRechercheObservations()) * cache.getPasPagination();
chargerEtAfficherObservations(debut, fin);
}
 
/**
* Lancer le service pour charger les observations entre debut et fin et les afficher
* Lancer le service pour charger les observations entre debut et fin et les
* afficher
*
* @param int debut l'entier de départ de la requete
* @param int fin l'entier de limite de la requete
* */
177,20 → 206,30
public void chargerEtAfficherObservations(int debut, int fin) {
vue.startChargement();
vue.nettoyer();
 
ObservationsCallback surReceptionObservation = new ObservationsCallback() {
 
@Override
public void surObservationsRecues(ObservationServiceResultat observationsRecues) {
public void surRetour(ObservationServiceResultat observationsRecues) {
afficherObservations(observationsRecues);
 
}
 
@Override
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
 
}
};
serviceObs.getObservations(cache.getInformationsRechercheObservation(), debut, fin, surReceptionObservation);
}
 
/**
* Parcrourir les résultats de la recherche pour initier l'affichage de chaque observation
* @param ObservationServiceResultat resultats les résultats issus de la requête
* Parcrourir les résultats de la recherche pour initier l'affichage de
* chaque observation
*
* @param ObservationServiceResultat
* resultats les résultats issus de la requête
* */
private void afficherObservations(ObservationServiceResultat resultats) {
vue.nettoyer();
/trunk/src/org/tela_botanica/del/client/vues/comparaisoneflore/ComparaisonEflorePresenteur.java
6,12 → 6,12
import org.tela_botanica.del.client.modeles.Image;
import org.tela_botanica.del.client.modeles.ImageServiceResultat;
import org.tela_botanica.del.client.services.rest.ImageService;
import org.tela_botanica.del.client.services.rest.VoteProtocoleService;
import org.tela_botanica.del.client.services.rest.async.ImagesParTaxonCallback;
 
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.user.client.Window;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
 
27,9 → 27,9
public HasClickHandlers getScrollRightImage();
 
public int getCurrentIndexImages();
public void startChargement() ;
 
public void startChargement();
 
public void stopChargement();
}
 
55,17 → 55,25
}
 
public void chargerObservationsEflore() {
 
vue.startChargement();
 
ImagesParTaxonCallback callback = new ImagesParTaxonCallback() {
 
@Override
public void surImagesRecues(ImageServiceResultat imagesRecues) {
public void surRetour(ImageServiceResultat imagesRecues) {
setImagesEflore(imagesRecues.getImages());
vue.chargerImagesEflore(imagesRecues.getImages(), 0);
vue.stopChargement();
 
}
 
@Override
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
 
}
 
};
 
imageService.getImagesEfloreParTaxon(nomTaxonComparaison, callback);
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/ResultatRechercheImagePresenteur.java
1,6 → 1,7
package org.tela_botanica.del.client.vues.rechercheimages.resultats;
 
import java.util.List;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.composants.pagination.PaginationPresenteur;
import org.tela_botanica.del.client.composants.pagination.PaginationVue;
20,6 → 21,7
import org.tela_botanica.del.client.services.rest.async.ProtocolesCallback;
import org.tela_botanica.del.client.vues.rechercheimages.resultats.images.ImagePresenteur;
import org.tela_botanica.del.client.vues.rechercheimages.resultats.images.ImageVue;
 
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
26,6 → 28,7
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.Window;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
93,6 → 96,7
 
public void afficherDateDescendant();
}
 
private Vue vue;
private ImageService imageService;
private final ProtocoleService protocoleService = new ProtocoleServiceConcret();
113,7 → 117,7
chargerProtocoles();
vue.masquerVoteDescendant();
vue.masquerVoteAscendant();
//vue.masquerDateDescendant();
// vue.masquerDateDescendant();
vue.masquerDateAscendant();
}
 
124,7 → 128,7
surChangementProtocole();
}
});
 
ClickHandler surClicTriVote = new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
131,11 → 135,11
surClicTriVote();
}
};
 
vue.getLabelVote().addClickHandler(surClicTriVote);
vue.getTriParNbVotesAscendant().addClickHandler(surClicTriVote);
vue.getTriParNbVotesDescendant().addClickHandler(surClicTriVote);
 
ClickHandler surClicTriDate = new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
142,11 → 146,11
surClicTriDate();
}
};
 
vue.getLabelDate().addClickHandler(surClicTriDate);
vue.getTriParDateAscendant().addClickHandler(surClicTriDate);
vue.getTriParDateDescendant().addClickHandler(surClicTriDate);
 
BusEvenementiel.getInstance().addHandler(EvenementChangementProtocole.TYPE, new GestionnaireEvenementChangementProtocole() {
@Override
public void onChangementProtocole(EvenementChangementProtocole event) {
212,13 → 216,15
private void chargerProtocoles() {
// test pour ne pas charger les protocoles déjà chargés
// TODO: faire un systeme de cache gérés par les web service eux même
if(CacheClient.getInstance().getListeProtocoles() == null) {
if (CacheClient.getInstance().getListeProtocoles() == null) {
protocoleService.getProtocoles(new ProtocolesCallback() {
 
@Override
public void surProtocolesRecus(ProtocoleServiceResultat protocolesRecus) {
public void surRetour(ProtocoleServiceResultat protocolesRecus) {
protocoles = protocolesRecus.getProtocoles();
remplirListeProtocole(protocoles);
}
 
}
});
} else {
protocoles = CacheClient.getInstance().getListeProtocoles();
225,12 → 231,12
remplirListeProtocole(CacheClient.getInstance().getListeProtocoles());
}
}
 
private void remplirListeProtocole(List<Protocole> protocoles) {
for (Protocole protocole : protocoles) {
vue.ajouterProtocole(protocole.getNom(), protocole.getId()+"");
vue.ajouterProtocole(protocole.getNom(), protocole.getId() + "");
}
if(CacheClient.getInstance().getProtocoleCourant() == null) {
if (CacheClient.getInstance().getProtocoleCourant() == null) {
vue.selectionnerProtocole(0);
}
}
239,11 → 245,19
// appel du service d'image pour avoir le nb total d'elements pour la
// pagination
ImagesParTaxonCallback callback = new ImagesParTaxonCallback() {
 
@Override
public void surImagesRecues(ImageServiceResultat imagesRecues) {
public void surRetour(ImageServiceResultat imagesRecues) {
creerWidgetPagination(imagesRecues.getNbTotalImagesPourLaRecherche());
afficherImages(imagesRecues);
 
}
 
@Override
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
 
}
};
final int debut = (CacheClient.getInstance().getPageCouranteRechercheImage() - 1) * CacheClient.getInstance().getPasPagination();
final int fin = (CacheClient.getInstance().getPageCouranteRechercheImage()) * CacheClient.getInstance().getPasPagination();
254,10 → 268,19
vue.startChargement();
vue.nettoyer();
ImagesParTaxonCallback callback = new ImagesParTaxonCallback() {
 
@Override
public void surImagesRecues(ImageServiceResultat imagesRecues) {
public void surRetour(ImageServiceResultat imagesRecues) {
afficherImages(imagesRecues);
 
}
 
@Override
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
 
}
 
};
imageService.getImagesParTaxon(CacheClient.getInstance().getInformationsRechercheImage(), premier, dernier, callback);
}
286,8 → 309,7
}
 
public PaginationPresenteur creerPresenteurPagination(int nbImages) {
PaginationPresenteur imagesPaginationPresenteur = new PaginationPresenteur(new PaginationVue(), nbImages, CacheClient.getInstance().getPasPagination(), CacheClient.getInstance()
.getPageCouranteRechercheImage()) {
PaginationPresenteur imagesPaginationPresenteur = new PaginationPresenteur(new PaginationVue(), nbImages, CacheClient.getInstance().getPasPagination(), CacheClient.getInstance().getPageCouranteRechercheImage()) {
@Override
public void chargerElements(int debut, int fin) {
chargerEtAfficherImages(debut, fin);
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/moteur/MoteurRechercheImagePresenteur.java
11,6 → 11,7
import org.tela_botanica.del.client.services.rest.async.ProtocolesCallback;
import org.tela_botanica.del.client.vues.rechercheimages.resultats.ResultatRechercheImagePresenteur;
import org.tela_botanica.del.client.vues.rechercheimages.resultats.ResultatRechercheImageVue;
 
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
 
18,30 → 19,34
 
public interface Vue extends IsWidget {
public HasWidgets getZoneResultats();
 
public HasWidgets getZoneRecherche();
 
public void ajouterVue(HasWidgets composite);
}
 
private Vue vue;
private final ProtocoleService protocoleService = new ProtocoleServiceConcret();
 
/**
* Constructeur
* */
public MoteurRechercheImagePresenteur(Vue vue) {
this.vue = vue;
//TODO: le code ci dessous sert à ne pas recharger les protocoles
// TODO: le code ci dessous sert à ne pas recharger les protocoles
// à chaque fois, voir si on peut le factoriser quelque part
if (CacheClient.getInstance().getProtocoleCourant() == null) {
if(CacheClient.getInstance().getListeProtocoles() == null) {
if (CacheClient.getInstance().getListeProtocoles() == null) {
protocoleService.getProtocoles(new ProtocolesCallback() {
 
@Override
public void surProtocolesRecus(ProtocoleServiceResultat protocolesRecus) {
public void surRetour(ProtocoleServiceResultat protocolesRecus) {
CacheClient.getInstance().setListeProtocoles(protocolesRecus.getProtocoles());
if(protocolesRecus.getProtocoles().size() > 0) {
CacheClient.getInstance().setProtocoleCourant(protocolesRecus.getProtocoles().get(0));
if (protocolesRecus.getProtocoles().size() > 0) {
CacheClient.getInstance().setProtocoleCourant(protocolesRecus.getProtocoles().get(0));
} else {
//TODO afficher message indiquant que la liste des protocoles de votes n'est pas fourni
// TODO afficher message indiquant que la liste des
// protocoles de votes n'est pas fourni
}
}
});
55,7 → 60,7
vue.ajouterVue(composite);
chargerMoteurRechercheAvancee();
}
 
public void chargerMoteurRechercheAvancee() {
MoteurRecherchePresenteur presenteurRecherche = new MoteurRecherchePresenteur(new MoteurRechercheVue(""), ModeRecherche.MODE_IMAGE) {
public void lancerRecherche() {
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/DeterminationPresenteur.java
43,6 → 43,7
 
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
52,15 → 53,23
 
public interface Vue extends IsWidget {
public Panel getForum();
 
public Panel getDetailImageObservation();
 
public Panel getFormulaireRechercheEflore();
 
public Panel getVoteProtocole();
 
public Button getBoutonAjoutProposition();
 
public Button getBoutonAjoutCommentaire();
 
public HasWidgets getMetadonnees();
//public void ajouterLigneVoteProtocole(IsWidget vue);
//public void ajouterLigneVoteProtocole(String nom, IsWidget vue);
 
// public void ajouterLigneVoteProtocole(IsWidget vue);
// public void ajouterLigneVoteProtocole(String nom, IsWidget vue);
public HasWidgets getNouvelleLigneProtocole();
 
public void afficherNomTaxonProbable(String nomTaxon);
}
 
67,7 → 76,7
private Vue vue;
 
FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur;
 
private ProtocoleService protocoleService = new ProtocoleServiceConcret();
private ObservationService observationService = new ObservationServiceConcret();
 
76,16 → 85,16
}
 
public void go(final HasWidgets composite) {
//TODO afficher une icone de chargement si le chargement devient trop long
 
// TODO afficher une icone de chargement si le chargement devient trop
// long
// car tout l'écran est asynchrone ici
observationService.getObservation(CacheClient.getInstance().getObservationCourante().getId(), new ObservationsCallback() {
//@Override
public void surObservationsRecues(
ObservationServiceResultat observationsRecues) {
observationService.getObservation(CacheClient.getInstance().getObservationCourante().getId(), new ObservationsCallback() {
 
@Override
public void surRetour(ObservationServiceResultat objetRetour) {
CacheClient.getInstance().setImageCourante(CacheClient.getInstance().getObservationCourante().getImages().get(0));
 
new MetadonneesPresenteur(new MetadonneesEnLigneVue(), CacheClient.getInstance().getObservationCourante(), ModeRecherche.MODE_OBSERVATION).go(vue.getMetadonnees());
new ObservationImagesPresenteur(new ObservationImagesVue(), CacheClient.getInstance().getObservationCourante()).go(vue.getDetailImageObservation());
 
95,19 → 104,25
 
calculerEtAfficherVoteDeterminationPlusPopulaire();
composite.add(vue.asWidget());
 
}
});
 
@Override
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
}
});
gererEvenements();
}
 
private void chargerEtAjouterLignesVotesProtocole() {
if(CacheClient.getInstance().getListeProtocoles() == null) {
if (CacheClient.getInstance().getListeProtocoles() == null) {
protocoleService.getProtocoles(new ProtocolesCallback() {
 
@Override
public void surProtocolesRecus(ProtocoleServiceResultat protocolesRecus) {
public void surRetour(ProtocoleServiceResultat protocolesRecus) {
List<Protocole> listeProtocoles = protocolesRecus.getProtocoles();
ajouterLignesVotesProtocole(listeProtocoles);
}
});
} else {
115,7 → 130,7
ajouterLignesVotesProtocole(listeProtocoles);
}
}
 
private void ajouterLignesVotesProtocole(List<Protocole> listeProtocoles) {
for (Iterator<Protocole> iterator = listeProtocoles.iterator(); iterator.hasNext();) {
Protocole protocole = iterator.next();
123,7 → 138,7
presenteurLigneProtocole.go(vue.getNouvelleLigneProtocole());
}
}
 
private void calculerEtAfficherVoteDeterminationPlusPopulaire() {
 
List<MoyenneVote> votesOrdonnes = CalculVoteDeterminationService.calculerVoteDeterminationPlusPopulaire(CacheClient.getInstance().getObservationCourante().getPropositionDeterminations());
148,7 → 163,7
fenetreOverlaySimplePresenteur.ouvrirFenetreModale(new FormulairePropositionPresenteur(new FormulairePropositionVue()));
}
});
 
vue.getBoutonAjoutCommentaire().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
166,7 → 181,7
}
}
});
 
BusEvenementiel.getInstance().addHandler(EvenementAjoutCommentaire.TYPE, new GestionnaireEvenementAjoutCommentaire() {
 
@Override