Subversion Repositories eFlore/Applications.del

Rev

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

Rev 1404 Rev 1467
1
package org.tela_botanica.del.client.vues.pictoflora.moteur;
1
package org.tela_botanica.del.client.vues.pictoflora.moteur;
2
 
2
 
3
import java.util.List;
3
import java.util.List;
4
 
4
 
5
import javax.validation.Configuration;
5
import javax.validation.Configuration;
6
 
6
 
7
import org.tela_botanica.del.client.cache.CacheClient;
7
import org.tela_botanica.del.client.cache.CacheClient;
8
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRecherchePresenteur;
8
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRecherchePresenteur;
9
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRechercheVue;
9
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRechercheVue;
10
import org.tela_botanica.del.client.composants.partageurl.PartageUrlPresenteur;
10
import org.tela_botanica.del.client.composants.partageurl.PartageUrlPresenteur;
11
import org.tela_botanica.del.client.composants.partageurl.PartageUrlVue;
11
import org.tela_botanica.del.client.composants.partageurl.PartageUrlVue;
12
import org.tela_botanica.del.client.config.Config;
12
import org.tela_botanica.del.client.config.Config;
13
import org.tela_botanica.del.client.modeles.ModeRecherche;
13
import org.tela_botanica.del.client.modeles.ModeRecherche;
14
import org.tela_botanica.del.client.modeles.Protocole;
14
import org.tela_botanica.del.client.modeles.Protocole;
15
import org.tela_botanica.del.client.modeles.ProtocoleServiceResultat;
15
import org.tela_botanica.del.client.modeles.ProtocoleServiceResultat;
16
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
16
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
17
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.EvenementChangementProtocole;
17
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.EvenementChangementProtocole;
18
import org.tela_botanica.del.client.services.rest.ImageServiceConcret;
18
import org.tela_botanica.del.client.services.rest.ImageServiceConcret;
19
import org.tela_botanica.del.client.services.rest.ProtocoleService;
19
import org.tela_botanica.del.client.services.rest.ProtocoleService;
20
import org.tela_botanica.del.client.services.rest.ProtocoleServiceConcret;
20
import org.tela_botanica.del.client.services.rest.ProtocoleServiceConcret;
21
import org.tela_botanica.del.client.services.rest.async.ProtocolesCallback;
21
import org.tela_botanica.del.client.services.rest.async.ProtocolesCallback;
22
import org.tela_botanica.del.client.utils.URLUtils;
22
import org.tela_botanica.del.client.utils.URLUtils;
23
import org.tela_botanica.del.client.vues.pictoflora.resultats.ResultatPictofloraPresenteur;
23
import org.tela_botanica.del.client.vues.pictoflora.resultats.ResultatPictofloraPresenteur;
24
import org.tela_botanica.del.client.vues.pictoflora.resultats.ResultatPictofloraVue;
24
import org.tela_botanica.del.client.vues.pictoflora.resultats.ResultatPictofloraVue;
25
 
25
 
26
import com.google.gwt.event.dom.client.ChangeEvent;
26
import com.google.gwt.event.dom.client.ChangeEvent;
27
import com.google.gwt.event.dom.client.ChangeHandler;
27
import com.google.gwt.event.dom.client.ChangeHandler;
28
import com.google.gwt.event.dom.client.ClickEvent;
28
import com.google.gwt.event.dom.client.ClickEvent;
29
import com.google.gwt.event.dom.client.ClickHandler;
29
import com.google.gwt.event.dom.client.ClickHandler;
30
import com.google.gwt.event.dom.client.HasChangeHandlers;
30
import com.google.gwt.event.dom.client.HasChangeHandlers;
31
import com.google.gwt.event.dom.client.HasClickHandlers;
31
import com.google.gwt.event.dom.client.HasClickHandlers;
32
import com.google.gwt.user.client.Window;
32
import com.google.gwt.user.client.Window;
33
import com.google.gwt.user.client.ui.HasWidgets;
33
import com.google.gwt.user.client.ui.HasWidgets;
34
import com.google.gwt.user.client.ui.IsWidget;
34
import com.google.gwt.user.client.ui.IsWidget;
35
import com.google.gwt.user.client.ui.ListBox;
35
import com.google.gwt.user.client.ui.ListBox;
36
import com.google.gwt.user.client.ui.Panel;
36
import com.google.gwt.user.client.ui.Panel;
37
 
37
 
