Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 1290 Rev 1314
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
	
184
	
185
	public void obtenirListeReferentielPerso(Rafraichissable r, TypesReferentiels referentiel, String critere) {
185
	public void obtenirListeReferentielPerso(Rafraichissable r, TypesReferentiels referentiel, String critere) {
186
		
186
		
187
		if (refPersoDAO==null) {
187
		if (refPersoDAO==null) {
188
			refPersoDAO=new ListeReferentielPersoAsynchroneDAO(this);
188
			refPersoDAO=new ListeReferentielPersoAsynchroneDAO(this);
189
		}
189
		}
190
		
190
		
191
		refPersoDAO.setRefDemande(referentiel);
191
		refPersoDAO.setRefDemande(referentiel);
192
		refPersoDAO.obtenirListeDonnees(r,Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), critere);
192
		refPersoDAO.obtenirListeDonnees(r,Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), critere);
193
 
193
 
194
	}
194
	}
195
	
195
	
196
	/**
196
	/**
197
	 * Obtenir une liste de nom scientifique de plante
197
	 * Obtenir une liste de nom scientifique de plante
198
	 * @param r
198
	 * @param r
199
	 * @param critere
199
	 * @param critere
200
	 */
200
	 */
201
	
201
	
202
	public void obtenirListeReferentielNom(Rafraichissable r, String critere) {
202
	public void obtenirListeReferentielNom(Rafraichissable r, String critere) {
203
		
203
		
204
		if (nomDAO==null) {
204
		if (nomDAO==null) {
205
			nomDAO=new ListeReferentielNomAsynchroneDAO(this);
205
			nomDAO=new ListeReferentielNomAsynchroneDAO(this);
206
		}
206
		}
207
		nomDAO.obtenirListeDonnees(r, critere);
207
		nomDAO.obtenirListeDonnees(r, critere);
208
 
208
 
209
	}
209
	}
210
	
210
	
211
	
211
	
212
	/**
212
	/**
213
	 *  
213
	 *  
214
	 * Lance la creation d'une observation  
214
	 * Lance la creation d'une observation  
215
	 * @param r : la vue demandeuse de donnee
215
	 * @param r : la vue demandeuse de donnee
216
	 * @param critere : les criteres de selection
216
	 * @param critere : les criteres de selection
217
	 */
217
	 */
218
	
218
	
219
	public void ajouterObservation(Rafraichissable r, Observation obs) {
219
	public void ajouterObservation(Rafraichissable r, Observation obs) {
220
		
220
		
221
		ObservationAsynchroneDAO obsDAO=new ObservationAsynchroneDAO(this);
221
		ObservationAsynchroneDAO obsDAO=new ObservationAsynchroneDAO(this);
222
		obsDAO.ajouter(r, Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), obs);
222
		obsDAO.ajouter(r, Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), obs);
223
			
223
			
224
	}
224
	}
225
 
225
 
226
	/**
226
	/**
227
	 *  
227
	 *  
228
	 * Lance la creation d'une observation  
228
	 * Lance la creation d'une observation  
229
	 * @param r : la vue demandeuse de donnee
229
	 * @param r : la vue demandeuse de donnee
230
	 * @param critere : les criteres de selection
230
	 * @param critere : les criteres de selection
231
	 */
231
	 */
232
	public void modifierObservation(Rafraichissable r, Observation obs) {
232
	public void modifierObservation(Rafraichissable r, Observation obs) {
233
		
233
		
234
		ObservationAsynchroneDAO obsDAO=new ObservationAsynchroneDAO(this);
234
		ObservationAsynchroneDAO obsDAO=new ObservationAsynchroneDAO(this);
235
		obsDAO.modifier(r, Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), obs);
235
		obsDAO.modifier(r, Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), obs);
236
			
236
			
237
	}
237
	}
238
	
238
	
239
 
239
 
240
 
240
 
241
	public void modifierObservationEnMasse(
241
	public void modifierObservationEnMasse(
242
			Rafraichissable r, Observation obs) {
242
			Rafraichissable r, Observation obs) {
243
		ListeObservationAsynchroneDAO liObsDAO=new ListeObservationAsynchroneDAO(this);
243
		ListeObservationAsynchroneDAO liObsDAO=new ListeObservationAsynchroneDAO(this);
244
		liObsDAO.modifierEnMasse(r, Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), obs);
244
		liObsDAO.modifierEnMasse(r, Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), obs);
245
		
245
		
246
	}
246
	}
247
 
247
 
248
 
248
 
249
	
249
	
250
	public void supprimerObservation(Rafraichissable r, String numeroOrdre) {
250
	public void supprimerObservation(Rafraichissable r, String numeroOrdre) {
251
		
251
		
252
		ObservationAsynchroneDAO obsDao = new ObservationAsynchroneDAO(this) ;
252
		ObservationAsynchroneDAO obsDao = new ObservationAsynchroneDAO(this) ;
253
		obsDao.supprimer(r,Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(),numeroOrdre) ;
253
		obsDao.supprimer(r,Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(),numeroOrdre) ;
254
		
254
		
255
		
255
		
256
	}
256
	}
257
	
257
	
258
	
258
	
259
 
