Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 359 Rev 362
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.LienImageAsynchroneDAO;
17
import org.tela_botanica.client.modeles.LienImageAsynchroneDAO;
18
import org.tela_botanica.client.modeles.ListeDateObservationAsynchroneDAO;
18
import org.tela_botanica.client.modeles.ListeDateObservationAsynchroneDAO;
19
import org.tela_botanica.client.modeles.ListeEntiteGeographiqueObservationAsynchroneDAO;
19
import org.tela_botanica.client.modeles.ListeEntiteGeographiqueObservationAsynchroneDAO;
20
import org.tela_botanica.client.modeles.ListeObservation;
20
import org.tela_botanica.client.modeles.ListeObservation;
21
import org.tela_botanica.client.modeles.ListeObservationAsynchroneDAO;
21
import org.tela_botanica.client.modeles.ListeObservationAsynchroneDAO;
22
import org.tela_botanica.client.modeles.ListeReferentielCommuneAsynchroneDAO;
22
import org.tela_botanica.client.modeles.ListeReferentielCommuneAsynchroneDAO;
23
import org.tela_botanica.client.modeles.ListeReferentielNomAsynchroneDAO;
23
import org.tela_botanica.client.modeles.ListeReferentielNomAsynchroneDAO;
24
import org.tela_botanica.client.modeles.MotsClesAsynchroneDAO;
24
import org.tela_botanica.client.modeles.MotsClesAsynchroneDAO;
25
import org.tela_botanica.client.modeles.NomRetenuAsynchroneDao;
25
import org.tela_botanica.client.modeles.NomRetenuAsynchroneDao;
26
import org.tela_botanica.client.modeles.NombreObservationAsynchroneDAO;
26
import org.tela_botanica.client.modeles.NombreObservationAsynchroneDAO;
27
import org.tela_botanica.client.modeles.Observation;
27
import org.tela_botanica.client.modeles.Observation;
28
import org.tela_botanica.client.modeles.ObservationAsynchroneDAO;
28
import org.tela_botanica.client.modeles.ObservationAsynchroneDAO;
29
import org.tela_botanica.client.modeles.TransmissionObservationAsynchroneDAO;
29
import org.tela_botanica.client.modeles.TransmissionObservationAsynchroneDAO;
30
import org.tela_botanica.client.vues.observation.ListeObservationVue;
30
import org.tela_botanica.client.vues.observation.ListeObservationVue;
31
 
31
 
32
import com.google.gwt.core.client.GWT;
32
import com.google.gwt.core.client.GWT;
33
import com.google.gwt.json.client.JSONArray;
33
import com.google.gwt.json.client.JSONArray;
34
import com.google.gwt.json.client.JSONObject;
34
import com.google.gwt.json.client.JSONObject;
35
import com.google.gwt.maps.client.geom.LatLng;
35
import com.google.gwt.maps.client.geom.LatLng;
36
import com.google.gwt.user.client.Window;
36
import com.google.gwt.user.client.Window;
37
import com.gwtext.client.data.Node;
37
import com.gwtext.client.data.Node;
38
import com.gwtext.client.data.Tree;
38
import com.gwtext.client.data.Tree;
39
import com.gwtext.client.widgets.map.LatLonPoint;
39
import com.gwtext.client.widgets.map.LatLonPoint;
40
import com.gwtext.client.widgets.tree.TreeNode;
40
import com.gwtext.client.widgets.tree.TreeNode;
41
 
41
 
42
 
42
 
