Subversion Repositories eFlore/Applications.coel

Compare Revisions

No changes between revisions

Ignore whitespace Rev 1291 → Rev 1292

/trunk/src/org/tela_botanica/client/Mediateur.java
17,6 → 17,7
import org.tela_botanica.client.modeles.MenuApplicationId;
import org.tela_botanica.client.modeles.Utilisateur;
import org.tela_botanica.client.modeles.Valeur;
import org.tela_botanica.client.modeles.ValeurListe;
import org.tela_botanica.client.modeles.collection.Collection;
import org.tela_botanica.client.modeles.collection.CollectionACommentaire;
import org.tela_botanica.client.modeles.collection.CollectionACommentaireAsyncDao;
50,6 → 51,7
import org.tela_botanica.client.vues.NavigationVue;
import org.tela_botanica.client.vues.PopupChargement;
import org.tela_botanica.client.vues.StatutVue;
import org.tela_botanica.client.vues.MenuVue;
import org.tela_botanica.client.vues.accueil.AccueilVue;
import org.tela_botanica.client.vues.collection.CollectionForm;
import org.tela_botanica.client.vues.collection.CollectionListeVue;
68,9 → 70,11
import com.extjs.gxt.ui.client.GXT;
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.LayoutRegion;
import com.extjs.gxt.ui.client.data.DataProxy;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.MessageBoxEvent;
import com.extjs.gxt.ui.client.util.Margins;
import com.extjs.gxt.ui.client.widget.Component;
import com.extjs.gxt.ui.client.widget.Dialog;
import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.MessageBox;
351,27 → 355,35
// Rafraichissement du panneau Nord
panneauNord.rafraichir(info);
 
// Rafraichissement du panneau Centre
if (panneauCentre != null) {
panneauCentre.rafraichir(info);
}
}
 
public void modifierUtilisateur() {
Utilisateur utilisateurCourant = (Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT);
panneauNord.rafraichir(utilisateurCourant);
modele.modifierUtilisateur(this, utilisateurCourant);
}
 
//+----------------------------------------------------------------------------------------------------------------+
// GESTION DES VALEURS ET LISTES
//+----------------------------------------------------------------------------------------------------------------+
 
