Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 1687 Rev 1764
1
package org.tela_botanica.client.modeles.personne;
1
package org.tela_botanica.client.modeles.personne;
2
 
2
 
3
import org.tela_botanica.client.Mediateur;
3
import org.tela_botanica.client.Mediateur;
4
import org.tela_botanica.client.RegistreId;
4
import org.tela_botanica.client.RegistreId;
5
import org.tela_botanica.client.interfaces.ListePaginable;
5
import org.tela_botanica.client.interfaces.ListePaginable;
6
import org.tela_botanica.client.interfaces.Rafraichissable;
6
import org.tela_botanica.client.interfaces.Rafraichissable;
7
import org.tela_botanica.client.modeles.aDonneeListe;
7
import org.tela_botanica.client.modeles.aDonneeListe;
8
 
8
 
9
import com.extjs.gxt.ui.client.Registry;
9
import com.extjs.gxt.ui.client.Registry;
10
import com.google.gwt.i18n.client.Dictionary;
10
import com.google.gwt.i18n.client.Dictionary;
11
import com.google.gwt.json.client.JSONArray;
11
import com.google.gwt.json.client.JSONArray;
12
import com.google.gwt.json.client.JSONNumber;
12
import com.google.gwt.json.client.JSONNumber;
13
import com.google.gwt.json.client.JSONObject;
13
import com.google.gwt.json.client.JSONObject;
-
 
14
import com.google.gwt.user.client.Window;
14
 
15
 
15
/**
16
/**
16
 * Classe contenant les informations sur les Personnes renvoyées par un objet de type DAO.
17
 * Classe contenant les informations sur les Personnes renvoyées par un objet de type DAO.
17
 * 
18
 * 
18
 * @author Grégoire DUCHÉ
19
 * @author Grégoire DUCHÉ
19
 * 
20
 * 
20
 */
21
 */
