Subversion Repositories eFlore/Applications.cel

Rev

Rev 2568 | 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;
12 david 7
import org.tela_botanica.client.interfaces.Rafraichissable;
989 aurelien 8
import org.tela_botanica.client.modeles.dao.ExportObservationsDAO;
9
import org.tela_botanica.client.modeles.dao.ImageGeneriqueVueAsynchroneDAO;
10
import org.tela_botanica.client.modeles.dao.ImageInformationRepartitionAsynchroneDAO;
11
import org.tela_botanica.client.modeles.dao.ImportObservationAsynchroneDAO;
2568 aurelien 12
import org.tela_botanica.client.modeles.dao.InformationLocaliteDAO;
989 aurelien 13
import org.tela_botanica.client.modeles.dao.LiaisonMotsClesObsAsynchroneDAO;
14
import org.tela_botanica.client.modeles.dao.LienImageAsynchroneDAO;
15
import org.tela_botanica.client.modeles.dao.ListeDateObservationAsynchroneDAO;
16
import org.tela_botanica.client.modeles.dao.ListeEntiteGeographiqueObservationAsynchroneDAO;
17
import org.tela_botanica.client.modeles.dao.ListeObservationAsynchroneDAO;
2568 aurelien 18
import org.tela_botanica.client.modeles.dao.ListeReferentielLocaliteAsynchroneDAO;
989 aurelien 19
import org.tela_botanica.client.modeles.dao.ListeReferentielNomAsynchroneDAO;
20
import org.tela_botanica.client.modeles.dao.ListeReferentielPersoAsynchroneDAO;
21
import org.tela_botanica.client.modeles.dao.MotsClesAsynchroneDAO;
22
import org.tela_botanica.client.modeles.dao.NomRetenuAsynchroneDAO;
23
import org.tela_botanica.client.modeles.dao.NombreObservationAsynchroneDAO;
24
import org.tela_botanica.client.modeles.dao.ObservationAsynchroneDAO;
25
import org.tela_botanica.client.modeles.dao.TransmissionObservationAsynchroneDAO;
26
import org.tela_botanica.client.modeles.objets.Configuration;
27
import org.tela_botanica.client.modeles.objets.ListeObservation;
28
import org.tela_botanica.client.modeles.objets.Observation;
29
import org.tela_botanica.client.modeles.objets.Utilisateur;
30
import org.tela_botanica.client.modeles.objets.ListeReferentielPerso.TypesReferentiels;
2042 aurelien 31
import org.tela_botanica.client.util.MotsClesUtilitaire;
32
 
156 aurelien 33
import com.google.gwt.json.client.JSONArray;
34
import com.google.gwt.json.client.JSONObject;
2042 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;
38
import com.gwtext.client.widgets.tree.TreeNode;
2 aperonnet 39
 
7 aperonnet 40
 