public void obtenirListeValeurEtRafraichir(Rafraichissable vueARafraichir, int listeId) {
modele.obtenirListeValeurs(vueARafraichir, "identifiant", listeId);
}
public void obtenirListeValeurEtRafraichir(Rafraichissable vueARafraichir, String listeId) {
modele.obtenirListeValeurs(vueARafraichir, ((Configuration) Registry.get(RegistreId.CONFIG)).getListeId(listeId));
}
public void obtenirListeValeurEtRafraichir(Rafraichissable vueARafraichir, String nomListe, boolean pagination, String recherche, int start, int nbElements) {
modele.obtenirListeValeurs(vueARafraichir, ((Configuration) Registry.get(RegistreId.CONFIG)).getListeId(nomListe), pagination, recherche, start, nbElements);
}
public void obtenirValeurEtRafraichir(Rafraichissable vue, String listeId, String identifiantValeur) {
modele.obtenirValeur(vue, "abv", ((Configuration) Registry.get(RegistreId.CONFIG)).getListeId(listeId), identifiantValeur);
}
1007,7 → 1019,7
if (personne.getId() != null && !personne.getId().trim().equals("")) {
modele.modifierPersonne(vue, personne);
} else {
modele.ajouterPersonne(vue, personne);
modele.ajouterPersonne(vue, personne);
}
}
1098,7 → 1110,7
modele.modifierPublication(vueARafraichir, publication);
}
public void supprimerPublication(Rafraichissable vueARafraichir, List<Publication> publicationsListe) {
public void supprimerPublication(Rafraichissable vueARafraichir, List<Publication> publicationsListe) {
if (publicationsListe != null && publicationsListe.size() > 0) {
String idPublicationSeparesParVirgule = "" ;
Iterator<Publication> it = publicationsListe.iterator();
1128,7 → 1140,7
modele.selectionPublicationAPersonne(vueARafraichir, publicationId, personnesId, roleId);
}
public void selectionnerPublicationAPersonne(Rafraichissable vueARafraichir, String publicationId, String personnesId, List<Valeur> roleId) {
public void selectionnerPublicationAPersonne(Rafraichissable vueARafraichir, String publicationId, String personnesId, List<Valeur> roleId) {
String roleIds = "";
Iterator<Valeur> itRole = roleId.iterator();
while (itRole.hasNext()) {
1140,7 → 1152,7
modele.selectionPublicationAPersonne(vueARafraichir, publicationId, personnesId, roleIds);
}
public void ajouterPublicationAPersonne(Rafraichissable vueARafraichir, String publicationId, PublicationAPersonneListe personnesAjoutees, String roleId) {
public void ajouterPublicationAPersonne(Rafraichissable vueARafraichir, String publicationId, PublicationAPersonneListe personnesAjoutees, String roleId) {
if (personnesAjoutees != null && personnesAjoutees.size() > 0) {
String idPublicationAPersonneSepareParVirgule = "" ;
for (Iterator<String> it = personnesAjoutees.keySet().iterator(); it.hasNext();) {
1150,10 → 1162,10
}
}
modele.ajouterPublicationAPersonne(vueARafraichir, publicationId, idPublicationAPersonneSepareParVirgule, roleId);
}
}
}
public void supprimerPublicationAPersonne(Rafraichissable vueARafraichir, PublicationAPersonneListe personnesSupprimees) {
public void supprimerPublicationAPersonne(Rafraichissable vueARafraichir, PublicationAPersonneListe personnesSupprimees) {
if (personnesSupprimees != null && personnesSupprimees.size() > 0) {
String idPublicationAPersonneSepareParVirgule = "" ;
for (Iterator<String> it = personnesSupprimees.keySet().iterator(); it.hasNext();) {
1163,11 → 1175,11
}
}
modele.supprimerPublicationAPersonne(vueARafraichir, idPublicationAPersonneSepareParVirgule);
}
}
}
//Lier plusieurs publication à une personne
public void ajouterPublicationAPersonne(Rafraichissable vueARafraichir, PublicationAPersonneListe listePublications, String personneId, String roleId) {
public void ajouterPublicationAPersonne(Rafraichissable vueARafraichir, PublicationAPersonneListe listePublications, String personneId, String roleId) {
if (listePublications!=null && listePublications.size()>0) {
String idsPubli = "";
String rolesIds = "";
1181,7 → 1193,7
}
}
modele.ajouterPublicationAPersonne(vueARafraichir, idsPubli, personneId, rolesIds);
}
}
}
//+----------------------------------------------------------------------------------------------------------------+
/trunk/src/org/tela_botanica/client/http
Property changes:
Added: svn:mergeinfo
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/http:r1136-1291
/trunk/src/org/tela_botanica/client/i18n
Property changes:
Added: svn:mergeinfo
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/i18n:r1136-1291
/trunk/src/org/tela_botanica/client/vues/PopupChargement.java
Property changes:
Added: svn:mergeinfo
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/PopupChargement.java:r1136-1291
/trunk/src/org/tela_botanica/client/vues/EnteteVue.java
Property changes:
Added: svn:mergeinfo
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/EnteteVue.java:r1136-1291
/trunk/src/org/tela_botanica/client/vues/StatutVue.java
Property changes:
Added: svn:mergeinfo
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/StatutVue.java:r1136-1291
/trunk/src/org/tela_botanica/client/vues/FiltreVue.java
Property changes:
Added: svn:mergeinfo
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/FiltreVue.java:r1136-1291
/trunk/src/org/tela_botanica/client/vues/Formulaire.java
110,6 → 110,7
public SelectionListener<ButtonEvent> creerEcouteurValidation() {
SelectionListener<ButtonEvent> ecouteur = new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
String code = ((Button) ce.getComponent()).getData("code");
if (code.equals(FormulaireBarreValidation.CODE_BOUTON_VALIDER)) {
if (mediateur.getUtilisateur().isIdentifie()) {
159,7 → 160,7
public void fermerFormulaire() {
clicBoutonvalidation = false;
panneauFormulaire.setEnabled(false);
mediateur.clicMenu(menuIdCourant);
mediateur.clicMenu(menuIdCourant);
}
/** Méthode simplifiant la création de FormLayout.
282,7 → 283,6
// FIXME : éviter le chevauchement du texte des cases à cocher avec le label "Autre" sur les petits écrans
LayoutContainer conteneur = new LayoutContainer();
conteneur.setLayout(creerFormLayout(50, LabelAlign.TOP));
autreChp.setId("autre-"+listeValeurs.getId());
autreChp.setFieldLabel("Autre");
autreChp.setLabelStyle("font-weight:normal;");
conteneur.add(autreChp, new FormData(500, 0));
/trunk/src/org/tela_botanica/client/vues/personne/PersonneDetailVue.java
17,6 → 17,7
import org.tela_botanica.client.modeles.publication.Publication;
import org.tela_botanica.client.modeles.publication.PublicationAPersonne;
import org.tela_botanica.client.modeles.publication.PublicationAPersonneListe;
import org.tela_botanica.client.util.Debug;
import org.tela_botanica.client.vues.DetailVue;
 
import com.extjs.gxt.ui.client.Registry;
231,7 → 232,7
+ " <b>Boite postale: </b>{boitePostale}<br />"
+ " <b>Code postal:</b>{codePostal} <br />"
+ " <b>Région:</b>{region}<br />"
+ " <span style='uppercase'>{pays}</span><br />"
+ " <b>Pays :</b><span style='uppercase'>{pays}</span><br />"
+ "</div>";
// Adresses :
Params paramAdresseTpl = new Params();
246,9 → 247,9
paramAdresseTpl.set("ville", (String) personne
.obtenirValeurChamp("ville"));
paramAdresseTpl.set("region", (String) personne
.obtenirValeurChamp("region"));
paramAdresseTpl.set("pays", (String) personne
.obtenirValeurChamp("pays"));
.obtenirValeurChamp("ce_truk_region"));
paramAdresseTpl.set("pays", construireTxtListeOntologie((String) personne
.obtenirValeurChamp("ce_truk_pays")));
 
afficherOnglet(tabAdresseTpl, paramAdresseTpl, tabAdresse);
tabAdresse.setStyleAttribute("padding", "15px");
/trunk/src/org/tela_botanica/client/vues/personne/PersonneForm.java
11,9 → 11,12
import org.tela_botanica.client.ComposantClass;
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.composants.ChampComboBoxRechercheTempsReelPaginable;
import org.tela_botanica.client.composants.ChampMultiValeurs;
import org.tela_botanica.client.composants.ChampMultiValeursImage;
import org.tela_botanica.client.composants.ChampMultiValeursMultiTypes;
import org.tela_botanica.client.composants.ChampMultiValeursMultiTypesPaginable;
import org.tela_botanica.client.composants.ChampMultiValeursPaginable;
import org.tela_botanica.client.composants.HashMapComposants;
import org.tela_botanica.client.configuration.Configuration;
import org.tela_botanica.client.images.Images;
34,9 → 37,13
import org.tela_botanica.client.util.UtilString;
import org.tela_botanica.client.vues.Formulaire;
 
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.data.ModelType;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.Style.SortDir;
import com.extjs.gxt.ui.client.Style.VerticalAlignment;
 
import com.extjs.gxt.ui.client.binding.FieldBinding;
55,6 → 62,10
 
import com.extjs.gxt.ui.client.widget.ContentPanel;
import org.tela_botanica.client.composants.InfoLogger;
import org.tela_botanica.client.composants.pagination.Proxy;
import org.tela_botanica.client.composants.pagination.ProxyValeur;
import org.tela_botanica.client.composants.pagination.TransformateurJSONaModelData;
 
import com.extjs.gxt.ui.client.widget.TabItem;
import com.extjs.gxt.ui.client.widget.TabPanel;
import com.extjs.gxt.ui.client.widget.Text;
83,6 → 94,7
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
import com.google.gwt.core.client.GWT;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Widget;
 
631,20 → 643,31
FieldSet fsInfosNat = new FieldSet();
fsInfosNat.setLayout(fl);
fsInfosNat.setTitle("Informations Naturaliste");
 
TextArea taBiographie = new TextArea();
taBiographie.setFieldLabel("Vie et renommée de l'auteur");
taBiographie.setWidth("400");
taBiographie.setName("biographie");
fsInfosNat.add(taBiographie, new FormData(800, 200));
 
ChampMultiValeurs specialite = new ChampMultiValeurs(i18nC.personneSpecialite());
fsInfosNat.add(specialite);
hmInfosNat.put("specialite", specialite);
 
ModelType typeTypes = new ModelType();
typeTypes.setRoot("valeurs");
typeTypes.setTotalName("nbElements");
typeTypes.addField("cmlv_nom");
typeTypes.addField("cmlv_id_valeur");
typeTypes.addField("cmlv_abreviation");
typeTypes.addField("cmlv_description");
ChampMultiValeursMultiTypes recolte = new ChampMultiValeursMultiTypes(i18nC.personneRecolte(), 200, 200);
recolte.initialiserType("pays");
String displayNameTypes = "cmlv_nom";
String nomListeTypes = "pays";
ProxyValeur<ModelData> proxyTypes = new ProxyValeur<ModelData>(nomListeTypes);
ChampMultiValeursMultiTypesPaginable recolte = new ChampMultiValeursMultiTypesPaginable(i18nC.personneRecolte(), 450, false, null, null, null, typeTypes, proxyTypes, displayNameTypes);
hmInfosNat.put("recolte", recolte);
fsInfosNat.add(recolte);
tiInfosNat.add(fsInfosNat);
772,18 → 795,15
// RAFRAICHISSEMENT DU PANNEAU
 
public void rafraichir(Object nouvellesDonnees) {
 
if (nouvellesDonnees instanceof PublicationAPersonneListe) {
Information info = new Information();
info.setType("publication_liees");
info.setDonnee(0, (PublicationAPersonneListe) nouvellesDonnees);
tiPubli.rafraichir(info);
 
} else if (nouvellesDonnees instanceof ValeurListe) {
} else if (nouvellesDonnees instanceof ValeurListe) {
ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees;
// Créer une liste de valeurs
List<Valeur> liste = new ArrayList<Valeur>();
for (Iterator<String> it = listeValeurs.keySet().iterator(); it.hasNext();) {
820,7 → 840,7
} else if (listeValeurs.getId().equals(config.getListeId("pays"))) {
remplirCombobox("cbPays", liste, "hmAdresse");
} else if (listeValeurs.getId().equals(config.getListeId("region"))) {
remplirCombobox("cbRegion", liste, "hmAdresse");
remplirCombobox("cbRegion", liste, "hmAdresse");
mettreAJourRegion();
hmAdresse.getComboBox("cbRegion").setVisible(true);
961,7 → 981,7
}
private void mettreAJourPersonne(Personne personne) {
 
//Mise à jour de la personne
//Personne personne = (Personne) nouvellesDonnees;
ComboBox cbProjets = hmIdentite.getComboBox("cbProjets");
1045,6 → 1065,8
//Pays
String strPays = personne.get("ce_truk_pays");
ComboBox<Valeur> cbPays = hmAdresse.getComboBoxValeur("cbPays");
cbPays.getStore().sort("nom", SortDir.ASC);
if (cbPays.getStore().findModel("id_valeur", strPays) != null) {
cbPays.setValue(cbPays.getStore().findModel("id_valeur", strPays));
cbPays.fireEvent(Events.OnChange);
1077,8 → 1099,8
* -----------------------------------------------------*/
hmInfosNat.getChampMultiValeurs("specialite").peupler(personne.getString("ce_truk_specialite"));
String tr = personne.getString("truk_recolte");
hmInfosNat.getChampMultiValeursMultiTypes("recolte").peupler(tr);
String tr = personne.getString("truk_recolte");
hmInfosNat.getChampMultiValeursMultiTypesPaginable("recolte").peupler(tr);
//Onglet publi
tiPubli.mettreAJourPersonne();
1117,7 → 1139,7
mettreAJourPersonne(personneSauvegarde);
mediateur.masquerPopinChargement();
}
 
public void binderPersonne(Personne personne) {
binding = new FormBinding(getFormulaire());
1130,7 → 1152,7
binding.bind(personneSelectionnee);
layout();
}
 
private String obtenirValeurCombo(String strComboName) {
String strValeur = "";
Valeur valeur;
1264,12 → 1286,13
personneSelectionnee.setNonDecedee();
}
strValeur = obtenirValeurCombo("cbPays");
strValeur = obtenirValeurCombo("cbPays");
personneSelectionnee.set("ce_truk_pays", strValeur);
strValeur = obtenirValeurCombo("cbRegion");
ComboBox<Valeur> cbRegions = hmAdresse.getComboBoxValeur("cbRegion");
if (cbRegions.getStore().findModel("id", strValeur) == null) {
if (cbRegions.getStore().findModel("id_valeur", strValeur) == null) {
strValeur = "AUTRE##" + strValeur;
}
personneSelectionnee.set("ce_truk_region", strValeur);
1282,7 → 1305,7
personneSelectionnee.set("truk_url", hmIdentite.getChampMultiValeurs("sites").getValeurs());
//Infos Naturalistes
String recolte = ((ChampMultiValeursMultiTypes) hmInfosNat.get("recolte")).getValeurs();
String recolte = ((ChampMultiValeursMultiTypesPaginable) hmInfosNat.get("recolte")).getValeurs();
personneSelectionnee.set("truk_recolte", recolte);
String specialite = ((ChampMultiValeurs) hmInfosNat.get("specialite")).getValeurs();
/trunk/src/org/tela_botanica/client/vues/collection
Property changes:
Added: svn:mergeinfo
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/collection:r1136-1291
/trunk/src/org/tela_botanica/client/vues/FenetreForm.java
Property changes:
Added: svn:mergeinfo
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/FenetreForm.java:r1136-1291
/trunk/src/org/tela_botanica/client/vues/FormulaireOnglet.java
Property changes:
Added: svn:mergeinfo
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/FormulaireOnglet.java:r1136-1291
/trunk/src/org/tela_botanica/client/vues/NavigationVue.java
Property changes:
Added: svn:mergeinfo
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/NavigationVue.java:r1136-1291
/trunk/src/org/tela_botanica/client/vues/structure
Property changes:
Added: svn:mergeinfo
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/structure:r1136-1291
/trunk/src/org/tela_botanica/client/vues/DetailVue.java
Property changes:
Added: svn:mergeinfo
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/DetailVue.java:r1136-1291
/trunk/src/org/tela_botanica/client/vues/FenetreJournal.java
Property changes:
Added: svn:mergeinfo
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/FenetreJournal.java:r1136-1291
/trunk/src/org/tela_botanica/client/vues/commentaire
Property changes:
Added: svn:mergeinfo
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/commentaire:r1136-1291
/trunk/src/org/tela_botanica/client/vues/projet
Property changes:
Added: svn:mergeinfo
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/projet:r1136-1291
/trunk/src/org/tela_botanica/client/vues/MenuVue.java
Property changes:
Added: svn:mergeinfo
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/MenuVue.java:r1136-1291
/trunk/src/org/tela_botanica/client/vues/BarrePaginationVue.java
Property changes:
Added: svn:mergeinfo
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/BarrePaginationVue.java:r1136-1291
/trunk/src/org/tela_botanica/client/vues/accueil
Property changes:
Added: svn:mergeinfo
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/accueil:r1136-1291
/trunk/src/org/tela_botanica/client/vues/publication
Property changes:
Added: svn:mergeinfo
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/publication:r1136-1291
/trunk/src/org/tela_botanica/client/vues/ContenuVue.java
Property changes:
Added: svn:mergeinfo
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/ContenuVue.java:r1136-1291
/trunk/src/org/tela_botanica/client/vues/FormulaireBarreValidation.java
Property changes:
Added: svn:mergeinfo
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/FormulaireBarreValidation.java:r1136-1291
/trunk/src/org/tela_botanica/client/interfaces
Property changes:
Added: svn:mergeinfo
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/interfaces:r1136-1291
/trunk/src/org/tela_botanica/client/Modele.java
52,7 → 52,16
ValeurListeAsyncDao lsDao = new ValeurListeAsyncDao(vue);
lsDao.obtenirListe(id);
}
 
public void obtenirListeValeurs(Rafraichissable vue, String type, int id) {
ValeurListeAsyncDao lsDao = new ValeurListeAsyncDao(vue);
lsDao.obtenirListe(type, String.valueOf(id));
}
public void obtenirListeValeurs(Rafraichissable vue, Integer listId, boolean pagination, String recherche, int start, int nbElements) {
ValeurListeAsyncDao lsDao = new ValeurListeAsyncDao(vue);
lsDao.obtenirListe(listId, pagination, recherche, start, nbElements);
}
public void obtenirListeRegion(Rafraichissable vue, Integer id, String region) {
ValeurListeAsyncDao lsDao = new ValeurListeAsyncDao(vue);
/trunk/src/org/tela_botanica/client/composants/HashMapComposants.java
32,10 → 32,18
return (ChampMultiValeurs) get(name);
}
public ChampMultiValeursPaginable getChampMultiValeursPaginable(String name) {
return (ChampMultiValeursPaginable) get(name);
}
public ChampMultiValeursMultiTypes getChampMultiValeursMultiTypes(String name) {
return (ChampMultiValeursMultiTypes) get(name);
}
public ChampMultiValeursMultiTypesPaginable getChampMultiValeursMultiTypesPaginable(String name) {
return (ChampMultiValeursMultiTypesPaginable) get(name);
}
public ChampMultiValeursImage getChampMultiValeursImage(String name) {
return (ChampMultiValeursImage) get(name);
}
/trunk/src/org/tela_botanica/client/composants/ChampMultiValeursMultiTypesPaginable.java
New file
0,0 → 1,281
package org.tela_botanica.client.composants;
 
import java.util.HashMap;
 
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.composants.pagination.Proxy;
import org.tela_botanica.client.configuration.Configuration;
import org.tela_botanica.client.images.Images;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Valeur;
import org.tela_botanica.client.modeles.ValeurListe;
import org.tela_botanica.client.modeles.aDonnee;
import org.tela_botanica.client.util.Debug;
import org.tela_botanica.client.vues.Formulaire;
 
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.data.ModelType;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.FieldEvent;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.Component;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.extjs.gxt.ui.client.widget.Text;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.ComboBox;
import com.extjs.gxt.ui.client.widget.form.Field;
import com.extjs.gxt.ui.client.widget.form.HiddenField;
import com.extjs.gxt.ui.client.widget.form.LabelField;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
import com.extjs.gxt.ui.client.widget.layout.ColumnData;
import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
 
public class ChampMultiValeursMultiTypesPaginable extends ChampMultiValeursPaginable implements Rafraichissable {
 
//-------------//
// ATTRIBUTS //
//-------------//
// Elements pour le champ 'types'
ColumnData colonneChampTypes = null;
ChampComboBoxRechercheTempsReelPaginable champTypesComboBox = null;
int largeurChampTypes = 200;
String displayNameChampTypes = "nom";
// Elements pour gérer le type de valeurs que contient le champ
Proxy proxyChampTypes = null;
ModelType modeltypeChampTypes = null;
 
// Variables de traitement
HashMap<Integer, String> tempMapValeurs = null;
//-------------//
// METHODES //
//-------------//
 
/*--------------
Constructeur
--------------*/
public ChampMultiValeursMultiTypesPaginable(String label, int largeurTotale, boolean estCombobox, ModelType modeltypeChampValeur, Proxy proxyChampValeur, String displayNameChampValeur, ModelType modeltypeChampTypes, Proxy proxyChampTypes, String displayNameChampTypes) {
super(label, largeurTotale, estCombobox, modeltypeChampValeur, proxyChampValeur, displayNameChampValeur);
this.proxyChampTypes = proxyChampTypes;
this.modeltypeChampTypes = modeltypeChampTypes;
this.displayNameChampTypes = displayNameChampTypes;
initialiserChampMultiValeursMultiTypesPaginable(label);
}
 
/*------------
Accesseurs
------------*/
//------------//
// Get //------------------------------------------------------------
public ChampComboBoxRechercheTempsReelPaginable getChampTypesComboBox() {
return this.champTypesComboBox;
}
//------------//
// Set //------------------------------------------------------------
@Override
public void setLargeurTotale(int largeurTotale) {
this.largeurTotale = largeurTotale;
largeurChampValeur = largeurTotale - largeurBouton - largeurChampTypes;
}
/*-------------------------------------------
Méthodes protégées et méthodes publiques
--------------------------------------------*/
@Override
public void rafraichir(Object nouvellesDonnees) {
super.rafraichir(nouvellesDonnees);
if (nouvellesDonnees instanceof ValeurListe) {
Valeur v = ((ValeurListe)nouvellesDonnees).toList().get(0);
ajouterValeur(tempMapValeurs.get(Integer.parseInt(v.getId())), v.getNom(), v.getId());
}
}
@Override
protected void ajouterValeur(final String texte, final String type, final String id) {
LayoutContainer colonneConteneur = new LayoutContainer();
colonneConteneur.setLayout(new ColumnLayout());
valeurs.put(id + aDonnee.SEPARATEUR_TYPE_VALEUR + texte, colonneConteneur);
Text champType = new Text();
champType.setText(type + " : ");
champType.setWidth(largeurChampTypes);
colonneConteneur.add(champType, new ColumnData(largeurChampTypes));
Text champValeur = new Text();
champValeur.setText(texte);
champValeur.setWidth(largeurChampTypes);
colonneConteneur.add(champValeur, new ColumnData(largeurChampTypes));
Button supprimerBouton = new Button();
supprimerBouton.setIcon(Images.ICONES.supprimer());
supprimerBouton.setText(boutonSupprimerLabel);
supprimerBouton.setData("valeur", id + aDonnee.SEPARATEUR_TYPE_VALEUR + texte);
supprimerBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
String valeur = ce.getComponent().getData("valeur");
LayoutContainer valeurLayout = valeurs.get(valeur);
principalLayout.remove(valeurLayout);
valeurs.remove(valeur);
supprimerValeurDuRecapitulatif(valeur);
actualiserLayoutGlobal();
}
});
colonneConteneur.add(supprimerBouton, new ColumnData(largeurBouton));
// Ajout du layout de la valeur au layout principal
principalLayout.add(colonneConteneur);
// Ajout de la valeur au champ récapitulatif des valeurs ajoutées
if (champValeurEstComboBox && champValeurComboBox!=null && champValeurComboBox.getValeur()!=null) {
// FIXME
// je comprends pas la raison d'être de cette ligne
ajouterValeurAuRecapitulatif(champValeurComboBox.getValeur().getId(), id);
} else {
ajouterValeurAuRecapitulatif(texte, id);
}
reinitialiserChamp();
actualiserLayoutGlobal();
}
 
