Subversion Repositories eFlore/Applications.del

Rev

Rev 1517 | Rev 1551 | 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;
1496 aurelien 10
import org.tela_botanica.del.client.modeles.ModeTri;
9 benjamin 11
import org.tela_botanica.del.client.modeles.Observation;
178 benjamin 12
import org.tela_botanica.del.client.modeles.Protocole;
537 gduche 13
import org.tela_botanica.del.client.modeles.Utilisateur;
1501 aurelien 14
import org.tela_botanica.del.client.utils.URLUtils;
9 benjamin 15
 
1467 aurelien 16
import com.google.gwt.core.client.GWT;
17
import com.google.gwt.user.client.Window;
1118 gduche 18
import com.google.gwt.user.client.Window.Location;
19
 
14 benjamin 20
public class CacheClient {
9 benjamin 21
 
814 aurelien 22
	private List<Protocole> listeProtocoles;
23
 
230 gduche 24
	private Observation observationCourante;
147 benjamin 25
	private Image imageCourante;
73 benjamin 26
	private String taxonPourRechercheEflore;
1501 aurelien 27
	private String idProtocoleEnAttente = null;
178 benjamin 28
	private Protocole protocoleCourant;
1367 aurelien 29
	private String referentielCourant;
147 benjamin 30
	private int numPageRechercheImage = 0;
349 aurelien 31
	private int nbTotalImagesRecherchees = 0;
1367 aurelien 32
 
33
	private boolean referentielNonModifiable = false;
335 benjamin 34
 
579 gduche 35
	private int pasPagination = 12;
445 benjamin 36
	private int pageCouranteRechercheImage = 1;
37
	private int pageCouranteRechercheObservations = 1;
335 benjamin 38
	private InformationsRecherche informationsRechercheImage;
39
	private InformationsRecherche informationsRechercheObservation;
537 gduche 40
	private Utilisateur utilisateur;
1549 jpm 41
	private String pageCourante = "";
1234 gduche 42
	private String statut;
1549 jpm 43
	private String[] statutsPossibles = {
44
		ConstantesNavigation.PARAM_TYPE_TOUS,
45
		ConstantesNavigation.PARAM_TYPE_A_DETERMINER,
46
		ConstantesNavigation.PARAM_TYPE_EN_DISCUSSION,
47
		ConstantesNavigation.PARAM_TYPE_VALIDEES
48
	};
1129 gduche 49
 
1234 gduche 50
	public void supprimerFiltreStatut() {
51
		this.statut = null;
52
	}
53
 
54
	public void setFiltreStatut(String statut) {
55
		this.statut = statut;
56
	}
57
 
58
	public String getFiltreStatut() {
59
		return this.statut;
60
	}
61
 
1129 gduche 62
	public String getPageCourante() {
63
		return pageCourante;
64
	}
335 benjamin 65
 
1129 gduche 66
	public void setPageCourante(String pageCourante) {
67
		this.pageCourante = pageCourante;
68
	}
69
 
14 benjamin 70
	private static CacheClient instance;
9 benjamin 71
 
14 benjamin 72
	private CacheClient() {
9 benjamin 73
		instance = this;
74
	}
75
 
1118 gduche 76
	public void initialiserAvecParametres() {
1549 jpm 77
		String urlCourante = Window.Location.getHref();
78
		Config config = new Config();
79
		String urlAppliImg = config.getUrl("pictoflora");
1517 aurelien 80
 
1549 jpm 81
		if (Location.getHash().contains(ConstantesNavigation.PAGE_DETAIL_OBS)) {
82
			setPageCourante(ConstantesNavigation.PAGE_DETAIL_OBS+"~"+URLUtils.getURLSpecialParameterValue());
83
		} else if (Location.getHash().contains(ConstantesNavigation.PAGE_DETAIL_IMG)) {
84
			setPageCourante(ConstantesNavigation.PAGE_DETAIL_IMG+"~"+URLUtils.getURLSpecialParameterValue());
85
		} else {
86
			setPageCourante("");
1517 aurelien 87
		}
1549 jpm 88
		GWT.log("initialiserAvecParametres:"+getPageCourante());
1517 aurelien 89
 
1129 gduche 90
		String rechercheLibre = Location.getParameter("masque");
91
		String famille = Location.getParameter("masque.famille");
92
		String taxon = Location.getParameter("masque.ns");
93
		String genre = Location.getParameter("masque.genre");
94
		String commune = Location.getParameter("masque.commune");
95
		String dept = Location.getParameter("masque.departement");
96
		String auteur = Location.getParameter("masque.auteur");
97
		String date = Location.getParameter("masque.date");
98
		String tag = Location.getParameter("masque.tag");
1426 aurelien 99
		String tagCel = Location.getParameter("masque.tag_cel");
100
		String tagDel = Location.getParameter("masque.tag_pictoflora");
1367 aurelien 101
		String referentiel = Location.getParameter("masque.referentiel");
1501 aurelien 102
		String protocole = Location.getParameter("protocole");
1467 aurelien 103
		String statutParam = Location.getParameter("masque.type");
104
 
1501 aurelien 105
		String page = Location.getParameter("page");
106
		Integer pageInt = null;
107
		try {
1549 jpm 108
			pageInt = Integer.parseInt(page);
1501 aurelien 109
		} catch (Exception e) {
110
			pageInt = null;
111
		}
112
 
113
		String pas = Location.getParameter("pas");
114
		Integer pasInt = null;
1549 jpm 115
		if (pas != null) {
1501 aurelien 116
			try {
1549 jpm 117
				pasInt = Integer.parseInt(pas);
1501 aurelien 118
			} catch (Exception e) {
119
				pasInt = null;
120
			}
121
		}
122
 
1118 gduche 123
		InformationsRecherche rechercheParArguments = new InformationsRecherche();
124
		rechercheParArguments.setRechercheLibre(rechercheLibre);
125
		rechercheParArguments.setFamille(famille);
126
		rechercheParArguments.setTaxon(taxon);
127
		rechercheParArguments.setGenre(genre);
128
		rechercheParArguments.setCommune(commune);
129
		rechercheParArguments.setDepartement(dept);
130
		rechercheParArguments.setAuteur(auteur);
131
		rechercheParArguments.setDate(date);
132
		rechercheParArguments.setTag(tag);
1501 aurelien 133
 
1549 jpm 134
		if (protocole != null && !protocole.equals("")) {
1501 aurelien 135
			CacheClient.getInstance().setIdProtocoleEnAttente(protocole);
136
			rechercheParArguments.setIdProtocoleSelectionne(protocole);
1549 jpm 137
		} else if (URLUtils.getURLSpecialParameterValue() != null) {
1501 aurelien 138
			CacheClient.getInstance().setIdProtocoleEnAttente(URLUtils.getURLSpecialParameterValue());
139
			rechercheParArguments.setIdProtocoleSelectionne(URLUtils.getURLSpecialParameterValue());
140
		}
141
 
1549 jpm 142
		if (pasInt != null) {
143
			setPasPagination(pasInt);
144
		}
145
 
146
		if (urlCourante.contains(urlAppliImg)) {
1426 aurelien 147
			rechercheParArguments.setMotClefCel(tagCel);
148
			rechercheParArguments.setMotClefDel(tagDel);
1549 jpm 149
			if (pageInt != null) {
150
				setPageCouranteRechercheImages(pageInt);
151
			}
1501 aurelien 152
		} else {
1549 jpm 153
			if (pageInt != null) {
154
				setPageCouranteRechercheObservations(pageInt);
155
			}
1426 aurelien 156
		}
1467 aurelien 157
 
1496 aurelien 158
		String tri = Location.getParameter("tri");
159
		String ordre = Location.getParameter("ordre");
160
 
1549 jpm 161
		if (tri != null) {
1496 aurelien 162
			ModeTri modeTri = ModeTri.TRI_ASCENDANT;
1549 jpm 163
			if (ordre != null && ordre.equals("asc")) {
1496 aurelien 164
				modeTri = ModeTri.TRI_ASCENDANT;
165
			}
166
 
1549 jpm 167
			if (ordre != null && ordre.equals("desc")) {
1496 aurelien 168
				modeTri = ModeTri.TRI_DESCENDANT;
169
			}
170
 
1549 jpm 171
			if (tri.equals("votes")) {
1496 aurelien 172
				rechercheParArguments.setTriParNbVotes(modeTri);
173
			}
174
 
1549 jpm 175
			if (tri.equals("tags")) {
1496 aurelien 176
				rechercheParArguments.setTriParNbTags(modeTri);
177
			}
178
 
1549 jpm 179
			if (tri.equals("date_observation")) {
1496 aurelien 180
				rechercheParArguments.setTriParDate(modeTri);
1549 jpm 181
			}
1496 aurelien 182
		}
183
 
1118 gduche 184
		rechercheParArguments.setMotClef(tag);
185
 
1367 aurelien 186
		// si le référentiel est passé dans l'url alors il ne doit pas être modifiable
1549 jpm 187
		if (referentiel != null && !referentiel.equals("")) {
1367 aurelien 188
			setReferentielCourant(referentiel);
189
			rechercheParArguments.setReferentiel(referentiel);
190
			referentielNonModifiable = true;
191
		}
192
 
1549 jpm 193
		if (Location.getParameterMap().size() == 0) {
1467 aurelien 194
			// par défaut l'application s'ouvre sur l'onglet à déterminer
195
			statut = ConstantesNavigation.PARAM_TYPE_DEFAUT;
196
		} else {
1549 jpm 197
			if (Arrays.asList(statutsPossibles).contains(statutParam)) {
1467 aurelien 198
				statut = statutParam;
199
			} else {
200
				statut = ConstantesNavigation.PARAM_TYPE_DEFAUT;
201
			}
202
		}
203
 
1118 gduche 204
		informationsRechercheImage = rechercheParArguments;
205
		informationsRechercheObservation = rechercheParArguments;
1517 aurelien 206
 
207
		mettreAjourUrlCourante();
1118 gduche 208
	}
209
 
1501 aurelien 210
	public void setIdProtocoleEnAttente(String idProtocole) {
211
		idProtocoleEnAttente = idProtocole;
212
	}
213
 
214
	public String getIdProtocoleEnAttente() {
215
		return idProtocoleEnAttente;
216
	}
217
 
537 gduche 218
	public Utilisateur getUtilisateur() {
219
		if (this.utilisateur == null) {
1496 aurelien 220
			this.utilisateur = new Utilisateur(null, null);
537 gduche 221
		}
222
		return this.utilisateur;
223
	}
224
 
225
	public void setUtilisateur(Utilisateur utilisateur) {
226
		this.utilisateur = utilisateur;
227
	}
228
 
1092 gduche 229
	public void setHome(String home) {
1129 gduche 230
		setPageCourante(home);
1092 gduche 231
	}
232
 
233
	public String getHome() {
1549 jpm 234
		return "";
1092 gduche 235
	}
236
 
230 gduche 237
	public Observation getObservationCourante() {
238
		return observationCourante;
9 benjamin 239
	}
240
 
230 gduche 241
	public void setObservationCourante(Observation observationCourante) {
242
		this.observationCourante = observationCourante;
9 benjamin 243
	}
244
 
14 benjamin 245
	public static CacheClient getInstance() {
9 benjamin 246
		if (instance == null) {
14 benjamin 247
			instance = new CacheClient();
9 benjamin 248
		}
249
		return instance;
250
	}
251
 
73 benjamin 252
	public String getTaxonPourRechercheEflore() {
253
		return taxonPourRechercheEflore;
254
	}
255
 
256
	public void setTaxonPourRechercheEflore(String taxonPourRechercheEflore) {
257
		this.taxonPourRechercheEflore = taxonPourRechercheEflore;
258
	}
259
 
147 benjamin 260
	public int getNumPageRechercheImage() {
261
		return numPageRechercheImage;
262
	}
263
 
335 benjamin 264
	// Pour la recherche :
311 gduche 265
	public int getPasPagination() {
266
		return pasPagination;
147 benjamin 267
	}
335 benjamin 268
 
311 gduche 269
	public void setPasPagination(int pasPagination) {
270
		this.pasPagination = pasPagination;
147 benjamin 271
	}
335 benjamin 272
 
358 benjamin 273
	public void setPageCouranteRechercheImages(int pageCouranteRecherche) {
274
		this.pageCouranteRechercheImage = pageCouranteRecherche;
311 gduche 275
	}
335 benjamin 276
 
358 benjamin 277
	public int getPageCouranteRechercheImage() {
278
		return this.pageCouranteRechercheImage;
311 gduche 279
	}
147 benjamin 280
 
349 aurelien 281
	public void setNbTotalImagesRecherchees(int nbTotalImagesRecherchees) {
282
		this.nbTotalImagesRecherchees = nbTotalImagesRecherchees;
283
	}
361 benjamin 284
 
349 aurelien 285
	public int getNbTotalImagesRecherchees() {
286
		return this.nbTotalImagesRecherchees;
287
	}
147 benjamin 288
 
289
	public Image getImageCourante() {
290
		return imageCourante;
291
	}
292
 
293
	public void setImageCourante(Image imageCourante) {
294
		this.imageCourante = imageCourante;
295
	}
814 aurelien 296
 
297
	public void setListeProtocoles(List<Protocole> listeProtocole) {
298
		this.listeProtocoles = listeProtocole;
299
	}
300
 
301
	public List<Protocole> getListeProtocoles() {
302
		return this.listeProtocoles;
303
	}
147 benjamin 304
 
178 benjamin 305
	public Protocole getProtocoleCourant() {
306
		return protocoleCourant;
307
	}
308
 
309
	public void setProtocoleCourant(Protocole protocoleCourant) {
310
		this.protocoleCourant = protocoleCourant;
311
	}
312
 
335 benjamin 313
	public InformationsRecherche getInformationsRechercheImage() {
1549 jpm 314
		if (informationsRechercheImage == null) {
467 aurelien 315
			informationsRechercheImage = new InformationsRecherche();
316
		}
335 benjamin 317
		return informationsRechercheImage;
318
	}
319
 
320
	public InformationsRecherche getInformationsRechercheObservation() {
1549 jpm 321
		if (informationsRechercheObservation == null) {
467 aurelien 322
			informationsRechercheObservation = new InformationsRecherche();
323
		}
335 benjamin 324
		return informationsRechercheObservation;
325
	}
326
 
327
	public void setInformationsRechercheImage(InformationsRecherche informationsRechercheImage) {
328
		this.informationsRechercheImage = informationsRechercheImage;
329
	}
330
 
331
	public void setInformationsRechercheObservation(InformationsRecherche informationsRechercheObservation) {
332
		this.informationsRechercheObservation = informationsRechercheObservation;
333
	}
334
 
358 benjamin 335
	public int getPageCouranteRechercheObservations() {
336
		return pageCouranteRechercheObservations;
337
	}
338
 
339
	public void setPageCouranteRechercheObservations(int pageCouranteRechercheObservations) {
340
		this.pageCouranteRechercheObservations = pageCouranteRechercheObservations;
341
	}
1367 aurelien 342
 
343
	public void setReferentielCourant(String referentielCourant) {
344
		this.referentielCourant = referentielCourant;
345
	}
346
 
347
	public String getReferentielCourant() {
348
		return referentielCourant;
349
	}
350
 
351
	public void setReferentielNonModifiable(boolean referentielNonModifiable) {
352
		this.referentielNonModifiable = referentielNonModifiable;
353
	}
354
 
355
	public boolean getReferentielNonModifiable() {
356
		return referentielNonModifiable;
357
	}
1467 aurelien 358
 
359
	public String genererUrlCourante() {
1549 jpm 360
		String urlCourante = Window.Location.getHref();
361
		Config config = new Config();
362
		String urlAppliObs = config.getUrl("identiplante");
363
		String urlAppliImg = config.getUrl("pictoflora");
364
		String url = urlCourante;
1467 aurelien 365
		String arguments = "";
1517 aurelien 366
 
1549 jpm 367
		//GWT.log("URL courante:"+urlCourante);
368
		//GWT.log("IdentiPlante:"+urlCourante.contains(urlAppliObs));
369
		//GWT.log("PictoFlora:"+urlCourante.contains(urlAppliImg));
370
 
371
		if (urlCourante.contains(urlAppliImg)) {
1467 aurelien 372
			InformationsRecherche infoRecherche;
1517 aurelien 373
			infoRecherche = getInformationsRechercheImage();
1549 jpm 374
 
1501 aurelien 375
			if (CacheClient.getInstance().getProtocoleCourant() != null) {
1549 jpm 376
				infoRecherche.setIdProtocoleSelectionne("" + CacheClient.getInstance().getProtocoleCourant().getId());
1501 aurelien 377
			}
1467 aurelien 378
 
1549 jpm 379
			arguments = infoRecherche.versChaineRequete();
380
			arguments += (arguments.isEmpty()) ? "" : "&";
381
			arguments += "page="+getPageCouranteRechercheImage()+"&pas="+getPasPagination();
382
 
383
			url = config.getUrl("pictoflora");
384
		} else if (urlCourante.contains(urlAppliObs)) {
1467 aurelien 385
			InformationsRecherche infoRecherche;
1517 aurelien 386
			infoRecherche = getInformationsRechercheObservation();
1467 aurelien 387
 
1549 jpm 388
			arguments = "masque.type="+statut;
389
			arguments += "&page="+getPageCouranteRechercheObservations()+"&pas="+getPasPagination();
390
			arguments += "&"+infoRecherche.versChaineRequete();
1501 aurelien 391
 
1549 jpm 392
			url = config.getUrl("identiplante");
1467 aurelien 393
		}
1549 jpm 394
 
395
		if (!GWT.isScript()) {
396
			arguments += "&gwt.codesvr="+Location.getParameter("gwt.codesvr")+"";
397
		}
398
		arguments = (arguments.isEmpty()) ? "" : "?" + arguments;
399
		String signet = getPageCourante().equals("") ? "" : "#" + getPageCourante();
400
		url += arguments + signet;
401
 
1467 aurelien 402
		// remplacements batards pour corriger l'url
403
		// TODO: factoriser toute la fonction
404
		url = url.replaceAll("&#", "#");
405
		url = url.replaceAll("&&", "&");
406
		url = url.replaceAll("\\?&", "?");
407
 
1549 jpm 408
		//GWT.log("URL de sortie:"+url);
409
 
1467 aurelien 410
		return url;
411
	}
412
 
413
	public void mettreAjourUrlCourante() {
414
		mettreAJourUrlCouranteSansRecharger(genererUrlCourante());
415
	}
416
 
417
	private static native void mettreAJourUrlCouranteSansRecharger(String nouvelleUrl) /*-{
1501 aurelien 418
		// javascript double negative trick
419
		// pour plus d'info http://stackoverflow.com/questions/4686583/can-someone-explain-this-double-negative-trick
1549 jpm 420
		if (!!($wnd.history && $wnd.history.pushState)) {
421
			$wnd.history.pushState(nouvelleUrl, "", nouvelleUrl);
422
		}
423
	}-*/;
9 benjamin 424
}