259
 
260
 
260
 
261
	/**
261
	/**
262
	 * Accesseur pour la configuration en cours d'utilisation
262
	 * Accesseur pour la configuration en cours d'utilisation
263
	 * 
263
	 * 
264
	 * @return la configuration
264
	 * @return la configuration
265
	 */
265
	 */
266
	public Configuration getConfig() {
266
	public Configuration getConfig() {
267
 
267
 
268
		return config;
268
		return config;
269
	}
269
	}
270
 
270
 
271
	
271
	
272
	/**
272
	/**
273
	 * Obtenir des informations de repartition relative a un numero nomenclatural
273
	 * Obtenir des informations de repartition relative a un numero nomenclatural
274
	 * @param r
274
	 * @param r
275
	 * @param numeroNomenclaturalSaisiObservation
275
	 * @param numeroNomenclaturalSaisiObservation
276
	 */
276
	 */
277
 
277
 
278
 
278
 
279
	public void obtenirImageInformationRepartition( Rafraichissable r,String numeroNomenclaturalSaisiObservation) {
279
	public void obtenirImageInformationRepartition( Rafraichissable r,String numeroNomenclaturalSaisiObservation) {
280
		
280
		
281
		ImageInformationRepartitionAsynchroneDAO repDAO=new ImageInformationRepartitionAsynchroneDAO(this);
281
		ImageInformationRepartitionAsynchroneDAO repDAO=new ImageInformationRepartitionAsynchroneDAO(this);
282
		repDAO.obtenirURLImage(r, numeroNomenclaturalSaisiObservation);
282
		repDAO.obtenirURLImage(r, numeroNomenclaturalSaisiObservation);
283
		
283
		
284
		
284
		
285
	}
285
	}
286
 
286
 
287
	/**
287
	/**
288
	 * Obtenir une image generique associee a un numero nomenclatural
288
	 * Obtenir une image generique associee a un numero nomenclatural
289
	 * @param r
289
	 * @param r
290
	 * @param numeroNomenclaturalSaisiObservation
290
	 * @param numeroNomenclaturalSaisiObservation
291
	 */
291
	 */
292
 
292
 
293
	public void obtenirImageGenerique( Rafraichissable r,String numeroNomenclaturalSaisiObservation) {
293
	public void obtenirImageGenerique( Rafraichissable r,String numeroNomenclaturalSaisiObservation) {
294
		
294
		
295
		ImageGeneriqueVueAsynchroneDAO imgDAO=new ImageGeneriqueVueAsynchroneDAO(this);
295
		ImageGeneriqueVueAsynchroneDAO imgDAO=new ImageGeneriqueVueAsynchroneDAO(this);
296
		imgDAO.obtenirURLImage(r, numeroNomenclaturalSaisiObservation);
296
		imgDAO.obtenirURLImage(r, numeroNomenclaturalSaisiObservation);
297
		
297
		
298
		
298
		
299
	}
299
	}
300
 
300
 
301
 
301
 
302
	/**
302
	/**
303
	 * Obtenir la liste de l'ensemble des entites geographiques associes aux observation d'un utilisateur 
303
	 * Obtenir la liste de l'ensemble des entites geographiques associes aux observation d'un utilisateur 
304
	 * @param r
304
	 * @param r
305
	 */
305
	 */
306
 
306
 
307
	public void obtenirListeEntiteGeographique(Rafraichissable r) {
307
	public void obtenirListeEntiteGeographique(Rafraichissable r) {
308
 
308
 
309
	    ListeEntiteGeographiqueObservationAsynchroneDAO entDAO = new ListeEntiteGeographiqueObservationAsynchroneDAO(this);
309
	    ListeEntiteGeographiqueObservationAsynchroneDAO entDAO = new ListeEntiteGeographiqueObservationAsynchroneDAO(this);
310
	    entDAO.obtenirListeEntitesGeographiques(r, Utilisateur.getInstance().getIdentifiantUtilisateurConsulte());
310
	    entDAO.obtenirListeEntitesGeographiques(r, Utilisateur.getInstance().getIdentifiantUtilisateurConsulte());
311
 
311
 
312
	}
312
	}
313
 
313
 
314
 
314
 
315
 
315
 
316
	public void obtenirDatesObservation(
316
	public void obtenirDatesObservation(
317
			Rafraichissable r) {
317
			Rafraichissable r) {
318
	    ListeDateObservationAsynchroneDAO ldoDAO = new ListeDateObservationAsynchroneDAO(this);
318
	    ListeDateObservationAsynchroneDAO ldoDAO = new ListeDateObservationAsynchroneDAO(this);
319
	    ldoDAO.obtenirListeDate(r, Utilisateur.getInstance().getIdentifiantUtilisateurConsulte());
319
	    ldoDAO.obtenirListeDate(r, Utilisateur.getInstance().getIdentifiantUtilisateurConsulte());
320
		
320
		
321
	}
321
	}
322
 
322
 
323
 
323
 
324
 
324
 
