Subversion Repositories eFlore/Applications.cel

Rev

Rev 2033 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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