@Override
public void peupler(String chaineExistante) {
if (valeurs.size() > 0) {
reinitialiser();
}
if (chaineExistante != null && !chaineExistante.trim().equals("")) {
String[] valeurs = chaineExistante.split(aDonnee.SEPARATEUR_VALEURS);
for (int i = 0; i < valeurs.length; i++) {
String[] idEtValeur = valeurs[i].split(aDonnee.SEPARATEUR_TYPE_VALEUR);
String idType = idEtValeur[0];
String idValeur = idEtValeur[1];
// Champ Valeur
tempMapValeurs.put(Integer.parseInt(idType), idValeur);
 
// Champ Types
mediateur.obtenirListeValeurEtRafraichir(this, Integer.parseInt(idType));
}
}
}
 
/*------------------
Méthodes privées
------------------*/
private void initialiserChampMultiValeursMultiTypesPaginable(String label) {
setLargeurTotale(largeurTotale);
tempMapValeurs = new HashMap<Integer,String>();
creerChampMultiValeursMultiTypes();
}
 
private void creerChampMultiValeursMultiTypes() {
/* Creation du champ Types */
champTypesComboBox = new ChampComboBoxRechercheTempsReelPaginable(proxyChampTypes, modeltypeChampTypes, displayNameChampTypes);
champTypesComboBox.setWidth(largeurChampTypes);
champTypesComboBox.getCombo().setEmptyText("Type...");
champTypesComboBox.addListener(Events.Select, new Listener<FieldEvent>() {
public void handleEvent(FieldEvent fe) {
 
}
});
 
/* Placement des éléments dans le conteneur */
// le champ "types" doit être graphiquement placé avant les autres champs,
// on doit donc retirer ces derniers avant d'insérer le champ "types"
colonneConteneur.removeAll();
colonneConteneur.setWidth(largeurTotale);
colonneChampTypes = new ColumnData(largeurChampTypes);
colonneChampTypes.setWidth(largeurChampTypes);
colonneConteneur.add(champTypesComboBox, colonneChampTypes);
if (champValeurEstComboBox) {
champValeurComboBox.setWidth(largeurChampValeur);
colonneChampValeur.setWidth(largeurChampValeur);
colonneConteneur.add(champValeurComboBox, colonneChampValeur);
} else {
champValeurTxt.setWidth(largeurChampValeur);
colonneChampValeur.setWidth(largeurChampValeur);
colonneConteneur.add(champValeurTxt, colonneChampValeur);
}
ajouterBouton.setWidth(largeurBouton);
colonneBoutonAjouter.setWidth(largeurBouton);
colonneConteneur.add(ajouterBouton, colonneBoutonAjouter);
 
/* Modification de l'écouteur du bouton Ajouter */
ajouterBouton.removeAllListeners();
ajouterBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
// récupération de la valeur du champ "Valeur"
String valeurChamp = "";
if (champValeurEstComboBox) {
if (champValeurComboBox.getValeur() != null) {
valeurChamp = champValeurComboBox.getValeur().getNom();
}
} else {
valeurChamp = champValeurTxt.getValue();
}
// validation de la valeur avant ajout
if ((valeurChamp == null) || valeurChamp.trim().equals("") || valeurChamp.trim().equals(valeurParDefaut)) {
MessageBox.alert(titreErreur, valeurVideMsg, null);
} else if (valeurs.get(valeurChamp) != null){
MessageBox.alert(titreErreur, valeurIdentiqueMsg, null);
} else {
if (validationMasque != null && !valeurChamp.matches(validationMasque)) {
MessageBox.alert(titreErreur, valeurNonValideMsg, null);
} else {
String type = "";
String id = "";
Valeur valeur = champTypesComboBox.getValeur();
 
if (valeur != null) {
type = valeur.getNom();
id = valeur.getId();
} else {
type = champTypesComboBox.getCombo().getRawValue();
id = type;
}
 
if (type.trim().equals("")) {
MessageBox.alert(Mediateur.i18nM.titreErreurSaisie(), Mediateur.i18nM.typeChampMulti(), null);
} else {
ajouterValeur(valeurChamp, type, id);
}
}
}
}
});
}
private void ajouterValeurAuRecapitulatif(String texte, String id) {
String texteRecapitulatif = "";
if (champRecapitulatif.getValue() != null) {
texteRecapitulatif = champRecapitulatif.getValue();
}
texteRecapitulatif += id + aDonnee.SEPARATEUR_TYPE_VALEUR + texte + aDonnee.SEPARATEUR_VALEURS;
champRecapitulatif.setValue(texteRecapitulatif);
}
}
/trunk/src/org/tela_botanica/client/composants/ChampMultiValeursPaginable.java
New file
0,0 → 1,348
package org.tela_botanica.client.composants;
 