43
public class ObservationModele implements Rafraichissable {
43
public class ObservationModele implements Rafraichissable {
44
 
44
 
45
	
45
	
46
	
46
	
47
	/**
47
	/**
48
	 * Booleen indiquant si le médiateur est instancié (l'instance doit être unique donc le booleen est static)
48
	 * Booleen indiquant si le médiateur est instancié (l'instance doit être unique donc le booleen est static)
49
	 */
49
	 */
50
	private static boolean estInstancie = false ;
50
	private static boolean estInstancie = false ;
51
	
51
	
52
	private static ObservationModele thisModele = null ;
52
	private static ObservationModele thisModele = null ;
53
	
53
	
54
	
54
	
55
	
55
	
56
	
56
	
57
	/**
57
	/**
58
	 * La configuration en cours
58
	 * La configuration en cours
59
	 */
59
	 */
60
	private Configuration config = null;
60
	private Configuration config = null;
61
 
61
 
62
	
62
	
63
	/**
63
	/**
64
	 * Le médiateur associé au modèle
64
	 * Le médiateur associé au modèle
65
	 */
65
	 */
66
	
66
	
67
	private ObservationMediateur observationMediateur = null ;
67
	private ObservationMediateur observationMediateur = null ;
68
	
68
	
69
	/**
69
	/**
70
	 * La liste des mots clés en cours 
70
	 * La liste des mots clés en cours 
71
	 */
71
	 */
72
	private HashMap<String, String> motsCles = new HashMap<String, String>(0);
72
	private HashMap<String, String> motsCles = new HashMap<String, String>(0);
73
	
73
	
74
	private Tree arbreMotsCles = new Tree() ;
74
	private Tree arbreMotsCles = new Tree() ;
75
	
75
	
76
	/**
76
	/**
77
	 * La liste des observations affichées en cours (verifier utilité)
77
	 * La liste des observations affichées en cours (verifier utilité)
78
	 */
78
	 */
79
	
79
	
80
	private ListeObservation cacheObservation = new ListeObservation(0) ;
80
	private ListeObservation cacheObservation = new ListeObservation(0) ;
81
	
81
	
82
	/**
82
	/**
83
	 * DAO dont le resultat peut etre mis en cache 
83
	 * DAO dont le resultat peut etre mis en cache 
84
	 * 
84
	 * 
85
	 */
85
	 */
86
	
86
	
87
	private ListeReferentielNomAsynchroneDAO nomDAO=null;
87
	private ListeReferentielNomAsynchroneDAO nomDAO=null;
88
	private ListeReferentielCommuneAsynchroneDAO refDAO=null;
88
	private ListeReferentielCommuneAsynchroneDAO refDAO=null;
89
	
89
	
90
 
90
 
91
	
91
	
92
 
92
 
93
	/**
93
	/**
94
	 * Retourne une instance de manière unique
94
	 * Retourne une instance de manière unique
95
	 * @param im le médiateur à associer
95
	 * @param im le médiateur à associer
96
	 * @return l'instance du modèle
96
	 * @return l'instance du modèle
97
	 */
97
	 */
98
	
98
	
99
	static ObservationModele Instance(ObservationMediateur observationMediateur)
99
	static ObservationModele Instance(ObservationMediateur observationMediateur)
100
	{
100
	{
101
		// si le modèle n'est pas encore instancié
101
		// si le modèle n'est pas encore instancié
102
		if(!estInstancie)
102
		if(!estInstancie)
103
		{
103
		{
104
			// on en crée un nouveau
104
			// on en crée un nouveau
105
			estInstancie = true ;
105
			estInstancie = true ;
106
			thisModele = new ObservationModele(observationMediateur);
106
			thisModele = new ObservationModele(observationMediateur);
107
		}
107
		}
108
		return thisModele ;
108
		return thisModele ;
109
	}
109
	}
110
 
110
 
111
	
111
	
112
	
112
	
113
	private ObservationModele(ObservationMediateur observationMediateur) {
113
	private ObservationModele(ObservationMediateur observationMediateur) {
114
		
114
		
115
		this.observationMediateur=observationMediateur;
115
		this.observationMediateur=observationMediateur;
116
		
116
		
117
		config = new Configuration();
117
		config = new Configuration();
118
 
118
 
119
		
119
		
120
	}
120
	}
121
 
121
 
122
	/**
122
	/**
123
	 * Appelle le DAO asynchrone pour obtenir le nombre d'observation
123
	 * Appelle le DAO asynchrone pour obtenir le nombre d'observation
124
	 * @param r le rafraichissable auxquel on enverra les données
124
	 * @param r le rafraichissable auxquel on enverra les données
125
	 * @param filtrage 
125
	 * @param filtrage 
126
	 * @param taillePage 
126
	 * @param taillePage 
127
	 */
127
	 */
128
	public void obtenirNombreObservation(Rafraichissable r) {	
128
	public void obtenirNombreObservation(Rafraichissable r) {	
129
	
129
	
130
		String[][] criteres = {{"",""}} ;		
130
		String[][] criteres = {{"",""}} ;		
131
		 	criteres = observationMediateur.renvoyerFiltres() ;			
131
		 	criteres = observationMediateur.renvoyerFiltres() ;			
132
			// on rassemble les critères
132
			// on rassemble les critères
133
			// on les crée un DAO auquel on les transmet et qui demande le nombre d'images correspondantes (pour les pages)
133
			// on les crée un DAO auquel on les transmet et qui demande le nombre d'images correspondantes (pour les pages)
134
			NombreObservationAsynchroneDAO noaDAO = new NombreObservationAsynchroneDAO(this) ;
134
			NombreObservationAsynchroneDAO noaDAO = new NombreObservationAsynchroneDAO(this) ;
135
			noaDAO.obtenirNombreObservation(r, observationMediateur.getIdentifiant(), criteres) ;
135
			noaDAO.obtenirNombreObservation(r, observationMediateur.getIdentifiant(), criteres) ;
136
					
136
					
137
	}
137
	}
138
	
138
	
139
	
139
	
140
	public void obtenirListeObservation(Rafraichissable r) {
140
	public void obtenirListeObservation(Rafraichissable r) {
141
		obtenirListeObservation(r,observationMediateur.getTaillePage(),observationMediateur.getPageEnCours());
141
		obtenirListeObservation(r,observationMediateur.getTaillePage(),observationMediateur.getPageEnCours());
142
	}
142
	}
143
	
143
	
144
	/**
144
	/**
145
	 * Appelle le DAO asynchrone pour obtenir la liste des images
145
	 * Appelle le DAO asynchrone pour obtenir la liste des images
146
	 * @param r le rafraichissable auxquel on enverra les données
146
	 * @param r le rafraichissable auxquel on enverra les données
147
	 * @param taillePage 
147
	 * @param taillePage 
148
	 */
148
	 */
149
	public void obtenirListeObservation(Rafraichissable r, int taillePage, int pageEncours) {	
149
	public void obtenirListeObservation(Rafraichissable r, int taillePage, int pageEncours) {	
150
		
150
		
151
		
151
		
152
		 	String[][] criteres = {{"",""}} ;
152
		 	String[][] criteres = {{"",""}} ;
153
			criteres = observationMediateur.renvoyerFiltres() ;			
153
			criteres = observationMediateur.renvoyerFiltres() ;			
154
			// on rassemble les critères
154
			// on rassemble les critères
155
			
155
			
156
			
156
			
157
			// ensuite on demande la page correspondante avec les mêmes critères
157
			// ensuite on demande la page correspondante avec les mêmes critères
158
			String[][] criteres2 = new String[criteres.length+2][2] ;
158
			String[][] criteres2 = new String[criteres.length+2][2] ;
159
			
159
			
160
			criteres2[0][0] = "limite" ;
160
			criteres2[0][0] = "limite" ;
161
			criteres2[0][1] = ""+taillePage ;
161
			criteres2[0][1] = ""+taillePage ;
162
			criteres2[1][0] = "numero_page" ;
162
			criteres2[1][0] = "numero_page" ;
163
			criteres2[1][1] = ""+pageEncours ;
163
			criteres2[1][1] = ""+pageEncours ;
164
			for(int i = 0 ; i < criteres.length ; i++)
164
			for(int i = 0 ; i < criteres.length ; i++)
165
			{
165
			{
166
				criteres2[i+2][0] = criteres[i][0] ; 
166
				criteres2[i+2][0] = criteres[i][0] ; 
167
				criteres2[i+2][1] = criteres[i][1] ; 
167
				criteres2[i+2][1] = criteres[i][1] ; 
168
			}
168
			}
169
			
169
			
170
			// et on crée un DAO auquel on les transmet et qui envoie une requete pour recevoir les images
170
			// et on crée un DAO auquel on les transmet et qui envoie une requete pour recevoir les images
171
			ListeObservationAsynchroneDAO loaDAO = new ListeObservationAsynchroneDAO(this);
171
			ListeObservationAsynchroneDAO loaDAO = new ListeObservationAsynchroneDAO(this);
172
			loaDAO.obtenirListeObservation(r, observationMediateur.getIdentifiant(), criteres2);		
172
			loaDAO.obtenirListeObservation(r, observationMediateur.getIdentifiant(), criteres2);		
173
	}
173
	}
174
	
174
	
175
 
175
 
176
	/**
176
	/**
177
	 * Obtenir une liste de commune 
177
	 * Obtenir une liste de commune 
178
	 * @param r
178
	 * @param r
179
	 * @param critere
179
	 * @param critere
180
	 */
180
	 */
181
	
181
	
182
	public void obtenirListeReferentielCommune(Rafraichissable r, String critere) {
182
	public void obtenirListeReferentielCommune(Rafraichissable r, String critere) {
183
		
183
		
184
		if (refDAO==null) {
184
		if (refDAO==null) {
185
			refDAO=new ListeReferentielCommuneAsynchroneDAO(this);
185
			refDAO=new ListeReferentielCommuneAsynchroneDAO(this);
186
		}
186
		}
187
		ListeReferentielCommuneAsynchroneDAO refDAO=new ListeReferentielCommuneAsynchroneDAO(this);
187
		ListeReferentielCommuneAsynchroneDAO refDAO=new ListeReferentielCommuneAsynchroneDAO(this);
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
				}
452
				}
453
			}
453
			}
