Subversion Repositories eFlore/Applications.del

Rev

Rev 1283 | Rev 1665 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1283 Rev 1501
1
package org.tela_botanica.del.client.vues.identiplante.resultats;
1
package org.tela_botanica.del.client.vues.identiplante.resultats;
2
 
2
 
3
import java.util.List;
3
import java.util.List;
4
 
4
 
5
import org.tela_botanica.del.client.cache.CacheClient;
5
import org.tela_botanica.del.client.cache.CacheClient;
6
import org.tela_botanica.del.client.composants.pagination.PaginationPresenteur;
6
import org.tela_botanica.del.client.composants.pagination.PaginationPresenteur;
7
import org.tela_botanica.del.client.composants.pagination.PaginationVue;
7
import org.tela_botanica.del.client.composants.pagination.PaginationVue;
8
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
8
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
9
import org.tela_botanica.del.client.modeles.Image;
9
import org.tela_botanica.del.client.modeles.Image;
10
import org.tela_botanica.del.client.modeles.InformationsRecherche;
10
import org.tela_botanica.del.client.modeles.InformationsRecherche;
11
import org.tela_botanica.del.client.modeles.ModeTri;
11
import org.tela_botanica.del.client.modeles.ModeTri;
12
import org.tela_botanica.del.client.modeles.Observation;
12
import org.tela_botanica.del.client.modeles.Observation;
13
import org.tela_botanica.del.client.modeles.ObservationServiceResultat;
13
import org.tela_botanica.del.client.modeles.ObservationServiceResultat;
14
import org.tela_botanica.del.client.services.rest.ObservationService;
14
import org.tela_botanica.del.client.services.rest.ObservationService;
15
import org.tela_botanica.del.client.services.rest.async.ObservationsCallback;
15
import org.tela_botanica.del.client.services.rest.async.ObservationsCallback;
16
import org.tela_botanica.del.client.vues.identiplante.resultats.observations.ObservationPresenteur;
16
import org.tela_botanica.del.client.vues.identiplante.resultats.observations.ObservationPresenteur;
17
import org.tela_botanica.del.client.vues.identiplante.resultats.observations.ObservationVue;
17
import org.tela_botanica.del.client.vues.identiplante.resultats.observations.ObservationVue;
18
 
18
 
19
import com.google.gwt.event.dom.client.ClickEvent;
19
import com.google.gwt.event.dom.client.ClickEvent;
20
import com.google.gwt.event.dom.client.ClickHandler;
20
import com.google.gwt.event.dom.client.ClickHandler;
21
import com.google.gwt.event.dom.client.HasClickHandlers;
21
import com.google.gwt.event.dom.client.HasClickHandlers;
22
import com.google.gwt.user.client.Window;
22
import com.google.gwt.user.client.Window;
23
import com.google.gwt.user.client.ui.HasWidgets;
23
import com.google.gwt.user.client.ui.HasWidgets;
24
import com.google.gwt.user.client.ui.IsWidget;
24
import com.google.gwt.user.client.ui.IsWidget;
25
 
25
 
