Subversion Repositories eFlore/Applications.del

Rev

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

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