156 aurelien 41
public class ObservationModele implements Rafraichissable {
7 aperonnet 42
 
12 david 43
	/**
44
	 * Booleen indiquant si le médiateur est instancié (l'instance doit être unique donc le booleen est static)
45
	 */
46
	private static boolean estInstancie = false ;
88 jpm 47
	private static ObservationModele thisModele = null ;
12 david 48
 
49
	/**
50
	 * La configuration en cours
51
	 */
52
	private Configuration config = null;
7 aperonnet 53
 
12 david 54
	/**
55
	 * Le médiateur associé au modèle
56
	 */
57
	private ObservationMediateur observationMediateur = null ;
58
 
156 aurelien 59
	/**
60
	 * La liste des mots clés en cours
61
	 */
2609 aurelien 62
	private HashMap<String, String> motsCles = new HashMap<String, String>(0);
156 aurelien 63
	private Tree arbreMotsCles = new Tree() ;
12 david 64
 
152 david 65
	/**
156 aurelien 66
	 * La liste des observations affichées en cours (verifier utilité)
67
	 */
68
	private ListeObservation cacheObservation = new ListeObservation(0) ;
69
 
70
	/**
12 david 71
	 * Retourne une instance de manière unique
72
	 * @param im le médiateur à associer
73
	 * @return l'instance du modèle
74
	 */
75
 
76
	static ObservationModele Instance(ObservationMediateur observationMediateur)
77
	{
78
		// si le modèle n'est pas encore instancié
79
		if(!estInstancie)
80
		{
81
			// on en crée un nouveau
82
			estInstancie = true ;
88 jpm 83
			thisModele = new ObservationModele(observationMediateur);
12 david 84
		}
88 jpm 85
		return thisModele ;
2 aperonnet 86
	}
87
 
12 david 88
 
89
 
90
	private ObservationModele(ObservationMediateur observationMediateur) {
91
 
92
		this.observationMediateur=observationMediateur;
93
 
94
		config = new Configuration();
2 aperonnet 95
 
12 david 96
 
97
	}
2 aperonnet 98
 
12 david 99
	/**
100
	 * Appelle le DAO asynchrone pour obtenir le nombre d'observation
101
	 * @param r le rafraichissable auxquel on enverra les données
86 jpm 102
	 * @param filtrage
12 david 103
	 * @param taillePage
104
	 */
105
	public void obtenirNombreObservation(Rafraichissable r) {
86 jpm 106
 
107
		String[][] criteres = {{"",""}} ;
108
		 	criteres = observationMediateur.renvoyerFiltres() ;
12 david 109
			// on rassemble les critères
110
			// on les crée un DAO auquel on les transmet et qui demande le nombre d'images correspondantes (pour les pages)
111
			NombreObservationAsynchroneDAO noaDAO = new NombreObservationAsynchroneDAO(this) ;
937 aurelien 112
			noaDAO.obtenirNombreObservation(r, Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), criteres) ;
12 david 113
 
2 aperonnet 114
	}
12 david 115
 
116
 
217 aurelien 117
	public void obtenirListeObservation(Rafraichissable r) {
118
		obtenirListeObservation(r,observationMediateur.getTaillePage(),observationMediateur.getPageEnCours());
119
	}
120
 
12 david 121
	/**
122
	 * Appelle le DAO asynchrone pour obtenir la liste des images
123
	 * @param r le rafraichissable auxquel on enverra les données
124
	 * @param taillePage
125
	 */
126
	public void obtenirListeObservation(Rafraichissable r, int taillePage, int pageEncours) {
127
 
86 jpm 128
 
89 jpm 129
		 	String[][] criteres = {{"",""}} ;
2033 aurelien 130
			criteres = observationMediateur.renvoyerFiltres() ;
251 aurelien 131
			// on rassemble les critères
12 david 132
 
133
 
134
			// ensuite on demande la page correspondante avec les mêmes critères
2033 aurelien 135
			String[][] criteres2 = new String[criteres.length+4][2] ;
12 david 136
 
89 jpm 137
			criteres2[0][0] = "limite" ;
138
			criteres2[0][1] = ""+taillePage ;
139
			criteres2[1][0] = "numero_page" ;
140
			criteres2[1][1] = ""+pageEncours ;
2033 aurelien 141
			criteres2[2][0] = "tri" ;
142
			criteres2[2][1] = ""+observationMediateur.renvoyerTri();
143
			criteres2[3][0] = "tri_dir";
144
			criteres2[3][1] = ""+observationMediateur.renvoyerDirectionTri() ;
145
 
89 jpm 146
			for(int i = 0 ; i < criteres.length ; i++)
147
			{
2033 aurelien 148
				criteres2[i+4][0] = criteres[i][0] ;
149
				criteres2[i+4][1] = criteres[i][1] ;
89 jpm 150
			}
151
 
12 david 152
			// et on crée un DAO auquel on les transmet et qui envoie une requete pour recevoir les images
153
			ListeObservationAsynchroneDAO loaDAO = new ListeObservationAsynchroneDAO(this);
937 aurelien 154
			loaDAO.obtenirListeObservation(r, Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), criteres2);
12 david 155
	}
156
 
54 david 157
	/**
20 david 158
	 *
159
	 * Lance la creation d'une observation
160
	 * @param r : la vue demandeuse de donnee
161
	 * @param critere : les criteres de selection
162
	 */
163
 
2609 aurelien 164
	public void ajouterObservation(Rafraichissable r, Observation obs) {
20 david 165
		ObservationAsynchroneDAO obsDAO=new ObservationAsynchroneDAO(this);
2609 aurelien 166
		obsDAO.ajouter(r, Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), obs);
20 david 167
	}
