Subversion Repositories eFlore/Applications.del

Rev

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