Subversion Repositories eFlore/Applications.cel

Rev

Rev 41 | 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.FournisseurListe;
7
import org.tela_botanica.client.interfaces.Rafraichissable;
8
import org.tela_botanica.client.modeles.Configuration;
54 david 9
import org.tela_botanica.client.modeles.ImageGeneriqueVueAsynchroneDAO;
10
import org.tela_botanica.client.modeles.ImageInformationRepartitionAsynchroneDAO;
12 david 11
import org.tela_botanica.client.modeles.ListeObservationAsynchroneDAO;
12
import org.tela_botanica.client.modeles.ListeReferentielCommuneAsynchroneDAO;
20 david 13
import org.tela_botanica.client.modeles.ListeReferentielNom;
14
import org.tela_botanica.client.modeles.ListeReferentielNomAsynchroneDAO;
12 david 15
import org.tela_botanica.client.modeles.NombreObservationAsynchroneDAO;
39 david 16
import org.tela_botanica.client.modeles.Observation;
20 david 17
import org.tela_botanica.client.modeles.ObservationAsynchroneDAO;
54 david 18
import org.tela_botanica.client.vues.InformationRepartitionVue;
2 aperonnet 19
 
41 jpm 20
import com.google.gwt.user.client.Window;
7 aperonnet 21
 
41 jpm 22
 