454
			
454
			
455
			// enfin on met à jour l'arbre des mots clés contenu dans le modèle
455
			// enfin on met à jour l'arbre des mots clés contenu dans le modèle
456
			//rafraichirArbreMotsCles(arbreMotsCles);
456
			//rafraichirArbreMotsCles(arbreMotsCles);
457
			// et on notifie le médiateur de la mise à jour en lui passant une
457
			// et on notifie le médiateur de la mise à jour en lui passant une
458
			// copie des données
458
			// copie des données
459
			observationMediateur.rafraichirArbreMotsCles(arbreMotsCles);
459
			observationMediateur.rafraichirArbreMotsCles(arbreMotsCles);
460
		}
460
		}
461
		
461
		
462
		if(nouvelleDonnees instanceof Observation) {
462
		if(nouvelleDonnees instanceof Observation) {
463
			observationMediateur.obtenirNombreObservation();
463
			observationMediateur.obtenirNombreObservation();
464
		}
464
		}
465
		
465
		
466
	}
466
	}
467
 
467
 
468
	/**
468
	/**
469
	 * Met à jour l'arbre des mots clés à partir d'un objet
469
	 * Met à jour l'arbre des mots clés à partir d'un objet
470
	 * 
470
	 * 
471
	 * @param o
471
	 * @param o
472
	 *            le nouvel arbre de mots clés
472
	 *            le nouvel arbre de mots clés
473
	 */
