Subversion Repositories eFlore/Applications.del

Rev

Rev 1426 | Rev 1496 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
9 benjamin 1
package org.tela_botanica.del.client.cache;
2
 
1467 aurelien 3
import java.util.Arrays;
814 aurelien 4
import java.util.List;
5
 
1467 aurelien 6
import org.tela_botanica.del.client.config.Config;
1092 gduche 7
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation;
147 benjamin 8
import org.tela_botanica.del.client.modeles.Image;
335 benjamin 9
import org.tela_botanica.del.client.modeles.InformationsRecherche;
9 benjamin 10
import org.tela_botanica.del.client.modeles.Observation;
178 benjamin 11
import org.tela_botanica.del.client.modeles.Protocole;
537 gduche 12
import org.tela_botanica.del.client.modeles.Utilisateur;
9 benjamin 13
 
1467 aurelien 14
import com.google.gwt.core.client.GWT;
15
import com.google.gwt.user.client.Window;
1118 gduche 16
import com.google.gwt.user.client.Window.Location;
17
 
14 benjamin 18
public class CacheClient {
9 benjamin 19
 
814 aurelien 20
	private List<Protocole> listeProtocoles;
21
 
1092 gduche 22
	private String home = ConstantesNavigation.PAGE_RECHERCHE_OBSERVATIONS;
230 gduche 23
	private Observation observationCourante;
147 benjamin 24
	private Image imageCourante;
73 benjamin 25
	private String taxonPourRechercheEflore;
178 benjamin 26
	private Protocole protocoleCourant;
1367 aurelien 27
	private String referentielCourant;
147 benjamin 28
	private int numPageRechercheImage = 0;
349 aurelien 29
	private int nbTotalImagesRecherchees = 0;
1367 aurelien 30
 
31
	private boolean referentielNonModifiable = false;
335 benjamin 32
 
579 gduche 33
	private int pasPagination = 12;
445 benjamin 34
	private int pageCouranteRechercheImage = 1;
35
	private int pageCouranteRechercheObservations = 1;
335 benjamin 36
	private InformationsRecherche informationsRechercheImage;
37
	private InformationsRecherche informationsRechercheObservation;
537 gduche 38
	private Utilisateur utilisateur;
1129 gduche 39
	private String pageCourante = home;
1234 gduche 40
	private String statut;
1467 aurelien 41
	private String[] statutsPossibles = {ConstantesNavigation.PARAM_TYPE_TOUS,
42
										ConstantesNavigation.PARAM_TYPE_A_DETERMINER,
43
										ConstantesNavigation.PARAM_TYPE_EN_DISCUSSION,
44
										ConstantesNavigation.PARAM_TYPE_VALIDEES};
1129 gduche 45
 
1234 gduche 46
	public void supprimerFiltreStatut() {
47
		this.statut = null;
48
	}
49
 
50
	public void setFiltreStatut(String statut) {
51
		this.statut = statut;
52
	}
53
 
54
	public String getFiltreStatut() {
55
		return this.statut;
56
	}
57
 
1129 gduche 58
	public String getPageCourante() {
59
		return pageCourante;
60
	}
335 benjamin 61
 
1129 gduche 62
	public void setPageCourante(String pageCourante) {
63
		this.pageCourante = pageCourante;
64
	}
65
 
14 benjamin 66
	private static CacheClient instance;
9 benjamin 67
 
14 benjamin 68
	private CacheClient() {
9 benjamin 69
		instance = this;
70
	}
71
 
1118 gduche 72
	public void initialiserAvecParametres() {
1129 gduche 73
		String rechercheLibre = Location.getParameter("masque");
74
		String famille = Location.getParameter("masque.famille");
75
		String taxon = Location.getParameter("masque.ns");
76
		String genre = Location.getParameter("masque.genre");
77
		String commune = Location.getParameter("masque.commune");
78
		String dept = Location.getParameter("masque.departement");
79
		String auteur = Location.getParameter("masque.auteur");
80
		String date = Location.getParameter("masque.date");
81
		String tag = Location.getParameter("masque.tag");
1426 aurelien 82
		String tagCel = Location.getParameter("masque.tag_cel");
83
		String tagDel = Location.getParameter("masque.tag_pictoflora");
1367 aurelien 84
		String referentiel = Location.getParameter("masque.referentiel");
1118 gduche 85
 
1467 aurelien 86
		String statutParam = Location.getParameter("masque.type");
87
 
1118 gduche 88
		InformationsRecherche rechercheParArguments = new InformationsRecherche();
89
		rechercheParArguments.setRechercheLibre(rechercheLibre);
90
		rechercheParArguments.setFamille(famille);
91
		rechercheParArguments.setTaxon(taxon);
92
		rechercheParArguments.setGenre(genre);
93
		rechercheParArguments.setCommune(commune);
94
		rechercheParArguments.setDepartement(dept);
95
		rechercheParArguments.setAuteur(auteur);
96
		rechercheParArguments.setDate(date);
97
		rechercheParArguments.setTag(tag);
1426 aurelien 98
		if(pageCourante.equals(ConstantesNavigation.PAGE_RECHERCHE_IMAGES)) {
99
			rechercheParArguments.setMotClefCel(tagCel);
100
			rechercheParArguments.setMotClefDel(tagDel);
101
		}
1467 aurelien 102
 
1118 gduche 103
		rechercheParArguments.setMotClef(tag);
104
 
1367 aurelien 105
		// si le référentiel est passé dans l'url alors il ne doit pas être modifiable
106
		if(referentiel != null && !referentiel.equals("")) {
107
			setReferentielCourant(referentiel);
108
			rechercheParArguments.setReferentiel(referentiel);
109
			referentielNonModifiable = true;
110
		}
111
 
1467 aurelien 112
		if(Location.getParameterMap().size() == 0) {
113
			// par défaut l'application s'ouvre sur l'onglet à déterminer
114
			statut = ConstantesNavigation.PARAM_TYPE_DEFAUT;
115
		} else {
116
			if(Arrays.asList(statutsPossibles).contains(statutParam)) {
117
				statut = statutParam;
118
			} else {
119
				statut = ConstantesNavigation.PARAM_TYPE_DEFAUT;
120
			}
121
		}
122
 
1118 gduche 123
		informationsRechercheImage = rechercheParArguments;
124
		informationsRechercheObservation = rechercheParArguments;
125
	}
126
 
537 gduche 127
	public Utilisateur getUtilisateur() {
128
		if (this.utilisateur == null) {
129
			this.utilisateur = new Utilisateur(null);
130
		}
131
		return this.utilisateur;
132
	}
133
 
134
	public void setUtilisateur(Utilisateur utilisateur) {
135
		this.utilisateur = utilisateur;
136
	}
137
 
1092 gduche 138
	public void setHome(String home) {
139
		this.home = home;
1129 gduche 140
		setPageCourante(home);
1092 gduche 141
	}
142
 
143
	public String getHome() {
144
		return home;
145
	}
146
 
230 gduche 147
	public Observation getObservationCourante() {
148
		return observationCourante;
9 benjamin 149
	}
150
 
230 gduche 151
	public void setObservationCourante(Observation observationCourante) {
152
		this.observationCourante = observationCourante;
9 benjamin 153
	}
154
 
14 benjamin 155
	public static CacheClient getInstance() {
9 benjamin 156
		if (instance == null) {
14 benjamin 157
			instance = new CacheClient();
9 benjamin 158
		}
159
		return instance;
160
	}
161
 
73 benjamin 162
	public String getTaxonPourRechercheEflore() {
163
		return taxonPourRechercheEflore;
164
	}
165
 
166
	public void setTaxonPourRechercheEflore(String taxonPourRechercheEflore) {
167
		this.taxonPourRechercheEflore = taxonPourRechercheEflore;
168
	}
169
 
147 benjamin 170
	public int getNumPageRechercheImage() {
171
		return numPageRechercheImage;
172
	}
173
 
335 benjamin 174
	// Pour la recherche :
311 gduche 175
	public int getPasPagination() {
176
		return pasPagination;
147 benjamin 177
	}
335 benjamin 178
 
311 gduche 179
	public void setPasPagination(int pasPagination) {
180
		this.pasPagination = pasPagination;
147 benjamin 181
	}
335 benjamin 182
 
358 benjamin 183
	public void setPageCouranteRechercheImages(int pageCouranteRecherche) {
184
		this.pageCouranteRechercheImage = pageCouranteRecherche;
311 gduche 185
	}
335 benjamin 186
 
358 benjamin 187
	public int getPageCouranteRechercheImage() {
188
		return this.pageCouranteRechercheImage;
311 gduche 189
	}
147 benjamin 190
 
349 aurelien 191
	public void setNbTotalImagesRecherchees(int nbTotalImagesRecherchees) {
192
		this.nbTotalImagesRecherchees = nbTotalImagesRecherchees;
193
	}
361 benjamin 194
 
349 aurelien 195
	public int getNbTotalImagesRecherchees() {
196
		return this.nbTotalImagesRecherchees;
197
	}
147 benjamin 198
 
199
	public Image getImageCourante() {
200
		return imageCourante;
201
	}
202
 
203
	public void setImageCourante(Image imageCourante) {
204
		this.imageCourante = imageCourante;
205
	}
814 aurelien 206
 
207
	public void setListeProtocoles(List<Protocole> listeProtocole) {
208
		this.listeProtocoles = listeProtocole;
209
	}
210
 
211
	public List<Protocole> getListeProtocoles() {
212
		return this.listeProtocoles;
213
	}
147 benjamin 214
 
178 benjamin 215
	public Protocole getProtocoleCourant() {
216
		return protocoleCourant;
217
	}
218
 
219
	public void setProtocoleCourant(Protocole protocoleCourant) {
220
		this.protocoleCourant = protocoleCourant;
221
	}
222
 
335 benjamin 223
	public InformationsRecherche getInformationsRechercheImage() {
467 aurelien 224
		if(informationsRechercheImage == null) {
225
			informationsRechercheImage = new InformationsRecherche();
226
		}
335 benjamin 227
		return informationsRechercheImage;
228
	}
229
 
230
	public InformationsRecherche getInformationsRechercheObservation() {
467 aurelien 231
		if(informationsRechercheObservation == null) {
232
			informationsRechercheObservation = new InformationsRecherche();
233
		}
335 benjamin 234
		return informationsRechercheObservation;
235
	}
236
 
237
	public void setInformationsRechercheImage(InformationsRecherche informationsRechercheImage) {
238
		this.informationsRechercheImage = informationsRechercheImage;
239
	}
240
 
241
	public void setInformationsRechercheObservation(InformationsRecherche informationsRechercheObservation) {
242
		this.informationsRechercheObservation = informationsRechercheObservation;
243
	}
244
 
358 benjamin 245
	public int getPageCouranteRechercheObservations() {
246
		return pageCouranteRechercheObservations;
247
	}
248
 
249
	public void setPageCouranteRechercheObservations(int pageCouranteRechercheObservations) {
250
		this.pageCouranteRechercheObservations = pageCouranteRechercheObservations;
251
	}
1367 aurelien 252
 
253
	public void setReferentielCourant(String referentielCourant) {
254
		this.referentielCourant = referentielCourant;
255
	}
256
 
257
	public String getReferentielCourant() {
258
		return referentielCourant;
259
	}
260
 
261
	public void setReferentielNonModifiable(boolean referentielNonModifiable) {
262
		this.referentielNonModifiable = referentielNonModifiable;
263
	}
264
 
265
	public boolean getReferentielNonModifiable() {
266
		return referentielNonModifiable;
267
	}
1467 aurelien 268
 
269
	public String genererUrlCourante() {
270
		String url = Window.Location.getHref();
271
		CacheClient cache = CacheClient.getInstance();
272
 
273
		String arguments = "";
274
		String argumentsRecherche = "";
275
		if (cache.getPageCourante().equals(ConstantesNavigation.PAGE_RECHERCHE_IMAGES)) {
276
 
277
			InformationsRecherche infoRecherche;
278
			infoRecherche = cache.getInformationsRechercheImage();
279
			argumentsRecherche = infoRecherche.versChaineRequete();
280
 
281
			if(!GWT.isScript()) {
282
				argumentsRecherche += "&gwt.codesvr="+Location.getParameter("gwt.codesvr")+"";
283
			}
284
 
285
			argumentsRecherche = (argumentsRecherche.isEmpty()) ? argumentsRecherche : "?" + argumentsRecherche;
286
			arguments = argumentsRecherche + "#" + ConstantesNavigation.PAGE_RECHERCHE_IMAGES;
287
			url = new Config().getUrl("del") + arguments;
288
 
289
			if (CacheClient.getInstance().getProtocoleCourant() != null) {
290
				url += "~"+String.valueOf(CacheClient.getInstance().getProtocoleCourant().getId());
291
			}
292
		} else if (cache.getPageCourante().equals(ConstantesNavigation.PAGE_RECHERCHE_OBSERVATIONS) || cache.getPageCourante().equals("")) {
293
 
294
			InformationsRecherche infoRecherche;
295
			infoRecherche = cache.getInformationsRechercheObservation();
296
			argumentsRecherche = "masque.type="+statut;
297
			argumentsRecherche += "&"+infoRecherche.versChaineRequete();
298
 
299
			if(!GWT.isScript()) {
300
				argumentsRecherche += "&gwt.codesvr="+Location.getParameter("gwt.codesvr")+"";
301
			}
302
			arguments = "?"+argumentsRecherche + "#" + ConstantesNavigation.PAGE_RECHERCHE_OBSERVATIONS;
303
			url = new Config().getUrl("del") + arguments;
304
		} else if (cache.getPageCourante().contains(ConstantesNavigation.PAGE_VALIDATION) || cache.getPageCourante().contains(ConstantesNavigation.PAGE_VALIDATION_PICTOFLORA)) {
305
			url = new Config().getUrl("del");
306
			if(!GWT.isScript()) {
307
				url += "?gwt.codesvr="+Location.getParameter("gwt.codesvr");
308
			}
309
			url += "#"+cache.getPageCourante();
310
		}
311
		// remplacements batards pour corriger l'url
312
		// TODO: factoriser toute la fonction
313
		url = url.replaceAll("&#", "#");
314
		url = url.replaceAll("&&", "&");
315
		url = url.replaceAll("\\?&", "?");
316
 
317
		return url;
318
	}
319
 
320
 
321
	public void mettreAjourUrlCourante() {
322
		mettreAJourUrlCouranteSansRecharger(genererUrlCourante());
323
	}
324
 
325
	private static native void mettreAJourUrlCouranteSansRecharger(String nouvelleUrl) /*-{
326
    	$wnd.history.pushState(nouvelleUrl, "", nouvelleUrl);
327
	}-*/;
328
 
9 benjamin 329
}