325
	public void obtenirLiaisonImage(Rafraichissable r,
325
	public void obtenirLiaisonImage(Rafraichissable r,
326
			String idObservation) {
326
			String idObservation) {
327
		
327
		
328
		LienImageAsynchroneDAO liaDAO = new LienImageAsynchroneDAO(this) ;
328
		LienImageAsynchroneDAO liaDAO = new LienImageAsynchroneDAO(this) ;
329
		liaDAO.obtenirLiaisonsObservationsImages(r, idObservation,Utilisateur.getInstance().getIdentifiantUtilisateurConsulte()) ;
329
		liaDAO.obtenirLiaisonsObservationsImages(r, idObservation,Utilisateur.getInstance().getIdentifiantUtilisateurConsulte()) ;
330
		
330
		
331
	}
331
	}
332
 
332
 
333
 
333
 
334
 
334
 
335
	public void exporterObservations() {
335
	public void exporterObservations() {
336
		
336
		
337
		String[][] criteres = {{"",""}} ;		
337
		String[][] criteres = {{"",""}} ;		
338
	 	criteres = observationMediateur.renvoyerFiltres() ;			
338
	 	criteres = observationMediateur.renvoyerFiltres() ;			
339
		// on rassemble les critères
339
		// on rassemble les critères
340
		// on les crée un DAO auquel on les transmet et qui demande le nombre d'images correspondantes (pour les pages)	
340
		// on les crée un DAO auquel on les transmet et qui demande le nombre d'images correspondantes (pour les pages)	
341
		ExportObservationsDAO exoDAO = new ExportObservationsDAO(this) ;
341
		ExportObservationsDAO exoDAO = new ExportObservationsDAO(this) ;
342
		exoDAO.exporterObservations(Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), criteres) ;
342
		exoDAO.exporterObservations(Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), criteres) ;
343
				
343
				
344
	}
344
	}
345
 
345
 
346
 
346
 
347
 
347
 
348
	public void supprimerLiaisonImages(String idImg, String idObs) {
348
	public void supprimerLiaisonImages(String idImg, String idObs) {
349
		
349
		
350
		LienImageAsynchroneDAO lienDAO = new LienImageAsynchroneDAO(this) ;
350
		LienImageAsynchroneDAO lienDAO = new LienImageAsynchroneDAO(this) ;
351
		lienDAO.supprimerLienImageObservation(idImg, idObs) ;		
351
		lienDAO.supprimerLienImageObservation(idImg, idObs) ;		
352
		
352
		
353
	}
353
	}
354
 
354
 
355
	public void supprimerListeObservation(Rafraichissable r,
355
	public void supprimerListeObservation(Rafraichissable r,
356
			String numObs) {
356
			String numObs) {
357
		ListeObservationAsynchroneDAO lioaDAO = new ListeObservationAsynchroneDAO(this);
357
		ListeObservationAsynchroneDAO lioaDAO = new ListeObservationAsynchroneDAO(this);
358
		lioaDAO.supprimerListeObservation(r, Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), numObs);
358
		lioaDAO.supprimerListeObservation(r, Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), numObs);
359
		
359
		
360
	}
360
	}
361
 
361
 
362
	public void transmettreListeObservation(
362
	public void transmettreListeObservation(
363
			Rafraichissable r, String numObsapl, boolean publier) {
363
			Rafraichissable r, String numObsapl, boolean publier) {
364
		TransmissionObservationAsynchroneDAO toaDAO = new TransmissionObservationAsynchroneDAO(this);
364
		TransmissionObservationAsynchroneDAO toaDAO = new TransmissionObservationAsynchroneDAO(this);
365
		toaDAO.transmettreObservations(r, Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), numObsapl, publier);
365
		toaDAO.transmettreObservations(r, Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), numObsapl, publier);
366
		
366
		
367
	}
367
	}
368
 
368
 
369
	public void analyserHistorique(Rafraichissable r,String anum) {
369
	public void analyserHistorique(Rafraichissable r,String anum) {
370
		
370
		
371
		NomRetenuAsynchroneDAO nraDAO = new NomRetenuAsynchroneDAO(this);
371
		NomRetenuAsynchroneDAO nraDAO = new NomRetenuAsynchroneDAO(this);
372
		nraDAO.obtenirNomRetenu(r, anum);
372
		nraDAO.obtenirNomRetenu(r, anum);
373
		
373
		
374
	}
374
	}
375
 
375
 
376
 
376
 
377
 
377
 
378
	public void importerObservations() {
378
	public void importerObservations() {
379
		ImportObservationAsynchroneDAO ioDAO = new ImportObservationAsynchroneDAO(this);
379
		ImportObservationAsynchroneDAO ioDAO = new ImportObservationAsynchroneDAO(this);
380
		ioDAO.importerObservations();
380
		ioDAO.importerObservations();
381
		
381
		
382
	}
382
	}
383
 
383
 
384
 
384
 
385
 
385
 
386
	public void obtenirArbreMotsCles(Rafraichissable r) {
386
	public void obtenirArbreMotsCles(Rafraichissable r) {
387
		
387
		
388
		MotsClesAsynchroneDAO mcoDAO = new MotsClesAsynchroneDAO("obs");
388
		MotsClesAsynchroneDAO mcoDAO = new MotsClesAsynchroneDAO("obs");
389
		mcoDAO.obtenirListeMotsCles(this);
389
		mcoDAO.obtenirListeMotsCles(this);
390
		
390
		
391
	}
391
	}