2 aperonnet 168
 
74 david 169
	/**
170
	 *
171
	 * Lance la creation d'une observation
172
	 * @param r : la vue demandeuse de donnee
173
	 * @param critere : les criteres de selection
174
	 */
2609 aurelien 175
	public void modifierObservation(Rafraichissable r, Observation obs) {
74 david 176
		ObservationAsynchroneDAO obsDAO=new ObservationAsynchroneDAO(this);
2609 aurelien 177
		obsDAO.modifier(r, Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), obs);
74 david 178
	}
20 david 179
 
217 aurelien 180
	public void modifierObservationEnMasse(
181
			Rafraichissable r, Observation obs) {
182
		ListeObservationAsynchroneDAO liObsDAO=new ListeObservationAsynchroneDAO(this);
2609 aurelien 183
		liObsDAO.modifierEnMasse(r, Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), obs);
217 aurelien 184
	}
185
 
77 jpm 186
	public void supprimerObservation(Rafraichissable r, String numeroOrdre) {
187
 
188
		ObservationAsynchroneDAO obsDao = new ObservationAsynchroneDAO(this) ;
937 aurelien 189
		obsDao.supprimer(r,Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(),numeroOrdre) ;
77 jpm 190
 
191
 
192
	}
74 david 193
 
77 jpm 194
 
12 david 195
	/**
196
	 * Accesseur pour la configuration en cours d'utilisation
197
	 *
198
	 * @return la configuration
199
	 */
200
	public Configuration getConfig() {
201
		return config;
2 aperonnet 202
	}
66 david 203
 
204
	/**
205
	 * Obtenir des informations de repartition relative a un numero nomenclatural
206
	 * @param r
207
	 * @param numeroNomenclaturalSaisiObservation
208
	 */
1542 aurelien 209
	public void obtenirImageInformationRepartition(Rafraichissable r, String referentielTaxo, String numeroNomenclaturalSaisiObservation) {
54 david 210
 
1542 aurelien 211
		ImageInformationRepartitionAsynchroneDAO repDAO= new ImageInformationRepartitionAsynchroneDAO(this);
212
		repDAO.obtenirURLImage(r, referentielTaxo, numeroNomenclaturalSaisiObservation);
54 david 213
 
214
 
215
	}
216
 
66 david 217
	/**
218
	 * Obtenir une image generique associee a un numero nomenclatural
219
	 * @param r
220
	 * @param numeroNomenclaturalSaisiObservation
221
	 */
2609 aurelien 222
	public void obtenirImageGenerique( Rafraichissable r, String referentielTaxo, String numeroNomenclaturalSaisiObservation) {
1542 aurelien 223
		ImageGeneriqueVueAsynchroneDAO imgDAO= new ImageGeneriqueVueAsynchroneDAO(this);
2609 aurelien 224
		imgDAO.obtenirURLImage(r, referentielTaxo, numeroNomenclaturalSaisiObservation);
54 david 225
	}
226
 
227
 
66 david 228
	/**
229
	 * Obtenir la liste de l'ensemble des entites geographiques associes aux observation d'un utilisateur
230
	 * @param r
231
	 */
232
	public void obtenirListeEntiteGeographique(Rafraichissable r) {
233
	    ListeEntiteGeographiqueObservationAsynchroneDAO entDAO = new ListeEntiteGeographiqueObservationAsynchroneDAO(this);
937 aurelien 234
	    entDAO.obtenirListeEntitesGeographiques(r, Utilisateur.getInstance().getIdentifiantUtilisateurConsulte());
54 david 235
	}
91 jpm 236
 
237
 
238
 
239
	public void obtenirDatesObservation(
240
			Rafraichissable r) {
241
	    ListeDateObservationAsynchroneDAO ldoDAO = new ListeDateObservationAsynchroneDAO(this);
2609 aurelien 242
	    ldoDAO.obtenirListeDate(r, Utilisateur.getInstance().getIdentifiantUtilisateurConsulte());
91 jpm 243
	}
94 jpm 244
 
245
 
246
 
2609 aurelien 247
	public void obtenirLiaisonImage(Rafraichissable r, String idObservation) {
94 jpm 248
		LienImageAsynchroneDAO liaDAO = new LienImageAsynchroneDAO(this) ;
973 aurelien 249
		liaDAO.obtenirLiaisonsObservationsImages(r, idObservation,Utilisateur.getInstance().getIdentifiantUtilisateurConsulte()) ;
94 jpm 250
	}
