Subversion Repositories eFlore/Applications.coel

Rev

Rev 1415 | Rev 1513 | 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
/**
1166 jpm 16
 * Classe contenant les informations sur les Personnes renvoyées par un objet de type DAO.
102 jpm 17
 *
1166 jpm 18
 * @author Grégoire DUCHÉ
102 jpm 19
 *
20
 */
1166 jpm 21
public class PersonneListe extends aDonneeListe<Personne> implements ListePaginable {
1040 gduche 22
 
363 jp_milcent 23
	private static final long serialVersionUID = 2930530504922300155L;
593 gduche 24
	private int currentPage = 0;
1166 jpm 25
	private int nbElementsPage = Integer.valueOf(((Dictionary) Dictionary.getDictionary("configuration")).get("nbElementsPage"));
593 gduche 26
	private int nbElementsTotal;
27
	private Rafraichissable vueARafraichir;
1040 gduche 28
 
102 jpm 29
	/**
1040 gduche 30
	 * Constructeur sans paramètres
102 jpm 31
	 */
32
	public PersonneListe() {
33
		super();
34
	}
1040 gduche 35
 
102 jpm 36
	/**
37
	 * Constructeur avec paramètre
1040 gduche 38
	 *
1166 jpm 39
	 * @param taille la taille de la table de hachage
102 jpm 40
	 */
41
	public PersonneListe(int taille) {
42
		super(taille);
43
	}
1040 gduche 44
 
102 jpm 45
	/**
46
	 * Constructeur pour une liste de personne
1040 gduche 47
	 *
102 jpm 48
	 * @param dates
49
	 */
1166 jpm 50
	public PersonneListe(JSONArray ListeDePersonnes) {
51
		super(ListeDePersonnes.size());
52
		initialiserPersonneListe(ListeDePersonnes);
593 gduche 53
	}
1040 gduche 54
 
1166 jpm 55
	public PersonneListe(JSONArray ListeDePersonnes, JSONNumber nbElements, Rafraichissable vueARafraichir) {
56
		super(ListeDePersonnes.size());
593 gduche 57
		this.nbElementsTotal = Integer.valueOf(nbElements.toString());
1166 jpm 58
		this.vueARafraichir = vueARafraichir;
59
		initialiserPersonneListe(ListeDePersonnes);
60
	}
61
 
62
	private void initialiserPersonneListe(JSONArray ListeDePersonnes) {
63
		final int taillemax = ListeDePersonnes.size();
593 gduche 64
		for (int i = 0; i < taillemax; i++) {
1166 jpm 65
			JSONObject personneCourante = ListeDePersonnes.get(i).isObject();
1040 gduche 66
			if (personneCourante != null) {
593 gduche 67
				Personne personne = new Personne(personneCourante);
1040 gduche 68
				this.put(personne.getId(), personne);
593 gduche 69
			}
70
		}
102 jpm 71
	}
1040 gduche 72
 
593 gduche 73
	public int[] getPageTable() {
74
		int[] page = new int[4];
1040 gduche 75
		// nombre de pages au total
593 gduche 76
		page[0] = calculerNbPages();
1040 gduche 77
		// Page En Cours
593 gduche 78
		page[1] = currentPage;
1040 gduche 79
		// nbElementsParPage
593 gduche 80
		page[2] = nbElementsPage;
81
		// et le dernier le nombre total d'éléments
82
		page[3] = nbElementsTotal;
83
		return page;
84
	}
1040 gduche 85
 
593 gduche 86
	/**
1040 gduche 87
	 * 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
	 *
90
	 * @return le nombre de pages
593 gduche 91
	 */
748 jpm 92
	public int calculerNbPages() {
1166 jpm 93
		// À 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
		// arrondie à l'entier supérieur.
1040 gduche 96
		double nPage = (1.0 * nbElementsTotal) / (1.0 * nbElementsPage);
97
		double nPageRound = Math.ceil(nPage);
98
		Double nPageInt = new Double(nPageRound);
99
 
1166 jpm 100
		// Convertion en entier
1040 gduche 101
		return nPageInt.intValue();
593 gduche 102
	}
1040 gduche 103
 
593 gduche 104
	public void changerNumeroPage(int pageCourante) {
105
		currentPage = pageCourante;
106
		selectionnerPersonne();
107
	}
108
 
109
	public void changerTaillePage(int nouvelleTaillePage) {
110
		nbElementsPage = nouvelleTaillePage;
111
		selectionnerPersonne();
112
	}
1040 gduche 113
 
660 gduche 114
	public void recharger() {
115
		selectionnerPersonne();
116
	}
1040 gduche 117
 
593 gduche 118
	public void setPageCourante(int pageCourante) {
119
		this.currentPage = pageCourante;
654 gduche 120
	}
1040 gduche 121
 
122
	public void setTaillePage(int taillePage) {
654 gduche 123
		this.nbElementsPage = taillePage;
124
	}
1040 gduche 125
 
126
	public void selectionnerPersonne() {
127
		Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
1367 cyprien 128
		mediateur.selectionnerPersonne(vueARafraichir, null, mediateur.getProjetId(), currentPage, nbElementsPage, null);
593 gduche 129
	}
1040 gduche 130
 
131
	public void filtrerParNom(String nom) {
132
		Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
133
		Personne personne = new Personne();
1053 gduche 134
		personne.setNom("%" + nom + "%");
1367 cyprien 135
		mediateur.selectionnerPersonne(vueARafraichir, personne, mediateur.getProjetId(), currentPage, nbElementsPage, null);
1040 gduche 136
	}
363 jp_milcent 137
}