473
	 */
474
	public void rafraichirArbreMotsCles(Object o) {
474
	public void rafraichirArbreMotsCles(Object o) {
475
		arbreMotsCles = (com.gwtext.client.data.Tree) o;
475
		arbreMotsCles = (com.gwtext.client.data.Tree) o;
476
	}
476
	}
477
 
477
 
478
	/**
478
	/**
479
	 * Met à jour la table de correspondance mots clés / ids à partir d'un objet
479
	 * Met à jour la table de correspondance mots clés / ids à partir d'un objet
480
	 * 
480
	 * 
481
	 * @param o
481
	 * @param o
482
	 *            la nouvelle table des mots clés
482
	 *            la nouvelle table des mots clés
483
	 */
483
	 */
484
	@SuppressWarnings("unchecked")
484
	@SuppressWarnings("unchecked")
485
	public void rafraichirMotsCles(Object o) {
485
	public void rafraichirMotsCles(Object o) {
486
		if (o instanceof HashMap) {
486
		if (o instanceof HashMap) {
487
			motsCles = (HashMap<String, String>) o;
487
			motsCles = (HashMap<String, String>) o;
488
		}
488
		}
489
	}
489
	}
490
	
490
	
491
	/**
491
	/**
492
	 * Va chercher les mots clés associés à une image dans la liste des images
492
	 * Va chercher les mots clés associés à une image dans la liste des images
493
	 * chargée dans le modèle
493
	 * chargée dans le modèle
494
	 * 
494
	 * 
495
	 * @param r
495
	 * @param r
496
	 *            le rafraichissable auquel on enverra les informations
496
	 *            le rafraichissable auquel on enverra les informations
497
	 * @param id
497
	 * @param id
498
	 *            l'identifiant de l'image
498
	 *            l'identifiant de l'image
499
	 */
