Subversion Repositories eFlore/Applications.cel

Rev

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