26
public class ResultatsIdentiplantePresenteur extends Presenteur {
26
public class ResultatsIdentiplantePresenteur extends Presenteur {
27
 
27
 
28
	/**
28
	/**
29
	 * Interface vue : création des composants graphiques
29
	 * Interface vue : création des composants graphiques
30
	 * */
30
	 * */
31
	public abstract interface Vue extends IsWidget {
31
	public abstract interface Vue extends IsWidget {
32
		public HasWidgets getZoneObservations();
32
		public HasWidgets getZoneObservations();
33
 
33
 
34
		public HasWidgets getZonePaginationHaut();
34
		public HasWidgets getZonePaginationHaut();
35
 
35
 
36
		public HasWidgets getZonePaginationBas();
36
		public HasWidgets getZonePaginationBas();
37
 
37
 
38
		public void startChargement();
38
		public void startChargement();
39
 
39
 
40
		public void stopChargement();
40
		public void stopChargement();
41
 
41
 
42
		public void nettoyer();
42
		public void nettoyer();
43
 
43
 
44
		public HasClickHandlers getTriParDateAscendant();
44
		public HasClickHandlers getTriParDateAscendant();
45
 
45
 
46
		public HasClickHandlers getTriParDateDescendant();
46
		public HasClickHandlers getTriParDateDescendant();
47
 
47
 
48
		public void afficherElementsAucunResultatTrouve();
48
		public void afficherElementsAucunResultatTrouve();
49
 
49
 
50
		public void afficherElementsResultatsTrouves();
50
		public void afficherElementsResultatsTrouves();
51
 
51
 
52
		public HasClickHandlers getLabelDate();
52
		public HasClickHandlers getLabelDate();
53
 
53
 
54
		public void setModeTri(ModeTri mode);
54
		public void setModeTri(ModeTri mode);
55
	}
55
	}
56
 
56
 
57
	private Vue vue;
57
	private Vue vue;
58
	private ObservationService serviceObs;
58
	private ObservationService serviceObs;
59
	private ModeTri triCourantDate = ModeTri.TRI_DESCENDANT;
59
	private ModeTri triCourantDate = ModeTri.TRI_DESCENDANT;
60
	private CacheClient cache = CacheClient.getInstance();
60
	private CacheClient cache = CacheClient.getInstance();
61
	private String statut;
61
	private String statut;
62
 
62
 
63
	/**
63
	/**
64
	 * Constructeur de la classe
64
	 * Constructeur de la classe
65
	 * 
65
	 * 
66
	 * @param ObservationService
66
	 * @param ObservationService
67
	 *            serviceObs le service pour récupérer les observations
67
	 *            serviceObs le service pour récupérer les observations
68
	 * @Vue Vue l'objet implémentant l'interface
68
	 * @Vue Vue l'objet implémentant l'interface
69
	 * */
69
	 * */
70
	public ResultatsIdentiplantePresenteur(ObservationService serviceObs, Vue vue) {
70
	public ResultatsIdentiplantePresenteur(ObservationService serviceObs, Vue vue) {
71
		String statut = CacheClient.getInstance().getFiltreStatut();
71
		String statut = CacheClient.getInstance().getFiltreStatut();
72
		this.vue = vue;
72
		this.vue = vue;
-
 
73
		ModeTri initTriCourantDate = CacheClient.getInstance().getInformationsRechercheObservation().getTriParDate();
-
 
74
		initTriCourantDate = (initTriCourantDate == null) ? triCourantDate : initTriCourantDate;
-
 
75
		triCourantDate = initTriCourantDate;
73
		vue.setModeTri(triCourantDate);
76
		vue.setModeTri(triCourantDate);
74
		this.serviceObs = serviceObs;
77
		this.serviceObs = serviceObs;
75
		this.statut = statut;
78
		this.statut = statut;
76
	}
79
	}
77
 
80
 
78
	/**
81
	/**
79
	 * Lancer l'affichage de la recherche dans le composant passé en paramètre
82
	 * Lancer l'affichage de la recherche dans le composant passé en paramètre
80
	 * 
83
	 * 
81
	 * @param HasWidgets
84
	 * @param HasWidgets
82
	 *            composite le conteneur de widgets dans lequel ajouter la vue
85
	 *            composite le conteneur de widgets dans lequel ajouter la vue
83
	 * */
86
	 * */
84
	public void go(HasWidgets composite) {
87
	public void go(HasWidgets composite) {
85
		composite.add(vue.asWidget());
88
		composite.add(vue.asWidget());
86
		lancerRechercheEtCreerWidgetPagination();
89
		lancerRechercheEtCreerWidgetPagination();
87
		gererEvenements();
90
		gererEvenements();
88
	}
91
	}
89
 
92
 
90
	/**
93
	/**
91
	 * Initier un callback pour créer le widget de pagination et afficher les
94
	 * Initier un callback pour créer le widget de pagination et afficher les
92
	 * observations recues et lancer la recherche avec le service
95
	 * observations recues et lancer la recherche avec le service
93
	 * */
96
	 * */
94
	public void lancerRechercheEtCreerWidgetPagination() {
97
	public void lancerRechercheEtCreerWidgetPagination() {
95
 
98
 
96
		int debut = (cache.getPageCouranteRechercheObservations() - 1) * cache.getPasPagination();
99
		int debut = (cache.getPageCouranteRechercheObservations() - 1) * cache.getPasPagination();
97
		int fin = cache.getPageCouranteRechercheObservations() * cache.getPasPagination();
100
		int fin = cache.getPageCouranteRechercheObservations() * cache.getPasPagination();
98
 
101
 
99
		ObservationsCallback callback = new ObservationsCallback() {
102
		ObservationsCallback callback = new ObservationsCallback() {
100
 
103
 
101
			@Override
104
			@Override
102
			public void surRetour(ObservationServiceResultat observationsRecues) {
105
			public void surRetour(ObservationServiceResultat observationsRecues) {
103
				creerWidgetPagination(observationsRecues.getNbTotalObservationsPourLaRecherche());
106
				creerWidgetPagination(observationsRecues.getNbTotalObservationsPourLaRecherche());
104
				afficherObservations(observationsRecues);
107
				afficherObservations(observationsRecues);
105
 
108
 
106
			}
109
			}
107
 
110
 
108
			@Override
111
			@Override
109
			public void surErreur(String messageErreur) {
112
			public void surErreur(String messageErreur) {
110
				Window.alert(messageErreur);
113
				Window.alert(messageErreur);
111
 
114
 
112
			}
115
			}
113
		};
116
		};
114
 
117
 
115
		serviceObs.getObservations(cache.getInformationsRechercheObservation(), debut, fin, statut, callback);
118
		serviceObs.getObservations(cache.getInformationsRechercheObservation(), debut, fin, statut, callback);
116
	}
119
	}
117
 
120
 
118
	/**
121
	/**
119
	 * Créer les widgets de pagination en fonction du nombre d'observation
122
	 * Créer les widgets de pagination en fonction du nombre d'observation
120
	 * 
123
	 * 
121
	 * @param int nbObservations le nombre d'observations à afficher
124
	 * @param int nbObservations le nombre d'observations à afficher
122
	 * */
125
	 * */
123
	private void creerWidgetPagination(int nbObservations) {
126
	private void creerWidgetPagination(int nbObservations) {
124
		vue.getZonePaginationHaut().clear();
127
		vue.getZonePaginationHaut().clear();
125
		PaginationPresenteur paginationPresenteurHaut = creerPresenteurPagination(nbObservations);
128
		PaginationPresenteur paginationPresenteurHaut = creerPresenteurPagination(nbObservations);
126
		paginationPresenteurHaut.setGroupePagination("pagination_observations");
129
		paginationPresenteurHaut.setGroupePagination("pagination_observations");
127
		paginationPresenteurHaut.go(vue.getZonePaginationHaut());
130
		paginationPresenteurHaut.go(vue.getZonePaginationHaut());
128
 
131
 
129
		vue.getZonePaginationBas().clear();
132
		vue.getZonePaginationBas().clear();
130
		PaginationPresenteur paginationPresenteurBas = creerPresenteurPagination(nbObservations);
133
		PaginationPresenteur paginationPresenteurBas = creerPresenteurPagination(nbObservations);
131
		paginationPresenteurBas.setGroupePagination("pagination_observations");
134
		paginationPresenteurBas.setGroupePagination("pagination_observations");
132
		paginationPresenteurBas.go(vue.getZonePaginationBas());
135
		paginationPresenteurBas.go(vue.getZonePaginationBas());
133
	}
136
	}
134
 
137
 
135
	/**
138
	/**
136
	 * Créer un présenteur du widget pagination
139
	 * Créer un présenteur du widget pagination
137
	 * 
140
	 * 
138
	 * @param int nbObservations le nombre total d'observation à afficher
141
	 * @param int nbObservations le nombre total d'observation à afficher
139
	 * */
142
	 * */
140
	private PaginationPresenteur creerPresenteurPagination(int nbObservations) {
143
	private PaginationPresenteur creerPresenteurPagination(int nbObservations) {
141
		PaginationPresenteur presenteur = new PaginationPresenteur(new PaginationVue(), nbObservations, cache.getPasPagination(), cache.getPageCouranteRechercheObservations()) {
144
		PaginationPresenteur presenteur = new PaginationPresenteur(new PaginationVue(), nbObservations, cache.getPasPagination(), cache.getPageCouranteRechercheObservations()) {
142
 
145
 
143
			@Override
146
			@Override
144
			public void chargerElements(int debut, int fin) {
147
			public void chargerElements(int debut, int fin) {
145
				chargerEtAfficherObservations(debut, fin);
148
				chargerEtAfficherObservations(debut, fin);
146
				cache.setPageCouranteRechercheObservations(getPageCourante());
149
				cache.setPageCouranteRechercheObservations(getPageCourante());
147
			}
150
			}
148
 
151
 
149
			@Override
152
			@Override
150
			public void actualiserPasCache(int pas) {
153
			public void actualiserPasCache(int pas) {
151
				cache.setPasPagination(pas);
154
				cache.setPasPagination(pas);
152
			}
155
			}
153
 
156
 
154
		};
157
		};
155
		return presenteur;
158
		return presenteur;
156
	}
159
	}
157
 
160
 
158
	/**
161
	/**
159
	 * Gestion des évènements de la vue recherche Observation
162
	 * Gestion des évènements de la vue recherche Observation
160
	 * */
163
	 * */
161
	protected void gererEvenements() {
164
	protected void gererEvenements() {
162
 
165
 
163
		ClickHandler surClicDate = new ClickHandler() {
166
		ClickHandler surClicDate = new ClickHandler() {
164
			/**
167
			/**
165
			 * Gestion du clic sur l'option de tri par date d'observation Masque
168
			 * Gestion du clic sur l'option de tri par date d'observation Masque
166
			 * les éléments de tri qui sont en cours et affiche les autres
169
			 * les éléments de tri qui sont en cours et affiche les autres
167
			 * */
170
			 * */
168
			public void onClick(ClickEvent event) {
171
			public void onClick(ClickEvent event) {
169
				toggleModeTri();
172
				toggleModeTri();
170
 
173
 
171
				InformationsRecherche informationsRechercheObservations = cache.getInformationsRechercheObservation();
174
				InformationsRecherche informationsRechercheObservations = cache.getInformationsRechercheObservation();
172
				informationsRechercheObservations.setTriParDate(triCourantDate);
175
				informationsRechercheObservations.setTriParDate(triCourantDate);
173
				chercherEtAfficherObservationsPageEnCours();
176
				chercherEtAfficherObservationsPageEnCours();
174
			}
177
			}
175
		};
178
		};
176
 
179
 
177
		vue.getLabelDate().addClickHandler(surClicDate);
180
		vue.getLabelDate().addClickHandler(surClicDate);
178
		vue.getTriParDateAscendant().addClickHandler(surClicDate);
181
		vue.getTriParDateAscendant().addClickHandler(surClicDate);
179
		vue.getTriParDateDescendant().addClickHandler(surClicDate);
182
		vue.getTriParDateDescendant().addClickHandler(surClicDate);
180
	}
183
	}
181
 
184
 
182
	/**
185
	/**
183
	 * Inverser le mode de tri en fonction du précédent
186
	 * Inverser le mode de tri en fonction du précédent
184
	 * */
187
	 * */
185
	public void toggleModeTri() {
188
	public void toggleModeTri() {
186
		if (triCourantDate == ModeTri.TRI_ASCENDANT) {
189
		if (triCourantDate == ModeTri.TRI_ASCENDANT) {
187
			triCourantDate = ModeTri.TRI_DESCENDANT;
190
			triCourantDate = ModeTri.TRI_DESCENDANT;
188
		} else {
191
		} else {
189
			triCourantDate = ModeTri.TRI_ASCENDANT;
192
			triCourantDate = ModeTri.TRI_ASCENDANT;
190
		}
193
		}
191
 
194
 
192
		vue.setModeTri(triCourantDate);
195
		vue.setModeTri(triCourantDate);
193
	}
196
	}
194
 
197
 
195
	/**
198
	/**
196
	 * Initialiser les variable de début et fin et lancer le chargement des
199
	 * Initialiser les variable de début et fin et lancer le chargement des
197
	 * observations
200
	 * observations
198
	 * */
201
	 * */
199
	public void chercherEtAfficherObservationsPageEnCours() {
202
	public void chercherEtAfficherObservationsPageEnCours() {
200
		int debut = (cache.getPageCouranteRechercheObservations() - 1) * cache.getPasPagination();
203
		int debut = (cache.getPageCouranteRechercheObservations() - 1) * cache.getPasPagination();
201
		int fin = (cache.getPageCouranteRechercheObservations()) * cache.getPasPagination();
204
		int fin = (cache.getPageCouranteRechercheObservations()) * cache.getPasPagination();
202
		chargerEtAfficherObservations(debut, fin);
205
		chargerEtAfficherObservations(debut, fin);
203
	}
206
	}
204
 
207
 
205
	/**
208
	/**
206
	 * Lancer le service pour charger les observations entre debut et fin et les
209
	 * Lancer le service pour charger les observations entre debut et fin et les
207
	 * afficher
210
	 * afficher
208
	 * 
211
	 * 
209
	 * @param int debut l'entier de départ de la requete
212
	 * @param int debut l'entier de départ de la requete
210
	 * @param int fin l'entier de limite de la requete
213
	 * @param int fin l'entier de limite de la requete
211
	 * */
214
	 * */
212
	public void chargerEtAfficherObservations(int debut, int fin) {
215
	public void chargerEtAfficherObservations(int debut, int fin) {
213
		vue.startChargement();
216
		vue.startChargement();
214
		vue.nettoyer();
217
		vue.nettoyer();
215
 
218
 
216
		ObservationsCallback surReceptionObservation = new ObservationsCallback() {
219
		ObservationsCallback surReceptionObservation = new ObservationsCallback() {
217
 
220
 
218
			@Override
221
			@Override
219
			public void surRetour(ObservationServiceResultat observationsRecues) {
222
			public void surRetour(ObservationServiceResultat observationsRecues) {
220
				afficherObservations(observationsRecues);
223
				afficherObservations(observationsRecues);
221
 
224
 
222
			}
225
			}
223
 
226
 
224
			@Override
227
			@Override
225
			public void surErreur(String messageErreur) {
228
			public void surErreur(String messageErreur) {
226
				Window.alert(messageErreur);
229
				Window.alert(messageErreur);
227
 
230
 
228
			}
231
			}
229
		};
232
		};
230
		serviceObs.getObservations(cache.getInformationsRechercheObservation(), debut, fin, statut, surReceptionObservation);
233
		serviceObs.getObservations(cache.getInformationsRechercheObservation(), debut, fin, statut, surReceptionObservation);
231
	}
234
	}
232
 
235
 
233
	/**
236
	/**
234
	 * Parcrourir les résultats de la recherche pour initier l'affichage de
237
	 * Parcrourir les résultats de la recherche pour initier l'affichage de
235
	 * chaque observation
238
	 * chaque observation
236
	 * 
239
	 * 
237
	 * @param ObservationServiceResultat
240
	 * @param ObservationServiceResultat
238
	 *            resultats les résultats issus de la requête
241
	 *            resultats les résultats issus de la requête
239
	 * */
242
	 * */
240
	private void afficherObservations(ObservationServiceResultat resultats) {
243
	private void afficherObservations(ObservationServiceResultat resultats) {
241
		vue.nettoyer();
244
		vue.nettoyer();
242
 
245
 
243
		if (resultats.getObservations() == null || resultats.getObservations().size() == 0) {
246
		if (resultats.getObservations() == null || resultats.getObservations().size() == 0) {
244
			vue.afficherElementsAucunResultatTrouve();
247
			vue.afficherElementsAucunResultatTrouve();
245
		} else {
248
		} else {
246
			vue.afficherElementsResultatsTrouves();
249
			vue.afficherElementsResultatsTrouves();
247
			for (Observation observation : resultats.getObservations()) {
250
			for (Observation observation : resultats.getObservations()) {
248
				List<Image> listeImagesObs = observation.getImages();
251
				List<Image> listeImagesObs = observation.getImages();
249
				Image imagePrincipale = null;
252
				Image imagePrincipale = null;
250
				if(listeImagesObs != null && listeImagesObs.size() > 0) {
253
				if(listeImagesObs != null && listeImagesObs.size() > 0) {
251
					imagePrincipale = listeImagesObs.get(0);
254
					imagePrincipale = listeImagesObs.get(0);
252
				}
255
				}
253
				ObservationPresenteur presenteur = new ObservationPresenteur(new ObservationVue(), observation, imagePrincipale);
256
				ObservationPresenteur presenteur = new ObservationPresenteur(new ObservationVue(), observation, imagePrincipale);
254
				presenteur.go(vue.getZoneObservations());
257
				presenteur.go(vue.getZoneObservations());
255
			}
258
			}
256
		}
259
		}
-
 
260
		CacheClient.getInstance().mettreAjourUrlCourante();
257
		vue.stopChargement();
261
		vue.stopChargement();
258
	}
262
	}
259
}
263
}