Subversion Repositories eFlore/Applications.coel

Rev

Rev 1135 | Details | Compare with Previous | Last modification | View Log | RSS feed

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