Subversion Repositories eFlore/Applications.cel

Rev

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

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