499
	 */
500
	public void obtenirMotsClesId(Rafraichissable r, String id) {
500
	public void obtenirMotsClesId(Rafraichissable r, String id) {
501
		Observation o = cacheObservation.get(id);
501
		Observation o = cacheObservation.get(id);
502
		String motsClesId = o.getMotsCles();
502
		String motsClesId = o.getMotsCles();
503
		String[] motsClesIdTab = motsClesId.split(",");
503
		String[] motsClesIdTab = motsClesId.split(",");
504
		r.rafraichir(motsClesIdTab, false);
504
		r.rafraichir(motsClesIdTab, false);
505
	}
505
	}
506
	
506
	
507
	/**
507
	/**
508
	 * Met à jour les mots clés associés à une obs et appelle le DAO pour
508
	 * Met à jour les mots clés associés à une obs et appelle le DAO pour
509
	 * synchroniser la base de données
509
	 * synchroniser la base de données
510
	 * 
510
	 * 
511
	 * @param ids
511
	 * @param ids
512
	 *            les identifiants des images selectionnées
512
	 *            les identifiants des images selectionnées
513
	 * @param motsClesEnCours
513
	 * @param motsClesEnCours
514
	 *            les mots clés à appliquer aux images
514
	 *            les mots clés à appliquer aux images
515
	 * @param arbreMC
515
	 * @param arbreMC
516
	 *            l'arbre de mots clés en cours
516
	 *            l'arbre de mots clés en cours
517
	 */
517
	 */
518
	public void mettreAjourMotsCles(String motsClesEnCours, String[] idsObsALier) {
518
	public void mettreAjourMotsCles(String motsClesEnCours, String[] idsObsALier) {
519
	
519
	
520
		String motsCles = "";
520
		String motsCles = "";
521
		String obsAlier = "";
521
		String obsAlier = "";
522
		int nbObs = 0;
522
		int nbObs = 0;
523
		
523
		
524
		for (int i = 0; i < idsObsALier.length; i++) {
524
		for (int i = 0; i < idsObsALier.length; i++) {
525
		
525
		
526
			if (cacheObservation.containsKey(idsObsALier[i])) {
526
			if (cacheObservation.containsKey(idsObsALier[i])) {
527
				
527
				
528
				if(!motsClesEnCours.endsWith(";") && !motsClesEnCours.startsWith(";")) {
528
				if(!motsClesEnCours.endsWith(";") && !motsClesEnCours.startsWith(";")) {
529
					motsCles += ";";
529
					motsCles += ";";
530
				}
530
				}
531
				
531
				
532
				obsAlier += ","+idsObsALier[i];
532
				obsAlier += ","+idsObsALier[i];
533
				motsCles += motsClesEnCours;
533
				motsCles += motsClesEnCours;
534
				
534
				
535
				nbObs++;
535
				nbObs++;
-
 
536
				
-
 
537
				Observation m = cacheObservation.get(idsObsALier[i]);
-
 
538
				
-
 
539
				if(m.getMotsCles() != null && !m.getMotsCles().endsWith(";") && !motsCles.startsWith(";")) {
-
 
540
					motsCles += ";";
-
 
541
				}
-
 
542
				
-
 
543
				m.setMotsCles(m.getMotsCles()+motsCles);
-
 
544
				
-
 
545
				cacheObservation.put(m.getNumeroOrdre(), m);
536
			}
546
			}
537
		}
547
		}
538
		
548
		
539
		while(obsAlier.startsWith(",")) {
549
		while(obsAlier.startsWith(",")) {
540
			obsAlier = obsAlier.replaceFirst(",", "");
550
			obsAlier = obsAlier.replaceFirst(",", "");
541
		}
551
		}
542
		
552
		
543
		if(nbObs > 0) {
553
		if(nbObs > 0) {
544
			Observation o = new Observation();
554
			Observation o = new Observation();
545
			o.setNumeroOrdre(obsAlier);
555
			o.setNumeroOrdre(obsAlier);
546
			o.setMotsCles(motsCles);
556
			o.setMotsCles(motsCles);
547
			
557
			
548
			ListeObservationAsynchroneDAO loDao = new ListeObservationAsynchroneDAO(this);
558
			ListeObservationAsynchroneDAO loDao = new ListeObservationAsynchroneDAO(this);
549
			loDao.modifierEnMasse(this,observationMediateur.getIdentifiant(),o);
559
			loDao.modifierEnMasse(this,observationMediateur.getIdentifiant(),o);
550
		}
560
		}
551
	}
561
	}