392
 
392
 
393
	@Override
393
	@Override
394
	public void rafraichir(Object nouvelleDonnees,
394
	public void rafraichir(Object nouvelleDonnees,
395
			boolean repandreRaffraichissement) {
395
			boolean repandreRaffraichissement) {
396
		
396
		
397
		if(nouvelleDonnees instanceof JSONArray) {
397
		if(nouvelleDonnees instanceof JSONArray) {
398
			// alors on a reçu les informations sur les mots clés
398
			// alors on a reçu les informations sur les mots clés
399
			JSONArray reponse = (JSONArray) nouvelleDonnees;
399
			JSONArray reponse = (JSONArray) nouvelleDonnees;
400
 
400
 
401
			final int taillemax = reponse.size();
401
			final int taillemax = reponse.size();
402
 
402
 
403
			// si le tableau est vide
403
			// si le tableau est vide
404
			if (taillemax == 0) {
404
			if (taillemax == 0) {
405
				// on crée un arbre vide
405
				// on crée un arbre vide
406
				TreeNode root = new TreeNode();
406
				TreeNode root = new TreeNode();
407
				root.setId("racine_obs");
407
				root.setId("racine_obs");
408
				root.setText("Projets");
408
				root.setText("Projets");
409
				String[] usObj = { "Projets", "racine_obs" };
409
				String[] usObj = { "Projets", "racine_obs" };
410
				root.setUserObject(usObj);
410
				root.setUserObject(usObj);
411
				arbreMotsCles.setRootNode(root);
411
				arbreMotsCles.setRootNode(root);
412
				
412
				
413
			}
413
			}
414
 
414
 
415
			// pour chacun des élements du tableau
415
			// pour chacun des élements du tableau
416
			for (int j = 0; j < taillemax; j++) {
416
			for (int j = 0; j < taillemax; j++) {
417
				// on extrait les élements du tableau
417
				// on extrait les élements du tableau
418
				if (reponse.get(j).isObject() != null) {
418
				if (reponse.get(j).isObject() != null) {
419
					JSONObject noeud = (JSONObject) reponse.get(j);
419
					JSONObject noeud = (JSONObject) reponse.get(j);
420
 
420
 
421
					String id_noeud = noeud.get("id_mot_cle_obs")
421
					String id_noeud = noeud.get("id_mot_cle_obs")
422
							.isString().stringValue();
422
							.isString().stringValue();
423
					String mot_cle = noeud.get("mot_cle").isString()
423
					String mot_cle = noeud.get("mot_cle").isString()
424
							.stringValue();
424
							.stringValue();
425
					String parent = noeud.get("ce_mot_cle_obs_parent").isString()
425
					String parent = noeud.get("ce_mot_cle_obs_parent").isString()
426
							.stringValue();
426
							.stringValue();
427
 
427
 
428
					String[] usObj = { mot_cle, id_noeud };
428
					String[] usObj = { mot_cle, id_noeud };
429
 
429
 
430
					// et on construit l'arbre à partir de la racine (qui est
430
					// et on construit l'arbre à partir de la racine (qui est
431
					// toujoursl e premier élément)
431
					// toujoursl e premier élément)
432
					if (id_noeud.equals("racine_obs")) {
432
					if (id_noeud.equals("racine_obs")) {
433
						TreeNode root = new TreeNode();
433
						TreeNode root = new TreeNode();
434
						root.setId(id_noeud);
434
						root.setId(id_noeud);
435
						root.setText(mot_cle);
435
						root.setText(mot_cle);
436
						root.setUserObject(usObj);
436
						root.setUserObject(usObj);
437
						arbreMotsCles.setRootNode(root);
437
						arbreMotsCles.setRootNode(root);
438
					} else {
438
					} else {
439
						// et en ajoutant les noeuds un à un (qui sont renvoyé
439
						// et en ajoutant les noeuds un à un (qui sont renvoyé
440
						// dans l'ordre hierarchique de leur niveau
440
						// dans l'ordre hierarchique de leur niveau
441
						// ce qui permet de les traiter séquentiellement)
441
						// ce qui permet de les traiter séquentiellement)
442
						TreeNode node = new TreeNode();
442
						TreeNode node = new TreeNode();
443
						node.setId(id_noeud);
443
						node.setId(id_noeud);
444
						node.setText(mot_cle);
444
						node.setText(mot_cle);
445
						node.setChecked(false);
445
						node.setChecked(false);
446
						Node parentNode = arbreMotsCles.getNodeById(parent);
446
						Node parentNode = arbreMotsCles.getNodeById(parent);
447
						node.setUserObject(usObj);
447
						node.setUserObject(usObj);
448
						
448
						
449
						parentNode.appendChild(node);
449
						parentNode.appendChild(node);
450
					}
450
					}
451
					
451
					
452
					motsCles.put(id_noeud, mot_cle);
452
					motsCles.put(id_noeud, mot_cle);
453
				}
453
				}
454
			}
454
			}
455
			
455
			
456
			// enfin on met à jour l'arbre des mots clés contenu dans le modèle
456
			// enfin on met à jour l'arbre des mots clés contenu dans le modèle
457
			//rafraichirArbreMotsCles(arbreMotsCles);
457
			//rafraichirArbreMotsCles(arbreMotsCles);
458
			// et on notifie le médiateur de la mise à jour en lui passant une
458
			// et on notifie le médiateur de la mise à jour en lui passant une
459
			// copie des données
459
			// copie des données
460
			observationMediateur.rafraichirArbreMotsCles(arbreMotsCles);
460
			observationMediateur.rafraichirArbreMotsCles(arbreMotsCles);
461
		}
461
		}
462
		
462
		
463
		if(nouvelleDonnees instanceof Observation) {
463
		if(nouvelleDonnees instanceof Observation) {
464
			observationMediateur.obtenirNombreObservation();
464
			observationMediateur.obtenirNombreObservation();
465
		}
465
		}
466
		
466
		
467
	}
467
	}
