Subversion Repositories eFlore/Applications.cel

Rev

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