import java.util.HashMap;
 
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.composants.pagination.Proxy;
import org.tela_botanica.client.composants.pagination.ProxyValeur;
import org.tela_botanica.client.images.Images;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Valeur;
import org.tela_botanica.client.modeles.aDonnee;
import org.tela_botanica.client.util.Debug;
 
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.data.ModelType;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.FieldEvent;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.extjs.gxt.ui.client.widget.Text;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.ComboBox;
import com.extjs.gxt.ui.client.widget.form.Field;
import com.extjs.gxt.ui.client.widget.form.HiddenField;
import com.extjs.gxt.ui.client.widget.form.LabelField;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
import com.extjs.gxt.ui.client.widget.layout.ColumnData;
import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
 
public class ChampMultiValeursPaginable extends LayoutContainer implements Rafraichissable {
//TODO : changer le champRecapitulatif par une hashMap
//TODO : autoriser la modification des champs saisis
 
//-------------//
// ATTRIBUTS //
//-------------//
Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
String idChampCache = null;
String titreErreur = null;
String valeurVideMsg = null;
String valeurIdentiqueMsg = null;
String valeurNonValideMsg = null;
String valeurParDefaut = "";
String validationMasque = null;
String exempleValidation = null;
boolean champValeurEstComboBox = false;
 
// Elements pour le champ 'valeurs'
Field<String> champValeurTxt = null;
ChampComboBoxRechercheTempsReelPaginable champValeurComboBox = null;
HiddenField<String> champRecapitulatif = null;
HashMap<String, LayoutContainer> valeurs = null;
// Elements pour gérer le type de valeurs que contient le champ
Proxy proxyChampValeur = null;
ModelType modeltypeChampValeur = null;
String displayNameChampValeur = "nom";
// Elements pour l'UI
LayoutContainer principalLayout = null;
LayoutContainer colonneConteneur = null;
ColumnData colonneChampValeur = null;
ColumnData colonneBoutonAjouter = null;
Button ajouterBouton = null;
int largeurTotale = 500;
int largeurBouton = 20;
int largeurChampValeur = 200;
String boutonSupprimerLabel = "";
String nomLabelChampTxt = "";
 
 
//-------------//
// METHODES //
//-------------//
 
/*--------------
Constructeur
--------------*/
// Usage : Si champValeurEstComboBox est FAUX alors modeltype, proxy et displayName doivent être à Null.
// Sinon ils doivent impérativement être non nuls.
public ChampMultiValeursPaginable(String label, int largeurTotale, boolean champValeurEstComboBox, ModelType modeltype, Proxy proxy, String displayName) {
this.champValeurEstComboBox = champValeurEstComboBox;
if (champValeurEstComboBox) {
if ((proxy == null) || (modeltype == null) || (displayName == null)) {
MessageBox.alert("[ERREUR]","Constructeur de ChampMultiValeursPaginable - paramètre Null",null);
}
else {
this.proxyChampValeur = proxy;
this.modeltypeChampValeur = modeltype;
this.displayNameChampValeur = displayName;
}
}
initialiserChampMultiValeursPaginable(label, largeurTotale);
}
 
/*------------
Accesseurs
------------*/
//------------//
// Get //------------------------------------------------------------
public ChampComboBoxRechercheTempsReelPaginable getChampValeurComboBox() {
if (champValeurEstComboBox) return this.champValeurComboBox;
else return null;
}
 
public Field getChampValeurTxt() {
if (!champValeurEstComboBox) return this.champValeurTxt;
else return null;
}
public String getLabel() {
return this.nomLabelChampTxt;
}
public String getValeurs() {
String texteRecapitulatif = "";
if (champRecapitulatif.getValue() != null) {
texteRecapitulatif = champRecapitulatif.getValue();
texteRecapitulatif = texteRecapitulatif.replaceAll("(.*)"+aDonnee.SEPARATEUR_VALEURS+"$", "$1");
}
return texteRecapitulatif;
}
//------------//
// Set //------------------------------------------------------------
public void setLabel(String label) {
if (label == null) {
label = "";
}
nomLabelChampTxt = label;
}
public void setLargeurTotale(int largeur) {
this.largeurTotale = largeur;
largeurChampValeur = largeurTotale - largeurBouton;
}
public void setValidation (String validation, String exempleValidation) {
this.validationMasque = validation;
this.exempleValidation = exempleValidation;
this.valeurNonValideMsg = Mediateur.i18nM.valeurNonValideMsg(exempleValidation);
}
public void setValeurParDefaut(String valeur) {
this.valeurParDefaut = valeur;
champValeurTxt.setValue(valeur);
}
public void setValeurBoutonSupprimer(String valeur) {
this.boutonSupprimerLabel = valeur;
}
/*------------------
Méthodes publiques
-------------------*/
public void peupler(String chaineExistante) {
if (valeurs.size()>0) {
reinitialiser();
}
if (chaineExistante != null && !chaineExistante.trim().equals("")) {
String[] valeurs = chaineExistante.split(aDonnee.SEPARATEUR_VALEURS);
for (int i = 0; i < valeurs.length; i++) {
ajouterValeur(valeurs[i]);
}
}
}
@Override
public void rafraichir(Object nouvellesDonnees) {
}
/*-------------------
Méthodes protégées
--------------------*/
protected void ajouterValeur(final String texte, final String strValeur, final String id) {
//Implémenté dans classe inférieure
}
protected void ajouterValeur(final String texte) {
LayoutContainer colonneLayout = new LayoutContainer();
colonneLayout.setLayout(new ColumnLayout());
valeurs.put(texte, colonneLayout);
Text champTxt = new Text();
champTxt.setText(texte);
colonneLayout.add(champTxt, new ColumnData(largeurChampValeur));
Button supprimerBouton = new Button();
supprimerBouton.setIcon(Images.ICONES.supprimer());
supprimerBouton.setText(boutonSupprimerLabel);
supprimerBouton.setData("valeur", texte);
supprimerBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
String valeur = ce.getComponent().getData("valeur");
LayoutContainer valeurLayout = valeurs.get(valeur);
principalLayout.remove(valeurLayout);
valeurs.remove(valeur);
supprimerValeurDuRecapitulatif(valeur);
actualiserLayoutGlobal();
}
});
colonneLayout.add(supprimerBouton, new ColumnData(largeurBouton));
// Ajout du layout de la valeur au layout principal
principalLayout.add(colonneLayout);
// Ajout de la valeur au champ récapitulatif des valeurs ajoutées
ajouterValeurAuRecapitulatif(texte);
reinitialiserChamp();
actualiserLayoutGlobal();
}
protected void reinitialiserChamp() {
if (champValeurEstComboBox) {
champValeurComboBox.getCombo().clear();
} else {
champValeurTxt.setValue(valeurParDefaut);
}
}
protected void actualiserLayoutGlobal() {
layout();
}
protected void ajouterValeurAuRecapitulatif(String texte) {
String texteRecapitulatif = "";
if (champRecapitulatif.getValue() != null) {
texteRecapitulatif = champRecapitulatif.getValue();
}
texteRecapitulatif += texte + aDonnee.SEPARATEUR_VALEURS;
champRecapitulatif.setValue(texteRecapitulatif);
}
protected void supprimerValeurDuRecapitulatif(String texte) {
if (champRecapitulatif.getValue() != null) {
String texteRecapitulatif = champRecapitulatif.getValue();
texteRecapitulatif = texteRecapitulatif.replace(texte + aDonnee.SEPARATEUR_VALEURS, "");
champRecapitulatif.setValue(texteRecapitulatif);
}
}
protected void reinitialiser() {
//TODO : pourrait etre mieux fait si les valeurs étaient enregistrées dans un
// layout particulier. Il suffirait alors d'enlever les valeurs de ce layout.
principalLayout.removeAll();
initialiserChampMultiValeursPaginable(nomLabelChampTxt, largeurTotale);
}
/*------------------
Méthodes privées
-------------------*/
private void initialiserChampMultiValeursPaginable(String label, int largeurTotale) {
setLabel(label);
setLargeurTotale(largeurTotale);
titreErreur = Mediateur.i18nC.erreurSaisieTitre();
valeurVideMsg = Mediateur.i18nC.demanderValeur();
valeurIdentiqueMsg = Mediateur.i18nC.valeurDejaPresente();
valeurs = new HashMap<String, LayoutContainer>();
champRecapitulatif = new HiddenField<String>();
champRecapitulatif.setValue("");
setLayout(new FormLayout());
creerChampMultiValeurs();
}
 