468
 
468
 
469
	/**
469
	/**
470
	 * Met à jour l'arbre des mots clés à partir d'un objet
470
	 * Met à jour l'arbre des mots clés à partir d'un objet
471
	 * 
471
	 * 
472
	 * @param o
472
	 * @param o
473
	 *            le nouvel arbre de mots clés
473
	 *            le nouvel arbre de mots clés
474
	 */
474
	 */
475
	public void rafraichirArbreMotsCles(Object o) {
475
	public void rafraichirArbreMotsCles(Object o) {
476
		arbreMotsCles = (com.gwtext.client.data.Tree) o;
476
		arbreMotsCles = (com.gwtext.client.data.Tree) o;
477
	}
477
	}
478
 
478
 
479
	/**
479
	/**
480
	 * Met à jour la table de correspondance mots clés / ids à partir d'un objet
480
	 * Met à jour la table de correspondance mots clés / ids à partir d'un objet
481
	 * 
481
	 * 
482
	 * @param o
482
	 * @param o
483
	 *            la nouvelle table des mots clés
483
	 *            la nouvelle table des mots clés
484
	 */
484
	 */
485
	@SuppressWarnings("unchecked")
485
	@SuppressWarnings("unchecked")
486
	public void rafraichirMotsCles(Object o) {
486
	public void rafraichirMotsCles(Object o) {
487
		if (o instanceof HashMap) {
487
		if (o instanceof HashMap) {
488
			motsCles = (HashMap<String, String>) o;
488
			motsCles = (HashMap<String, String>) o;
489
		}
489
		}
490
	}
490
	}
491
	
491
	
492
	/**
492
	/**
493
	 * Va chercher les mots clés associés à une image dans la liste des images
493
	 * Va chercher les mots clés associés à une image dans la liste des images
494
	 * chargée dans le modèle
494
	 * chargée dans le modèle
495
	 * 
495
	 * 
496
	 * @param r
496
	 * @param r
497
	 *            le rafraichissable auquel on enverra les informations
497
	 *            le rafraichissable auquel on enverra les informations
498
	 * @param id
498
	 * @param id
499
	 *            l'identifiant de l'image
499
	 *            l'identifiant de l'image
500
	 */
500
	 */
501
	public void obtenirMotsClesId(Rafraichissable r, String id) {
501
	public void obtenirMotsClesId(Rafraichissable r, String id) {
502
		Observation o = cacheObservation.get(id);
502
		Observation o = cacheObservation.get(id);
503
		String motsClesId = o.getMotsCles();
503
		String motsClesId = o.getMotsCles();
504
		String[] motsClesIdTab = motsClesId.split(",");
504
		String[] motsClesIdTab = motsClesId.split(",");
505
		r.rafraichir(motsClesIdTab, false);
505
		r.rafraichir(motsClesIdTab, false);
506
	}
506
	}
507
	
507
	
508
	/**
508
	/**
509
	 * Met à jour les mots clés associés à une obs et appelle le DAO pour
509
	 * Met à jour les mots clés associés à une obs et appelle le DAO pour
510
	 * synchroniser la base de données
510
	 * synchroniser la base de données
511
	 * 
511
	 * 
512
	 * @param ids
512
	 * @param ids
513
	 *            les identifiants des observations selectionnées
513
	 *            les identifiants des observations selectionnées
514
	 * @param motsClesEnCours
514
	 * @param motsClesEnCours
515
	 *            les mots clés à appliquer aux observations
515
	 *            les mots clés à appliquer aux observations
516
	 */
516
	 */
