Subversion Repositories eFlore/Applications.cel

Rev

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