552
	
562
	
553
	/**
563
	/**
554
	 * Ajoute un mot clé à l'arbre des mots clés local et appelle le DAO qui
564
	 * Ajoute un mot clé à l'arbre des mots clés local et appelle le DAO qui
555
	 * fait la mise à jour de l'arbre des mots clés dans la base
565
	 * fait la mise à jour de l'arbre des mots clés dans la base
556
	 * 
566
	 * 
557
	 * @param n
567
	 * @param n
558
	 *            le nouveau noeud contenant le mot clé
568
	 *            le nouveau noeud contenant le mot clé
559
	 * @param arbreMC
569
	 * @param arbreMC
560
	 *            l'arbre des mots cles en cours
570
	 *            l'arbre des mots cles en cours
561
	 */
571
	 */
562
	public void ajouterMotCleDansArbre(TreeNode n,
572
	public void ajouterMotCleDansArbre(TreeNode n,
563
			com.gwtext.client.data.Tree arbreMC) {
573
			com.gwtext.client.data.Tree arbreMC) {
564
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO(this);
574
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO(this);
565
 
575
 
566
		String[] usObj = (String[]) n.getUserObject();
576
		String[] usObj = (String[]) n.getUserObject();
567
		String motCle = usObj[0];
577
		String motCle = usObj[0];
568
		String id = usObj[1];
578
		String id = usObj[1];
569
		String parentId = "";
579
		String parentId = "";
570
 
580
 
571
		if (!id.equals("racine_obs")) {
581
		if (!id.equals("racine_obs")) {
572
			String[] parentUsObj = (String[]) n.getParentNode().getUserObject();
582
			String[] parentUsObj = (String[]) n.getParentNode().getUserObject();
573
			parentId = parentUsObj[1];
583
			parentId = parentUsObj[1];
574
		} else {
584
		} else {
575
			parentId = "racine_obs";
585
			parentId = "racine_obs";
576
		}
586
		}
577
		
587
		
578
		rafraichirArbreMotsCles(arbreMC);
588
		rafraichirArbreMotsCles(arbreMC);
579
 
589
 
580
		String nouveauMotCle = "&identifiant=" + getIdentifiant() + "&motcle="
590
		String nouveauMotCle = "&identifiant=" + getIdentifiant() + "&motcle="
581
				+ motCle + "&id=" + id + "&parent=" + parentId;
591
				+ motCle + "&id=" + id + "&parent=" + parentId;
582
		MCDao.ajouterBaseDeDonnees(nouveauMotCle);
592
		MCDao.ajouterBaseDeDonnees(nouveauMotCle);
583
	}
593
	}
584
 
594
 
