Subversion Repositories eFlore/Applications.cel

Rev

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

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