Subversion Repositories eFlore/Applications.cel

Rev

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

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