Subversion Repositories eFlore/Applications.coel

Rev

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