101 jpm 251
 
252
 
253
 
1705 raphael 254
	public void exporterObservations(String format, String groupes) {
101 jpm 255
		String[][] criteres = {{"",""}} ;
1679 raphael 256
	 	criteres = observationMediateur.renvoyerFiltres();
101 jpm 257
		// on rassemble les critères
251 aurelien 258
		// on les crée un DAO auquel on les transmet et qui demande le nombre d'images correspondantes (pour les pages)
101 jpm 259
		ExportObservationsDAO exoDAO = new ExportObservationsDAO(this) ;
1705 raphael 260
		exoDAO.exporterObservations(Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), criteres, format, groupes) ;
101 jpm 261
	}
104 jpm 262
 
1679 raphael 263
	public void exporterObservationsPDF(String[] ordres) {
264
		String[][] criteres = {{"",""}} ;
265
	 	criteres = observationMediateur.renvoyerFiltres();
266
		String ids = "";
267
		for (int j = 0; j < ordres.length; j++) {
268
			ids += getIdPourOrdreObs(ordres[j]) + ",";
269
		}
104 jpm 270
 
1679 raphael 271
		String[] fmt = {"obsids", ids};
272
		String[][] tous_criteres = new String[criteres.length + 1][];
273
		System.arraycopy(criteres, 0, tous_criteres, 0, criteres.length);
274
		tous_criteres[tous_criteres.length - 1] = fmt;
104 jpm 275
 
1679 raphael 276
		ExportObservationsDAO exoDAO = new ExportObservationsDAO(this) ;
1735 raphael 277
		exoDAO.exporterObservations(Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), tous_criteres, "pdf", "standard") ;
1679 raphael 278
	}
279
 
280
 
281
 
2609 aurelien 282
	public void supprimerLiaisonImages(String idImg, String idObs) {
104 jpm 283
		LienImageAsynchroneDAO lienDAO = new LienImageAsynchroneDAO(this) ;
2609 aurelien 284
		lienDAO.supprimerLienImageObservation(idImg, idObs) ;
104 jpm 285
	}
286
 
2609 aurelien 287
	public void supprimerListeObservation(Rafraichissable r, String numObs) {
107 aurelien 288
		ListeObservationAsynchroneDAO lioaDAO = new ListeObservationAsynchroneDAO(this);
2609 aurelien 289
		lioaDAO.supprimerListeObservation(r, Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), numObs);
107 aurelien 290
	}
108 aurelien 291
 
2609 aurelien 292
	public void transmettreListeObservation(Rafraichissable r, String numObsapl, boolean publier) {
108 aurelien 293
		TransmissionObservationAsynchroneDAO toaDAO = new TransmissionObservationAsynchroneDAO(this);
2609 aurelien 294
		toaDAO.transmettreObservations(r, Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), numObsapl, publier);
108 aurelien 295
	}
115 aurelien 296
 
2609 aurelien 297
	public void analyserHistorique(Rafraichissable r,String anum) {
989 aurelien 298
		NomRetenuAsynchroneDAO nraDAO = new NomRetenuAsynchroneDAO(this);
2609 aurelien 299
		nraDAO.obtenirNomRetenu(r, anum);
140 aurelien 300
	}
301
 
302
 
303
 
304
	public void importerObservations() {
305
		ImportObservationAsynchroneDAO ioDAO = new ImportObservationAsynchroneDAO(this);
2609 aurelien 306
		ioDAO.importerObservations();
140 aurelien 307
	}
156 aurelien 308
 
309
 
310
 
2609 aurelien 311
	public void obtenirArbreMotsCles(Rafraichissable r) {
1018 aurelien 312
		MotsClesAsynchroneDAO mcoDAO = new MotsClesAsynchroneDAO("obs");
2609 aurelien 313
		mcoDAO.obtenirListeMotsCles(this);
156 aurelien 314
	}
315
 
1290 aurelien 316
	@Override
