Subversion Repositories eFlore/Applications.cel

Rev

Rev 145 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 aperonnet 1
package org.tela_botanica.client.observation;
2
 
3
 
54 david 4
//TODO : normaliser les noms de methodes (obtenir, ajouter ...)
2 aperonnet 5
 
12 david 6
import org.tela_botanica.client.interfaces.Rafraichissable;
7
import org.tela_botanica.client.modeles.Configuration;
101 jpm 8
import org.tela_botanica.client.modeles.ExportObservationsDAO;
54 david 9
import org.tela_botanica.client.modeles.ImageGeneriqueVueAsynchroneDAO;
10
import org.tela_botanica.client.modeles.ImageInformationRepartitionAsynchroneDAO;
94 jpm 11
import org.tela_botanica.client.modeles.LienImageAsynchroneDAO;
91 jpm 12
import org.tela_botanica.client.modeles.ListeDateObservationAsynchroneDAO;
66 david 13
import org.tela_botanica.client.modeles.ListeEntiteGeographiqueObservationAsynchroneDAO;
12 david 14
import org.tela_botanica.client.modeles.ListeObservationAsynchroneDAO;
15
import org.tela_botanica.client.modeles.ListeReferentielCommuneAsynchroneDAO;
20 david 16
import org.tela_botanica.client.modeles.ListeReferentielNomAsynchroneDAO;
115 aurelien 17
import org.tela_botanica.client.modeles.MotsClesObsAsynchronesDAO;
140 aurelien 18
import org.tela_botanica.client.modeles.NomRetenuAsynchroneDao;
12 david 19
import org.tela_botanica.client.modeles.NombreObservationAsynchroneDAO;
39 david 20
import org.tela_botanica.client.modeles.Observation;
20 david 21
import org.tela_botanica.client.modeles.ObservationAsynchroneDAO;
108 aurelien 22
import org.tela_botanica.client.modeles.TransmissionObservationAsynchroneDAO;
2 aperonnet 23
 
7 aperonnet 24
 
