Subversion Repositories eFlore/Applications.coel

Rev

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