2609 aurelien 317
	public void rafraichir(Object nouvelleDonnees, boolean repandreRaffraichissement) {
318
		if(nouvelleDonnees instanceof JSONArray) {
2042 aurelien 319
			JSONArray donneesArbre = (JSONArray)nouvelleDonnees;
2062 aurelien 320
			Object[] arbreEtCorrespondancesIds = MotsClesUtilitaire.construireArbre("Projets", "racine_obs", donneesArbre, false);
2042 aurelien 321
 
322
			arbreMotsCles = (Tree)arbreEtCorrespondancesIds[0];
323
			motsCles = (HashMap<String, String>)arbreEtCorrespondancesIds[1];
324
 
156 aurelien 325
			// enfin on met à jour l'arbre des mots clés contenu dans le modèle
318 aurelien 326
			//rafraichirArbreMotsCles(arbreMotsCles);
156 aurelien 327
			// et on notifie le médiateur de la mise à jour en lui passant une
328
			// copie des données
329
			observationMediateur.rafraichirArbreMotsCles(arbreMotsCles);
330
		}
331
 
342 aurelien 332
		if(nouvelleDonnees instanceof Observation) {
333
			observationMediateur.obtenirNombreObservation();
334
		}
156 aurelien 335
	}
336
 
337
	/**
338
	 * Met à jour l'arbre des mots clés à partir d'un objet
339
	 *
340
	 * @param o
341
	 *            le nouvel arbre de mots clés
342
	 */
343
	public void rafraichirArbreMotsCles(Object o) {
344
		arbreMotsCles = (com.gwtext.client.data.Tree) o;
345
	}
346
 
347
	/**
348
	 * Met à jour la table de correspondance mots clés / ids à partir d'un objet
349
	 *
350
	 * @param o
351
	 *            la nouvelle table des mots clés
352
	 */
353
	@SuppressWarnings("unchecked")
354
	public void rafraichirMotsCles(Object o) {
355
		if (o instanceof HashMap) {
356
			motsCles = (HashMap<String, String>) o;
357
		}
358
	}
12 david 359
 
156 aurelien 360
	/**
361
	 * Va chercher les mots clés associés à une image dans la liste des images
362
	 * chargée dans le modèle
363
	 *
364
	 * @param r
365
	 *            le rafraichissable auquel on enverra les informations
366
	 * @param id
367
	 *            l'identifiant de l'image
368
	 */
369
	public void obtenirMotsClesId(Rafraichissable r, String id) {
370
		Observation o = cacheObservation.get(id);
371
		String motsClesId = o.getMotsCles();
372
		String[] motsClesIdTab = motsClesId.split(",");
373
		r.rafraichir(motsClesIdTab, false);
374
	}
375
 
376
	/**
342 aurelien 377
	 * Met à jour les mots clés associés à une obs et appelle le DAO pour
156 aurelien 378
	 * synchroniser la base de données
379
	 *
380
	 * @param ids
385 aurelien 381
	 *            les identifiants des observations selectionnées
156 aurelien 382
	 * @param motsClesEnCours
385 aurelien 383
	 *            les mots clés à appliquer aux observations
156 aurelien 384
	 */
318 aurelien 385
	public void mettreAjourMotsCles(String motsClesEnCours, String[] idsObsALier) {
359 aurelien 386
 
387
		String motsCles = "";
388
		String obsAlier = "";
389
		int nbObs = 0;
390
 
318 aurelien 391
		for (int i = 0; i < idsObsALier.length; i++) {
359 aurelien 392
 
318 aurelien 393
			if (cacheObservation.containsKey(idsObsALier[i])) {
342 aurelien 394
 
395
				if(!motsClesEnCours.endsWith(";") && !motsClesEnCours.startsWith(";")) {
396
					motsCles += ";";
397
				}
359 aurelien 398
 
342 aurelien 399
				motsCles += motsClesEnCours;
400
 
359 aurelien 401
				nbObs++;
362 aurelien 402
 
403
				Observation m = cacheObservation.get(idsObsALier[i]);
1314 aurelien 404
				obsAlier += ","+m.getId();
362 aurelien 405
 
406
				if(m.getMotsCles() != null && !m.getMotsCles().endsWith(";") && !motsCles.startsWith(";")) {
407
					motsCles += ";";
408
				}
409
 
410
				m.setMotsCles(m.getMotsCles()+motsCles);
411
 
412
				cacheObservation.put(m.getNumeroOrdre(), m);
156 aurelien 413
			}
414
		}
359 aurelien 415
 
416
		while(obsAlier.startsWith(",")) {
417
			obsAlier = obsAlier.replaceFirst(",", "");
418
		}
419
 
420
		if(nbObs > 0) {
421
 
971 aurelien 422
			LiaisonMotsClesObsAsynchroneDAO lmcDAO = new LiaisonMotsClesObsAsynchroneDAO(this);
937 aurelien 423
			lmcDAO.modifier(this,Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), obsAlier, motsClesEnCours);
359 aurelien 424
		}
