Subversion Repositories eFlore/Applications.del

Rev

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

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