Subversion Repositories eFlore/Applications.cel

Rev

Rev 733 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 aperonnet 1
package org.tela_botanica.client.observation;
2
 
3
 
54 david 4
//TODO : normaliser les noms de methodes (obtenir, ajouter ...)
2 aperonnet 5
 
156 aurelien 6
import java.util.HashMap;
7
import org.tela_botanica.client.interfaces.FournisseurListe;
12 david 8
import org.tela_botanica.client.interfaces.Rafraichissable;
9
import org.tela_botanica.client.modeles.Configuration;
101 jpm 10
import org.tela_botanica.client.modeles.ExportObservationsDAO;
156 aurelien 11
import org.tela_botanica.client.modeles.ImageAsynchroneDAO;
12
import org.tela_botanica.client.modeles.ImageCarnet;
54 david 13
import org.tela_botanica.client.modeles.ImageGeneriqueVueAsynchroneDAO;
14
import org.tela_botanica.client.modeles.ImageInformationRepartitionAsynchroneDAO;
156 aurelien 15
import org.tela_botanica.client.modeles.ImportObservationAsynchroneDAO;
251 aurelien 16
import org.tela_botanica.client.modeles.InformationCommuneDAO;
385 aurelien 17
import org.tela_botanica.client.modeles.LiaisonMotsClesAsynchroneDAO;
94 jpm 18
import org.tela_botanica.client.modeles.LienImageAsynchroneDAO;
91 jpm 19
import org.tela_botanica.client.modeles.ListeDateObservationAsynchroneDAO;
66 david 20
import org.tela_botanica.client.modeles.ListeEntiteGeographiqueObservationAsynchroneDAO;
156 aurelien 21
import org.tela_botanica.client.modeles.ListeObservation;
12 david 22
import org.tela_botanica.client.modeles.ListeObservationAsynchroneDAO;
23
import org.tela_botanica.client.modeles.ListeReferentielCommuneAsynchroneDAO;
20 david 24
import org.tela_botanica.client.modeles.ListeReferentielNomAsynchroneDAO;
733 aurelien 25
import org.tela_botanica.client.modeles.ListeReferentielPersoAsynchroneDAO;
156 aurelien 26
import org.tela_botanica.client.modeles.MotsClesAsynchroneDAO;
140 aurelien 27
import org.tela_botanica.client.modeles.NomRetenuAsynchroneDao;
12 david 28
import org.tela_botanica.client.modeles.NombreObservationAsynchroneDAO;
39 david 29
import org.tela_botanica.client.modeles.Observation;
20 david 30
import org.tela_botanica.client.modeles.ObservationAsynchroneDAO;
108 aurelien 31
import org.tela_botanica.client.modeles.TransmissionObservationAsynchroneDAO;
733 aurelien 32
import org.tela_botanica.client.modeles.ListeReferentielPerso.TypesReferentiels;
217 aurelien 33
import org.tela_botanica.client.vues.observation.ListeObservationVue;
34
 
325 aurelien 35
import com.google.gwt.core.client.GWT;
156 aurelien 36
import com.google.gwt.json.client.JSONArray;
37
import com.google.gwt.json.client.JSONObject;
251 aurelien 38
import com.google.gwt.maps.client.geom.LatLng;
318 aurelien 39
import com.google.gwt.user.client.Window;
156 aurelien 40
import com.gwtext.client.data.Node;
41
import com.gwtext.client.data.Tree;
251 aurelien 42
import com.gwtext.client.widgets.map.LatLonPoint;
156 aurelien 43
import com.gwtext.client.widgets.tree.TreeNode;
2 aperonnet 44
 
7 aperonnet 45
 