private void creerChampMultiValeurs() {
principalLayout = new LayoutContainer();
principalLayout.setLayout(new RowLayout());
/* Creation du champ Valeur */
LabelField label = new LabelField(nomLabelChampTxt + ":");
label.setWidth("95%");
principalLayout.add(label);
colonneConteneur = new LayoutContainer();
colonneConteneur.setLayout(new ColumnLayout());
colonneChampValeur = new ColumnData(largeurChampValeur);
if (champValeurEstComboBox) {
champValeurComboBox = new ChampComboBoxRechercheTempsReelPaginable(proxyChampValeur, modeltypeChampValeur, displayNameChampValeur);
champValeurComboBox.setWidth(largeurChampValeur);
champValeurComboBox.getCombo().setEmptyText("Valeur...");
colonneConteneur.add(champValeurComboBox, colonneChampValeur);
} else {
champValeurTxt = new TextField<String>();
champValeurTxt.setWidth(largeurChampValeur);
champValeurTxt.setEmptyText("Valeur...");
colonneConteneur.add(champValeurTxt, colonneChampValeur);
}
/* Creation du bouton Ajouter */
ajouterBouton = new Button();
ajouterBouton.setWidth(largeurBouton);
ajouterBouton.setIcon(Images.ICONES.ajouter());
ajouterBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
// récupération de la valeur du champ "Valeur"
String valeurChamp = "";
if (champValeurEstComboBox) {
if (champValeurComboBox.getValeur() != null) {
valeurChamp = champValeurComboBox.getValeur().getNom();
}
} else {
valeurChamp = champValeurTxt.getValue();
}
// validation de la valeur avant ajout
if ((valeurChamp == null) || valeurChamp.trim().equals("") || valeurChamp.trim().equals(valeurParDefaut)) {
MessageBox.alert(titreErreur, valeurVideMsg, null);
} else if (valeurs.get(valeurChamp) != null){
MessageBox.alert(titreErreur, valeurIdentiqueMsg, null);
} else {
if (validationMasque != null && !valeurChamp.matches(validationMasque)) {
MessageBox.alert(titreErreur, valeurNonValideMsg, null);
} else {
ajouterValeur(valeurChamp);
}
}
}
});
colonneBoutonAjouter = new ColumnData(largeurBouton);
colonneConteneur.add(ajouterBouton, colonneBoutonAjouter);
principalLayout.add(champRecapitulatif);
principalLayout.add(colonneConteneur);
add(principalLayout);
}
}
/trunk/src/org/tela_botanica/client/composants/pagination/ProxyValeur.java
New file
0,0 → 1,73
package org.tela_botanica.client.composants.pagination;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
 
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.ValeurListe;
import org.tela_botanica.client.modeles.ValeurListeAsyncDao;
import org.tela_botanica.client.util.Debug;
 
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.data.BasePagingLoadConfig;
import com.extjs.gxt.ui.client.data.BasePagingLoadResult;
import com.extjs.gxt.ui.client.data.DataReader;
import com.extjs.gxt.ui.client.data.MemoryProxy;
import com.extjs.gxt.ui.client.data.ModelData;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.user.client.rpc.AsyncCallback;
 
public class ProxyValeur<D> extends Proxy {
private String nomListe = "";
public ProxyValeur(String nomListe) {
super();
this.nomListe = nomListe;
}
@Override
public void load(TransformateurJSONaModelData reader, Object loadConfig, AsyncCallback callback, String recherche) {
this.reader = reader;
this.callback = callback;
this.loadConfig = loadConfig;
 
BasePagingLoadConfig lc = (BasePagingLoadConfig)loadConfig;
mediateur.obtenirListeValeurEtRafraichir(this, nomListe, true, recherche, lc.getOffset(), lc.getLimit());
}
 
 
@Override
@SuppressWarnings("unchecked")
public void rafraichir(Object nouvellesDonnees) {
try
{
data = nouvellesDonnees;
D d = null;
 
if (reader != null)
{
d = (D) reader.read(loadConfig, data);
}
else
{
d = (D) data;
if (d instanceof List)
{
d = (D) new ArrayList((List) d);
}
}
 
callback.onSuccess(d);
}
catch (Exception e)
{
callback.onFailure(e);
}
}
 
}
/trunk/src/org/tela_botanica/client/composants/pagination/ChargeurListe.java
New file
0,0 → 1,62
package org.tela_botanica.client.composants.pagination;
 
import com.extjs.gxt.ui.client.data.BasePagingLoader;
import com.extjs.gxt.ui.client.data.LoadEvent;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.google.gwt.user.client.rpc.AsyncCallback;
 
public class ChargeurListe<D extends PagingLoadResult<?>> extends BasePagingLoader<D> {
 
private String recherche = "";
 
@SuppressWarnings("unchecked")
public ChargeurListe(Proxy proxy, TransformateurJSONaModelData reader) {
super(proxy, reader);
}
public boolean load(Object loadConfig, String recherche) {
if (fireEvent(BeforeLoad, new LoadEvent(this, loadConfig))) {
lastConfig = loadConfig;
 
this.recherche = recherche;
loadData(loadConfig, recherche);
return true;
}
else return false;
}
public boolean load(Object loadConfig) {
if (fireEvent(BeforeLoad, new LoadEvent(this, loadConfig))) {
lastConfig = loadConfig;
loadData(loadConfig, recherche);
return true;
}
return false;
}
public void load(int offset, int limit) {
this.offset = offset;
this.limit = limit;
load();
}
public boolean load() {
Object config = (reuseConfig && lastConfig != null) ? lastConfig : newLoadConfig();
config = prepareLoadConfig(config);
return load(config);
}
@SuppressWarnings("unchecked")
protected void loadData(final Object config, String recherche) {
AsyncCallback<D> callback = new AsyncCallback<D>() {
public void onFailure(Throwable caught) {
onLoadFailure(config, caught);
}
public void onSuccess(D result) {
onLoadSuccess(config, result);
}
};
((Proxy)proxy).load((TransformateurJSONaModelData)reader, config, callback, recherche);
}
}
/trunk/src/org/tela_botanica/client/composants/pagination/Proxy.java
New file
0,0 → 1,55
package org.tela_botanica.client.composants.pagination;
 
import java.util.ArrayList;
import java.util.List;
 
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.util.Debug;
 
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.data.BasePagingLoadConfig;
import com.extjs.gxt.ui.client.data.DataReader;
import com.extjs.gxt.ui.client.data.MemoryProxy;
import com.google.gwt.user.client.rpc.AsyncCallback;
 
public abstract class Proxy<D> extends MemoryProxy<D> implements Rafraichissable {
 
protected Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
protected DataReader<D> reader = null;
protected Object loadConfig = null;
protected AsyncCallback<D> callback = null;
protected static Object data;
public Proxy() {
super(data);
}
 
public abstract void load(TransformateurJSONaModelData<D> reader, Object loadConfig, AsyncCallback<D> callback, String recherche);
 
@Override
@SuppressWarnings("unchecked")
public void rafraichir(Object nouvellesDonnees) {
try {
data = nouvellesDonnees;
D d = null;
if (reader != null) {
d = reader.read(loadConfig, data);
} else {
d = (D) data;
if (d instanceof List) {
d = (D) new ArrayList((List) d);
}
}
callback.onSuccess(d);
} catch (Exception e) {
callback.onFailure(e);
}
}
 
}
/trunk/src/org/tela_botanica/client/composants/pagination/TransformateurJSONaModelData.java
New file
0,0 → 1,133
package org.tela_botanica.client.composants.pagination;
 
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
import org.tela_botanica.client.modeles.ValeurListe;
import org.tela_botanica.client.util.Debug;
 
