Subversion Repositories eFlore/Applications.coel

Rev

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

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