Subversion Repositories eFlore/Applications.cel

Rev

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