Subversion Repositories eFlore/Applications.cel

Rev

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

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