585
	/**
595
	/**
586
	 * Supprime un noeud de l'arbre des mots clés et appelle le DAO qui va
596
	 * Supprime un noeud de l'arbre des mots clés et appelle le DAO qui va
587
	 * supprimer les mots clés associés dans la base
597
	 * supprimer les mots clés associés dans la base
588
	 * 
598
	 * 
589
	 * @param n
599
	 * @param n
590
	 *            le noeud à supprimer
600
	 *            le noeud à supprimer
591
	 * @param arbreMC
601
	 * @param arbreMC
592
	 *            l'arbre des mots clés en cours
602
	 *            l'arbre des mots clés en cours
593
	 */
603
	 */
594
	public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC) {
604
	public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC) {
595
 
605
 
596
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO(this);
606
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO(this);
597
 
607
 
598
		String[] usObj = (String[]) n.getUserObject();
608
		String[] usObj = (String[]) n.getUserObject();
599
		String id = usObj[1];
609
		String id = usObj[1];
600
		
610
		
601
		rafraichirArbreMotsCles(arbreMC);
611
		rafraichirArbreMotsCles(arbreMC);
602
 
612
 
603
		MCDao.supprimerBaseDeDonnees(id);
613
		MCDao.supprimerBaseDeDonnees(id);
604
 
614
 
605
	}
615
	}
606
 
616
 
607
	/**
617
	/**
608
	 * Modifie le noeud donné dans l'arbre des mots clés en cours et appelle le
618
	 * Modifie le noeud donné dans l'arbre des mots clés en cours et appelle le
609
	 * DAO qui synchronise la modification dans la base de données
619
	 * DAO qui synchronise la modification dans la base de données
610
	 * 
620
	 * 
611
	 * @param n
621
	 * @param n
612
	 *            le noeud modifié
622
	 *            le noeud modifié
613
	 * @param arbreMC
623
	 * @param arbreMC
614
	 *            l'arbre des mots clés en cours
624
	 *            l'arbre des mots clés en cours
615
	 */
625
	 */
616
	public void modifierMotCleDansArbre(TreeNode n, Tree arbreMC) {
626
	public void modifierMotCleDansArbre(TreeNode n, Tree arbreMC) {
617
 
627
 
618
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO(this);
628
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO(this);
619
 
629
 
620
		String[] usObj = (String[]) n.getUserObject();
630
		String[] usObj = (String[]) n.getUserObject();
621
		String motCle = usObj[0];
631
		String motCle = usObj[0];
622
		String id = usObj[1];
632
		String id = usObj[1];
623
		String parentId = "";
633
		String parentId = "";
624
 
634
 
625
		if (!id.equals("racine")) {
635
		if (!id.equals("racine")) {
626
			String[] parentUsObj = (String[]) n.getParentNode().getUserObject();
636
			String[] parentUsObj = (String[]) n.getParentNode().getUserObject();
627
			parentId = parentUsObj[1];
637
			parentId = parentUsObj[1];
628
		} else {
638
		} else {
629
			parentId = "racine";
639
			parentId = "racine";
630
		}
640
		}
631
 
641
 
632
		rafraichirArbreMotsCles(arbreMC);
642
		rafraichirArbreMotsCles(arbreMC);
633
 
643
 
634
		String motCleModifie = "&motcle=" + motCle + "&id=" + id + "&parent="
644
		String motCleModifie = "&motcle=" + motCle + "&id=" + id + "&parent="
635
				+ parentId;
645
				+ parentId;
636
		MCDao.modifierBaseDeDonnees(motCleModifie);
646
		MCDao.modifierBaseDeDonnees(motCleModifie);
637
 
647
 
638
	}
648
	}
639
 
649
 
640
	/**
650
	/**
641
	 * Deplace un noeud dans l'arbre des mots cles et appelle le DAO qui
651
	 * Deplace un noeud dans l'arbre des mots cles et appelle le DAO qui
642
	 * reorganise l'arbre dans la base de donnees suivant le changement
652
	 * reorganise l'arbre dans la base de donnees suivant le changement
643
	 * 
653
	 * 
644
	 * @param n
654
	 * @param n
645
	 *            le noeud deplace (et son sous arbre associe)
655
	 *            le noeud deplace (et son sous arbre associe)
646
	 * @param arbreMC
656
	 * @param arbreMC
647
	 *            l'arbre des mots cles en cours
657
	 *            l'arbre des mots cles en cours
648
	 */