12 david 23
public class ObservationModele  {
7 aperonnet 24
 
12 david 25
 
26
 
27
	/**
28
	 * Booleen indiquant si le médiateur est instancié (l'instance doit être unique donc le booleen est static)
29
	 */
30
	private static boolean estInstancie = false ;
31
 
32
 
33
	/**
34
	 * La configuration en cours
35
	 */
36
	private Configuration config = null;
7 aperonnet 37
 
12 david 38
 
39
	/**
40
	 * Le médiateur associé au modèle
41
	 */
42
 
43
	private ObservationMediateur observationMediateur = null ;
44
 
45
 
46
 
47
 
48
	/**
49
	 * Retourne une instance de manière unique
50
	 * @param im le médiateur à associer
51
	 * @return l'instance du modèle
52
	 */
53
 
54
	static ObservationModele Instance(ObservationMediateur observationMediateur)
55
	{
56
		// si le modèle n'est pas encore instancié
57
		if(!estInstancie)
58
		{
59
			// on en crée un nouveau
60
			estInstancie = true ;
61
			return new ObservationModele(observationMediateur);
62
		}
63
		else
64
		{
65
			// sinon on renvoit null, interdisant explicitement la création d'un autre exemplaire
66
			return null ;
67
		}
2 aperonnet 68
	}
69
 
12 david 70
 
71
 
72
	private ObservationModele(ObservationMediateur observationMediateur) {
73
 
74
		this.observationMediateur=observationMediateur;
75
 
76
		config = new Configuration();
2 aperonnet 77
 
12 david 78
 
79
	}
2 aperonnet 80
 
12 david 81
 
82
 
83
	/**
84
	 * Appelle le DAO asynchrone pour obtenir le nombre d'observation
85
	 * @param r le rafraichissable auxquel on enverra les données
86
	 * @param taillePage
87
	 */
88
	public void obtenirNombreObservation(Rafraichissable r) {
89
 
90
		 	String motsClesFiltres[][] = observationMediateur.renvoyerFiltres() ;
91
 
92
			// on rassemble les critères
93
			String[][] criteres = {{motsClesFiltres[0][0], motsClesFiltres[0][1]} } ;
94
 
95
 
96
			// on les crée un DAO auquel on les transmet et qui demande le nombre d'images correspondantes (pour les pages)
97
 
98
			NombreObservationAsynchroneDAO noaDAO = new NombreObservationAsynchroneDAO(this) ;
99
			noaDAO.obtenirNombreObservation(r, observationMediateur.getIdentifiant(), criteres) ;
100
 
2 aperonnet 101
	}
12 david 102
 
103
 
104
	/**
105
	 * Appelle le DAO asynchrone pour obtenir la liste des images
106
	 * @param r le rafraichissable auxquel on enverra les données
107
	 * @param taillePage
108
	 */
109
	public void obtenirListeObservation(Rafraichissable r, int taillePage, int pageEncours) {
110
 
111
		 	String motsClesFiltres[][] = observationMediateur.renvoyerFiltres() ;
112
 
113
 
114
			// ensuite on demande la page correspondante avec les mêmes critères
115
			String[][] criteres2 = { {"limite" ,""+taillePage },{"numero_page",""+pageEncours}, {motsClesFiltres[0][0], motsClesFiltres[0][1]}} ;
116
 
117
			// et on crée un DAO auquel on les transmet et qui envoie une requete pour recevoir les images
118
 
119
			ListeObservationAsynchroneDAO loaDAO = new ListeObservationAsynchroneDAO(this);
120
			loaDAO.obtenirListeObservation(r, observationMediateur.getIdentifiant(), criteres2);
121
	}
122
 
2 aperonnet 123
 
54 david 124
	/**
125
	 * Obtenir une liste de commune
126
	 * @param r
127
	 * @param critere
128
	 */
12 david 129
 
13 david 130
	public void obtenirListeReferentielCommune(Rafraichissable r, String critere) {
12 david 131
 
13 david 132
		ListeReferentielCommuneAsynchroneDAO refDAO=new ListeReferentielCommuneAsynchroneDAO(this);
133
		refDAO.obtenirListeDonnees(r, critere);
134
 
12 david 135
	}
20 david 136
 
54 david 137
	/**
138
	 * Obtenir une liste de nom scientifique de plante
139
	 * @param r
140
	 * @param critere
141
	 */
20 david 142
 
143
	public void obtenirListeReferentielNom(Rafraichissable r, String critere) {
144
 
145
		ListeReferentielNomAsynchroneDAO nomDAO=new ListeReferentielNomAsynchroneDAO(this);
146
		nomDAO.obtenirListeDonnees(r, critere);
147
 
148
	}
149
 
150
 
151
	/**
152
	 *
153
	 * Lance la creation d'une observation
154
	 * @param r : la vue demandeuse de donnee
155
	 * @param critere : les criteres de selection
156
	 */
157
 
39 david 158
	public void ajouterObservation(Rafraichissable r, Observation obs) {
20 david 159
 
160
		ObservationAsynchroneDAO obsDAO=new ObservationAsynchroneDAO(this);
39 david 161
		obsDAO.ajouter(r, observationMediateur.getIdentifiant(), obs);
20 david 162
 
163
	}
2 aperonnet 164
 
20 david 165
 
166
 
7 aperonnet 167
 
20 david 168
 
12 david 169
	/**
170
	 * Accesseur pour la configuration en cours d'utilisation
171
	 *
172
	 * @return la configuration
173
	 */
174
	public Configuration getConfig() {
175
 
176
		return config;
2 aperonnet 177
	}
178
 
12 david 179
 
54 david 180
 
181
	public void obtenirImageInformationRepartition( Rafraichissable r,String numeroNomenclaturalSaisiObservation) {
182
 
183
		ImageInformationRepartitionAsynchroneDAO repDAO=new ImageInformationRepartitionAsynchroneDAO(this);
184
		repDAO.obtenirURLImage(r, numeroNomenclaturalSaisiObservation);
185
 
186
 
187
	}
188
 
189
 
190
	public void obtenirImageGenerique( Rafraichissable r,String numeroNomenclaturalSaisiObservation) {
191
 
192
		ImageGeneriqueVueAsynchroneDAO imgDAO=new ImageGeneriqueVueAsynchroneDAO(this);
193
		imgDAO.obtenirURLImage(r, numeroNomenclaturalSaisiObservation);
194
 
195
 
196
	}
197
 
198
 
199
 
200
	public void obtenirArbreLocalites(Rafraichissable r) {
201
 
202
		ListeLocaliteObservationAsynchroneDAO locDAO = new ListeLocaliteObservationAsynchroneDAO(this);
203
		locDAO.obtenirListeLocalites(this);
204
 
205
 
206
	}
207
 
12 david 208
 
209
 
210
 
211
 
2 aperonnet 212
}