517
	public void mettreAjourMotsCles(String motsClesEnCours, String[] idsObsALier) {
517
	public void mettreAjourMotsCles(String motsClesEnCours, String[] idsObsALier) {
518
	
518
	
519
		String motsCles = "";
519
		String motsCles = "";
520
		String obsAlier = "";
520
		String obsAlier = "";
521
		int nbObs = 0;
521
		int nbObs = 0;
522
		
522
		
523
		for (int i = 0; i < idsObsALier.length; i++) {
523
		for (int i = 0; i < idsObsALier.length; i++) {
524
		
524
		
525
			if (cacheObservation.containsKey(idsObsALier[i])) {
525
			if (cacheObservation.containsKey(idsObsALier[i])) {
526
				
526
				
527
				if(!motsClesEnCours.endsWith(";") && !motsClesEnCours.startsWith(";")) {
527
				if(!motsClesEnCours.endsWith(";") && !motsClesEnCours.startsWith(";")) {
528
					motsCles += ";";
528
					motsCles += ";";
529
				}
529
				}
530
				
-
 
531
				obsAlier += ","+idsObsALier[i];
530
				
532
				motsCles += motsClesEnCours;
531
				motsCles += motsClesEnCours;
533
				
532
				
534
				nbObs++;
533
				nbObs++;
535
				
534
				
536
				Observation m = cacheObservation.get(idsObsALier[i]);
535
				Observation m = cacheObservation.get(idsObsALier[i]);
-
 
536
				obsAlier += ","+m.getId();
537
				
537
				
538
				if(m.getMotsCles() != null && !m.getMotsCles().endsWith(";") && !motsCles.startsWith(";")) {
538
				if(m.getMotsCles() != null && !m.getMotsCles().endsWith(";") && !motsCles.startsWith(";")) {
539
					motsCles += ";";
539
					motsCles += ";";
540
				}
540
				}
541
				
541
				
542
				m.setMotsCles(m.getMotsCles()+motsCles);
542
				m.setMotsCles(m.getMotsCles()+motsCles);
543
				
543
				
544
				cacheObservation.put(m.getNumeroOrdre(), m);
544
				cacheObservation.put(m.getNumeroOrdre(), m);
545
			}
545
			}
546
		}
546
		}
547
		
547
		
548
		while(obsAlier.startsWith(",")) {
548
		while(obsAlier.startsWith(",")) {
549
			obsAlier = obsAlier.replaceFirst(",", "");
549
			obsAlier = obsAlier.replaceFirst(",", "");
550
		}
550
		}
551
		
551
		
552
		if(nbObs > 0) {
552
		if(nbObs > 0) {
553
			
553
			
554
			LiaisonMotsClesObsAsynchroneDAO lmcDAO = new LiaisonMotsClesObsAsynchroneDAO(this);
554
			LiaisonMotsClesObsAsynchroneDAO lmcDAO = new LiaisonMotsClesObsAsynchroneDAO(this);
555
			lmcDAO.modifier(this,Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), obsAlier, motsClesEnCours);
555
			lmcDAO.modifier(this,Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), obsAlier, motsClesEnCours);
556
		}
556
		}
557
	}
557
	}
558
	
558
	
559
	
559
	
560
	public void supprimerLiaisonMotCleObservations(
560
	public void supprimerLiaisonMotCleObservations(
561
			Rafraichissable r, String idObs, String idMC) {
561
			Rafraichissable r, String idObs, String idMC) {
562
		
562
		
563
		LiaisonMotsClesObsAsynchroneDAO lmcDAO = new LiaisonMotsClesObsAsynchroneDAO(this);
563
		LiaisonMotsClesObsAsynchroneDAO lmcDAO = new LiaisonMotsClesObsAsynchroneDAO(this);
564
		lmcDAO.supprimer(r,Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), idObs, idMC);
564
		lmcDAO.supprimer(r,Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), idObs, idMC);
565
		
565
		
566
	}
566
	}
567
	
567
	
568
	/**
568
	/**
569
	 * Ajoute un mot clé à l'arbre des mots clés local et appelle le DAO qui
569
	 * Ajoute un mot clé à l'arbre des mots clés local et appelle le DAO qui
570
	 * fait la mise à jour de l'arbre des mots clés dans la base
570
	 * fait la mise à jour de l'arbre des mots clés dans la base
571
	 * 
571
	 * 
572
	 * @param n
572
	 * @param n
573
	 *            le nouveau noeud contenant le mot clé
573
	 *            le nouveau noeud contenant le mot clé
574
	 * @param arbreMC
574
	 * @param arbreMC
575
	 *            l'arbre des mots cles en cours
575
	 *            l'arbre des mots cles en cours
576
	 */
576
	 */
577
	public void ajouterMotCleDansArbre(TreeNode n,
577
	public void ajouterMotCleDansArbre(TreeNode n,
578
			com.gwtext.client.data.Tree arbreMC) {
578
			com.gwtext.client.data.Tree arbreMC) {
579
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO("obs");
579
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO("obs");
580
 
580
 
581
		String[] usObj = (String[]) n.getUserObject();
581
		String[] usObj = (String[]) n.getUserObject();
582
		String motCle = usObj[0];
582
		String motCle = usObj[0];
583
		String id = usObj[1];
583
		String id = usObj[1];
584
		String parentId = "";
584
		String parentId = "";
585
 
585
 
586
		if (!id.equals("racine_obs")) {
586
		if (!id.equals("racine_obs")) {
587
			String[] parentUsObj = (String[]) n.getParentNode().getUserObject();
587
			String[] parentUsObj = (String[]) n.getParentNode().getUserObject();
588
			parentId = parentUsObj[1];
588
			parentId = parentUsObj[1];
589
		} else {
589
		} else {
590
			parentId = "racine_obs";
590
			parentId = "racine_obs";
591
		}
591
		}
592
		
592
		
593
		rafraichirArbreMotsCles(arbreMC);
593
		rafraichirArbreMotsCles(arbreMC);
594
 
594
 
595
		String nouveauMotCle = "&identifiant=" + Utilisateur.getInstance().getIdentifiantUtilisateurConsulte() + "&motcle="
595
		String nouveauMotCle = "&identifiant=" + Utilisateur.getInstance().getIdentifiantUtilisateurConsulte() + "&motcle="
596
				+ motCle + "&id=" + id + "&parent=" + parentId;
596
				+ motCle + "&id=" + id + "&parent=" + parentId;
597
		MCDao.ajouterBaseDeDonnees(nouveauMotCle);
597
		MCDao.ajouterBaseDeDonnees(nouveauMotCle);
598
	}
598
	}