38
public class MoteurPictofloraPresenteur {
38
public class MoteurPictofloraPresenteur {
39
 
39
 
40
	public interface Vue extends IsWidget {
40
	public interface Vue extends IsWidget {
41
		public HasWidgets getZoneResultats();
41
		public HasWidgets getZoneResultats();
42
 
42
 
43
		public HasWidgets getZoneRecherche();
43
		public HasWidgets getZoneRecherche();
44
 
44
 
45
		public void ajouterVue(HasWidgets composite);
45
		public void ajouterVue(HasWidgets composite);
46
 
46
 
47
		public void setListeProtocoles(ListBox listeProtocoles);
47
		public void setListeProtocoles(ListBox listeProtocoles);
48
		
48
		
49
		public HasChangeHandlers getListeProtocoles();
49
		public HasChangeHandlers getListeProtocoles();
50
		
50
		
51
		public void ajouterProtocole(String NomProtocole, String idProtocole);
51
		public void ajouterProtocole(String NomProtocole, String idProtocole);
52
 
52
 
53
		public void selectionnerProtocole(int index);
53
		public void selectionnerProtocole(int index);
54
		
54
		
55
		public void selectionnerProtocoleParProtocole(Protocole protocole);
55
		public void selectionnerProtocoleParProtocole(Protocole protocole);
56
		
56
		
57
		public String getNomProtocoleSelectionne();
57
		public String getNomProtocoleSelectionne();
58
 
58
 
59
		public int getIdProtocoleSelectionne();
59
		public int getIdProtocoleSelectionne();
60
 
60
 
61
		public void ajouterProtocoles(List<Protocole> protocoles);
61
		public void ajouterProtocoles(List<Protocole> protocoles);
62
 
62
 
63
		public void mettreAJourDescriptionProtocoleCourant(Protocole protocoleCourant);
63
		public void mettreAJourDescriptionProtocoleCourant(Protocole protocoleCourant);
64
		
64
		
65
	}
65
	}
66
 
66
 
67
	private Vue vue;
67
	private Vue vue;
68
	private ProtocoleService protocoleService;
68
	private ProtocoleService protocoleService;
69
	private List<Protocole> protocoles;
69
	private List<Protocole> protocoles;
70
 
70
 
71
	/**
71
	/**
72
	 * Constructeur
72
	 * Constructeur
73
	 * */
73
	 * */
74
	public MoteurPictofloraPresenteur(Vue vue, ProtocoleService protocoleService) {
74
	public MoteurPictofloraPresenteur(Vue vue, ProtocoleService protocoleService) {
75
		
75
		
76
		this.vue = vue;
76
		this.vue = vue;
77
		this.protocoleService = protocoleService;
77
		this.protocoleService = protocoleService;
78
		chargerProtocoles();
78
		chargerProtocoles();
79
		
79
		
80
		// TODO: le code ci dessous sert à ne pas recharger les protocoles
80
		// TODO: le code ci dessous sert à ne pas recharger les protocoles
81
		// à chaque fois, voir si on peut le factoriser quelque part
81
		// à chaque fois, voir si on peut le factoriser quelque part
82
		if (CacheClient.getInstance().getProtocoleCourant() == null) {
82
		if (CacheClient.getInstance().getProtocoleCourant() == null) {
83
			if (CacheClient.getInstance().getListeProtocoles() == null) {
83
			if (CacheClient.getInstance().getListeProtocoles() == null) {
84
				protocoleService.getProtocoles(new ProtocolesCallback() {
84
				protocoleService.getProtocoles(new ProtocolesCallback() {
85
 
85
 
86
					@Override
86
					@Override
87
					public void surRetour(ProtocoleServiceResultat protocolesRecus) {
87
					public void surRetour(ProtocoleServiceResultat protocolesRecus) {
88
						CacheClient.getInstance().setListeProtocoles(protocolesRecus.getProtocoles());
88
						CacheClient.getInstance().setListeProtocoles(protocolesRecus.getProtocoles());
89
						if (protocolesRecus.getProtocoles().size() > 0) {
89
						if (protocolesRecus.getProtocoles().size() > 0) {
90
							if(protocoles == null) {
90
							if(protocoles == null) {
91
								protocoles = protocolesRecus.getProtocoles();
91
								protocoles = protocolesRecus.getProtocoles();
92
							}
92
							}
93
							//Vérifier qu'on n'a pas demandé un protocole particulier en paramètre
93
							//Vérifier qu'on n'a pas demandé un protocole particulier en paramètre
94
							String parametre = URLUtils.getURLSpecialParameterValue();
94
							String parametre = URLUtils.getURLSpecialParameterValue();
95
							if (parametre != null) {
95
							if (parametre != null) {
96
								for (Protocole protocoleCourant : protocoles) {
96
								for (Protocole protocoleCourant : protocoles) {
97
										if (parametre.equals(String.valueOf(protocoleCourant.getId()))) {
97
										if (parametre.equals(String.valueOf(protocoleCourant.getId()))) {
98
											CacheClient.getInstance().setProtocoleCourant(protocoleCourant);
98
											CacheClient.getInstance().setProtocoleCourant(protocoleCourant);
99
										}
99
										}
100
								}
100
								}
101
							} else {
101
							} else {
102
								CacheClient.getInstance().setProtocoleCourant(protocolesRecus.getProtocoles().get(0));
102
								CacheClient.getInstance().setProtocoleCourant(protocolesRecus.getProtocoles().get(0));
103
							}
103
							}
104
						} else {
104
						} else {
105
							// TODO afficher message indiquant que la liste des
105
							// TODO afficher message indiquant que la liste des
106
							// protocoles de votes n'est pas fourni
106
							// protocoles de votes n'est pas fourni
107
						}
107
						}
108
					}
108
					}
109
				});
109
				});
110
			} else {
110
			} else {
111
				CacheClient.getInstance().setProtocoleCourant(CacheClient.getInstance().getListeProtocoles().get(0));
111
				CacheClient.getInstance().setProtocoleCourant(CacheClient.getInstance().getListeProtocoles().get(0));
112
			}
112
			}
113
		}
113
		}
114
		gererEvenements();
114
		gererEvenements();
115
	}
115
	}
116
	
116
	
117
	private void gererEvenements() {
117
	private void gererEvenements() {
118
		
118
		
119
		vue.getListeProtocoles().addChangeHandler(new ChangeHandler() {
119
		vue.getListeProtocoles().addChangeHandler(new ChangeHandler() {
120
			@Override
120
			@Override
121
			public void onChange(ChangeEvent event) {
121
			public void onChange(ChangeEvent event) {
122
				surChangementProtocole();
122
				surChangementProtocole();
123
			}
123
			}
124
		});
124
		});
125
		
125
		
126
	}
126
	}
127
	
127
	
128
	private void chargerProtocoles() {
128
	private void chargerProtocoles() {
129
		// test pour ne pas charger les protocoles déjà chargés
129
		// test pour ne pas charger les protocoles déjà chargés
130
		// TODO: faire un systeme de cache gérés par les web service eux même
130
		// TODO: faire un systeme de cache gérés par les web service eux même
131
		if (CacheClient.getInstance().getListeProtocoles() == null) {
131
		if (CacheClient.getInstance().getListeProtocoles() == null) {
132
			protocoleService.getProtocoles(new ProtocolesCallback() {
132
			protocoleService.getProtocoles(new ProtocolesCallback() {
133
 
133
 
134
				@Override
134
				@Override
135
				public void surRetour(ProtocoleServiceResultat protocolesRecus) {
135
				public void surRetour(ProtocoleServiceResultat protocolesRecus) {
136
					protocoles = protocolesRecus.getProtocoles();
136
					protocoles = protocolesRecus.getProtocoles();
137
					remplirListeProtocole(protocoles);
137
					remplirListeProtocole(protocoles);
138
					surChangementProtocole();
138
					surChangementProtocole();
139
				}
139
				}
140
			});
140
			});
141
		} else {
141
		} else {
142
			protocoles = CacheClient.getInstance().getListeProtocoles();
142
			protocoles = CacheClient.getInstance().getListeProtocoles();
143
			remplirListeProtocole(CacheClient.getInstance().getListeProtocoles());
143
			remplirListeProtocole(CacheClient.getInstance().getListeProtocoles());
144
		}
144
		}
145
	}
145
	}
146
	
146
	
147
	public void surChangementProtocole() {
147
	public void surChangementProtocole() {
148
		Protocole protocoleCourant = null;
148
		Protocole protocoleCourant = null;
149
		for (Protocole protocole : protocoles) {
149
		for (Protocole protocole : protocoles) {
150
			if (protocole.getId() == vue.getIdProtocoleSelectionne()) {
150
			if (protocole.getId() == vue.getIdProtocoleSelectionne()) {
151
				protocoleCourant = protocole;
151
				protocoleCourant = protocole;
152
			}
152
			}
153
		}
153
		}
154
		vue.mettreAJourDescriptionProtocoleCourant(protocoleCourant);
154
		vue.mettreAJourDescriptionProtocoleCourant(protocoleCourant);
155
		CacheClient.getInstance().setProtocoleCourant(protocoleCourant);
155
		CacheClient.getInstance().setProtocoleCourant(protocoleCourant);
-
 
156
		CacheClient.getInstance().mettreAjourUrlCourante();
156
		EvenementChangementProtocole evenement = new EvenementChangementProtocole(protocoleCourant);
157
		EvenementChangementProtocole evenement = new EvenementChangementProtocole(protocoleCourant);
157
		BusEvenementiel.getInstance().fireEvent(evenement);
158
		BusEvenementiel.getInstance().fireEvent(evenement);
158
	}
159
	}
159
	
160
	
160
	private void remplirListeProtocole(List<Protocole> protocoles) {
161
	private void remplirListeProtocole(List<Protocole> protocoles) {
161
		//si un paramètre est passé dans l'url, on sélectionne un protocole
162
		//si un paramètre est passé dans l'url, on sélectionne un protocole
162
		String parametre = URLUtils.getURLSpecialParameterValue();
163
		String parametre = URLUtils.getURLSpecialParameterValue();
163
		if (parametre != null) {
164
		if (parametre != null) {
164
			for (Protocole protocoleCourant : protocoles) {
165
			for (Protocole protocoleCourant : protocoles) {
165
					if (parametre.equals(String.valueOf(protocoleCourant.getId()))) {
166
					if (parametre.equals(String.valueOf(protocoleCourant.getId()))) {
-
 
167
						CacheClient.getInstance().mettreAjourUrlCourante();
166
						CacheClient.getInstance().setProtocoleCourant(protocoleCourant);
168
						CacheClient.getInstance().setProtocoleCourant(protocoleCourant);
167
					}
169
					}
168
			}
170
			}
169
		}
171
		}
170
		vue.ajouterProtocoles(protocoles);
172
		vue.ajouterProtocoles(protocoles);
171
		if (CacheClient.getInstance().getProtocoleCourant() == null) {
173
		if (CacheClient.getInstance().getProtocoleCourant() == null) {
172
			vue.selectionnerProtocole(0);
174
			vue.selectionnerProtocole(0);
173
			vue.mettreAJourDescriptionProtocoleCourant(protocoles.get(0));
175
			vue.mettreAJourDescriptionProtocoleCourant(protocoles.get(0));
174
		} else {
176
		} else {
175
			vue.selectionnerProtocoleParProtocole(CacheClient.getInstance().getProtocoleCourant());
177
			vue.selectionnerProtocoleParProtocole(CacheClient.getInstance().getProtocoleCourant());
176
			vue.mettreAJourDescriptionProtocoleCourant(CacheClient.getInstance().getProtocoleCourant());
178
			vue.mettreAJourDescriptionProtocoleCourant(CacheClient.getInstance().getProtocoleCourant());
177
		}
179
		}
178
	}
180
	}
179
 
181
 
180
	public void go(HasWidgets composite) {
182
	public void go(HasWidgets composite) {
181
		vue.ajouterVue(composite);
183
		vue.ajouterVue(composite);
182
		chargerMoteurRechercheAvancee();
184
		chargerMoteurRechercheAvancee();
183
	}
185
	}
184
 
186
 
185
	public void chargerMoteurRechercheAvancee() {
187
	public void chargerMoteurRechercheAvancee() {
186
		MoteurRecherchePresenteur presenteurRecherche = new MoteurRecherchePresenteur(new MoteurRechercheVue(""), ModeRecherche.MODE_IMAGE) {
188
		MoteurRecherchePresenteur presenteurRecherche = new MoteurRecherchePresenteur(new MoteurRechercheVue(""), ModeRecherche.MODE_IMAGE) {
187
			public void lancerRecherche() {
189
			public void lancerRecherche() {
188
				chercherImages();
190
				chercherImages();
189
			}
191
			}
190
		};
192
		};
191
		presenteurRecherche.go(vue.getZoneRecherche());
193
		presenteurRecherche.go(vue.getZoneRecherche());
192
	}
194
	}
193
 
195
 
194
	public void chercherImages() {
196
	public void chercherImages() {
195
		vue.getZoneResultats().clear();
197
		vue.getZoneResultats().clear();
-
 
198
		CacheClient.getInstance().mettreAjourUrlCourante();
196
		new ResultatPictofloraPresenteur(new ImageServiceConcret(), new ProtocoleServiceConcret(), new ResultatPictofloraVue()).go(vue.getZoneResultats());
199
		new ResultatPictofloraPresenteur(new ImageServiceConcret(), new ProtocoleServiceConcret(), new ResultatPictofloraVue()).go(vue.getZoneResultats());
197
	}
200
	}
198
 
201
 
199
	public HasWidgets getZoneResultats() {
202
	public HasWidgets getZoneResultats() {
200
		return vue.getZoneResultats();
203
		return vue.getZoneResultats();
201
	}
204
	}
202
}
205
}