Subversion Repositories eFlore/Applications.del

Rev

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