658
	 */
649
	public void deplacerMotCleDansArbre(TreeNode n, Tree arbreMC) {
659
	public void deplacerMotCleDansArbre(TreeNode n, Tree arbreMC) {
650
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO(this);
660
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO(this);
651
 
661
 
652
		String[] usObj = (String[]) n.getUserObject();
662
		String[] usObj = (String[]) n.getUserObject();
653
		String motCle = usObj[0];
663
		String motCle = usObj[0];
654
		String id = usObj[1];
664
		String id = usObj[1];
655
		String parentId = "";
665
		String parentId = "";
656
		if (!id.equals("racine_obs")) {
666
		if (!id.equals("racine_obs")) {
657
			String[] parentUsObj = (String[]) n.getParentNode().getUserObject();
667
			String[] parentUsObj = (String[]) n.getParentNode().getUserObject();
658
			parentId = parentUsObj[1];
668
			parentId = parentUsObj[1];
659
		} else {
669
		} else {
660
			parentId = "racine_obs";
670
			parentId = "racine_obs";
661
		}
671
		}
662
		
672
		
663
		rafraichirArbreMotsCles(arbreMC);
673
		rafraichirArbreMotsCles(arbreMC);
664
 
674
 
665
		String motCleModifie = "&motcle=" + motCle + "&id=" + id + "&parent="
675
		String motCleModifie = "&motcle=" + motCle + "&id=" + id + "&parent="
666
				+ parentId;
676
				+ parentId;
667
		MCDao.deplacerBaseDeDonnees(motCleModifie);
677
		MCDao.deplacerBaseDeDonnees(motCleModifie);
668
	}
678
	}
669
	
679
	
670
	/**
680
	/**
671
	 * Ajoute un nouveau mot clés à la liste des mots clés locale
681
	 * Ajoute un nouveau mot clés à la liste des mots clés locale
672
	 * 
682
	 * 
673
	 * @param text
683
	 * @param text
674
	 *            le mot clé
684
	 *            le mot clé
675
	 * @param id
685
	 * @param id
676
	 *            l'identifiant du mot clé
686
	 *            l'identifiant du mot clé
677
	 */
687
	 */
678
	public void mettreAjourMotsClesId(String text, String id) {
688
	public void mettreAjourMotsClesId(String text, String id) {
679
		motsCles.put(id, text);
689
		motsCles.put(id, text);
680
	}
690
	}
681
	
691
	
682
	public void rafraichirCacheObservation(ListeObservation li) {
692
	public void rafraichirCacheObservation(ListeObservation li) {
683
		cacheObservation = li ;
693
		cacheObservation = li ;
684
	}
694
	}
685
 
695
 
686
	public ListeObservation getCacheObservation() {
696
	public ListeObservation getCacheObservation() {
687
		return cacheObservation ;
697
		return cacheObservation ;
688
	}
698
	}
689
 
699
 
690
	public void obtenirInformationCommune(Rafraichissable r, String nomCommune, String codePostal) {
700
	public void obtenirInformationCommune(Rafraichissable r, String nomCommune, String codePostal) {
691
		InformationCommuneDAO infocommune = new InformationCommuneDAO(r);
701
		InformationCommuneDAO infocommune = new InformationCommuneDAO(r);
692
		infocommune.obtenirInfosCommune(r, nomCommune, codePostal);
702
		infocommune.obtenirInfosCommune(r, nomCommune, codePostal);
693
	}
703
	}
694
	
704
	
695
	public void obtenirInformationCoord(Rafraichissable r, LatLng coord) {
705
	public void obtenirInformationCoord(Rafraichissable r, LatLng coord) {
696
		InformationCommuneDAO infocommune = new InformationCommuneDAO(r);
706
		InformationCommuneDAO infocommune = new InformationCommuneDAO(r);
697
		infocommune.obtenirCommunePlusProche(r, coord.getLongitude(), coord.getLatitude());
707
		infocommune.obtenirCommunePlusProche(r, coord.getLongitude(), coord.getLatitude());
698
	}
708
	}
699
 
709
 
700
	
710
	
701
}
711
}