156 aurelien 425
	}
426
 
385 aurelien 427
 
428
	public void supprimerLiaisonMotCleObservations(
429
			Rafraichissable r, String idObs, String idMC) {
430
 
971 aurelien 431
		LiaisonMotsClesObsAsynchroneDAO lmcDAO = new LiaisonMotsClesObsAsynchroneDAO(this);
937 aurelien 432
		lmcDAO.supprimer(r,Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), idObs, idMC);
385 aurelien 433
 
434
	}
435
 
156 aurelien 436
	/**
437
	 * Ajoute un mot clé à l'arbre des mots clés local et appelle le DAO qui
438
	 * fait la mise à jour de l'arbre des mots clés dans la base
439
	 *
440
	 * @param n
441
	 *            le nouveau noeud contenant le mot clé
442
	 * @param arbreMC
443
	 *            l'arbre des mots cles en cours
444
	 */
445
	public void ajouterMotCleDansArbre(TreeNode n,
2042 aurelien 446
			com.gwtext.client.data.Tree arbreMC, Rafraichissable r) {
1018 aurelien 447
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO("obs");
156 aurelien 448
 
449
		String[] usObj = (String[]) n.getUserObject();
450
		String motCle = usObj[0];
451
		String id = usObj[1];
452
		String parentId = "";
453
 
342 aurelien 454
		if (!id.equals("racine_obs")) {
156 aurelien 455
			String[] parentUsObj = (String[]) n.getParentNode().getUserObject();
2062 aurelien 456
			if(!parentUsObj[1].equals("racine_obs")) {
2042 aurelien 457
				parentId = parentUsObj[1];
458
			}
156 aurelien 459
		}
318 aurelien 460
 
156 aurelien 461
		rafraichirArbreMotsCles(arbreMC);
2042 aurelien 462
		motsCles.put(id, motCle);
156 aurelien 463
 
937 aurelien 464
		String nouveauMotCle = "&identifiant=" + Utilisateur.getInstance().getIdentifiantUtilisateurConsulte() + "&motcle="
156 aurelien 465
				+ motCle + "&id=" + id + "&parent=" + parentId;
2042 aurelien 466
		MCDao.ajouterBaseDeDonnees(nouveauMotCle, r);
156 aurelien 467
	}
468
 
469
	/**
470
	 * Supprime un noeud de l'arbre des mots clés et appelle le DAO qui va
471
	 * supprimer les mots clés associés dans la base
472
	 *
473
	 * @param n
474
	 *            le noeud à supprimer
475
	 * @param arbreMC
476
	 *            l'arbre des mots clés en cours
477
	 */
2062 aurelien 478
	public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC, Rafraichissable r) {
156 aurelien 479
 
1018 aurelien 480
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO("obs");
156 aurelien 481
 
482
		String[] usObj = (String[]) n.getUserObject();
483
		String id = usObj[1];
318 aurelien 484
 
485
		rafraichirArbreMotsCles(arbreMC);
156 aurelien 486
 
2062 aurelien 487
		MCDao.supprimerBaseDeDonnees(id, r);
156 aurelien 488
 
489
	}
490
 
491
	/**
492
	 * Modifie le noeud donné dans l'arbre des mots clés en cours et appelle le
493
	 * DAO qui synchronise la modification dans la base de données
494
	 *
495
	 * @param n
496
	 *            le noeud modifié
497
	 * @param arbreMC
498
	 *            l'arbre des mots clés en cours
499
	 */