599
 
599
 
600
	/**
600
	/**
601
	 * Supprime un noeud de l'arbre des mots clés et appelle le DAO qui va
601
	 * Supprime un noeud de l'arbre des mots clés et appelle le DAO qui va
602
	 * supprimer les mots clés associés dans la base
602
	 * supprimer les mots clés associés dans la base
603
	 * 
603
	 * 
604
	 * @param n
604
	 * @param n
605
	 *            le noeud à supprimer
605
	 *            le noeud à supprimer
606
	 * @param arbreMC
606
	 * @param arbreMC
607
	 *            l'arbre des mots clés en cours
607
	 *            l'arbre des mots clés en cours
608
	 */
608
	 */
609
	public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC) {
609
	public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC) {
610
 
610
 
611
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO("obs");
611
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO("obs");
612
 
612
 
613
		String[] usObj = (String[]) n.getUserObject();
613
		String[] usObj = (String[]) n.getUserObject();
614
		String id = usObj[1];
614
		String id = usObj[1];
615
		
615
		
616
		rafraichirArbreMotsCles(arbreMC);
616
		rafraichirArbreMotsCles(arbreMC);
617
 
617
 
618
		MCDao.supprimerBaseDeDonnees(id);
618
		MCDao.supprimerBaseDeDonnees(id);
619
 
619
 
620
	}
620
	}
621
 
621
 
622
	/**
622
	/**
623
	 * Modifie le noeud donné dans l'arbre des mots clés en cours et appelle le
623
	 * Modifie le noeud donné dans l'arbre des mots clés en cours et appelle le
624
	 * DAO qui synchronise la modification dans la base de données
624
	 * DAO qui synchronise la modification dans la base de données
625
	 * 
625
	 * 
626
	 * @param n
626
	 * @param n
627
	 *            le noeud modifié
627
	 *            le noeud modifié
628
	 * @param arbreMC
628
	 * @param arbreMC
629
	 *            l'arbre des mots clés en cours
629
	 *            l'arbre des mots clés en cours
630
	 */
630
	 */
631
	public void modifierMotCleDansArbre(TreeNode n, Tree arbreMC) {
631
	public void modifierMotCleDansArbre(TreeNode n, Tree arbreMC) {
632
 
632
 
633
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO("obs");
633
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO("obs");
634
 
634
 
635
		String[] usObj = (String[]) n.getUserObject();
635
		String[] usObj = (String[]) n.getUserObject();
636
		String motCle = usObj[0];
636
		String motCle = usObj[0];
637
		String id = usObj[1];
637
		String id = usObj[1];
638
		String parentId = "";
638
		String parentId = "";
639
 
639
 
640
		if (!id.equals("racine")) {
640
		if (!id.equals("racine")) {
641
			String[] parentUsObj = (String[]) n.getParentNode().getUserObject();
641
			String[] parentUsObj = (String[]) n.getParentNode().getUserObject();
642
			parentId = parentUsObj[1];
642
			parentId = parentUsObj[1];
643
		} else {
643
		} else {
644
			parentId = "racine";
644
			parentId = "racine";
645
		}
645
		}
646
 
646
 
647
		rafraichirArbreMotsCles(arbreMC);
647
		rafraichirArbreMotsCles(arbreMC);
648
 
648
 
649
		String motCleModifie = "&motcle=" + motCle + "&id=" + id + "&parent="
649
		String motCleModifie = "&motcle=" + motCle + "&id=" + id + "&parent="
650
				+ parentId;
650
				+ parentId;
651
		MCDao.modifierBaseDeDonnees(motCleModifie);
651
		MCDao.modifierBaseDeDonnees(motCleModifie);
652
 
652
 
653
	}
653
	}
654
 
654
 
655
	/**
655
	/**
656
	 * Deplace un noeud dans l'arbre des mots cles et appelle le DAO qui
656
	 * Deplace un noeud dans l'arbre des mots cles et appelle le DAO qui
657
	 * reorganise l'arbre dans la base de donnees suivant le changement
657
	 * reorganise l'arbre dans la base de donnees suivant le changement
658
	 * 
658
	 * 
659
	 * @param n
659
	 * @param n
660
	 *            le noeud deplace (et son sous arbre associe)
660
	 *            le noeud deplace (et son sous arbre associe)
661
	 * @param arbreMC
661
	 * @param arbreMC
662
	 *            l'arbre des mots cles en cours
662
	 *            l'arbre des mots cles en cours
663
	 */
