Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 813 → Rev 814

/trunk/src/org/tela_botanica/del/client/utils/UtilitairesServiceResultat.java
12,12 → 12,9
import org.tela_botanica.del.client.modeles.Utilisateur;
import org.tela_botanica.del.client.modeles.VoteProtocole;
 
import com.google.gwt.dev.js.rhino.ObjToIntMap.Iterator;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.Window;
 
public class UtilitairesServiceResultat {
63,7 → 60,7
return observation;
}
private static String getValeurOuVide(JSONObject objet, String index) {
public static String getValeurOuVide(JSONObject objet, String index) {
return (objet.get(index).isString() != null) ? objet.get(index).isString().stringValue() : "";
}
/trunk/src/org/tela_botanica/del/client/utils/MockDatasource.java
25,6 → 25,7
import org.tela_botanica.del.client.services.rest.VoteProtocoleService;
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.ProtocolesCallback;
 
public class MockDatasource implements ObservationService, ImageService, ProtocoleService, VoteProtocoleService, PropositionDeterminationService {
 
93,11 → 94,11
Iterator<String> auteurs = auteurObs.keySet().iterator();
 
Protocole protocol1 = new Protocole();
protocol1.setNom(Protocole.ESTHETISME);
protocol1.setNom("esthétique");
protocol1.setId(0);
 
Protocole protocol2 = new Protocole();
protocol2.setNom(Protocole.IDENTIFICATION_AUTOMATIQUE);
protocol2.setNom("capitalisation de scan de feuilles");
protocol2.setId(1);
 
protocoles.add(protocol1);
302,17 → 303,6
 
List<VoteProtocole> voteProtocolesLocal = new ArrayList<VoteProtocole>();
 
// for (Image image : images) {
// if (image.getIdImage().equals(idImage)) {
// for (VoteProtocole voteProtocole : image.getVoteProtocoles()) {
// if (voteProtocole.getProtocole().getNom().equals(protocolName)) {
// voteProtocolesLocal.add(voteProtocole);
// }
// }
// }
//
// }
 
int rand = (int) (Math.random() * 5);
for (int i = 0; i < rand; i++) {
VoteProtocole voteProtocole = new VoteProtocole();
336,34 → 326,6
/*
* (non-Javadoc)
*
* @see
* org.tela_botanica.del.client.utils.ObservationService#getProtocole(java
* .lang.String)
*/
@Override
public Protocole getProtocole(String nomProtocole) {
for (Protocole protocole : protocoles) {
if (protocole.getNom().equals(nomProtocole)) {
return protocole;
}
}
return null;
}
 
/*
* (non-Javadoc)
*
* @see
* org.tela_botanica.del.client.utils.ObservationService#getProtocoles()
*/
@Override
public List<Protocole> getProtocoles() {
return protocoles;
}
 
/*
* (non-Javadoc)
*
* @see org.tela_botanica.del.client.utils.ObservationService#saveVote(org.
* tela_botanica.del.client.modeles.VoteProtocole)
*/
414,4 → 376,16
 
}
 
@Override
public void getProtocoles(ProtocolesCallback pc) {
// TODO Auto-generated method stub
}
 
@Override
public void getProtocole(String nomProtocole) {
// TODO Auto-generated method stub
}
 
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/moteur/MoteurRechercheImagePresenteur.java
1,23 → 1,16
package org.tela_botanica.del.client.vues.rechercheimages.moteur;
 
import java.util.List;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRecherchePresenteur;
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRechercheVue;
import org.tela_botanica.del.client.modeles.ModeRecherche;
import org.tela_botanica.del.client.modeles.Protocole;
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.EvenementChangementProtocole;
import org.tela_botanica.del.client.modeles.ProtocoleServiceResultat;
import org.tela_botanica.del.client.services.rest.ImageServiceConcret;
import org.tela_botanica.del.client.services.rest.ProtocoleService;
import org.tela_botanica.del.client.utils.MockDatasource;
import org.tela_botanica.del.client.services.rest.ProtocoleServiceConcret;
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.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.HasChangeHandlers;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
 
24,29 → 17,33
public class MoteurRechercheImagePresenteur {
 
public interface Vue extends IsWidget {
 
public HasWidgets getZoneResultats();
 
public HasWidgets getZoneRecherche();
 
public void ajouterVue(HasWidgets composite);
 
}
 
private Vue vue;
 
private final ProtocoleService protocoleService = MockDatasource.getInstance();
 
private String protocoleParDefaut = Protocole.ESTHETISME;
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
// à chaque fois, voir si on peut le factoriser quelque part
if (CacheClient.getInstance().getProtocoleCourant() == null) {
CacheClient.getInstance().setProtocoleCourant(protocoleService.getProtocole(protocoleParDefaut));
if(CacheClient.getInstance().getListeProtocoles() == null) {
protocoleService.getProtocoles(new ProtocolesCallback() {
@Override
public void surProtocolesRecus(ProtocoleServiceResultat protocolesRecus) {
CacheClient.getInstance().setListeProtocoles(protocolesRecus.getProtocoles());
CacheClient.getInstance().setProtocoleCourant(protocolesRecus.getProtocoles().get(0));
}
});
} else {
CacheClient.getInstance().setProtocoleCourant(CacheClient.getInstance().getListeProtocoles().get(0));
}
}
}
 
55,7 → 52,6
chargerMoteurRechercheAvancee();
}
 
public void chargerMoteurRechercheAvancee() {
MoteurRecherchePresenteur presenteurRecherche = new MoteurRecherchePresenteur(new MoteurRechercheVue(""), ModeRecherche.MODE_IMAGE) {
public void lancerRecherche() {
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/ResultatRechercheImageVue.java
152,8 → 152,8
return listeProtocoles;
}
public void ajouterProtocole(String protocole) {
listeProtocoles.addItem(protocole);
public void ajouterProtocole(String NomProtocole, String idProtocole) {
listeProtocoles.addItem(NomProtocole, idProtocole);
}
 
public void selectionnerProtocole(int index) {
161,13 → 161,13
}
@Override
public String getNomProtocolSelectionne() {
return listeProtocoles.getValue(listeProtocoles.getSelectedIndex());
public String getNomProtocoleSelectionne() {
return listeProtocoles.getItemText((listeProtocoles.getSelectedIndex()));
}
 
@Override
public int getIdProtocoleSelectionne() {
return listeProtocoles.getSelectedIndex();
return Integer.parseInt(listeProtocoles.getValue((listeProtocoles.getSelectedIndex())));
}
 
@Override
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/ResultatRechercheImagePresenteur.java
9,13 → 9,15
import org.tela_botanica.del.client.modeles.InformationsRecherche;
import org.tela_botanica.del.client.modeles.ModeTri;
import org.tela_botanica.del.client.modeles.Protocole;
import org.tela_botanica.del.client.modeles.ProtocoleServiceResultat;
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.EvenementChangementProtocole;
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.GestionnaireEvenementChangementProtocole;
import org.tela_botanica.del.client.services.rest.ImageService;
import org.tela_botanica.del.client.services.rest.ProtocoleService;
import org.tela_botanica.del.client.services.rest.ProtocoleServiceConcret;
import org.tela_botanica.del.client.services.rest.async.ImagesParTaxonCallback;
import org.tela_botanica.del.client.utils.MockDatasource;
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;
28,6 → 30,7
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.ListBox;
 
public class ResultatRechercheImagePresenteur {
public interface Vue extends IsWidget {
public void startChargement();
58,7 → 61,7
 
public HTMLPanel getImageTable();
 
public String getNomProtocolSelectionne();
public String getNomProtocoleSelectionne();
 
public int getIdProtocoleSelectionne();
 
66,7 → 69,7
 
public HasChangeHandlers getListeProtocoles();
 
public void ajouterProtocole(String protocole);
public void ajouterProtocole(String nomProtocole, String idProtocole);
 
public void selectionnerProtocole(int index);
 
92,9 → 95,8
}
private Vue vue;
private ImageService imageService;
private final ProtocoleService protocoleService = MockDatasource.getInstance();
private final ProtocoleService protocoleService = new ProtocoleServiceConcret();
private List<Protocole> protocoles;
private String protocoleParDefaut = Protocole.ESTHETISME;
private ModeTri triCourantVote = ModeTri.TRI_ASCENDANT;
private ModeTri triCourantDate = ModeTri.TRI_DESCENDANT;
 
208,14 → 210,29
}
 
private void chargerProtocoles() {
// TODO: appeler un véritable service web qui nous permette de charger les protocoles
// à partir de la base de données (prévoir un cache pour ne pas les charger à chaque fois)
protocoles = protocoleService.getProtocoles();
// 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) {
protocoleService.getProtocoles(new ProtocolesCallback() {
@Override
public void surProtocolesRecus(ProtocoleServiceResultat protocolesRecus) {
protocoles = protocolesRecus.getProtocoles();
remplirListeProtocole(protocoles);
}
});
} else {
protocoles = CacheClient.getInstance().getListeProtocoles();
remplirListeProtocole(CacheClient.getInstance().getListeProtocoles());
}
}
private void remplirListeProtocole(List<Protocole> protocoles) {
for (Protocole protocole : protocoles) {
vue.ajouterProtocole(protocole.getNom());
vue.ajouterProtocole(protocole.getNom(), protocole.getId()+"");
}
vue.selectionnerProtocole(protocoles.indexOf(CacheClient.getInstance().getProtocoleCourant()));
if(CacheClient.getInstance().getProtocoleCourant() == null) {
vue.selectionnerProtocole(0);
}
}
 
public void rechercherImagesEtCreerWidgetPagination() {
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/DeterminationPresenteur.java
18,6 → 18,7
import org.tela_botanica.del.client.modeles.ModeRecherche;
import org.tela_botanica.del.client.modeles.MoyenneVote;
import org.tela_botanica.del.client.modeles.Protocole;
import org.tela_botanica.del.client.modeles.ProtocoleServiceResultat;
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.ajoutcommentaire.EvenementAjoutCommentaire;
28,7 → 29,8
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.ProtocoleService;
import org.tela_botanica.del.client.utils.MockDatasource;
import org.tela_botanica.del.client.services.rest.ProtocoleServiceConcret;
import org.tela_botanica.del.client.services.rest.async.ProtocolesCallback;
import org.tela_botanica.del.client.vues.plateformedetermination.formulairerechercheeflore.FormulaireRechercheEflorePresenteur;
import org.tela_botanica.del.client.vues.plateformedetermination.forum.ForumPresenteur;
import org.tela_botanica.del.client.vues.plateformedetermination.forum.ForumVue;
62,7 → 64,7
 
FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur;
private ProtocoleService protocoleService = MockDatasource.getInstance();
private ProtocoleService protocoleService = new ProtocoleServiceConcret();
 
public DeterminationPresenteur(Vue vue) {
this.vue = vue;
74,7 → 76,7
new MetadonneesPresenteur(new MetadonneesEnLigneVue(), CacheClient.getInstance().getObservationCourante(), ModeRecherche.MODE_OBSERVATION).go(vue.getMetadonnees());
new ObservationImagesPresenteur(new ObservationImagesVue(), CacheClient.getInstance().getObservationCourante()).go(vue.getDetailImageObservation());
 
ajouterLignesVotesProtocole();
chargerEtAjouterLignesVotesProtocole();
}
new ForumPresenteur(new ForumVue()).go(vue.getForum());
new FormulaireRechercheEflorePresenteur().go(vue.getFormulaireRechercheEflore());
86,10 → 88,24
gererEvenements();
}
 
private void ajouterLignesVotesProtocole() {
List<Protocole> tousLesProtocoles = protocoleService.getProtocoles();
for (Iterator<Protocole> iterator = tousLesProtocoles.iterator(); iterator.hasNext();) {
 
private void chargerEtAjouterLignesVotesProtocole() {
if(CacheClient.getInstance().getListeProtocoles() == null) {
protocoleService.getProtocoles(new ProtocolesCallback() {
@Override
public void surProtocolesRecus(ProtocoleServiceResultat protocolesRecus) {
List<Protocole> listeProtocoles = protocolesRecus.getProtocoles();
ajouterLignesVotesProtocole(listeProtocoles);
}
});
} else {
List<Protocole> listeProtocoles = CacheClient.getInstance().getListeProtocoles();
ajouterLignesVotesProtocole(listeProtocoles);
}
}
private void ajouterLignesVotesProtocole(List<Protocole> listeProtocoles) {
for (Iterator<Protocole> iterator = listeProtocoles.iterator(); iterator.hasNext();) {
Protocole protocole = iterator.next();
LigneProtocolePresenteur presenteurLigneProtocole = new LigneProtocolePresenteur(protocole, new LigneProtocoleVue());
presenteurLigneProtocole.go(vue.getNouvelleLigneProtocole());
/trunk/src/org/tela_botanica/del/client/cache/CacheClient.java
1,14 → 1,17
package org.tela_botanica.del.client.cache;
 
import java.util.List;
 
import org.tela_botanica.del.client.modeles.Image;
import org.tela_botanica.del.client.modeles.InformationsRecherche;
import org.tela_botanica.del.client.modeles.Observation;
import org.tela_botanica.del.client.modeles.Protocole;
import org.tela_botanica.del.client.modeles.Utilisateur;
import com.google.gwt.user.client.Window;
 
public class CacheClient {
 
private List<Protocole> listeProtocoles;
private Observation observationCourante;
private Image imageCourante;
private String taxonPourRechercheEflore;
99,6 → 102,14
public void setImageCourante(Image imageCourante) {
this.imageCourante = imageCourante;
}
public void setListeProtocoles(List<Protocole> listeProtocole) {
this.listeProtocoles = listeProtocole;
}
public List<Protocole> getListeProtocoles() {
return this.listeProtocoles;
}
 
public Protocole getProtocoleCourant() {
return protocoleCourant;
/trunk/src/org/tela_botanica/del/client/services/rest/ProtocoleServiceConcret.java
New file
0,0 → 1,36
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.ProtocolesCallback;
import com.google.gwt.http.client.RequestBuilder;
 
public class ProtocoleServiceConcret implements ProtocoleService {
 
private String baseUrl;
public ProtocoleServiceConcret() {
Config config = new Config();
this.baseUrl = config.getServiceBaseUrl();
}
public ProtocoleServiceConcret(Config config) {
this.baseUrl = config.getServiceBaseUrl();
}
@Override
public void getProtocole(String nomProtocole) {
//TODO: voir si l'on aura besoin de ne retourner qu'un seul protocole
}
 
@Override
public void getProtocoles(ProtocolesCallback callback) {
//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");
try {
rb.sendRequest(null, callback);
} catch (Exception e) {
// TODO: handle exception
}
}
}
/trunk/src/org/tela_botanica/del/client/services/rest/ProtocoleService.java
1,13 → 1,11
package org.tela_botanica.del.client.services.rest;
 
import java.util.List;
import org.tela_botanica.del.client.services.rest.async.ProtocolesCallback;
 
import org.tela_botanica.del.client.modeles.Protocole;
 
public interface ProtocoleService {
 
public Protocole getProtocole(String nomProtocole);
public void getProtocole(String nomProtocole);
 
public List<Protocole> getProtocoles();
public void getProtocoles(ProtocolesCallback pc);
 
}
/trunk/src/org/tela_botanica/del/client/services/rest/async/ProtocolesCallback.java
New file
0,0 → 1,35
package org.tela_botanica.del.client.services.rest.async;
 
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 ProtocolesCallback() {
 
}
 
@Override
public void onResponseReceived(Request request, Response response) {
ProtocoleServiceResultat protocolesRecus = convertirReponseVersListeProtocoles(response);
surProtocolesRecus(protocolesRecus);
}
 
@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/modeles/Protocole.java
1,12 → 1,10
package org.tela_botanica.del.client.modeles;
 
 
public class Protocole {
 
private int id;
private String nom;
public static String ESTHETISME = "ESTHETISME";
public static String IDENTIFICATION_AUTOMATIQUE = "IDENTIFICATION_AUTOMATIQUE";
private String description;
 
public int getId() {
return id;
23,5 → 21,13
public void setNom(String nom) {
this.nom = nom;
}
public String getDescription() {
return description;
}
 
public void setDescription(String description) {
this.description = description;
}
 
}
/trunk/src/org/tela_botanica/del/client/modeles/ProtocoleServiceResultat.java
New file
0,0 → 1,44
package org.tela_botanica.del.client.modeles;
 
import java.util.ArrayList;
import java.util.List;
import org.tela_botanica.del.client.utils.UtilitairesServiceResultat;
 
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONValue;
 
public class ProtocoleServiceResultat {
private List<Protocole> protocoles;
public ProtocoleServiceResultat(List<Protocole> protocoles) {
// constructeur utilisable plus tard quand on aura implenté un systeme de cache
this.protocoles = protocoles;
}
public ProtocoleServiceResultat(JSONValue retourJson) {
protocoles = new ArrayList<Protocole>();
JSONObject tableauProto = retourJson.isObject().get("resultats").isObject();
if(tableauProto != null) {
java.util.Iterator<String> it = tableauProto.keySet().iterator();
while (it.hasNext()) {
JSONObject protocoleJSON = tableauProto.get(it.next()).isObject();
Protocole protocole = new Protocole();
String idProtocole = UtilitairesServiceResultat.getValeurOuVide(protocoleJSON, "protocole.id");
protocole.setId(Integer.parseInt(idProtocole));
protocole.setNom(UtilitairesServiceResultat.getValeurOuVide(protocoleJSON, "protocole.intitule"));
protocole.setDescription(UtilitairesServiceResultat.getValeurOuVide(protocoleJSON, "protocole.descriptif"));
protocoles.add(protocole);
}
}
}
public List<Protocole> getProtocoles() {
return protocoles;
}
 
public void setProtocoles(List<Protocole> protocoles) {
this.protocoles = protocoles;
}
}
/trunk/src/org/tela_botanica/del/test/composants/votes/MoyenneVotePresenteurTest.java
11,7 → 11,6
import org.tela_botanica.del.client.composants.votes.moyennevotes.MoyenneVotePresenteur;
import org.tela_botanica.del.client.modeles.Image;
import org.tela_botanica.del.client.modeles.Protocole;
import org.tela_botanica.del.client.modeles.VoteProtocole;
 
import com.google.gwt.user.client.ui.HasWidgets;
 
29,11 → 28,11
CacheClient.getInstance().getUtilisateur().setId(0+"");
Protocole protocol1 = new Protocole();
protocol1.setNom(Protocole.ESTHETISME);
protocol1.setNom("esthétique");
protocol1.setId(0);
 
Protocole protocol2 = new Protocole();
protocol2.setNom(Protocole.IDENTIFICATION_AUTOMATIQUE);
protocol2.setNom("capitalisation de scan de feuilles");
protocol2.setId(1);
 
tousLesProtocoles.add(protocol1);