12 david 25
public class ObservationModele  {
7 aperonnet 26
 
12 david 27
 
28
 
29
	/**
30
	 * Booleen indiquant si le médiateur est instancié (l'instance doit être unique donc le booleen est static)
31
	 */
32
	private static boolean estInstancie = false ;
33
 
88 jpm 34
	private static ObservationModele thisModele = null ;
12 david 35
 
88 jpm 36
 
152 david 37
 
38
 
12 david 39
	/**
40
	 * La configuration en cours
41
	 */
42
	private Configuration config = null;
7 aperonnet 43
 
12 david 44
 
45
	/**
46
	 * Le médiateur associé au modèle
47
	 */
48
 
49
	private ObservationMediateur observationMediateur = null ;
50
 
51
 
52
 
152 david 53
	/**
54
	 * DAO dont le resultat peut etre mis en cache
55
	 *
56
	 */
57
 
58
	private ListeReferentielNomAsynchroneDAO nomDAO=null;
59
	private ListeReferentielCommuneAsynchroneDAO refDAO=null;
60
 
12 david 61
 
152 david 62
 
63
 
12 david 64
	/**
65
	 * Retourne une instance de manière unique
66
	 * @param im le médiateur à associer
67
	 * @return l'instance du modèle
68
	 */
69
 
70
	static ObservationModele Instance(ObservationMediateur observationMediateur)
71
	{
72
		// si le modèle n'est pas encore instancié
73
		if(!estInstancie)
74
		{
75
			// on en crée un nouveau
76
			estInstancie = true ;
88 jpm 77
			thisModele = new ObservationModele(observationMediateur);
12 david 78
		}
88 jpm 79
		return thisModele ;
2 aperonnet 80
	}
81
 
12 david 82
 
83
 
84
	private ObservationModele(ObservationMediateur observationMediateur) {
85
 
86
		this.observationMediateur=observationMediateur;
87
 
88
		config = new Configuration();
2 aperonnet 89
 
12 david 90
 
91
	}
2 aperonnet 92
 
12 david 93
 
94
 
95
	/**
96
	 * Appelle le DAO asynchrone pour obtenir le nombre d'observation
97
	 * @param r le rafraichissable auxquel on enverra les données
86 jpm 98
	 * @param filtrage
12 david 99
	 * @param taillePage
100
	 */
101
	public void obtenirNombreObservation(Rafraichissable r) {
86 jpm 102
 
103
		String[][] criteres = {{"",""}} ;
104
		 	criteres = observationMediateur.renvoyerFiltres() ;
12 david 105
			// on rassemble les critères
106
 
107
 
108
			// on les crée un DAO auquel on les transmet et qui demande le nombre d'images correspondantes (pour les pages)
109
 
110
			NombreObservationAsynchroneDAO noaDAO = new NombreObservationAsynchroneDAO(this) ;
111
			noaDAO.obtenirNombreObservation(r, observationMediateur.getIdentifiant(), criteres) ;
112
 
2 aperonnet 113
	}
12 david 114
 
115
 
116
	/**
117
	 * Appelle le DAO asynchrone pour obtenir la liste des images
118
	 * @param r le rafraichissable auxquel on enverra les données
119
	 * @param taillePage
120
	 */
121
	public void obtenirListeObservation(Rafraichissable r, int taillePage, int pageEncours) {
122
 
86 jpm 123
 
89 jpm 124
		 	String[][] criteres = {{"",""}} ;
125
				criteres = observationMediateur.renvoyerFiltres() ;
86 jpm 126
				// on rassemble les critères
12 david 127
 
128
 
129
			// ensuite on demande la page correspondante avec les mêmes critères
89 jpm 130
			String[][] criteres2 = new String[criteres.length+2][2] ;
12 david 131
 
89 jpm 132
			criteres2[0][0] = "limite" ;
133
			criteres2[0][1] = ""+taillePage ;
134
			criteres2[1][0] = "numero_page" ;
135
			criteres2[1][1] = ""+pageEncours ;
136
			for(int i = 0 ; i < criteres.length ; i++)
137
			{
138
				criteres2[i+2][0] = criteres[i][0] ;
139
				criteres2[i+2][1] = criteres[i][1] ;
140
			}
141
 
12 david 142
			// et on crée un DAO auquel on les transmet et qui envoie une requete pour recevoir les images
143
 
144
			ListeObservationAsynchroneDAO loaDAO = new ListeObservationAsynchroneDAO(this);
145
			loaDAO.obtenirListeObservation(r, observationMediateur.getIdentifiant(), criteres2);
146
	}
147
 
2 aperonnet 148
 
54 david 149
	/**
150
	 * Obtenir une liste de commune
151
	 * @param r
152
	 * @param critere
153
	 */
12 david 154
 
13 david 155
	public void obtenirListeReferentielCommune(Rafraichissable r, String critere) {
12 david 156
 
152 david 157
		if (refDAO==null) {
158
			refDAO=new ListeReferentielCommuneAsynchroneDAO(this);
159
		}
13 david 160
		ListeReferentielCommuneAsynchroneDAO refDAO=new ListeReferentielCommuneAsynchroneDAO(this);
161
		refDAO.obtenirListeDonnees(r, critere);
162
 
12 david 163
	}
20 david 164
 
54 david 165
	/**
166
	 * Obtenir une liste de nom scientifique de plante
167
	 * @param r
168
	 * @param critere
169
	 */
20 david 170
 
171
	public void obtenirListeReferentielNom(Rafraichissable r, String critere) {
172
 
152 david 173
		if (nomDAO==null) {
174
			nomDAO=new ListeReferentielNomAsynchroneDAO(this);
175
		}
20 david 176
		nomDAO.obtenirListeDonnees(r, critere);
177
 
178
	}
179
 
180
 
181
	/**
182
	 *
183
	 * Lance la creation d'une observation
184
	 * @param r : la vue demandeuse de donnee
185
	 * @param critere : les criteres de selection
186
	 */
187
 
39 david 188
	public void ajouterObservation(Rafraichissable r, Observation obs) {
20 david 189
 
190
		ObservationAsynchroneDAO obsDAO=new ObservationAsynchroneDAO(this);
39 david 191
		obsDAO.ajouter(r, observationMediateur.getIdentifiant(), obs);
20 david 192
 
193
	}
2 aperonnet 194
 
74 david 195
	/**
196
	 *
197
	 * Lance la creation d'une observation
198
	 * @param r : la vue demandeuse de donnee
199
	 * @param critere : les criteres de selection
200
	 */
20 david 201
 
79 david 202
	public void modifierObservation(Rafraichissable r, Observation obs) {
74 david 203
 
204
		ObservationAsynchroneDAO obsDAO=new ObservationAsynchroneDAO(this);
79 david 205
		obsDAO.modifier(r, observationMediateur.getIdentifiant(), obs);
74 david 206
 
207
	}
20 david 208
 
77 jpm 209
	public void supprimerObservation(Rafraichissable r, String numeroOrdre) {
210
 
211
		ObservationAsynchroneDAO obsDao = new ObservationAsynchroneDAO(this) ;
212
		obsDao.supprimer(r,observationMediateur.getIdentifiant(),numeroOrdre) ;
213
 
214
 
215
	}
74 david 216
 
77 jpm 217
 
7 aperonnet 218
 
20 david 219
 
12 david 220
	/**
221
	 * Accesseur pour la configuration en cours d'utilisation
222
	 *
223
	 * @return la configuration
224
	 */
225
	public Configuration getConfig() {
226
 
227
		return config;
2 aperonnet 228
	}
229
 
66 david 230
 
231
	/**
232
	 * Obtenir des informations de repartition relative a un numero nomenclatural
233
	 * @param r
234
	 * @param numeroNomenclaturalSaisiObservation
235
	 */
12 david 236
 
54 david 237
 
238
	public void obtenirImageInformationRepartition( Rafraichissable r,String numeroNomenclaturalSaisiObservation) {
239
 
240
		ImageInformationRepartitionAsynchroneDAO repDAO=new ImageInformationRepartitionAsynchroneDAO(this);
241
		repDAO.obtenirURLImage(r, numeroNomenclaturalSaisiObservation);
242
 
243
 
244
	}
245
 
66 david 246
	/**
247
	 * Obtenir une image generique associee a un numero nomenclatural
248
	 * @param r
249
	 * @param numeroNomenclaturalSaisiObservation
250
	 */
54 david 251
 
252
	public void obtenirImageGenerique( Rafraichissable r,String numeroNomenclaturalSaisiObservation) {
253
 
254
		ImageGeneriqueVueAsynchroneDAO imgDAO=new ImageGeneriqueVueAsynchroneDAO(this);
255
		imgDAO.obtenirURLImage(r, numeroNomenclaturalSaisiObservation);
256
 
257
 
258
	}
259
 
260
 
66 david 261
	/**
262
	 * Obtenir la liste de l'ensemble des entites geographiques associes aux observation d'un utilisateur
263
	 * @param r
264
	 */
54 david 265
 
66 david 266
	public void obtenirListeEntiteGeographique(Rafraichissable r) {
54 david 267
 
66 david 268
	    ListeEntiteGeographiqueObservationAsynchroneDAO entDAO = new ListeEntiteGeographiqueObservationAsynchroneDAO(this);
269
	    entDAO.obtenirListeEntitesGeographiques(r, observationMediateur.getIdentifiant());
54 david 270
 
271
	}
91 jpm 272
 
273
 
274
 
275
	public void obtenirDatesObservation(
276
			Rafraichissable r) {
277
	    ListeDateObservationAsynchroneDAO ldoDAO = new ListeDateObservationAsynchroneDAO(this);
278
	    ldoDAO.obtenirListeDate(r, observationMediateur.getIdentifiant());
279
 
280
	}
94 jpm 281
 
282
 
283
 
284
	public void obtenirLiaisonImage(Rafraichissable r,
285
			String ordreObservation) {
286
 
287
		LienImageAsynchroneDAO liaDAO = new LienImageAsynchroneDAO(this) ;
288
		liaDAO.obtenirLiaisonsObservationsImages(r, ordreObservation,observationMediateur.getIdentifiant()) ;
289
 
290
	}
101 jpm 291
 
292
 
293
 
294
	public void exporterObservations() {
295
 
296
		String[][] criteres = {{"",""}} ;
297
	 	criteres = observationMediateur.renvoyerFiltres() ;
298
		// on rassemble les critères
299
 
300
 
301
		// on les crée un DAO auquel on les transmet et qui demande le nombre d'images correspondantes (pour les pages)
302
 
303
		ExportObservationsDAO exoDAO = new ExportObservationsDAO(this) ;
304
		exoDAO.exporterObservations(observationMediateur.getIdentifiant(), criteres) ;
305
 
306
 
307
	}
104 jpm 308
 
309
 
310
 
311
	public void supprimerLiaisonImages(String idImg, String idObs) {
312
 
313
		LienImageAsynchroneDAO lienDAO = new LienImageAsynchroneDAO(this) ;
314
		lienDAO.supprimerLienImageObservation(idImg, idObs) ;
315
 
316
	}
317
 
318
 
319
 
320
	public String getIdentifiant() {
321
 
322
		return observationMediateur.getIdentifiant() ;
323
	}
107 aurelien 324
 
325
 
326
 
327
	public void supprimerListeObservation(Rafraichissable r,
328
			String numObs) {
329
		ListeObservationAsynchroneDAO lioaDAO = new ListeObservationAsynchroneDAO(this);
330
		lioaDAO.supprimerListeObservation(r, observationMediateur.getIdentifiant(), numObs);
331
 
332
	}
108 aurelien 333
 
334
 
335
 
336
	public void transmettreListeObservation(
145 aurelien 337
			Rafraichissable r, String numObsapl, boolean publier) {
108 aurelien 338
		TransmissionObservationAsynchroneDAO toaDAO = new TransmissionObservationAsynchroneDAO(this);
145 aurelien 339
		toaDAO.transmettreObservations(r, observationMediateur.getIdentifiant(), numObsapl, publier);
108 aurelien 340
 
341
	}
115 aurelien 342
 
343
 
344
 
345
	public void obtenirNuageMotsCles(Rafraichissable r) {
346
 
347
		MotsClesObsAsynchronesDAO mcoaDAO = new MotsClesObsAsynchronesDAO(this);
348
		mcoaDAO.obtenirMotsClesObservations(r);
349
 
350
	}
351
 
352
 
353
 
354
	public void ajouterMotsCles(Rafraichissable r,
355
			String numObsApl, String motsAAjouter) {
356
 
357
		MotsClesObsAsynchronesDAO moadDAO = new MotsClesObsAsynchronesDAO(this);
358
		moadDAO.ajouterMotsCles(r,numObsApl,motsAAjouter);
359
 
360
	}
140 aurelien 361
 
362
 
363
 
364
	public void analyserHistorique(Rafraichissable r,String anum) {
365
 
366
		NomRetenuAsynchroneDao nraDAO = new NomRetenuAsynchroneDao(this);
367
		nraDAO.obtenirNomRetenu(r, anum);
368
 
369
	}
370
 
371
 
372
 
373
	public void importerObservations() {
374
		ImportObservationAsynchroneDAO ioDAO = new ImportObservationAsynchroneDAO(this);
375
		ioDAO.importerObservations();
376
 
377
	}
12 david 378
 
2 aperonnet 379
}