Subversion Repositories eFlore/Applications.coel

Rev

Rev 935 | Rev 1050 | 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.publication;
106 aurelien 2
 
1046 gduche 3
import org.tela_botanica.client.Mediateur;
4
import org.tela_botanica.client.RegistreId;
5
import com.google.gwt.i18n.client.Dictionary;
6
import org.tela_botanica.client.interfaces.ListePaginable;
7
import org.tela_botanica.client.interfaces.Rafraichissable;
935 jpm 8
import org.tela_botanica.client.modeles.aDonneeListe;
1046 gduche 9
import org.tela_botanica.client.modeles.structure.Structure;
935 jpm 10
 
1046 gduche 11
import com.extjs.gxt.ui.client.Registry;
708 jp_milcent 12
import com.google.gwt.json.client.JSONArray;
1046 gduche 13
import com.google.gwt.json.client.JSONNumber;
106 aurelien 14
import com.google.gwt.json.client.JSONObject;
15
 
1046 gduche 16
public class PublicationListe extends aDonneeListe<Publication> implements ListePaginable {
106 aurelien 17
 
18
	private static final long serialVersionUID = 2600314321196345072L;
1046 gduche 19
	private int currentPage = 0;
20
	private int nbElementsPage = Integer.valueOf(((Dictionary) Dictionary.getDictionary("configuration")).get("nbElementsPage"));
21
	private int nbElementsTotal;
22
	private Rafraichissable vueARafraichir;
23
 
706 jp_milcent 24
	public PublicationListe() {
25
		super();
26
	}
27
 
363 jp_milcent 28
	public PublicationListe(int taille) {
106 aurelien 29
		super(taille);
30
	}
363 jp_milcent 31
 
712 aurelien 32
	/**
33
	 * Constructeur pour une liste d'institutions
34
	 * @param dates
35
	 */
36
	public PublicationListe(JSONArray publications) {
37
 
38
		super(publications.size());
363 jp_milcent 39
 
712 aurelien 40
		int taille = publications.size();
41
		for (int i = 0; i < taille; i++) {
42
			JSONObject publicationCourante = publications.get(i).isObject() ;
363 jp_milcent 43
 
106 aurelien 44
			if (publicationCourante != null)	{
45
				Publication publication = new Publication(publicationCourante);
708 jp_milcent 46
				this.put(publication.getId(), publication);
106 aurelien 47
			}
48
		}
49
	}
1046 gduche 50
 
51
	public PublicationListe(JSONArray publicationListe, JSONNumber nbElements, Rafraichissable vueARafraichir) {
52
		super(publicationListe.size());
53
		this.nbElementsTotal = Integer.valueOf(nbElements.toString());
54
 
55
		final int taillemax = publicationListe.size();
56
		for (int i = 0; i < taillemax; i++) {
57
			JSONObject publication = publicationListe.get(i).isObject() ;
58
 
59
			if (publication != null)	{
60
				Publication publicationCourante = new Publication(publication);
61
				this.put(publicationCourante.getId(), publicationCourante);
62
			}
63
		}
64
 
65
		this.vueARafraichir = vueARafraichir;
66
	}
67
 
68
	@Override
69
	public void changerNumeroPage(int pageCourante) {
70
		currentPage = pageCourante;
71
		selectionnerPublication();
72
	}
73
 
74
	@Override
75
	public void changerTaillePage(int nouvelleTaillePage) {
76
		nbElementsPage = nouvelleTaillePage;
77
		selectionnerPublication();
78
	}
79
 
80
	@Override
81
	public void recharger() {
82
		selectionnerPublication();
83
	}
84
 
85
	public void setPageCourante(int pageCourante) {
86
		this.currentPage = pageCourante;
87
	}
88
 
89
	public void setTaillePage(int taillePage) {
90
		this.nbElementsPage = taillePage;
91
	}
92
 
93
	public int[] getPageTable() {
94
		int[] page = new int[4];
95
 
96
		// nombre de pages au total
97
		page[0] = calculerNbPages();
98
 
99
		// Page En Cours
100
		page[1] = currentPage;
101
 
102
		// nbElementsParPage
103
		page[2] = nbElementsPage;
104
 
105
		// et le dernier le nombre total d'éléments
106
		page[3] = nbElementsTotal;
107
 
108
		return page;
109
	}
110
 
111
	/**
112
	 * Calcule le nombre de pages nécessaires pour afficher un nombre d'élements
113
	 * donnés en fonction de la taille de page en cours
114
	 *
115
	 * @return le nombre de pages
116
	 */
117
	public int calculerNbPages() {
118
		// A cause de la betise de java pour les conversion implicite on fait
119
		// quelques conversions manuellement
120
		// pour eviter qu'il arrondisse mal la division
121
		// nombre de pages = (nombre d'element / taille de la page) arrondie à
122
		// l'entier superieur
123
 
124
		double nPage = (1.0 * nbElementsTotal) / (1.0 * nbElementsPage);
125
		double nPageRound = Math.ceil(nPage);
126
		Double nPageInt = new Double(nPageRound);
127
 
128
		// on convertit en entier
129
		return nPageInt.intValue();
130
	}
131
 
132
	public void selectionnerPublication()	{
133
		Mediateur mediateur =(Mediateur) Registry.get(RegistreId.MEDIATEUR);
134
		mediateur.selectionnerPublication(vueARafraichir, null, null, null, currentPage, nbElementsPage);
135
	}
136
 
137
	public void filtrerParNom(String nom)	{
138
		Mediateur mediateur =(Mediateur) Registry.get(RegistreId.MEDIATEUR);
139
		mediateur.selectionnerPublicationParNomComplet(vueARafraichir, null, nom);
140
	}
106 aurelien 141
}