156 aurelien 46
public class ObservationModele implements Rafraichissable {
7 aperonnet 47
 
12 david 48
 
49
 
50
	/**
51
	 * Booleen indiquant si le médiateur est instancié (l'instance doit être unique donc le booleen est static)
52
	 */
53
	private static boolean estInstancie = false ;
54
 
88 jpm 55
	private static ObservationModele thisModele = null ;
12 david 56
 
88 jpm 57
 
152 david 58
 
59
 
12 david 60
	/**
61
	 * La configuration en cours
62
	 */
63
	private Configuration config = null;
7 aperonnet 64
 
12 david 65
 
66
	/**
67
	 * Le médiateur associé au modèle
68
	 */
69
 
70
	private ObservationMediateur observationMediateur = null ;
71
 
156 aurelien 72
	/**
73
	 * La liste des mots clés en cours
74
	 */
75
	private HashMap<String, String> motsCles = new HashMap<String, String>(0);
12 david 76
 
156 aurelien 77
	private Tree arbreMotsCles = new Tree() ;
12 david 78
 
152 david 79
	/**
156 aurelien 80
	 * La liste des observations affichées en cours (verifier utilité)
81
	 */
82
 
83
	private ListeObservation cacheObservation = new ListeObservation(0) ;
84
 
85
	/**
152 david 86
	 * DAO dont le resultat peut etre mis en cache
87
	 *
88
	 */
89
 
90
	private ListeReferentielNomAsynchroneDAO nomDAO=null;
91
	private ListeReferentielCommuneAsynchroneDAO refDAO=null;
733 aurelien 92
	private ListeReferentielPersoAsynchroneDAO refPersoDAO=null;
12 david 93
 
94
	/**
95
	 * Retourne une instance de manière unique
96
	 * @param im le médiateur à associer
97
	 * @return l'instance du modèle
98
	 */
99
 
100
	static ObservationModele Instance(ObservationMediateur observationMediateur)
101
	{
102
		// si le modèle n'est pas encore instancié
103
		if(!estInstancie)
104
		{
105
			// on en crée un nouveau
106
			estInstancie = true ;
88 jpm 107
			thisModele = new ObservationModele(observationMediateur);
12 david 108
		}
88 jpm 109
		return thisModele ;
2 aperonnet 110
	}
111
 
12 david 112
 
113
 
114
	private ObservationModele(ObservationMediateur observationMediateur) {
115
 
116
		this.observationMediateur=observationMediateur;
117
 
118
		config = new Configuration();
2 aperonnet 119
 
12 david 120
 
121
	}
2 aperonnet 122
 
12 david 123
	/**
124
	 * Appelle le DAO asynchrone pour obtenir le nombre d'observation
125
	 * @param r le rafraichissable auxquel on enverra les données
86 jpm 126
	 * @param filtrage
12 david 127
	 * @param taillePage
128
	 */
129
	public void obtenirNombreObservation(Rafraichissable r) {
86 jpm 130
 
131
		String[][] criteres = {{"",""}} ;
132
		 	criteres = observationMediateur.renvoyerFiltres() ;
12 david 133
			// on rassemble les critères
134
			// on les crée un DAO auquel on les transmet et qui demande le nombre d'images correspondantes (pour les pages)
135
			NombreObservationAsynchroneDAO noaDAO = new NombreObservationAsynchroneDAO(this) ;
136
			noaDAO.obtenirNombreObservation(r, observationMediateur.getIdentifiant(), criteres) ;
137
 
2 aperonnet 138
	}
12 david 139
 
140
 
217 aurelien 141
	public void obtenirListeObservation(Rafraichissable r) {
142
		obtenirListeObservation(r,observationMediateur.getTaillePage(),observationMediateur.getPageEnCours());
143
	}
144
 
12 david 145
	/**
146
	 * Appelle le DAO asynchrone pour obtenir la liste des images
147
	 * @param r le rafraichissable auxquel on enverra les données
148
	 * @param taillePage
149
	 */
150
	public void obtenirListeObservation(Rafraichissable r, int taillePage, int pageEncours) {
151
 
86 jpm 152
 
89 jpm 153
		 	String[][] criteres = {{"",""}} ;
251 aurelien 154
			criteres = observationMediateur.renvoyerFiltres() ;
155
			// on rassemble les critères
12 david 156
 
157
 
158
			// ensuite on demande la page correspondante avec les mêmes critères
89 jpm 159
			String[][] criteres2 = new String[criteres.length+2][2] ;
12 david 160
 
89 jpm 161
			criteres2[0][0] = "limite" ;
162
			criteres2[0][1] = ""+taillePage ;
163
			criteres2[1][0] = "numero_page" ;
164
			criteres2[1][1] = ""+pageEncours ;
165
			for(int i = 0 ; i < criteres.length ; i++)
166
			{
167
				criteres2[i+2][0] = criteres[i][0] ;
168
				criteres2[i+2][1] = criteres[i][1] ;
169
			}
170
 
12 david 171
			// et on crée un DAO auquel on les transmet et qui envoie une requete pour recevoir les images
172
			ListeObservationAsynchroneDAO loaDAO = new ListeObservationAsynchroneDAO(this);
173
			loaDAO.obtenirListeObservation(r, observationMediateur.getIdentifiant(), criteres2);
174
	}
175
 
2 aperonnet 176
 
54 david 177
	/**
178
	 * Obtenir une liste de commune
179
	 * @param r
180
	 * @param critere
181
	 */
12 david 182
 
13 david 183
	public void obtenirListeReferentielCommune(Rafraichissable r, String critere) {
12 david 184
 
152 david 185
		if (refDAO==null) {
186
			refDAO=new ListeReferentielCommuneAsynchroneDAO(this);
187
		}
13 david 188
		refDAO.obtenirListeDonnees(r, critere);
189
 
12 david 190
	}
20 david 191
 
54 david 192
	/**
733 aurelien 193
	 * Obtenir une liste de commune
194
	 * @param r
195
	 * @param critere
196
	 */
197
 
198
	public void obtenirListeReferentielPerso(Rafraichissable r, TypesReferentiels referentiel, String critere) {
199
 
200
		if (refPersoDAO==null) {
201
			refPersoDAO=new ListeReferentielPersoAsynchroneDAO(this);
202
		}
203
 
204
		refPersoDAO.setRefDemande(referentiel);
205
		refPersoDAO.obtenirListeDonnees(r,observationMediateur.getIdentifiant(), critere);
206
 
207
	}
208
 
209
	/**
54 david 210
	 * Obtenir une liste de nom scientifique de plante
211
	 * @param r
212
	 * @param critere
213
	 */
20 david 214
 
215
	public void obtenirListeReferentielNom(Rafraichissable r, String critere) {
216
 
152 david 217
		if (nomDAO==null) {
218
			nomDAO=new ListeReferentielNomAsynchroneDAO(this);
219
		}
20 david 220
		nomDAO.obtenirListeDonnees(r, critere);
221
 
222
	}
223
 
224
 
225
	/**
226
	 *
227
	 * Lance la creation d'une observation
228
	 * @param r : la vue demandeuse de donnee
229
	 * @param critere : les criteres de selection
230
	 */
231
 
39 david 232
	public void ajouterObservation(Rafraichissable r, Observation obs) {
20 david 233
 
234
		ObservationAsynchroneDAO obsDAO=new ObservationAsynchroneDAO(this);
39 david 235
		obsDAO.ajouter(r, observationMediateur.getIdentifiant(), obs);
20 david 236
 
237
	}
2 aperonnet 238
 
74 david 239
	/**
240
	 *
241
	 * Lance la creation d'une observation
242
	 * @param r : la vue demandeuse de donnee
243
	 * @param critere : les criteres de selection
244
	 */
20 david 245
 
79 david 246
	public void modifierObservation(Rafraichissable r, Observation obs) {
74 david 247
 
248
		ObservationAsynchroneDAO obsDAO=new ObservationAsynchroneDAO(this);
79 david 249
		obsDAO.modifier(r, observationMediateur.getIdentifiant(), obs);
74 david 250
 
251
	}
20 david 252
 
217 aurelien 253
 
254
 
255
	public void modifierObservationEnMasse(
256
			Rafraichissable r, Observation obs) {
257
		ListeObservationAsynchroneDAO liObsDAO=new ListeObservationAsynchroneDAO(this);
258
		liObsDAO.modifierEnMasse(r, observationMediateur.getIdentifiant(), obs);
259
 
260
	}
261
 
262
 
263
 
77 jpm 264
	public void supprimerObservation(Rafraichissable r, String numeroOrdre) {
265
 
266
		ObservationAsynchroneDAO obsDao = new ObservationAsynchroneDAO(this) ;
267
		obsDao.supprimer(r,observationMediateur.getIdentifiant(),numeroOrdre) ;
268
 
269
 
270
	}
74 david 271
 
77 jpm 272
 
7 aperonnet 273
 
20 david 274
 
12 david 275
	/**
276
	 * Accesseur pour la configuration en cours d'utilisation
277
	 *
278
	 * @return la configuration
279
	 */
280
	public Configuration getConfig() {
281
 
282
		return config;
2 aperonnet 283
	}
284
 
66 david 285
 
286
	/**
287
	 * Obtenir des informations de repartition relative a un numero nomenclatural
288
	 * @param r
289
	 * @param numeroNomenclaturalSaisiObservation
290
	 */
12 david 291
 
54 david 292
 
293
	public void obtenirImageInformationRepartition( Rafraichissable r,String numeroNomenclaturalSaisiObservation) {
294
 
295
		ImageInformationRepartitionAsynchroneDAO repDAO=new ImageInformationRepartitionAsynchroneDAO(this);
296
		repDAO.obtenirURLImage(r, numeroNomenclaturalSaisiObservation);
297
 
298
 
299
	}
300
 
66 david 301
	/**
302
	 * Obtenir une image generique associee a un numero nomenclatural
303
	 * @param r
304
	 * @param numeroNomenclaturalSaisiObservation
305
	 */
54 david 306
 
307
	public void obtenirImageGenerique( Rafraichissable r,String numeroNomenclaturalSaisiObservation) {
308
 
309
		ImageGeneriqueVueAsynchroneDAO imgDAO=new ImageGeneriqueVueAsynchroneDAO(this);
310
		imgDAO.obtenirURLImage(r, numeroNomenclaturalSaisiObservation);
311
 
312
 
313
	}
314
 
315
 
66 david 316
	/**
317
	 * Obtenir la liste de l'ensemble des entites geographiques associes aux observation d'un utilisateur
318
	 * @param r
319
	 */
54 david 320
 
66 david 321
	public void obtenirListeEntiteGeographique(Rafraichissable r) {
54 david 322
 
66 david 323
	    ListeEntiteGeographiqueObservationAsynchroneDAO entDAO = new ListeEntiteGeographiqueObservationAsynchroneDAO(this);
324
	    entDAO.obtenirListeEntitesGeographiques(r, observationMediateur.getIdentifiant());
54 david 325
 
326
	}
91 jpm 327
 
328
 
329
 
330
	public void obtenirDatesObservation(
331
			Rafraichissable r) {
332
	    ListeDateObservationAsynchroneDAO ldoDAO = new ListeDateObservationAsynchroneDAO(this);
333
	    ldoDAO.obtenirListeDate(r, observationMediateur.getIdentifiant());
334
 
335
	}
94 jpm 336
 
337
 
338
 
339
	public void obtenirLiaisonImage(Rafraichissable r,
340
			String ordreObservation) {
341
 
342
		LienImageAsynchroneDAO liaDAO = new LienImageAsynchroneDAO(this) ;
343
		liaDAO.obtenirLiaisonsObservationsImages(r, ordreObservation,observationMediateur.getIdentifiant()) ;
344
 
345
	}
101 jpm 346
 
347
 
348
 
349
	public void exporterObservations() {
350
 
351
		String[][] criteres = {{"",""}} ;
352
	 	criteres = observationMediateur.renvoyerFiltres() ;
353
		// on rassemble les critères
251 aurelien 354
		// on les crée un DAO auquel on les transmet et qui demande le nombre d'images correspondantes (pour les pages)
101 jpm 355
		ExportObservationsDAO exoDAO = new ExportObservationsDAO(this) ;
356
		exoDAO.exporterObservations(observationMediateur.getIdentifiant(), criteres) ;
357
 
358
	}
104 jpm 359
 
360
 
361
 
362
	public void supprimerLiaisonImages(String idImg, String idObs) {
363
 
364
		LienImageAsynchroneDAO lienDAO = new LienImageAsynchroneDAO(this) ;
365
		lienDAO.supprimerLienImageObservation(idImg, idObs) ;
366
 
367
	}
368
 
369
	public String getIdentifiant() {
370
 
371
		return observationMediateur.getIdentifiant() ;
372
	}
107 aurelien 373
 
374
	public void supprimerListeObservation(Rafraichissable r,
375
			String numObs) {
376
		ListeObservationAsynchroneDAO lioaDAO = new ListeObservationAsynchroneDAO(this);
377
		lioaDAO.supprimerListeObservation(r, observationMediateur.getIdentifiant(), numObs);
378
 
379
	}
108 aurelien 380
 
381
	public void transmettreListeObservation(
145 aurelien 382
			Rafraichissable r, String numObsapl, boolean publier) {
108 aurelien 383
		TransmissionObservationAsynchroneDAO toaDAO = new TransmissionObservationAsynchroneDAO(this);
145 aurelien 384
		toaDAO.transmettreObservations(r, observationMediateur.getIdentifiant(), numObsapl, publier);
108 aurelien 385
 
386
	}
115 aurelien 387
 
140 aurelien 388
	public void analyserHistorique(Rafraichissable r,String anum) {
389
 
390
		NomRetenuAsynchroneDao nraDAO = new NomRetenuAsynchroneDao(this);
391
		nraDAO.obtenirNomRetenu(r, anum);
392
 
393
	}
394
 
395
 
396
 
397
	public void importerObservations() {
398
		ImportObservationAsynchroneDAO ioDAO = new ImportObservationAsynchroneDAO(this);
399
		ioDAO.importerObservations();
400
 
401
	}
156 aurelien 402
 
403
 
404
 
405
	public void obtenirArbreMotsCles(Rafraichissable r) {
406
 
407
		MotsClesAsynchroneDAO mcoDAO = new MotsClesAsynchroneDAO(this);
408
		mcoDAO.obtenirListeMotsCles(this);
409
 
410
	}
411
 
412
	public void rafraichir(Object nouvelleDonnees,
413
			boolean repandreRaffraichissement) {
414
 
415
		if(nouvelleDonnees instanceof JSONArray) {
416
			// alors on a reçu les informations sur les mots clés
417
			JSONArray reponse = (JSONArray) nouvelleDonnees;
418
 
419
			final int taillemax = reponse.size();
420
 
421
			// si le tableau est vide
422
			if (taillemax == 0) {
423
				// on crée un arbre vide
424
				TreeNode root = new TreeNode();
318 aurelien 425
				root.setId("racine_obs");
342 aurelien 426
				root.setText("Projets");
427
				String[] usObj = { "Projets", "racine_obs" };
156 aurelien 428
				root.setUserObject(usObj);
429
				arbreMotsCles.setRootNode(root);
342 aurelien 430
 
156 aurelien 431
			}
432
 
433
			// pour chacun des élements du tableau
434
			for (int j = 0; j < taillemax; j++) {
435
				// on extrait les élements du tableau
436
				if (reponse.get(j).isObject() != null) {
437
					JSONObject noeud = (JSONObject) reponse.get(j);
438
 
439
					String id_noeud = noeud.get("cmc_id_mot_cle_utilisateur")
440
							.isString().stringValue();
441
					String mot_cle = noeud.get("cmc_mot_cle").isString()
442
							.stringValue();
443
					String parent = noeud.get("cmc_id_parent").isString()
444
							.stringValue();
445
 
446
					String[] usObj = { mot_cle, id_noeud };
447
 
448
					// et on construit l'arbre à partir de la racine (qui est
449
					// toujoursl e premier élément)
318 aurelien 450
					if (id_noeud.equals("racine_obs")) {
156 aurelien 451
						TreeNode root = new TreeNode();
452
						root.setId(id_noeud);
453
						root.setText(mot_cle);
454
						root.setUserObject(usObj);
455
						arbreMotsCles.setRootNode(root);
456
					} else {
457
						// et en ajoutant les noeuds un à un (qui sont renvoyé
458
						// dans l'ordre hierarchique de leur niveau
459
						// ce qui permet de les traiter séquentiellement)
460
						TreeNode node = new TreeNode();
461
						node.setId(id_noeud);
462
						node.setText(mot_cle);
463
						node.setChecked(false);
464
						Node parentNode = arbreMotsCles.getNodeById(parent);
465
						node.setUserObject(usObj);
342 aurelien 466
 
156 aurelien 467
						parentNode.appendChild(node);
468
					}
677 aurelien 469
 
470
					motsCles.put(id_noeud, mot_cle);
156 aurelien 471
				}
472
			}
318 aurelien 473
 
156 aurelien 474
			// enfin on met à jour l'arbre des mots clés contenu dans le modèle
318 aurelien 475
			//rafraichirArbreMotsCles(arbreMotsCles);
156 aurelien 476
			// et on notifie le médiateur de la mise à jour en lui passant une
477
			// copie des données
478
			observationMediateur.rafraichirArbreMotsCles(arbreMotsCles);
479
		}
480
 
342 aurelien 481
		if(nouvelleDonnees instanceof Observation) {
482
			observationMediateur.obtenirNombreObservation();
483
		}
484
 
156 aurelien 485
	}
486
 
487
	/**
488
	 * Met à jour l'arbre des mots clés à partir d'un objet
489
	 *
490
	 * @param o
491
	 *            le nouvel arbre de mots clés
492
	 */
493
	public void rafraichirArbreMotsCles(Object o) {
494
		arbreMotsCles = (com.gwtext.client.data.Tree) o;
495
	}
496
 
497
	/**
498
	 * Met à jour la table de correspondance mots clés / ids à partir d'un objet
499
	 *
500
	 * @param o
501
	 *            la nouvelle table des mots clés
502
	 */
503
	@SuppressWarnings("unchecked")
504
	public void rafraichirMotsCles(Object o) {
505
		if (o instanceof HashMap) {
506
			motsCles = (HashMap<String, String>) o;
507
		}
508
	}
12 david 509
 
156 aurelien 510
	/**
511
	 * Va chercher les mots clés associés à une image dans la liste des images
512
	 * chargée dans le modèle
513
	 *
514
	 * @param r
515
	 *            le rafraichissable auquel on enverra les informations
516
	 * @param id
517
	 *            l'identifiant de l'image
518
	 */
519
	public void obtenirMotsClesId(Rafraichissable r, String id) {
520
		Observation o = cacheObservation.get(id);
521
		String motsClesId = o.getMotsCles();
522
		String[] motsClesIdTab = motsClesId.split(",");
523
		r.rafraichir(motsClesIdTab, false);
524
	}
525
 
526
	/**
342 aurelien 527
	 * Met à jour les mots clés associés à une obs et appelle le DAO pour
156 aurelien 528
	 * synchroniser la base de données
529
	 *
530
	 * @param ids
385 aurelien 531
	 *            les identifiants des observations selectionnées
156 aurelien 532
	 * @param motsClesEnCours
385 aurelien 533
	 *            les mots clés à appliquer aux observations
156 aurelien 534
	 */
318 aurelien 535
	public void mettreAjourMotsCles(String motsClesEnCours, String[] idsObsALier) {
359 aurelien 536
 
537
		String motsCles = "";
538
		String obsAlier = "";
539
		int nbObs = 0;
540
 
318 aurelien 541
		for (int i = 0; i < idsObsALier.length; i++) {
359 aurelien 542
 
318 aurelien 543
			if (cacheObservation.containsKey(idsObsALier[i])) {
342 aurelien 544
 
545
				if(!motsClesEnCours.endsWith(";") && !motsClesEnCours.startsWith(";")) {
546
					motsCles += ";";
547
				}
359 aurelien 548
 
549
				obsAlier += ","+idsObsALier[i];
342 aurelien 550
				motsCles += motsClesEnCours;
551
 
359 aurelien 552
				nbObs++;
362 aurelien 553
 
554
				Observation m = cacheObservation.get(idsObsALier[i]);
555
 
556
				if(m.getMotsCles() != null && !m.getMotsCles().endsWith(";") && !motsCles.startsWith(";")) {
557
					motsCles += ";";
558
				}
559
 
560
				m.setMotsCles(m.getMotsCles()+motsCles);
561
 
562
				cacheObservation.put(m.getNumeroOrdre(), m);
156 aurelien 563
			}
564
		}
359 aurelien 565
 
566
		while(obsAlier.startsWith(",")) {
567
			obsAlier = obsAlier.replaceFirst(",", "");
568
		}
569
 
570
		if(nbObs > 0) {
571
 
385 aurelien 572
			LiaisonMotsClesAsynchroneDAO lmcDAO = new LiaisonMotsClesAsynchroneDAO(this);
573
			lmcDAO.modifier(this,observationMediateur.getIdentifiant(), obsAlier, motsClesEnCours);
359 aurelien 574
		}
156 aurelien 575
	}
576
 
385 aurelien 577
 
578
	public void supprimerLiaisonMotCleObservations(
579
			Rafraichissable r, String idObs, String idMC) {
580
 
581
		LiaisonMotsClesAsynchroneDAO lmcDAO = new LiaisonMotsClesAsynchroneDAO(this);
582
		lmcDAO.supprimer(r,observationMediateur.getIdentifiant(), idObs, idMC);
583
 
584
	}
585
 
156 aurelien 586
	/**
587
	 * Ajoute un mot clé à l'arbre des mots clés local et appelle le DAO qui
588
	 * fait la mise à jour de l'arbre des mots clés dans la base
589
	 *
590
	 * @param n
591
	 *            le nouveau noeud contenant le mot clé
592
	 * @param arbreMC
593
	 *            l'arbre des mots cles en cours
594
	 */
595
	public void ajouterMotCleDansArbre(TreeNode n,
596
			com.gwtext.client.data.Tree arbreMC) {
597
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO(this);
598
 
599
		String[] usObj = (String[]) n.getUserObject();
600
		String motCle = usObj[0];
601
		String id = usObj[1];
602
		String parentId = "";
603
 
342 aurelien 604
		if (!id.equals("racine_obs")) {
156 aurelien 605
			String[] parentUsObj = (String[]) n.getParentNode().getUserObject();
606
			parentId = parentUsObj[1];
607
		} else {
342 aurelien 608
			parentId = "racine_obs";
156 aurelien 609
		}
318 aurelien 610
 
156 aurelien 611
		rafraichirArbreMotsCles(arbreMC);
612
 
613
		String nouveauMotCle = "&identifiant=" + getIdentifiant() + "&motcle="
614
				+ motCle + "&id=" + id + "&parent=" + parentId;
615
		MCDao.ajouterBaseDeDonnees(nouveauMotCle);
616
	}
617
 
618
	/**
619
	 * Supprime un noeud de l'arbre des mots clés et appelle le DAO qui va
620
	 * supprimer les mots clés associés dans la base
621
	 *
622
	 * @param n
623
	 *            le noeud à supprimer
624
	 * @param arbreMC
625
	 *            l'arbre des mots clés en cours
626
	 */
627
	public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC) {
628
 
629
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO(this);
630
 
631
		String[] usObj = (String[]) n.getUserObject();
632
		String id = usObj[1];
318 aurelien 633
 
634
		rafraichirArbreMotsCles(arbreMC);
156 aurelien 635
 
636
		MCDao.supprimerBaseDeDonnees(id);
637
 
638
	}
