Subversion Repositories eFlore/Applications.cel

Rev

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

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