663
	 */
664
	public void deplacerMotCleDansArbre(TreeNode n, Tree arbreMC) {
664
	public void deplacerMotCleDansArbre(TreeNode n, Tree arbreMC) {
665
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO("obs");
665
		MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO("obs");
666
 
666
 
667
		String[] usObj = (String[]) n.getUserObject();
667
		String[] usObj = (String[]) n.getUserObject();
668
		String motCle = usObj[0];
668
		String motCle = usObj[0];
669
		String id = usObj[1];
669
		String id = usObj[1];
670
		String parentId = "";
670
		String parentId = "";
671
		if (!id.equals("racine_obs")) {
671
		if (!id.equals("racine_obs")) {
672
			String[] parentUsObj = (String[]) n.getParentNode().getUserObject();
672
			String[] parentUsObj = (String[]) n.getParentNode().getUserObject();
673
			parentId = parentUsObj[1];
673
			parentId = parentUsObj[1];
674
		} else {
674
		} else {
675
			parentId = "racine_obs";
675
			parentId = "racine_obs";
676
		}
676
		}
677
		
677
		
678
		rafraichirArbreMotsCles(arbreMC);
678
		rafraichirArbreMotsCles(arbreMC);
679
 
679
 
680
		String motCleModifie = "&motcle=" + motCle + "&id=" + id + "&parent="
680
		String motCleModifie = "&motcle=" + motCle + "&id=" + id + "&parent="
681
				+ parentId;
681
				+ parentId;
682
		MCDao.deplacerBaseDeDonnees(motCleModifie);
682
		MCDao.deplacerBaseDeDonnees(motCleModifie);
683
	}
683
	}
684
	
684
	
685
	/**
685
	/**
686
	 * Ajoute un nouveau mot clés à la liste des mots clés locale
686
	 * Ajoute un nouveau mot clés à la liste des mots clés locale
687
	 * 
687
	 * 
688
	 * @param text
688
	 * @param text
689
	 *            le mot clé
689
	 *            le mot clé
690
	 * @param id
690
	 * @param id
691
	 *            l'identifiant du mot clé
691
	 *            l'identifiant du mot clé
692
	 */
692
	 */
693
	public void mettreAjourMotsClesId(String text, String id) {
693
	public void mettreAjourMotsClesId(String text, String id) {
694
		motsCles.put(id, text);
694
		motsCles.put(id, text);
695
	}
695
	}
696
	
696
	
697
	public String obtenirTexteMotCle(String id) {
697
	public String obtenirTexteMotCle(String id) {
698
		
698
		
699
		String correspondanceId = "";
699
		String correspondanceId = "";
700
		
700
		
701
		String motCleTexte = motsCles.get(id);
701
		String motCleTexte = motsCles.get(id);
702
		
702
		
703
		if(motCleTexte != null) {
703
		if(motCleTexte != null) {
704
			correspondanceId = motCleTexte;
704
			correspondanceId = motCleTexte;
705
		}
705
		}
706
		
706
		
707
		return correspondanceId;
707
		return correspondanceId;
708
	}
708
	}
709
	
709
	
710
	public void rafraichirCacheObservation(ListeObservation li) {
710
	public void rafraichirCacheObservation(ListeObservation li) {
711
		cacheObservation = li ;
711
		cacheObservation = li ;
712
	}
712
	}
713
 
713
 
714
	public ListeObservation getCacheObservation() {
714
	public ListeObservation getCacheObservation() {
715
		return cacheObservation ;
715
		return cacheObservation ;
716
	}
716
	}
-
 
717
	
-
 
718
	public String getIdPourOrdreObs(String ordreObs) {
-
 
719
		return (cacheObservation.get(ordreObs) != null) ? cacheObservation.get(ordreObs).getId() : null;
-
 
720
	}
717
 
721
 
718
	public void obtenirInformationCommune(Rafraichissable r, String nomCommune, String codePostal) {
722
	public void obtenirInformationCommune(Rafraichissable r, String nomCommune, String codePostal) {
719
		InformationCommuneDAO infocommune = new InformationCommuneDAO(r);
723
		InformationCommuneDAO infocommune = new InformationCommuneDAO(r);
720
		infocommune.obtenirInfosCommune(r, nomCommune, codePostal);
724
		infocommune.obtenirInfosCommune(r, nomCommune, codePostal);
721
	}
725
	}
722
	
726
	
723
	public void obtenirInformationCoord(Rafraichissable r, LatLng coord) {
727
	public void obtenirInformationCoord(Rafraichissable r, LatLng coord) {
724
		InformationCommuneDAO infocommune = new InformationCommuneDAO(r);
728
		InformationCommuneDAO infocommune = new InformationCommuneDAO(r);
725
		infocommune.obtenirCommunePlusProche(r, coord.getLongitude(), coord.getLatitude());
729
		infocommune.obtenirCommunePlusProche(r, coord.getLongitude(), coord.getLatitude());
726
	}
730
	}
727
}
731
}