639
 
640
	/**
641
	 * Modifie le noeud donné dans l'arbre des mots clés en cours et appelle le
642
	 * DAO qui synchronise la modification dans la base de données
643
	 *
644
	 * @param n
645
	 *            le noeud modifié
646
	 * @param arbreMC
647
	 *            l'arbre des mots clés en cours
648
	 */
649
	public void modifierMotCleDansArbre(TreeNode n, Tree arbreMC) {
650
 
651
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO(this);
652
 
653
		String[] usObj = (String[]) n.getUserObject();
654
		String motCle = usObj[0];
655
		String id = usObj[1];
656
		String parentId = "";
657
 
658
		if (!id.equals("racine")) {
659
			String[] parentUsObj = (String[]) n.getParentNode().getUserObject();
660
			parentId = parentUsObj[1];
661
		} else {
662
			parentId = "racine";
663
		}
664
 
665
		rafraichirArbreMotsCles(arbreMC);
666
 
667
		String motCleModifie = "&motcle=" + motCle + "&id=" + id + "&parent="
668
				+ parentId;
669
		MCDao.modifierBaseDeDonnees(motCleModifie);
670
 
671
	}
672
 
673
	/**
674
	 * Deplace un noeud dans l'arbre des mots cles et appelle le DAO qui
675
	 * reorganise l'arbre dans la base de donnees suivant le changement
676
	 *
677
	 * @param n
678
	 *            le noeud deplace (et son sous arbre associe)
679
	 * @param arbreMC
680
	 *            l'arbre des mots cles en cours
681
	 */
