Subversion Repositories eFlore/Applications.cel

Rev

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

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