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