Subversion Repositories eFlore/Applications.del

Rev

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

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