import com.extjs.gxt.ui.client.data.BasePagingLoadConfig;
import com.extjs.gxt.ui.client.data.BasePagingLoadResult;
import com.extjs.gxt.ui.client.data.DataField;
import com.extjs.gxt.ui.client.data.DataReader;
import com.extjs.gxt.ui.client.data.JsonPagingLoadResultReader;
import com.extjs.gxt.ui.client.data.JsonReader;
import com.extjs.gxt.ui.client.data.ListLoadResult;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.data.ModelType;
import com.extjs.gxt.ui.client.data.PagingLoadConfig;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONNumber;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.json.client.JSONValue;
 
public class TransformateurJSONaModelData<D> extends JsonPagingLoadResultReader<D> {
 
private ModelType modelType = null;
public TransformateurJSONaModelData(ModelType modelType) {
super(modelType);
this.modelType = modelType;
}
 
@SuppressWarnings("unchecked")
@Override
protected Object createReturnData(Object loadConfig, List<ModelData> records, int totalCount) {
ListLoadResult<?> result = (ListLoadResult<?>) super.createReturnData(loadConfig, records, totalCount);
 
if (result instanceof PagingLoadResult) {
PagingLoadResult<?> r = (PagingLoadResult<?>) result;
r.setTotalLength(totalCount);
 
if (loadConfig instanceof PagingLoadConfig) {
PagingLoadConfig config = (PagingLoadConfig) loadConfig;
r.setOffset(config.getOffset());
}
}
return result;
 
}
 
@Override
protected BasePagingLoadResult<ModelData> newLoadResult(Object loadConfig, List<ModelData> models) {
return new BasePagingLoadResult<ModelData>(models);
}
 
@SuppressWarnings("unchecked")
public D read(Object loadConfig, Object data) {
JSONObject jsonRoot = null;
if (data instanceof JSONObject) {
jsonRoot = (JSONObject) data;
}
JSONArray root = (JSONArray) jsonRoot.get(modelType.getRoot());
int size = root.size();
ArrayList<ModelData> models = new ArrayList<ModelData>();
for (int i = 0; i < size; i++) {
JSONObject obj = (JSONObject) root.get(i);
ModelData model = newModelInstance();
for (int j = 0; j < modelType.getFieldCount(); j++) {
DataField field = modelType.getField(j);
String name = field.getName();
Class type = field.getType();
String map = field.getMap() != null ? field.getMap() : field.getName();
JSONValue value = obj.get(map);
if (value == null) continue;
if (value.isArray() != null) {
// nothing
} else if (value.isBoolean() != null) {
model.set(name, value.isBoolean().booleanValue());
} else if (value.isNumber() != null) {
if (type != null) {
Double d = value.isNumber().doubleValue();
if (type.equals(Integer.class)) {
model.set(name, d.intValue());
} else if (type.equals(Long.class)) {
model.set(name, d.longValue());
} else if (type.equals(Float.class)) {
model.set(name, d.floatValue());
} else {
model.set(name, d);
}
} else {
model.set(name, value.isNumber().doubleValue());
}
} else if (value.isObject() != null) {
// nothing
} else if (value.isString() != null) {
String s = value.isString().stringValue();
if (type != null) {
if (type.equals(Date.class)) {
if ("timestamp".equals(field.getFormat())) {
Date d = new Date(Long.parseLong(s) * 1000);
model.set(name, d);
} else {
DateTimeFormat format = DateTimeFormat.getFormat(field.getFormat());
Date d = format.parse(s);
model.set(name, d);
}
}
} else {
model.set(name, s);
}
} else if (value.isNull() != null) {
model.set(name, null);
}
}
models.add(model);
}
int totalCount = models.size();
if (modelType.getTotalName() != null) {
totalCount = getTotalCount(jsonRoot);
}
return (D) createReturnData(loadConfig, models, totalCount);
}
 
}
/trunk/src/org/tela_botanica/client/composants/ChampComboBoxRechercheTempsReelPaginable.java
New file
0,0 → 1,167
package org.tela_botanica.client.composants;
 
import java.util.List;
 
import org.tela_botanica.client.composants.pagination.ChargeurListe;
import org.tela_botanica.client.composants.pagination.Proxy;
import org.tela_botanica.client.composants.pagination.TransformateurJSONaModelData;
import org.tela_botanica.client.modeles.Valeur;
import org.tela_botanica.client.util.Debug;
 
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.VerticalPanel;
import com.extjs.gxt.ui.client.widget.form.ComboBox;
 
import com.extjs.gxt.ui.client.data.BasePagingLoadConfig;
import com.extjs.gxt.ui.client.data.LoadEvent;
import com.extjs.gxt.ui.client.data.Loader;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.data.ModelType;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
 
public class ChampComboBoxRechercheTempsReelPaginable extends LayoutContainer {
 
//-------------//
// ATTRIBUTS //
//-------------//
private ListStore<ModelData> store = null;
private ComboBox<ModelData> combo = null;
 
private String recherche = "";
 
private Proxy<?> proxy = null;
private TransformateurJSONaModelData<PagingLoadResult<ModelData>> reader = null;
private ChargeurListe<PagingLoadResult<ModelData>> loader = null;
private int start = 0;
private int limit = 10;
private int largeur = 200;
 
private BasePagingLoadConfig plc = null;
private ModelType modeltype = null;
private String displayName = "";
 
//-------------//
// METHODES //
//-------------//
 
/*--------------
Constructeur
--------------*/
public ChampComboBoxRechercheTempsReelPaginable(Proxy<?> proxy, ModelType modeltype, String displayName) {
this.modeltype = modeltype;
this.proxy = proxy;
this.displayName = displayName;
 
plc = new BasePagingLoadConfig();
plc.setLimit(limit);
plc.setOffset(start);
reader = new TransformateurJSONaModelData<PagingLoadResult<ModelData>>(modeltype);
loader = new ChargeurListe<PagingLoadResult<ModelData>>(proxy, reader);
loader.setLimit(plc.getLimit());
loader.setOffset(plc.getOffset());
 
loader.addListener(Loader.BeforeLoad, new Listener<LoadEvent>() {
public void handleEvent(LoadEvent be) {
be.<ModelData> getConfig().set("start", be.<ModelData> getConfig().get("offset"));
}
});
 
loader.addListener(Loader.Load, new Listener<LoadEvent>() {
public void handleEvent(LoadEvent be) {
 
}
});
loader.addListener(Loader.LoadException, new Listener<LoadEvent>() {
public void handleEvent(LoadEvent be) {
 
}
});
combo = new ComboBox<ModelData>();
combo.setWidth(largeur);
combo.setDisplayField(displayName);
combo.setHideTrigger(false);
combo.setPageSize(plc.getLimit());
store = new ListStore<ModelData>(loader);
combo.setStore(store);
loader.load(plc, recherche);
combo.addListener(Events.KeyUp, new Listener<BaseEvent>() {
public void handleEvent(BaseEvent be) {
recherche = combo.getRawValue();
plc.setLimit(limit); plc.setOffset(start);
loader.setLimit(limit); loader.setOffset(start);
loader.load(plc, recherche);
}
});
VerticalPanel vp = new VerticalPanel();
vp.add(combo);
add(vp);
}
 
/*------------
Accesseurs
------------*/
public ComboBox<ModelData> getCombo()
{
return this.combo;
}
public Valeur getValeur()
{
return new Valeur(combo.getSelection().get(0));
}
public ListStore<?> getStore()
{
return combo.getStore();
}
public void setWidth(int largeur)
{
this.largeur = largeur;
this.combo.setWidth(largeur);
}
/*-----------------------------
Gestion du contenu du champ
-----------------------------*/
public List<ModelData> collecterValeursDuChamp()
{
return combo.getSelection();
}
public void peuplerChamp(List<ModelData> selection)
{
combo.setSelection(selection);
}
 
/*----------------
Méthode privées
-----------------*/
 
 
}
 
 
 
 
/trunk/src/org/tela_botanica/client/configuration
Property changes:
Added: svn:mergeinfo
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/configuration:r1136-1291
/trunk/src/org/tela_botanica/client/modeles/aDonnee.java
430,20 → 430,20
* Renvoie une chaîne de caractère formatée et encodée pour POST avec toutes les propriétés du modèle
* */
public String obtenirChainePOST() {
String post = "";
FastMap<?> proprietees = (FastMap<?>) getProperties();
Collection<String> cles = proprietees.keySet();
Iterator<String> it = cles.iterator();
System.out.println(cles);
while (it.hasNext()) {
String cle = it.next();
//Les Radio Box couplées à la fonction autobind créer des variables gxt.RadioGroup.X, qu'il ne faut pas mettre dans la requête
//Les Radio Box couplées à la fonction autobind créent des variables gxt.RadioGroup.X, qu'il ne faut pas mettre dans la requête
if (!cle.startsWith("gxt.")&&!cle.matches("^_.+_$")) {
//Si, et seulement si, la valeur diffère de la valeur initiale OU la clé est dans les champs obligatoire
if (Arrays.asList(getChampsObligatoires()).contains(getPrefixe() + "_" + cle) || ((valeursInitiales.get(cle) != null&& !valeursInitiales.get(cle).equals(get(cle)))||valeursInitiales.get(cle) == null)) {
if (Arrays.asList(getChampsObligatoires()).contains(getPrefixe() + "_" + cle) || ((valeursInitiales.get(cle) != null && !valeursInitiales.get(cle).equals(get(cle))) || valeursInitiales.get(cle) == null)) {
post += getPrefixe() + "_" + cle + "=" + URL.encodeComponent(renvoyerValeurCorrecte(cle));
if (it.hasNext()) {
post += "&";
451,6 → 451,7
}
}
}
return post;
}
/trunk/src/org/tela_botanica/client/modeles/personne/PersonneAsyncDao.java
27,7 → 27,6
}
 
public void selectionner(String personneId, String projetId, String nomComplet, final int pageCourante, final int nbElements) {
 
String[] parametres = {personneId, projetId, nomComplet};
HashMap<String, String> restrictions = new HashMap<String, String>();
52,8 → 51,7
personnes = new PersonneListe(reponse);
} else {
personnes = new PersonneListe(reponse.get(1).isArray(), reponse.get(0).isNumber(), vueARafraichir);
}
}
personnes.setTaillePage(nbElements);
personnes.setPageCourante(pageCourante);
info.setDonnee(0, personnes);
67,11 → 65,9
});
}
public void ajouter(Personne personne) {
public void ajouter(Personne personne) {
String postDonneesEncodees = personne.obtenirChainePOST();
postDonneesEncodees += "&cmhl_ce_modifier_par=" + utilisateurId;
postDonneesEncodees += "&cmhl_ce_modifier_par=" + utilisateurId;
final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM);
rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() {
@Override
89,7 → 85,7
GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas une chaine JSON.", null);
}
}
});
});
}
public void modifier(Personne personne) {
/trunk/src/org/tela_botanica/client/modeles/collection/CollectionAsyncDao.java
101,8 → 101,7
}
public void modifier(Collection collection) {
String postDonneesEncodees = construirePost(collection.getId(), collection);
String postDonneesEncodees = construirePost(collection.getId(), collection);
String[] parametres = {collection.getId()};
final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM, parametres);
rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() {
/trunk/src/org/tela_botanica/client/modeles/structure/Structure.java
253,7 → 253,7
return renvoyerValeurCorrecte("longitude");
}
public void setLongitude(String longitude) {
if (longitude != null) {
if (longitude != null) {
longitude = longitude.replace(".", ",");
}
this.set("longitude", longitude);
265,8 → 265,8
}
public void setTelephone(String tel) {
this.set("truk_telephone", tel);
}
}
 