21
public class PersonneListe extends aDonneeListe<Personne> implements ListePaginable {
22
public class PersonneListe extends aDonneeListe<Personne> implements ListePaginable {
22
 
23
 
23
	private static final long serialVersionUID = 2930530504922300155L;
24
	private static final long serialVersionUID = 2930530504922300155L;
24
	private int currentPage = 0;
25
	private int currentPage = 0;
25
	private int nbElementsPage = Integer.valueOf(((Dictionary) Dictionary.getDictionary("configuration")).get("nbElementsPage"));
26
	private int nbElementsPage = Integer.valueOf(((Dictionary) Dictionary.getDictionary("configuration")).get("nbElementsPage"));
26
	private int nbElementsTotal;
27
	private int nbElementsTotal;
27
	private Rafraichissable vueARafraichir;
28
	private Rafraichissable vueARafraichir;
28
 
29
 
29
	/**
30
	/**
30
	 * Constructeur sans paramètres
31
	 * Constructeur sans paramètres
31
	 */
32
	 */
32
	public PersonneListe() {
33
	public PersonneListe() {
33
		super();
34
		super();
34
	}
35
	}
35
 
36
 
36
	/**
37
	/**
37
	 * Constructeur avec paramètre
38
	 * Constructeur avec paramètre
38
	 * 
39
	 * 
39
	 * @param taille la taille de la table de hachage
40
	 * @param taille la taille de la table de hachage
40
	 */
41
	 */
41
	public PersonneListe(int taille) {
42
	public PersonneListe(int taille) {
42
		super(taille);
43
		super(taille);
43
	}
44
	}
44
 
45
 
45
	/**
46
	/**
46
	 * Constructeur pour une liste de personne
47
	 * Constructeur pour une liste de personne
47
	 * 
48
	 * 
48
	 * @param dates
49
	 * @param dates
49
	 */
50
	 */
50
	public PersonneListe(JSONArray ListeDePersonnes) {
51
	public PersonneListe(JSONArray ListeDePersonnes) {
51
		super(ListeDePersonnes.size());
52
		super(ListeDePersonnes.size());
52
		initialiserPersonneListe(ListeDePersonnes);
53
		initialiserPersonneListe(ListeDePersonnes);
53
	}
54
	}
54
 
55
 
55
	public PersonneListe(JSONArray ListeDePersonnes, JSONNumber nbElements, Rafraichissable vueARafraichir) {
56
	public PersonneListe(JSONArray ListeDePersonnes, JSONNumber nbElements, Rafraichissable vueARafraichir) {
56
		super(ListeDePersonnes.size());
57
		super(ListeDePersonnes.size());
57
		this.nbElementsTotal = Integer.valueOf(nbElements.toString());
58
		this.nbElementsTotal = Integer.valueOf(nbElements.toString());
58
		this.vueARafraichir = vueARafraichir;
59
		this.vueARafraichir = vueARafraichir;
59
		initialiserPersonneListe(ListeDePersonnes);
60
		initialiserPersonneListe(ListeDePersonnes);
60
	}
61
	}
61
	
62
	
62
	private void initialiserPersonneListe(JSONArray ListeDePersonnes) {
63
	private void initialiserPersonneListe(JSONArray ListeDePersonnes) {
63
		final int taillemax = ListeDePersonnes.size();
64
		final int taillemax = ListeDePersonnes.size();
64
		for (int i = 0; i < taillemax; i++) {
65
		for (int i = 0; i < taillemax; i++) {
65
			JSONObject personneCourante = ListeDePersonnes.get(i).isObject();
66
			JSONObject personneCourante = ListeDePersonnes.get(i).isObject();
66
			if (personneCourante != null) {
67
			if (personneCourante != null) {
67
				Personne personne = new Personne(personneCourante);
68
				Personne personne = new Personne(personneCourante);
68
				this.put(personne.getId(), personne);
69
				this.put(personne.getId(), personne);
69
			}
70
			}
70
		}
71
		}
71
	}
72
	}
72
 
73
 
73
	public int[] getPageTable() {
74
	public int[] getPageTable() {
74
		int[] page = new int[4];
75
		int[] page = new int[4];
75
		// nombre de pages au total
76
		// nombre de pages au total
76
		page[0] = calculerNbPages();
77
		page[0] = calculerNbPages();
77
		// Page En Cours
78
		// Page En Cours
78
		page[1] = currentPage;
79
		page[1] = currentPage;
79
		// nbElementsParPage
80
		// nbElementsParPage
80
		page[2] = nbElementsPage;
81
		page[2] = nbElementsPage;
81
		// et le dernier le nombre total d'éléments
82
		// et le dernier le nombre total d'éléments
82
		page[3] = nbElementsTotal;
83
		page[3] = nbElementsTotal;
83
		return page;
84
		return page;
84
	}
85
	}
85
 
86
 
86
	/**
87
	/**
87
	 * Calcule le nombre de pages nécessaires pour afficher un nombre d'élements
88
	 * Calcule le nombre de pages nécessaires pour afficher un nombre d'élements
88
	 * donnés en fonction de la taille de page en cours
89
	 * donnés en fonction de la taille de page en cours
89
	 * 
90
	 * 
90
	 * @return le nombre de pages
91
	 * @return le nombre de pages
91
	 */
92
	 */
92
	public int calculerNbPages() {
93
	public int calculerNbPages() {
93
		// À cause de la bétise de java pour les conversion implicite, on fait quelques conversions manuellement
94
		// À cause de la bétise de java pour les conversion implicite, on fait quelques conversions manuellement
94
		// pour eviter qu'il arrondisse mal la division nombre de pages = (nombre d'element / taille de la page) 
95
		// pour eviter qu'il arrondisse mal la division nombre de pages = (nombre d'element / taille de la page) 
95
		// arrondie à l'entier supérieur.
96
		// arrondie à l'entier supérieur.
96
		double nPage = (1.0 * nbElementsTotal) / (1.0 * nbElementsPage);
97
		double nPage = (1.0 * nbElementsTotal) / (1.0 * nbElementsPage);
97
		double nPageRound = Math.ceil(nPage);
98
		double nPageRound = Math.ceil(nPage);
98
		Double nPageInt = new Double(nPageRound);
99
		Double nPageInt = new Double(nPageRound);
99
 
100
 
100
		// Convertion en entier
101
		// Convertion en entier
101
		return nPageInt.intValue();
102
		return nPageInt.intValue();
102
	}
103
	}
103
 
104
 
104
	public void changerNumeroPage(int pageCourante) {
105
	public void changerNumeroPage(int pageCourante) {
105
		currentPage = pageCourante;
106
		currentPage = pageCourante;
106
		selectionnerPersonne();
107
		selectionnerPersonne();
107
	}
108
	}
108
 
109
 
109
	public void changerTaillePage(int nouvelleTaillePage) {
110
	public void changerTaillePage(int nouvelleTaillePage) {
110
		nbElementsPage = nouvelleTaillePage;
111
		nbElementsPage = nouvelleTaillePage;
111
		selectionnerPersonne();
112
		selectionnerPersonne();
112
	}
113
	}
113
 
114
 
114
	public void recharger() {
115
	public void recharger() {
115
		selectionnerPersonne();
116
		selectionnerPersonne();
116
	}
117
	}
117
 
118
 
118
	public void setPageCourante(int pageCourante) {
119
	public void setPageCourante(int pageCourante) {
119
		this.currentPage = pageCourante;
120
		this.currentPage = pageCourante;
120
	}
121
	}
121
 
122
 
122
	public void setTaillePage(int taillePage) {
123
	public void setTaillePage(int taillePage) {
123
		this.nbElementsPage = taillePage;
124
		this.nbElementsPage = taillePage;
124
	}
125
	}
125
 
126
 
126
	public void selectionnerPersonne() {
127
	public void selectionnerPersonne() {
127
		Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
128
		Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
-
 
129
		// Utilisation d'une valeur nulle "typée" pour éviter un ambiguité sur l'appel de méthode et donc
-
 
130
		// une erreur
-
 
131
		Personne personne = new Personne();
128
		mediateur.selectionnerPersonne(vueARafraichir, null, mediateur.getProjetId(), currentPage, nbElementsPage, null);
132
		mediateur.selectionnerPersonne(vueARafraichir, personne, currentPage, nbElementsPage, null);
129
	}
133
	}
130
 
134
 
131
	public void filtrerParNom(String nom) {
135
	public void filtrerParNom(String nom) {
132
		Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
136
		Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
133
		Personne personne = new Personne();
137
		Personne personne = new Personne();
134
		personne.setNom("%" + nom + "%");
138
		personne.setNom("%" + nom + "%");
135
		mediateur.selectionnerPersonne(vueARafraichir, personne, mediateur.getProjetId(), currentPage, nbElementsPage, null);
139
		mediateur.selectionnerPersonne(vueARafraichir, personne, currentPage, nbElementsPage, null);
136
	}
140
	}
137
 
141
 
138
	public void filtrerParNomEtPage(String nom, int pageCourante) {
142
	public void filtrerParNomEtPage(String nom, int pageCourante) {
139
		currentPage = pageCourante;
143
		currentPage = pageCourante;
140
		filtrerParNom(nom);
144
		filtrerParNom(nom);
141
	}
145
	}
142
}
146
}