682
	public void deplacerMotCleDansArbre(TreeNode n, Tree arbreMC) {
683
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO(this);
684
 
685
		String[] usObj = (String[]) n.getUserObject();
686
		String motCle = usObj[0];
687
		String id = usObj[1];
688
		String parentId = "";
342 aurelien 689
		if (!id.equals("racine_obs")) {
156 aurelien 690
			String[] parentUsObj = (String[]) n.getParentNode().getUserObject();
691
			parentId = parentUsObj[1];
692
		} else {
342 aurelien 693
			parentId = "racine_obs";
156 aurelien 694
		}
318 aurelien 695
 
156 aurelien 696
		rafraichirArbreMotsCles(arbreMC);
697
 
698
		String motCleModifie = "&motcle=" + motCle + "&id=" + id + "&parent="
699
				+ parentId;
700
		MCDao.deplacerBaseDeDonnees(motCleModifie);
701
	}
702
 
703
	/**
704
	 * Ajoute un nouveau mot clés à la liste des mots clés locale
705
	 *
706
	 * @param text
707
	 *            le mot clé
708
	 * @param id
709
	 *            l'identifiant du mot clé
710
	 */
711
	public void mettreAjourMotsClesId(String text, String id) {
712
		motsCles.put(id, text);
713
	}
714
 
677 aurelien 715
	public String obtenirTexteMotCle(String id) {
716
 
717
		String correspondanceId = "";
718
 
719
		String motCleTexte = motsCles.get(id);
720
 
721
		if(motCleTexte != null) {
722
			correspondanceId = motCleTexte;
723
		}
724
 
725
		return correspondanceId;
726
	}
727
 
156 aurelien 728
	public void rafraichirCacheObservation(ListeObservation li) {
729
		cacheObservation = li ;
730
	}
731
 
732
	public ListeObservation getCacheObservation() {
733
		return cacheObservation ;
734
	}
735
 
251 aurelien 736
	public void obtenirInformationCommune(Rafraichissable r, String nomCommune, String codePostal) {
737
		InformationCommuneDAO infocommune = new InformationCommuneDAO(r);
738
		infocommune.obtenirInfosCommune(r, nomCommune, codePostal);
739
	}
156 aurelien 740
 
251 aurelien 741
	public void obtenirInformationCoord(Rafraichissable r, LatLng coord) {
742
		InformationCommuneDAO infocommune = new InformationCommuneDAO(r);
743
		infocommune.obtenirCommunePlusProche(r, coord.getLongitude(), coord.getLatitude());
744
	}
2 aperonnet 745
}