// TELEPHONE FIXE
public String getTelephoneFixe() {
return getInfoDenormaliseParType(renvoyerValeurCorrecte("truk_telephone"), Personne.TELEPHONE_FIXE);
282,6 → 282,7
public void setFax(String fax) {
modifierChaineDenormaliseParType("truk_telephone", Personne.TELEPHONE_FAX, fax);
}
 
// COURRIEL
public String getCourriel() {
/trunk/src/org/tela_botanica/client/modeles/structure/StructureAPersonneAsyncDao.java
57,7 → 57,7
});
}
 
public void ajouter(String structureId, StructureAPersonne personnel) {
public void ajouter(String structureId, StructureAPersonne personnel) {
String postDonneesEncodees = construirePost(structureId, personnel);
final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM);
rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() {
72,7 → 72,7
GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas une chaine JSON.", null);
}
}
});
});
}
public void modifier(StructureAPersonne personnel) {
/trunk/src/org/tela_botanica/client/modeles/ValeurListeAsyncDao.java
5,9 → 5,12
import org.tela_botanica.client.http.JsonRestRequestBuilder;
import org.tela_botanica.client.http.JsonRestRequestCallback;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.util.Debug;
import org.tela_botanica.client.util.UtilDAO;
 
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONBoolean;
import com.google.gwt.json.client.JSONNumber;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.json.client.JSONValue;
14,49 → 17,190
 
public class ValeurListeAsyncDao {
private static HashMap<String, ValeurListe> ontologieCache = new HashMap<String, ValeurListe>();
private static HashMap<String, Object> ontologieCache = new HashMap<String, Object>();
private static HashMap<String, HashMap<Integer, Object>> pagedOntologieCache = new HashMap<String, HashMap<Integer, Object>>();
private static final String SERVICE_NOM = "CoelValeurListe";
private Rafraichissable vueARafraichir = null;
private static ValeurListe tempListe = new ValeurListe();
private int cptPage = 0;
private int limiteJREST = 150;
 
public ValeurListeAsyncDao(Rafraichissable vueCourante) {
vueARafraichir = vueCourante;
}
public void obtenirListe(Integer cle) {
selectionner("id", cle, null, null);
public static HashMap<String, Object> getOntologieCache() {
return ontologieCache;
}
 
public void chargerListe(boolean nextPage, String type, Integer cle, String abv, String idValeur, boolean pagination, String recherche, int start, int nbElements) {
/** Si nextpage est VRAI, alors cela signifie que la liste est plus grande
que la limite du JREST et l'on doit relancer une requete pour obtenir
la page suivante **/
if (nextPage) {
cptPage++;
selectionner(type, cle, abv, idValeur, pagination, recherche, cptPage*limiteJREST, limiteJREST);
}
/** Sinon cela signifie que le chargement de la liste est terminé et on peut
la mettre en cache et retourner la réponse au demandeur **/
else {
// on met en cache
String id = String.valueOf(cle);
String abreviationStr = "";
if (abv != null) {
abreviationStr = abv;
int indexPoint = abreviationStr.indexOf(".", 0);
abreviationStr = abreviationStr.substring(0, indexPoint);
id = id+abreviationStr;
}
// réinitialiser le compteur
cptPage = 0;
 
// et on met à jour le demandeur des données
if (ontologieCache.get(id) != null) {
vueARafraichir.rafraichir(ontologieCache.get(id));
}
}
}
public void obtenirListe(Integer cle) {
selectionner("id", cle, null, null, false, null, -1, -1);
}
public void obtenirListe(String type, String identifiantValeur) {
selectionner(type, null, null, identifiantValeur, false, null, -1, -1);
}
public void obtenirListe(Integer cle, boolean pagination, String recherche, int start, int limit) {
selectionner("nom", cle, null, null, pagination, recherche, start, limit);
}
public void selectionner(String type, Integer cle, String abv, String idValeur) {
selectionner(type, cle, abv, idValeur, false, null, -1, -1);
}
 
public void selectionner(final String type, final Integer cle, final String abv, final String idValeur, final boolean pagination, final String recherche, final int start, final int limit) {
 
// La cleParent en Integer est insuffisante pour les liste valeurs comme Région qui on plusieurs sections sur leur liste
// (ex : on ne sélectionne que les régions FR.__ puis les régions ES.__ sur la liste 1078 ....
final String cleParent = cle + (abv == null ? "" : abv);
final String cleParentPourCache = cle + (abv == null ? "" : abv);
final String cleParent = cle+"";
if (ontologieCache.containsKey(cleParent)) {
vueARafraichir.rafraichir(ontologieCache.get(cleParent));
} else {
String paramAbv = (type.equals("id") ? null : abv);
String[] parametres = {type, cleParent.toString(), paramAbv, idValeur};
final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres);
rb.envoyerRequete(null, new JsonRestRequestCallback() {
String nom = "";
if ( (recherche == null) || (recherche.equals("")) ) nom = "";
else {
nom = recherche+"%";
}
 
String abreviation = "";
String paramAbv = "";
if (type.equals("ab") || type.equals("abv")) {
int positionPoint = abv.indexOf(".");
if (positionPoint != -1) abreviation = abv.substring(0, positionPoint)+"%";
else abreviation=abv+"%";
}
paramAbv = abreviation;
 
String[] parametres = {type, cleParent, paramAbv, idValeur, nom};
 
HashMap<String, String> restrictions = new HashMap<String, String>();
 
if (pagination) {
 
restrictions.put("limit", String.valueOf(limit));
restrictions.put("start", String.valueOf(start));
restrictions.put("orderby", "cmlv_nom");
final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres, restrictions);
rb.envoyerRequete(null, new JsonRestRequestCallback()
{
@Override
public void surReponse(JSONValue responseValue) {
if (responseValue.isObject() != null) {
final JSONObject reponse = responseValue.isObject();
JSONString listeId = reponse.get("id").isString();
JSONArray listeValeurs = reponse.get("valeurs").isArray();
if (listeId != null) {
// Transformation du tableau JSON réponse en Liste
ValeurListe liste = new ValeurListe(listeId, listeValeurs);
// Stockage en cache
ontologieCache.put(cleParent, liste);
// et on met à jour le demandeur des données
vueARafraichir.rafraichir(liste);
}
}
public void surReponse(JSONValue responseValue)
{
vueARafraichir.rafraichir(responseValue);
}
});
}
}
else
{
boolean nextPage = (start > 0);
if (nextPage)
{
restrictions.put("start", String.valueOf(start));
restrictions.put("limit", String.valueOf(limit));
restrictions.put("orderby", "cmlv_nom");
}
else
{
restrictions.put("orderby", "cmlv_nom");
}
// si l'on est pas dans un processus de récupération d'une liste
// et si le cache contient déjà la liste recherchée
if (ontologieCache.containsKey(cleParentPourCache) && !nextPage)
{
vueARafraichir.rafraichir(ontologieCache.get(cleParentPourCache));
}
else
{
final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres, restrictions);
rb.envoyerRequete(null, new JsonRestRequestCallback()
{
@Override
public void surReponse(JSONValue responseValue)
{
if (responseValue.isObject() != null)
{
/** Récuperation des différents paramètres de la réponse JSON **/
final JSONObject reponse = responseValue.isObject();
JSONString listeId = reponse.get("id").isString();
JSONArray listeValeurs = reponse.get("valeurs").isArray();
JSONNumber nbElements = reponse.get("nbElements").isNumber();
JSONBoolean getNextPage = reponse.get("getNextPage").isBoolean();
/** Gestion de l'abreviation (pour la liste des régions) **/
String abreviationStr = "";
if (reponse.get("abreviation") != null) {
abreviationStr = reponse.get("abreviation").isString().stringValue();
int a = abreviationStr.indexOf("%", 1);
abreviationStr = abreviationStr.substring(1, a);
}
else {
abreviationStr = "";
}
 
/** si l'on a bien reçu une liste de valeurs **/
if (listeId != null)
{
/** Transformation du tableau JSON réponse en ValeurListe **/
String id = listeId.stringValue();
ValeurListe liste = new ValeurListe(new JSONString(id), abreviationStr, listeValeurs, nbElements);
 
/** Si la liste existe deja en cache **/
String identifiantCache = (abreviationStr=="") ? id : (id+abreviationStr);
if (ontologieCache.get(id) != null)
{
/** Alors on concatène la liste existante avec celle qu'on vient de recevoir **/
((ValeurListe)ontologieCache.get(identifiantCache)).concatenerListe(liste);
}
/** Sinon on l'insère simplement dans le cache **/
else {
ontologieCache.put(identifiantCache,liste);
}
 
/** Appel à la méthode qui gère le retour à l'appelant ou la suite du chargement **/
chargerListe(getNextPage.booleanValue(), type, liste.getId(), abv, idValeur, pagination, recherche, start, limit);
}
}
}
});
}
}
}
}
}
/trunk/src/org/tela_botanica/client/modeles/publication/PublicationAsyncDao.java
82,8 → 82,6
String postDonneesEncodees = publication.obtenirChainePOST()+"&cmhl_ce_modifier_par="+utilisateurId;
final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM);
Debug.log("|> PublicationAsyncDao.ajouter(Publication publication) : postDonneesEncodees="+postDonneesEncodees);
 
rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() {
@Override
/trunk/src/org/tela_botanica/client/modeles/publication/PublicationAPersonneListe.java
20,8 → 20,7
public PublicationAPersonneListe(JSONArray auteurs) {
super(auteurs.size()) ;
final int taillemax = auteurs.size();
final int taillemax = auteurs.size();
for (int i = 0; i < taillemax; i++) {
JSONObject publicationAPersonneCourante = auteurs.get(i).isObject() ;
/trunk/src/org/tela_botanica/client/modeles/publication/PublicationAPersonneAsyncDao.java
29,18 → 29,8
}
public void selectionner(String publicationId, String personnesId, String roleId) {
Debug.log("|> BEGIN PublicationAPersonneAsyncDAO.selectionner(String publicationId, String personnesId, String roleId)");
Debug.log("|--> Requete, publicationId="+publicationId+", personnesId="+personnesId+", roleId="+roleId);
 
String[] parametres = {publicationId, personnesId, roleId};
Debug.log("|--> Requete, SERVICE_NOM ="+SERVICE_NOM);
Debug.log("|--> Requete, parametres ="+parametres);
final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres);
rb.envoyerRequete(null, new JsonRestRequestCallback() {
@Override
public void surReponse(JSONValue responseValue) {
49,53 → 39,30
if (responseValue.isObject() != null) {
final JSONObject reponse = responseValue.isObject();
// Transformation du tableau JSON réponse en ListeInstitution
PublicationAPersonne publicationAPersonne = new PublicationAPersonne(reponse);
Debug.log("|--> PublicationAPersonneAsyncDAO.selectionner() : publicationAPersonne="+publicationAPersonne.toString());
PublicationAPersonne publicationAPersonne = new PublicationAPersonne(reponse);
// et on met à jour le demandeur des données
vueARafraichir.rafraichir(publicationAPersonne);
} else if (responseValue.isArray() != null) {
Debug.log("|--> PublicationAPersonneAsyncDAO.selectionner() : responseValue.isArray()");
} else if (responseValue.isArray() != null) {
final JSONArray reponse = responseValue.isArray();
PublicationAPersonneListe publicationsAPersonneListe = new PublicationAPersonneListe(reponse);
Debug.log("|--> PublicationAPersonneAsyncDAO.selectionner() : publicationsAPersonneListe="+publicationsAPersonneListe.toString());
Debug.log("|--> PublicationAPersonneAsyncDAO.selectionner() : appel à rafraichir(publicationsAPersonneListe)");
 
vueARafraichir.rafraichir(publicationsAPersonneListe);
} else {
GWT.log("La réponse n'est pas un objet ou un tableau JSON et vaut : "+responseValue.toString(), null);
}
} else {
Debug.log("|--> PublicationAPersonneAsyncDAO.selectionner() : ELSE");
} else {
// Dans le cas, où nous demandons toutes les publication et qu'il n'y en a pas, nous retournons un objet vide
PublicationAPersonneListe publicationAPersonneListe = new PublicationAPersonneListe(0);
vueARafraichir.rafraichir(publicationAPersonneListe);
}
}
});
Debug.log("|> END PublicationAPersonneAsyncDAO.selectionner(String publicationId, String personnesId, String roleId)");
});
}
public void ajouter(String publicationId, String personnesId, String roleId) {
Debug.log("<8-8> BEGIN PublicationAPersonneAsyncDao.ajouter()");
 
Debug.log("<8-8> Service_nom="+SERVICE_NOM);
 
String postDonneesEncodees = "cpuap_id_publication="+URL.encodeComponent(publicationId)
+"&cpuap_id_auteur="+URL.encodeComponent(personnesId)
+"&cpuap_id_role="+URL.encodeComponent(roleId)
+"&cmhl_ce_modifier_par="+utilisateurId;
Debug.log("<8-8> postDonneesEncodees="+postDonneesEncodees);
+"&cmhl_ce_modifier_par="+utilisateurId;
final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM);
rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() {
@Override
103,8 → 70,6
traiterReponse(reponseValeur, "ajout_publication_a_personne");
}
});
Debug.log("<8-8> END PublicationAPersonneAsyncDao.ajouter()");
}
 
public void modifier(String publicationId, String personnesId, String roleId) {
125,11 → 90,7
public void supprimer(String idPublicationAPersonne) {
String[] parametres = {utilisateurId, idPublicationAPersonne};
final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM, parametres);
Debug.log("888> BEGIN PublicationAPersonneAsyncDao.supprimer()");
Debug.log("888> idPublicationAPersonne="+idPublicationAPersonne);
final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM, parametres);
rb.envoyerRequeteSuppression(new JsonRestRequestCallback() {
@Override
public void surReponse(JSONValue responseValue) {
142,8 → 103,6
}
}
});
Debug.log("888> END PublicationAPersonneAsyncDao.supprimer()");
}
private void traiterReponse(JSONValue reponseValeur, String type) {
/trunk/src/org/tela_botanica/client/modeles/Valeur.java
3,6 → 3,9
import java.util.Iterator;
import java.util.Set;
 
import org.tela_botanica.client.util.Debug;
 
import com.extjs.gxt.ui.client.data.ModelData;
import com.google.gwt.json.client.JSONObject;
 
public class Valeur extends aDonnee {
44,6 → 47,17
this.set("description", description);
}
public Valeur(ModelData model)
{
Debug.log("id_valeur = "+model.get("cmlv_id_valeur"));
Debug.log("nom = "+model.get("cmlv_nom"));
this.set("id_valeur", model.get("cmlv_id_valeur"));
this.set("nom", model.get("cmlv_nom"));
this.set("abreviation", model.get("cmlv_abreviation"));
this.set("description", model.get("cmlv_description"));
}
@Override
protected String getPrefixe() {
return PREFIXE;
/trunk/src/org/tela_botanica/client/modeles/ValeurListe.java
1,6 → 1,19
package org.tela_botanica.client.modeles;
 
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
 
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.interfaces.ListePaginable;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.util.Debug;
 
import com.extjs.gxt.ui.client.Registry;
import com.google.gwt.i18n.client.Dictionary;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONNumber;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONString;
 
18,7 → 31,13
*/
private static final long serialVersionUID = 7784635999621813450L;
private Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
private int nbElementsTotal;
// Id de la meta-liste dans la base de données
private int id = 0;
private String abv = "";
/**
* Constructeur sans paramètres
49,7 → 68,16
this.constuireObjet(listeValeurs);
}
private void constuireObjet(JSONArray liste) {
public ValeurListe(JSONString listeId, String abv, JSONArray listeValeurs, JSONNumber nbElements) {
super(listeValeurs.size());
this.setId(Integer.parseInt(listeId.stringValue()));
this.abv = abv;
this.setNbElementsTotal(nbElements.toString());
this.constuireObjet(listeValeurs);
}
protected void constuireObjet(JSONArray liste) {
final int taillemax = liste.size();
for (int i = 0; i < taillemax; i++) {
68,6 → 96,10
public void setId(int id) {
this.id = id;
}
public void setNbElementsTotal(String nbElements) {
this.nbElementsTotal = Integer.parseInt(nbElements);
}
 
/**
* @return l'identifiant de la liste
76,7 → 108,34
return id;
}
public String getFullId() {
return (id+abv);
}
public void ajouter(Valeur val) {
this.put(val.getId(), val);
}
public ValeurListe cloner()
{
ValeurListe l = new ValeurListe();
Iterator i = this.keySet().iterator();
while (i.hasNext())
{
String clef = (String)i.next();
Valeur valeur = this.get(clef);
l.put(clef, valeur);
}
 
return l;
}
public void concatenerListe(ValeurListe lv) {
this.putAll(lv);
this.setId(lv.getId());
}
 
}
 
 
/trunk/src/org/tela_botanica/client/modeles
Property changes:
Added: svn:mergeinfo
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/modeles:r1136-1291