Subversion Repositories eFlore/Applications.cel

Rev

Rev 385 | Rev 733 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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