Subversion Repositories eFlore/Applications.coel

Rev

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