2042 aurelien 500
	public void modifierMotCleDansArbre(TreeNode n, Tree arbreMC, Rafraichissable r) {
156 aurelien 501
 
1018 aurelien 502
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO("obs");
156 aurelien 503
 
504
		String[] usObj = (String[]) n.getUserObject();
505
		String motCle = usObj[0];
506
		String id = usObj[1];
507
		String parentId = "";
508
 
2062 aurelien 509
		if (!id.equals("racine_obs")) {
156 aurelien 510
			String[] parentUsObj = (String[]) n.getParentNode().getUserObject();
2062 aurelien 511
			if(!parentUsObj[1].equals("racine_obs")) {
512
				parentId = parentUsObj[1];
513
			}
156 aurelien 514
		}
515
 
516
		rafraichirArbreMotsCles(arbreMC);
517
 
518
		String motCleModifie = "&motcle=" + motCle + "&id=" + id + "&parent="
519
				+ parentId;
2042 aurelien 520
		MCDao.modifierBaseDeDonnees(motCleModifie, r);
156 aurelien 521
 
522
	}
523
 
524
	/**
525
	 * Deplace un noeud dans l'arbre des mots cles et appelle le DAO qui
526
	 * reorganise l'arbre dans la base de donnees suivant le changement
527
	 *
528
	 * @param n
529
	 *            le noeud deplace (et son sous arbre associe)
530
	 * @param arbreMC
531
	 *            l'arbre des mots cles en cours
532
	 */
2042 aurelien 533
	public void deplacerMotCleDansArbre(TreeNode n, Tree arbreMC, Rafraichissable r) {
1018 aurelien 534
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO("obs");
156 aurelien 535
 
536
		String[] usObj = (String[]) n.getUserObject();
537
		String motCle = usObj[0];
538
		String id = usObj[1];
539
		String parentId = "";
2062 aurelien 540
 
342 aurelien 541
		if (!id.equals("racine_obs")) {
156 aurelien 542
			String[] parentUsObj = (String[]) n.getParentNode().getUserObject();
2062 aurelien 543
			if(!parentUsObj[1].equals("racine_obs")) {
544
				parentId = parentUsObj[1];
545
			}
156 aurelien 546
		}
318 aurelien 547
 
156 aurelien 548
		rafraichirArbreMotsCles(arbreMC);
549
 
550
		String motCleModifie = "&motcle=" + motCle + "&id=" + id + "&parent="
551
				+ parentId;
2042 aurelien 552
		MCDao.deplacerBaseDeDonnees(motCleModifie, r);
156 aurelien 553
	}
554
 
555
	/**
556
	 * Ajoute un nouveau mot clés à la liste des mots clés locale
557
	 *
558
	 * @param text
559
	 *            le mot clé
560
	 * @param id
561
	 *            l'identifiant du mot clé
562
	 */
563
	public void mettreAjourMotsClesId(String text, String id) {
564
		motsCles.put(id, text);
565
	}
566
 
677 aurelien 567
	public String obtenirTexteMotCle(String id) {
568
 
569
		String correspondanceId = "";
570
 
571
		String motCleTexte = motsCles.get(id);
572
 
573
		if(motCleTexte != null) {
574
			correspondanceId = motCleTexte;
575
		}
576
 
577
		return correspondanceId;
578
	}
579
 
156 aurelien 580
	public void rafraichirCacheObservation(ListeObservation li) {
581
		cacheObservation = li ;
582
	}
583
 
584
	public ListeObservation getCacheObservation() {
585
		return cacheObservation ;
586
	}
1314 aurelien 587
 
588
	public String getIdPourOrdreObs(String ordreObs) {
589
		return (cacheObservation.get(ordreObs) != null) ? cacheObservation.get(ordreObs).getId() : null;
590
	}
156 aurelien 591
 
2568 aurelien 592
	public void obtenirInformationLocalite(Rafraichissable r, String nomLocalite, String code) {
593
		InformationLocaliteDAO infoLocalite = new InformationLocaliteDAO(r);
594
		infoLocalite.obtenirInfosLocalite(r, nomLocalite, code);
251 aurelien 595
	}
156 aurelien 596
 
1958 aurelien 597
	public void obtenirInformationCoord(Rafraichissable r, double lat, double lng) {
2568 aurelien 598
		InformationLocaliteDAO infoLocalite = new InformationLocaliteDAO(r);
599
		infoLocalite.obtenirLocalitePlusProche(r, lng, lat);
251 aurelien 600
	}
2 aperonnet 601
}