Subversion Repositories eFlore/Applications.coel

Compare Revisions

Ignore whitespace Rev 1428 → Rev 1468

/trunk/src/org/tela_botanica/client/modeles/collection/CollectionAPersonne.java
1,8 → 1,16
package org.tela_botanica.client.modeles.collection;
 
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
 
import org.tela_botanica.client.modeles.aDonnee;
import org.tela_botanica.client.modeles.personne.Personne;
import org.tela_botanica.client.util.Debug;
import org.tela_botanica.client.util.UtilString;
 
import com.extjs.gxt.ui.client.data.BaseModelData;
import com.extjs.gxt.ui.client.data.ModelData;
import com.google.gwt.json.client.JSONObject;
 
public class CollectionAPersonne extends aDonnee {
16,11 → 24,31
public CollectionAPersonne() {
initialiser(new JSONObject());
}
public CollectionAPersonne(JSONObject collectionAPersonneListe) {
initialiser(collectionAPersonneListe);
}
public CollectionAPersonne(ModelData model)
{
Map<String, Object> a = model.getProperties();
 
Set<String> cles = a.keySet();
Iterator<String> it = cles.iterator();
while (it.hasNext()) {
String cle = it.next();
if (a.get(cle) != null) {
String cleObjet = "";
cleObjet = cle.replaceFirst("^"+CollectionAPersonne.PREFIXE+"_", "");
cleObjet = cleObjet.replaceFirst("^"+Personne.PREFIXE+"_", "");
this.set(cleObjet, a.get(cle));
}
}
 
setPersonne(new Personne(model));
this.set("_etat_", a.get("_etat_"));
}
@Override
protected String getPrefixe() {
return PREFIXE;
44,10 → 72,18
personneLiee = personne;
initialiserChampsPourGrille();
if (personne != null) {
setIdPersonne(personne.getId());
if (personne.getId() != null && !UtilString.isEmpty(personne.getId())) setIdPersonne(personne.getId());
}
}
public void setPersonnePourGrillePaginable(Personne personne) {
personneLiee = personne;
initialiserChampsPourGrillePaginable();
if (personne != null) {
if (personne.getId() != null && !UtilString.isEmpty(personne.getId())) setIdPersonne(personne.getId());
}
}
private void initialiserChampsPourGrille() {
set("_role_", getIdRole());
set("fmt_nom_complet", getPersonne().getNomComplet());
61,6 → 97,20
set("_etat_", "");
}
public void initialiserChampsPourGrillePaginable() {
set("ccap_id_role", getIdRole());
set("_role_", getIdRole());
set("cp_fmt_nom_complet", getPersonne().getNomComplet());
set("cp_nom", getPersonne().getNom());
set("cp_prenom", getPersonne().getPrenom());
set("cp_naissance_date", getPersonne().getNaissanceDate());
set("cp_naissance_lieu", getPersonne().getNaissanceLieu());
set("_deces_", getPersonne().getDeces());
set("cp_deces", getPersonne().getDeces());
set("cp_deces_date", getPersonne().getDecesDate());
set("cp_deces_lieu", getPersonne().getDecesLieu());
}
// ID
/** Génère un identifiant de CollectionAPersonne.
*
100,7 → 150,9
// ID RôLE
public String getIdRole() {
return renvoyerValeurCorrecte("id_role");
String role = renvoyerValeurCorrecte("id_role");
if (role != null && !UtilString.isEmpty(role)) return role;
else return renvoyerValeurCorrecte("_role_");
}
public void setIdRole(String ir) {
set("id_role", ir);
/trunk/src/org/tela_botanica/client/modeles/collection/CollectionAPersonneAsyncDao.java
1,5 → 1,7
package org.tela_botanica.client.modeles.collection;
 
import java.util.HashMap;
 
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.http.JsonRestRequestBuilder;
14,6 → 16,7
import com.google.gwt.core.client.GWT;
import com.google.gwt.http.client.URL;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONValue;
 
public class CollectionAPersonneAsyncDao {
28,42 → 31,96
utilisateurId = ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).getUtilisateurId();
}
public void selectionner(final String collectionId, final String roleId, final Integer seqId) {
public void selectionner(final boolean paginationProgressive, final String collectionId, final String roleId, final String recherche, final int start, final int nbElements, final Integer seqId) {
 
String[] parametres = {collectionId, roleId};
final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres);
HashMap<String, String> restrictions = new HashMap<String, String>();
if (nbElements != -1) {
restrictions.put("limit", String.valueOf(nbElements));
}
restrictions.put("orderby", "cp_nom");
 
rb.envoyerRequete(null, new JsonRestRequestCallback() {
@Override
public void surReponse(JSONValue responseValue) {
Information info = new Information("liste_collection_a_personne");
if (responseValue != null) {
// Si la requête est un succès, reception d'un tableau
if (responseValue.isArray() != null) {
final JSONArray reponse = responseValue.isArray();
// Transformation du tableau JSON réponse en ListeInstitution
CollectionAPersonneListe personnes = new CollectionAPersonneListe(reponse);
info.setDonnee(0, personnes);
// et on met à jour le demandeur des données
if (seqId != null) {
Reponse reponseRequete = new Reponse(info, seqId);
vueARafraichir.rafraichir(reponseRequete);
/** GESTION DE LA REQUETE dans le cas d'une liste paginée progressive **/
if (paginationProgressive) {
 
/** DEFINITION DU TUPLE DE DEPART **/
restrictions.put("start", String.valueOf(start));
/** CONSTRUCTION DE LA REQUETE **/
final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres, restrictions);
/** ENVOI DE LA REQUETE **/
rb.envoyerRequete(null, new JsonRestRequestCallback()
{
/** RECEPTION DE LA REPONSE **/
public void surReponse(JSONValue responseValue)
{
/** Dans le cas d'une liste paginée, vueARafraichir est un objet Proxy.
* On retourne l'objet JSON au proxy afin que ce soit lui qui le traite **/
if (seqId != null) {
if (Mediateur.DEBUG) System.out.println("<-- CollectionAPersonneAsyncDao > Liste paginée, retour au sequenceur");
Reponse reponseRequete = new Reponse(responseValue, seqId);
vueARafraichir.rafraichir(reponseRequete);
}
else {
if (Mediateur.DEBUG) System.out.println("<-- CollectionAPersonneAsyncDao > Liste paginée, retour à "+vueARafraichir.getClass().toString());
vueARafraichir.rafraichir(responseValue);
}
}
});
}
/** GESTION DE LA REQUETE dans le cas d'une liste NON paginée progressive **/
else {
/** DEFINITION DU TUPLE DE DEPART **/
restrictions.put("start", String.valueOf(start*nbElements));
final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres, restrictions);
rb.envoyerRequete(null, new JsonRestRequestCallback() {
@Override
public void surReponse(JSONValue responseValue) {
if (responseValue != null) {
 
JSONObject responseObject = responseValue.isObject();
Information info = new Information("liste_collection_a_personne");
 
if (responseObject != null) {
// Si la réponse est un tableau, alors c'est une liste de collections qui a été retournée
if (responseObject.get("collectionsAPersonne").isArray() != null) {
final JSONArray reponse = responseObject.get("collectionsAPersonne").isArray();
// Transformation du tableau JSON réponse en ListeInstitution
CollectionAPersonneListe personnes = new CollectionAPersonneListe(reponse);
info.setDonnee(0, personnes);
// et on met à jour le demandeur des données
if (seqId != null) {
Reponse reponseRequete = new Reponse(info, seqId);
vueARafraichir.rafraichir(reponseRequete);
}
else {
vueARafraichir.rafraichir(info);
}
// Si la réponse est un objet, alors c'est une unique collection qui a été retournée
} else if (responseObject.get("collectionsAPersonne").isObject() != null) {
GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas un tableau JSON et vaut : "+responseValue.toString(), null);
}
}
else {
} else {
// Dans le cas, où nous demandons toutes les institutions et qu'il n'y en a pas, nous retournons un objet vide
if (collectionId == null) {
// Dans le cas, où nous demandons toutes les relations Collection à Personne et qu'il n'y en a pas, nous retournons un message d'information
Information info = new Information("liste_collection_a_personne");
info.setMessage("Aucune relations entre la collection et les personnes");
vueARafraichir.rafraichir(info);
}
} else {
GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas un talbeau JSON et vaut : "+responseValue.toString(), null);
}
} else {
if (collectionId == null) {
// Dans le cas, où nous demandons toutes les relations Collection à Personne et qu'il n'y en a pas, nous retournons un message d'information
info.setMessage("Aucune relations entre la collection et les personnes");
vueARafraichir.rafraichir(info);
}
}
}
});
});
}
}
 
public void ajouter(String collectionId, CollectionAPersonne personnes) {
/trunk/src/org/tela_botanica/client/modeles/structure/StructureAPersonneAsyncDao.java
1,5 → 1,7
package org.tela_botanica.client.modeles.structure;
 
import java.util.HashMap;
 
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.http.JsonRestRequestBuilder;
14,6 → 16,7
import com.google.gwt.core.client.GWT;
import com.google.gwt.http.client.URL;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONValue;
 
public class StructureAPersonneAsyncDao {
27,43 → 30,110
vueARafraichir = vueARafraichirCourrante;
utilisateurId = ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).getUtilisateurId();
}
 
public void selectionner(final String structureId, final String roleId, final Integer seqId) {
public void selectionner(final boolean paginationProgressive, final String structureId, final String roleId, final String recherche, final int start, final int nbElements, final Integer seqId) {
Debug.log("selectionner structure a personne");
/*Debug.log("paginationProgressive="+paginationProgressive);
Debug.log("structureId="+structureId);
Debug.log("roleId="+roleId);
Debug.log("recherche="+recherche);
Debug.log("nbElements="+nbElements);
Debug.log("seqId="+seqId);*/
String[] parametres = {structureId, roleId};
final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres);
rb.envoyerRequete(null, new JsonRestRequestCallback() {
@Override
public void surReponse(JSONValue responseValue) {
Information info = new Information("liste_structure_a_personne");
if (responseValue != null) {
// Si la requête est un succès, reception d'un tableau
if (responseValue.isArray() != null) {
final JSONArray reponse = responseValue.isArray();
// Transformation du tableau JSON réponse en ListeInstitution
StructureAPersonneListe personnel = new StructureAPersonneListe(reponse);
info.setDonnee(0, personnel);
// et on met à jour le demandeur des données
if (seqId !=null) {
Reponse reponseSequenceur = new Reponse(info, seqId);
vueARafraichir.rafraichir(reponseSequenceur);
} else {
HashMap<String, String> restrictions = new HashMap<String, String>();
if (nbElements != -1) {
restrictions.put("limit", String.valueOf(nbElements));
}
restrictions.put("orderby", "cp_nom");
 
/** GESTION DE LA REQUETE dans le cas d'une liste paginée progressive **/
if (paginationProgressive) {
 
/** DEFINITION DU TUPLE DE DEPART **/
restrictions.put("start", String.valueOf(start));
/** CONSTRUCTION DE LA REQUETE **/
final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres, restrictions);
 
/** ENVOI DE LA REQUETE **/
rb.envoyerRequete(null, new JsonRestRequestCallback()
{
/** RECEPTION DE LA REPONSE **/
public void surReponse(JSONValue responseValue)
{
/** Dans le cas d'une liste paginée, vueARafraichir est un objet Proxy.
* On retourne l'objet JSON au proxy afin que ce soit lui qui le traite **/
if (seqId != null) {
if (Mediateur.DEBUG) System.out.println("<-- StructureAPersonneAsyncDao > Liste paginée, retour au sequenceur");
Reponse reponseRequete = new Reponse(responseValue, seqId);
vueARafraichir.rafraichir(reponseRequete);
}
else {
if (Mediateur.DEBUG) System.out.println("<-- StructureAPersonneAsyncDao > Liste paginée, retour à "+vueARafraichir.getClass().toString());
vueARafraichir.rafraichir(responseValue);
}
}
});
}
/** GESTION DE LA REQUETE dans le cas d'une liste NON paginée progressive **/
else {
/** DEFINITION DU TUPLE DE DEPART **/
restrictions.put("start", String.valueOf(start*nbElements));
final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres, restrictions);
 
rb.envoyerRequete(null, new JsonRestRequestCallback() {
@Override
public void surReponse(JSONValue responseValue) {
Information info = new Information("liste_structure_a_personne");
 
if (responseValue != null) {
 
JSONObject responseObject = responseValue.isObject();
 
if (responseObject != null) {
 
// Si la réponse est un tableau, alors c'est une liste de Structures qui a été retournée
if (responseObject.get("structuresAPersonne").isArray() != null) {
 
final JSONArray reponse = responseObject.get("structuresAPersonne").isArray();
// Transformation du tableau JSON réponse en ListeInstitution
StructureAPersonneListe personnes = new StructureAPersonneListe(reponse);
info.setDonnee(0, personnes);
// et on met à jour le demandeur des données
if (seqId != null) {
Reponse reponseRequete = new Reponse(info, seqId);
vueARafraichir.rafraichir(reponseRequete);
}
else {
vueARafraichir.rafraichir(info);
}
// Si la réponse est un objet, alors c'est une unique Structure qui a été retournée
} else if (responseObject.get("structuresAPersonne").isObject() != null) {
GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas un tableau JSON et vaut : "+responseValue.toString(), null);
}
}
} else {
// Dans le cas, où nous demandons toutes les institutions et qu'il n'y en a pas, nous retournons un objet vide
if (structureId == null) {
// Dans le cas, où nous demandons toutes les relations Structure à Personne et qu'il n'y en a pas, nous retournons un message d'information
info.setMessage("Aucun personnel");
vueARafraichir.rafraichir(info);
}
} else {
GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas un talbeau JSON et vaut : "+responseValue.toString(), null);
}
} else {
if (structureId == null) {
// Dans le cas, où nous demandons toutes les relations Structure à Personne et qu'il n'y en a pas, nous retournons un message d'information
info.setMessage("Aucun personnel");
vueARafraichir.rafraichir(info);
}
}
}
});
}
});
}
}
 
 
public void ajouter(String structureId, StructureAPersonne personnel) {
String postDonneesEncodees = construirePost(structureId, personnel);
final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM);
/trunk/src/org/tela_botanica/client/modeles/structure/StructureAsyncDao.java
47,7 → 47,7
String[] parametres = {projetId, structureId, nom};
HashMap<String, String> restrictions = new HashMap<String, String>();
restrictions.put("orderby", "cs_ville");
 
if (nbElements != -1) {
restrictions.put("limit", String.valueOf(nbElements));
}
/trunk/src/org/tela_botanica/client/modeles/projet/Projet.java
5,6 → 5,7
import java.util.Set;
 
import org.tela_botanica.client.modeles.aDonnee;
import org.tela_botanica.client.util.Debug;
 
import com.extjs.gxt.ui.client.data.ModelData;
import com.google.gwt.json.client.JSONObject;
108,8 → 109,8
public void setLicence(String valeur) {
set("licence", valeur);
}
public String getLangue() {
 
public String getLangueId() {
return renvoyerValeurCorrecte("ce_langue");
}
public void setLangue(String valeur) {
116,6 → 117,7
set("ce_langue", valeur);
}
public String getIndexationHeure() {
return renvoyerValeurCorrecte("indexation_heure");
}
/trunk/src/org/tela_botanica/client/modeles/projet/ProjetListe.java
120,11 → 120,11
public void selectionnerStructure() {
Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
mediateur.selectionnerProjet(vueARafraichir, mediateur.getProjetId(), null, currentPage, nbElementsPage, null);
mediateur.selectionnerProjet(vueARafraichir, mediateur.getProjetId(), null, currentPage, nbElementsPage, null, false, null);
}
public void filtrerParNom(String nom) {
Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
mediateur.selectionnerProjet(vueARafraichir, mediateur.getProjetId(), "%" + nom + "%", 0, nbElementsPage, null);
mediateur.selectionnerProjet(vueARafraichir, mediateur.getProjetId(), "%" + nom + "%", 0, nbElementsPage, null, false, null);
}
}
/trunk/src/org/tela_botanica/client/modeles/projet/ProjetAsyncDao.java
10,6 → 10,7
import org.tela_botanica.client.modeles.Information;
import org.tela_botanica.client.modeles.structure.StructureListe;
import org.tela_botanica.client.synchronisation.Reponse;
import org.tela_botanica.client.util.Debug;
import org.tela_botanica.client.util.UtilDAO;
 
import com.extjs.gxt.ui.client.Registry;
40,7 → 41,7
* est renvoyé à l'appelant
* // FIXME : si la taille de la liste est supérieure à la limite du JREST (150), ce deuxieme mode ne fonctionne pas
*/
public void selectionner(final boolean paginationProgressive, final String projetId, final String nomProjet, final int start, final int nbElements, final Integer seqId) {
public void selectionner(final boolean paginationProgressive, final String projetId, final String nomProjet, final int start, final int nbElements, final String formatRetour, final Integer seqId) {
String nom = (nomProjet == null) ? "%" : nomProjet+"%";
String[] param = {projetId, nom};
47,9 → 48,13
HashMap<String, String> restrictions = new HashMap<String, String>();
if (nbElements != -1) {
if (nbElements != -1) {
restrictions.put("limit", String.valueOf(nbElements));
}
 
if ((formatRetour != null) && (formatRetour != "")) {
restrictions.put("formatRetour", formatRetour);
}
/** GESTION DE LA REQUETE dans le cas d'une liste paginée progressive **/
if (paginationProgressive) {
89,7 → 94,7
rb.envoyerRequete(null, new JsonRestRequestCallback() {
public void surReponse(JSONValue responseValue) {
if (responseValue != null) {
JSONObject responseObject = responseValue.isObject();
104,8 → 109,8
projets = new ProjetListe(reponse, responseObject.get("nbElements").isNumber(), vueARafraichir);
projets.setTaillePage(nbElements);
projets.setPageCourante(start);
if (seqId != null) {
 
if (seqId != null) {
Reponse retourRequete = new Reponse(projets, seqId);
vueARafraichir.rafraichir(retourRequete);
} else {
112,7 → 117,7
vueARafraichir.rafraichir(projets);
}
// Si la réponse est un objet, alors c'est un unique projet qui a été retournée
// Si la réponse est un objet, alors c'est un unique projet qui a été retourné
} else if (responseObject.get("projets").isObject() != null) {
JSONObject reponse = responseObject.get("projets").isObject();
120,12 → 125,12
Information info = new Information("selection_projet");
info.setDonnee(0, projet);
if (seqId != null) {
 
if (seqId != null) {
Reponse reponseRequete = new Reponse(info, seqId);
vueARafraichir.rafraichir(reponseRequete);
}
else {
else {
vueARafraichir.rafraichir(info);
}
}
/trunk/src/org/tela_botanica/client/synchronisation/Sequenceur.java
29,10 → 29,12
// Retourne le numéro du séquenceur
public int lancerRequeteSynchrone(Rafraichissable vueARafraichir) {
if (numeroSequence == 0) {
mediateur.activerChargement("Chargement en cours... Veuillez patienter");
}
if (Mediateur.DEBUG_CHARGEMENT) System.out.println("[CHARGEMENT] lancerRequeteSynchrone("+vueARafraichir.getClass().getName()+")");
//if (numeroSequence == 0) {
mediateur.activerChargement(this, "Chargement en cours... Veuillez patienter");
//}
numeroSequence++;
if (Mediateur.DEBUG) System.out.println("==> Sequenceur : Envoi requete n°" + numeroSequence);
Requete requete = new Requete(vueARafraichir, numeroSequence);
43,9 → 45,9
//Offrir la possibilité d'enfiler (=mettre à la fin d'une file d'attente) un rafraichissement dont on a déjà le retour
public int enfilerRafraichissement(Rafraichissable vueARafraichir, Object nouvellesDonnees) {
if (numeroSequence == 0) {
mediateur.activerChargement("Chargement en cours... Veuillez patienter");
}
//if (numeroSequence == 0) {
mediateur.activerChargement(this, "Chargement en cours... Veuillez patienter");
//}
numeroSequence++;
if (Mediateur.DEBUG) System.out.println("|| Sequenceur : Empiler n°" + numeroSequence);
Requete requete = new Requete(vueARafraichir, numeroSequence);
52,7 → 54,7
Reponse reponse = new Reponse(nouvellesDonnees, numeroSequence);
requetes.put(numeroSequence, requete);
rafraichir(reponse);
mediateur.desactiverChargement();
mediateur.desactiverChargement(this);
return numeroSequence;
}
61,13 → 63,13
try {
Reponse reponse = (Reponse) nouvellesDonnees;
if (Mediateur.DEBUG) System.out.println("<== Sequenceur : Réception d'une réponse, n°" + reponse.obtenirNumeroSequence() + ", marqueur retour " + marqueurRetour);
 
if (reponse.obtenirNumeroSequence() == marqueurRetour) {
// Si le numéro de séquence du retour correspond au marqueur, on rafraichit
Requete requete = requetes.get(marqueurRetour);
if (Mediateur.DEBUG) System.out.println("<|-- Sequenceur : Retourne paquet n°"+reponse.obtenirNumeroSequence()+" à "+requete.getVueARafraichir().getClass().toString());
mediateur.desactiverChargement(this);
requete.rafraichir(reponse.obtenirRetour());
mediateur.desactiverChargement();
requetes.remove(marqueurRetour);
marqueurRetour++;
avancerSequence();
81,7 → 83,7
System.out.println(" Le séquenceur ne peut recevoir que des Reponse");
System.out.println(" > nouvellesDonnees = "+nouvellesDonnees.getClass().toString());
}
mediateur.desactiverChargement();
mediateur.desactiverChargement(this);
}
}
95,8 → 97,8
Requete premiereRequete = requetes.get(marqueurRetour);
if (premiereRequete!=null && premiereRequete.hasResponse()) {
if (Mediateur.DEBUG) System.out.println("<|-- Sequenceur : Retourne paquet n°"+premiereRequete.obtenirReponse().obtenirNumeroSequence()+" à "+premiereRequete.getVueARafraichir().getClass().toString());
premiereRequete.rafraichir();
mediateur.desactiverChargement();
premiereRequete.rafraichir();
mediateur.desactiverChargement(this);
requetes.remove(marqueurRetour);
marqueurRetour++;
avancerSequence();
/trunk/src/org/tela_botanica/client/Mediateur.java
1,5 → 1,6
package org.tela_botanica.client;
 
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
 
27,6 → 28,7
import org.tela_botanica.client.modeles.collection.CollectionAPublication;
import org.tela_botanica.client.modeles.collection.CollectionAPublicationListe;
import org.tela_botanica.client.modeles.collection.CollectionListe;
import org.tela_botanica.client.modeles.collection.UniteRangement;
import org.tela_botanica.client.modeles.commentaire.Commentaire;
import org.tela_botanica.client.modeles.commentaire.CommentaireListe;
import org.tela_botanica.client.modeles.personne.Personne;
95,6 → 97,7
public static final Constantes i18nC = getI18nConstante();
public static final ErrorMessages i18nM = getI18nMessage();
public static final boolean DEBUG = true;
public static final boolean DEBUG_CHARGEMENT = false;
private EnteteVue panneauNord = null;
private NavigationVue panneauOuest = null;
102,9 → 105,13
private StatutVue panneauSud = null;
private FenetreJournal fenetreJournal = null;
private HashMap<Object, Integer> fileDAttenteChargement = null;
private IdentificationFenetre fenetreIdentification = null;
private int nbElements = Integer.valueOf(((Dictionary) Dictionary.getDictionary("configuration")).get("nbElementsPage"));
private Sequenceur sequenceur = null;
public Mediateur() {
// Enregistrement du Médiateur dans le Registre
Registry.register(RegistreId.MEDIATEUR, this);
114,6 → 121,9
// Création du Modèle qui s'enregistre lui même dans le Registre
modele = new Modele();
// Séquenceur (local au médiateur)
sequenceur = new Sequenceur();
 
// Création du Viewport qui contient la disposition globale de l'application
viewport = new Viewport();
129,6 → 139,9
// Connection de l'utilisateur
connecterUtilisateur(null, null);
// Creer la table qui gère le panneau de chargement/déchargement
fileDAttenteChargement = new HashMap<Object, Integer>();
// Retour à GWT du Viewport une fois constuit
RootPanel.get().add(viewport);
}
241,14 → 254,13
//+----------------------------------------------------------------------------------------------------------------+
public void clicMenu(String codeMenuClique) {
activerChargement(codeMenuClique);
 
panneauOuest.getMenu().selectionMenu(codeMenuClique);
if (codeMenuClique.equals(MenuApplicationId.ACCUEIL)) {
afficherAccueil();
} else if (codeMenuClique.equals(MenuApplicationId.PROJET)) {
selectionnerProjet(panneauCentre, null, null);
selectionnerProjet(panneauCentre, null, null, false, null);
} else if (codeMenuClique.equals(MenuApplicationId.STRUCTURE)) {
selectionnerStructure(panneauCentre, null, null);
} else if (codeMenuClique.equals(MenuApplicationId.COLLECTION)) {
262,20 → 274,59
} else {
GWT.log(i18nM.nonImplemente(codeMenuClique), null);
}
 
panneauCentre.layout();
}
public void activerChargement(String message) {
public void activerChargement(Object caller, String message) {
if (fileDAttenteChargement.get(caller) == null) fileDAttenteChargement.put(caller, 1);
else fileDAttenteChargement.put(caller, fileDAttenteChargement.get(caller)+1);
activerChargement(message);
}
private void activerChargement(String message) {
if (DEBUG_CHARGEMENT) System.out.println("[CHARGEMENT] ActiverChargement");
if (DEBUG_CHARGEMENT) debugFileAttente();
afficherPopinChargement();
panneauCentre.disable();
panneauSud.showBusy(i18nC.chargement()+" "+message);
}
public void desactiverChargement() {
public void desactiverChargement(Object caller) {
if (fileDAttenteChargement.get(caller) == null) {
if (DEBUG_CHARGEMENT) System.out.println("[CHARGEMENT] Problème : l'objet "+caller+" essaie de désactiver le chargement alors qu'il ne l'a pas initié.");
}
else fileDAttenteChargement.put(caller, fileDAttenteChargement.get(caller)-1);
if (!chargementsEnCours()) desactiverChargement();
}
private void desactiverChargement() {
if (DEBUG_CHARGEMENT) System.out.println("[CHARGEMENT] Désactiver Chargement");
if (DEBUG_CHARGEMENT) debugFileAttente();
masquerPopinChargement();
panneauCentre.enable();
panneauSud.clear();
}
private boolean chargementsEnCours() {
boolean chargementEnCours = false;
Iterator<Object> it = fileDAttenteChargement.keySet().iterator();
while (it.hasNext() && !chargementEnCours) {
chargementEnCours = (fileDAttenteChargement.get(it.next()) > 0);
}
return chargementEnCours;
}
private void debugFileAttente() {
System.out.println("[CHARGEMENT]--< StackTrace >------------------------------------------------------");
if (fileDAttenteChargement.size() == 0) System.out.println("(Empty)");
Iterator<Object> it = fileDAttenteChargement.keySet().iterator();
while (it.hasNext()) {
Object o = it.next();
System.out.println(" ==> ["+o+"] = "+fileDAttenteChargement.get(o));
}
}
//+----------------------------------------------------------------------------------------------------------------+
// GESTION DES FENÊTRES
546,11 → 597,11
}
/** Cette méthode est un "wrapper" **/
public void selectionnerProjet(Rafraichissable vueARafraichir, String projetId, Sequenceur sequenceur) {
selectionnerProjet(vueARafraichir, projetId, null, 0, this.nbElements, sequenceur);
public void selectionnerProjet(Rafraichissable vueARafraichir, String projetId, String formatRetour, boolean paginationProgressive, Sequenceur sequenceur) {
selectionnerProjet(vueARafraichir, projetId, null, 0, this.nbElements, formatRetour, paginationProgressive, sequenceur);
}
public void selectionnerProjet(Rafraichissable vueARafraichir, String projetId, String nom, int start, int nbElements, Sequenceur sequenceur) {
public void selectionnerProjet(Rafraichissable vueARafraichir, String projetId, String nom, int start, int nbElements, String formatRetour, boolean paginationProgressive, Sequenceur sequenceur) {
if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner Projet");
Integer numeroSequence = null;
if (sequenceur != null) {
557,7 → 608,7
numeroSequence = sequenceur.lancerRequeteSynchrone(vueARafraichir);
vueARafraichir = sequenceur;
}
modele.selectionnerProjet(vueARafraichir, projetId, nom, start, nbElements, numeroSequence);
modele.selectionnerProjet(vueARafraichir, projetId, nom, start, nbElements, formatRetour, paginationProgressive, numeroSequence);
}
 
/** AJOUTER **/
589,7 → 640,7
if (panneauCentre.getContenu() instanceof AccueilVue) {
desactiverChargement();
} else if (panneauCentre.getContenu() instanceof ProjetVue) {
selectionnerProjet(panneauCentre.getContenu(), null, null);
selectionnerProjet(panneauCentre.getContenu(), null, null, false, null);
} else if (panneauCentre.getContenu() instanceof StructureVue) {
selectionnerStructure(panneauCentre.getContenu(), null, null);
} else if (panneauCentre.getContenu() instanceof CollectionVue) {
771,6 → 822,17
//+----------------------------------------------------------------------------------------------------------------+
// GESTION de la relation STRUCTURE A PERSONNE
 
public void selectionnerStructureAPersonne(Rafraichissable vueARafraichir, String structureId, String roleId, String nom, int start, int nbElements, Sequenceur sequenceur) {
if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner StructureAPersonne");
Integer seqId = null;
if (sequenceur!=null) {
seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
vueARafraichir = sequenceur;
}
modele.selectionnerStructureAPersonne(vueARafraichir, structureId, roleId, nom, start, nbElements, seqId);
}
public void selectionnerStructureAPersonne(Rafraichissable vueARafraichir, String structureId, String roleId, Sequenceur sequenceur) {
if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner StructureAPersonne");
Integer seqId = null;
853,9 → 915,9
public void clicListeCollection(Collection collectionCliquee) {
panneauCentre.getContenu().rafraichir(collectionCliquee);
if (collectionCliquee != null) {
selectionnerCollectionAPersonne(panneauCentre.getContenu(), collectionCliquee.getId(), null, null);
selectionnerCollectionAPublication(panneauCentre.getContenu(), collectionCliquee.getId(), null);
selectionnerCollectionACommentaire(panneauCentre.getContenu(), collectionCliquee.getId(), null);
selectionnerCollectionAPersonne(panneauCentre.getContenu(), collectionCliquee.getId(), null, sequenceur);
selectionnerCollectionAPublication(panneauCentre.getContenu(), collectionCliquee.getId(), sequenceur);
selectionnerCollectionACommentaire(panneauCentre.getContenu(), collectionCliquee.getId(), sequenceur);
}
}
957,16 → 1019,6
}
modele.selectionnerCollection(vueARafraichir, recherche, start, nbElements, seqId);
}
/*
public void selectionnerCollection(Rafraichissable vueARafraichir, Integer id, int start, int nbElements, Sequenceur sequenceur) {
if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner Collection");
Integer seqId = null;
if (sequenceur!=null) {
seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
vueARafraichir = sequenceur;
}
modele.selectionnerCollection(vueARafraichir, id, start, nbElements, seqId);
} */
/** AJOUTER **/
public void ajouterCollection(Rafraichissable vueARafraichir, Collection collection) {
1000,6 → 1052,16
//+----------------------------------------------------------------------------------------------------------------+
// GESTION de la relation COLLECTION A PERSONNE
public void selectionnerCollectionAPersonne(Rafraichissable vueARafraichir, String collectionId, String roleId, String recherche, int start, int nbElements, Sequenceur sequenceur) {
if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner CollectionAPersonne");
Integer seqId = null;
if (sequenceur!=null) {
seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
vueARafraichir = sequenceur;
}
modele.selectionnerCollectionAPersonne(vueARafraichir, collectionId, roleId, recherche, start, nbElements, seqId);
}
public void selectionnerCollectionAPersonne(Rafraichissable vueARafraichir, String collectionId, String roleId, Sequenceur sequenceur) {
if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner CollectionAPersonne");
Integer seqId = null;
1479,16 → 1541,15
}
}
/** AJOUTER **/
// Lier plusieurs publication à une personne
public void ajouterPublicationAPersonne(Rafraichissable vueARafraichir, PublicationAPersonneListe listePublications, String personneId, String roleId, Integer seqId) {
if (listePublications!=null && listePublications.size()>0) {
if (listePublications != null && listePublications.size() > 0) {
String idsPubli = "";
String rolesIds = "";
String ordreAuteurs = "";
for (Iterator<String> it = listePublications.keySet().iterator(); it.hasNext();) {
PublicationAPersonne publiAPersonne = listePublications.get(it.next());
idsPubli += publiAPersonne.getId();
idsPubli += publiAPersonne.getIdPublication();
rolesIds += publiAPersonne.getRole();
ordreAuteurs += publiAPersonne.getOrdreAuteurs();
if (it.hasNext()) {
1521,7 → 1582,6
/** SUPPRIMER **/
public void supprimerPublicationAPersonne(Rafraichissable vueARafraichir, PublicationAPersonneListe personnesSupprimees) {
if (personnesSupprimees != null && personnesSupprimees.size() > 0) {
String idPublicationAPersonneSepareParVirgule = "" ;
for (Iterator<String> it = personnesSupprimees.keySet().iterator(); it.hasNext();) {
/trunk/src/org/tela_botanica/client/util/UtilString.java
58,4 → 58,9
public static boolean isEmpty(ArrayList<String> entree) {
return !(entree!=null && !entree.toString().equals("[]"));
}
public static boolean isNumber(String str, boolean emptyIsTrue) {
if (emptyIsTrue) return (str.matches("[0-9]*"));
else return (str.matches("[0-9]+"));
}
}
/trunk/src/org/tela_botanica/client/i18n/Constantes.properties
395,7 → 395,7
typeCollectionBotanique = Type d'herbier
nbreEchantillon = Nombre de cartons ou liasses échantillonnés
nbreEchantillonInfo = Privilégier les cartons contenant les Ombellifères ou Apiaceae, les Crucifères ou Brassicaceae et les Composées ou Asteraceae
collectionUniteType = Type
collectionUniteType = Type d'unité
collectionUniteNbre = Nombre
collectionUnitePrecision = Précision
collectionUniteFormat = Format
/trunk/src/org/tela_botanica/client/i18n/Constantes.java
322,7 → 322,6
String digitalInventaireCollectionDetail();
String pourcentDigitalInventaireCollectionDetail();
String etatInventaireCollectionDetail();
//DELETEME String typeDonneeInventaireCollectionDetail();
// Collection : form
String titreModifFormCollection();
/trunk/src/org/tela_botanica/client/vues/FiltreVue.java
83,10 → 83,10
projetsCombo.getCombo().addSelectionChangedListener(new SelectionChangedListener<ModelData>() {
public void selectionChanged(SelectionChangedEvent<ModelData> se) {
if (se.getSelectedItem() != null) {
mediateur.activerChargement(i18nC.chargement());
mediateur.activerChargement(this, i18nC.chargement());
Projet projet = new Projet (se.getSelectedItem());
mediateur.selectionnerProjetCourant(projet);
mediateur.desactiverChargement();
mediateur.desactiverChargement(this);
annulerFiltre.setEnabled(true);
}
}
106,9 → 106,9
annulerFiltre.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
projetsCombo.getCombo().clear();
mediateur.activerChargement(i18nC.chargement());
mediateur.activerChargement(this, i18nC.chargement());
mediateur.selectionnerProjetCourant(tousProjets);
mediateur.desactiverChargement();
mediateur.desactiverChargement(this);
annulerFiltre.setEnabled(false);
}
});
/trunk/src/org/tela_botanica/client/vues/personne/PersonneVue.java
53,8 → 53,6
mediateur.obtenirListeValeurEtRafraichir(this, "pays", sequenceur);
mediateur.obtenirListeValeurEtRafraichir(this, "tel", sequenceur);
mediateur.obtenirListeValeurEtRafraichir(this, "relationPersonnePublication", sequenceur);
 
mediateur.desactiverChargement();
}
 
public void rafraichir(Object nouvellesDonnees) {
/trunk/src/org/tela_botanica/client/vues/personne/PersonneForm.java
34,6 → 34,7
import org.tela_botanica.client.modeles.publication.PublicationAPersonneListe;
import org.tela_botanica.client.modeles.publication.PublicationListe;
import org.tela_botanica.client.synchronisation.Sequenceur;
import org.tela_botanica.client.util.Debug;
import org.tela_botanica.client.util.Pattern;
import org.tela_botanica.client.util.UtilString;
import org.tela_botanica.client.vues.Formulaire;
66,7 → 67,6
import org.tela_botanica.client.composants.pagination.Proxy;
import org.tela_botanica.client.composants.pagination.ProxyProjets;
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;
253,7 → 253,7
modelTypeProjets.addField("cpr_id_projet");
String displayNameProjets = "cpr_nom";
ProxyProjets<ModelData> proxyProjets = new ProxyProjets<ModelData>(sequenceur);
ProxyProjets<ModelData> proxyProjets = new ProxyProjets<ModelData>(null);
ChampComboBoxRechercheTempsReelPaginable cbProjets = new ChampComboBoxRechercheTempsReelPaginable(proxyProjets, modelTypeProjets, displayNameProjets);
cbProjets.setWidth(100, 600);
679,7 → 679,7
String displayNameTypes = "cmlv_nom";
String nomListeTypes = "pays";
ProxyValeur<ModelData> proxyTypes = new ProxyValeur<ModelData>(nomListeTypes, sequenceur);
ProxyValeur<ModelData> proxyTypes = new ProxyValeur<ModelData>(nomListeTypes, null);
ChampMultiValeursMultiTypesPaginable recolte = new ChampMultiValeursMultiTypesPaginable(i18nC.personneRecolte(), 450, false, null, null, null, typeTypes, proxyTypes, displayNameTypes);
1004,7 → 1004,14
//Mise à jour de la personne
ChampComboBoxRechercheTempsReelPaginable cbProjets = hmIdentite.getComboBoxRechercheTempsReelPaginable("cbProjets");
cbProjets.getCombo().setValue(cbProjets.getStore().findModel("cpr_id_projet", personne.get("ce_projet")));
if (cbProjets.getCombo().getStore() != null
&& personne != null
&& personne.getIdProjet() != null
&& !UtilString.isEmpty(personne.getIdProjet())) {
cbProjets.chargerValeurInitiale(personne.getIdProjet(), "cpr_id_projet");
} else {
cbProjets.getCombo().setValue(null);
}
//Prefixe
String prefixe = personne.get("ce_truk_prefix");
1282,7 → 1289,7
String decesLieu = (String) hmIdentite.getTextField("tfLieuDeces").getValue();
personneSelectionnee.setDecesLieu(decesLieu);
} else {
personneSelectionnee.setNonDecedee();
personneSelectionnee.setNonDecedee();
}
strValeur = obtenirValeurCombo("cbPays");
1328,9 → 1335,10
}
private void traiterDate(String typeDate, String date, Personne personneSelectionnee, LinkedList<String> lstMessageErreur) {
String valeurDate = date;
if (!UtilString.isEmpty(valeurDate)){
String jour = "";
String mois = "";
String annee = "";
1385,10 → 1393,16
personneSelectionnee.set("ce_deces", personneSelectionnee.ETRE_DECEDE);
}
}
} else {
}
else {
lstMessageErreur.add("La date de "+typeDate+" n'est pas au format JJ/MM/AAAA ou MM/AAAA ou AAAA.");
}
}
/** Date vide **/
} else {
personneSelectionnee.set("deces_date", "0000-00-00");
personneSelectionnee.set("ce_deces", personneSelectionnee.ETRE_DECEDE);
}
}
public Personne getPersonne() {
/trunk/src/org/tela_botanica/client/vues/collection/CollectionFormGeneral.java
128,7 → 128,7
modelTypeProjets.addField("cpr_id_projet");
String displayNameProjets = "cpr_nom";
ProxyProjets<ModelData> proxyProjets = new ProxyProjets<ModelData>(sequenceur);
ProxyProjets<ModelData> proxyProjets = new ProxyProjets<ModelData>(null);
projetsCombo = new ChampComboBoxRechercheTempsReelPaginable(proxyProjets, modelTypeProjets, displayNameProjets);
projetsCombo.setWidth(250, 600);
167,7 → 167,7
modelTypeStructures.addField("cs_id_structure");
String displayNameStructures = "cs_nom";
ProxyStructures<ModelData> proxyStructures = new ProxyStructures<ModelData>(sequenceur);
ProxyStructures<ModelData> proxyStructures = new ProxyStructures<ModelData>(null);
structuresCombo = new ChampComboBoxRechercheTempsReelPaginable(proxyStructures, modelTypeStructures, displayNameStructures);
structuresCombo.setWidth(250, 600);
205,7 → 205,7
modelTypeCollections.addField("cc_ce_mere");
String displayNameCollections = "cc_nom";
ProxyCollections<ModelData> proxyCollections = new ProxyCollections<ModelData>(sequenceur);
ProxyCollections<ModelData> proxyCollections = new ProxyCollections<ModelData>(null);
collectionsCombo = new ChampComboBoxRechercheTempsReelPaginable(proxyCollections, modelTypeCollections, displayNameCollections);
collectionsCombo.setWidth(250, 600);
418,9 → 418,14
}
return valeur;
}
private void setValeurComboProjets() {
if (projetsCombo.getStore() != null && collection != null) {
projetsCombo.getCombo().setValue(projetsCombo.getStore().findModel("cpr_id_projet", collection.getIdProjet()));
private void setValeurComboProjets() {
if (projetsCombo.getCombo().getStore() != null
&& collection != null
&& collection.getIdProjet() != null
&& !UtilString.isEmpty(collection.getIdProjet())) {
projetsCombo.chargerValeurInitiale(collection.getIdProjet(), "cpr_id_projet");
} else {
projetsCombo.getCombo().setValue(null);
}
}
433,10 → 438,7
return valeur;
}
private void setValeurComboStructures() {
/*if (structuresCombo.getStore() != null && collection != null) {
structuresCombo.getCombo().setValue(structuresCombo.getStore().findModel("cs_id_structure", collection.getIdStructure()));
}*/
if (structuresCombo.getCombo().getStore() != null
if (structuresCombo.getCombo().getStore() != null
&& collection != null
&& collection.getStructureNom() != null
&& !UtilString.isEmpty(collection.getStructureNom())) {
/trunk/src/org/tela_botanica/client/vues/collection/CollectionForm.java
105,13 → 105,13
Valeur valeur = typesCollectionCombo.getValue();
// Gestion des onglets en fonction du type de collection
mediateur.activerChargement("");
mediateur.activerChargement(this, "Chargement des onglets");
if (valeur != null && valeur.getId().equals(Valeur.COLLECTION_NCD_HERBIER)) {
activerOngletsHerbier();
} else {
activerOngletsDefaut();
}
mediateur.desactiverChargement();
mediateur.desactiverChargement(this);
}
};
/trunk/src/org/tela_botanica/client/vues/collection/CollectionFormDescription.java
54,8 → 54,11
import com.extjs.gxt.ui.client.widget.grid.AggregationRowConfig;
import com.extjs.gxt.ui.client.widget.grid.CellEditor;
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
import com.extjs.gxt.ui.client.widget.grid.ColumnData;
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
import com.extjs.gxt.ui.client.widget.grid.EditorGrid;
import com.extjs.gxt.ui.client.widget.grid.Grid;
import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
import com.extjs.gxt.ui.client.widget.grid.HeaderGroupConfig;
import com.extjs.gxt.ui.client.widget.grid.SummaryType;
108,8 → 111,7
creerFieldsetPrecision();
creerStorePrecision();
creerUniteRangement();
creerUniteBase();
creerFieldSetTypesUnite();
creerFieldsetConservation();
creerFieldsetEtiquette();
creerFieldsetTraitement();
179,7 → 181,25
return precisionCombo;
}
private void creerUniteRangement() {
private void creerFieldSetTypesUnite() {
FieldSet typesUniteFieldSet = new FieldSet();
typesUniteFieldSet.setHeading(i18nC.collectionUniteType());
typesUniteFieldSet.setCollapsible(true);
typesUniteFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
etatUniteRangementCombo = new ChampComboBoxListeValeurs(i18nC.collectionUniteRangementEtatGeneral(), "etat");
etatUniteRangementCombo.setToolTip(i18nC.collectionUniteRangementEtatGeneralInfo());
etatUniteRangementCombo.setTrie("id_valeur");
etatUniteRangementCombo.setWidth(300);
typesUniteFieldSet.add(etatUniteRangementCombo);
typesUniteFieldSet.add(creerUniteRangement());
typesUniteFieldSet.add(creerUniteBase());
add(typesUniteFieldSet);
}
private ContentPanel creerUniteRangement() {
ContentPanel panneauGrille = creerPanneauContenantGrille(i18nC.collectionUniteRangementTitre());
uniteRangementGrille = creerGrilleUniteRangement();
189,7 → 209,7
ToolBar barreOutils = creerBarreOutilsGrilleUniteRangement();
panneauGrille.setTopComponent(barreOutils);
add(panneauGrille);
return panneauGrille;
}
private ContentPanel creerPanneauContenantGrille(String titre) {
198,7 → 218,8
panneau.setIcon(Images.ICONES.table());
panneau.setLayout(new FitLayout());
panneau.setFrame(true);
panneau.setScrollMode(Scroll.AUTO);
panneau.setSize(800, 200);
panneau.setScrollMode(Scroll.NONE);
panneau.setCollapsible(true);
panneau.setStyleAttribute("margin", "5px 0");
313,6 → 334,7
for (int i = 0; i < nbreUnite; i++) {
UniteRangement uniteDansGrille = uniteRangementGrille.getStore().getAt(i);
UniteRangement uniteEnregistree = unitesEnregistrees.get(uniteDansGrille.getId());
if (uniteEnregistree != null) {
uniteEnregistree.setType(uniteDansGrille.getType());
listeUniteMaj.add(uniteEnregistree);
324,7 → 346,7
Iterator<String> it = unitesEnregistrees.keySet().iterator();
while (it.hasNext()) {
String cle = it.next();
if (cle.matches(aDonnee.TYPE_AUTRE+aDonnee.SEPARATEUR_TYPE_VALEUR)) {
if (cle.matches(aDonnee.TYPE_AUTRE+aDonnee.SEPARATEUR_TYPE_VALEUR+"[a-zA-Z0-9]+")) {
UniteRangement uniteAutreEnregistree = unitesEnregistrees.get(cle);
listeUniteMaj.add(uniteAutreEnregistree);
}
360,12 → 382,12
uniteRangement.setId(uniteTypeIdDonnees[0]);
uniteRangement.setTypeAutre(false);
unitesEnregistrees.put(uniteTypeIdDonnees[0], uniteRangement);
} else {
} else {
uniteRangement.setType(uniteTypeIdDonnees[0]);
uniteRangement.setTypeAutre(true);
String id = aDonnee.TYPE_AUTRE+aDonnee.SEPARATEUR_TYPE_VALEUR+uniteTypeIdDonnees[0]+"-"+i;
uniteRangement.setId(id);
unitesEnregistrees.put(aDonnee.TYPE_AUTRE+aDonnee.SEPARATEUR_TYPE_VALEUR, uniteRangement);
unitesEnregistrees.put(aDonnee.TYPE_AUTRE+aDonnee.SEPARATEUR_TYPE_VALEUR+uniteTypeIdDonnees[0], uniteRangement);
}
}
}
382,16 → 404,7
Button supprimerBouton = creerBoutonSupprimerUniteRangement();
barreOutils.add(supprimerBouton);
barreOutils.add(new SeparatorToolItem());
barreOutils.add(new Text(i18nC.collectionUniteRangementEtatGeneralLabel()));
etatUniteRangementCombo = new ChampComboBoxListeValeurs("", "etat");
etatUniteRangementCombo.setEmptyText(i18nC.collectionUniteRangementEtatGeneral());
etatUniteRangementCombo.setToolTip(i18nC.collectionUniteRangementEtatGeneralInfo());
etatUniteRangementCombo.setTrie("id_valeur");
etatUniteRangementCombo.setWidth(300);
barreOutils.add(etatUniteRangementCombo);
 
return barreOutils;
}
438,7 → 451,7
return bouton;
}
private void creerUniteBase() {
private ContentPanel creerUniteBase() {
ContentPanel panneauGrille = creerPanneauContenantGrille(i18nC.collectionUniteBaseTitre());
uniteBaseGrille = creerGrilleUniteBase();
448,7 → 461,7
ToolBar barreOutils = creerBarreOutilsGrilleUniteBase();
panneauGrille.setTopComponent(barreOutils);
add(panneauGrille);
return panneauGrille;
}
private EditorGrid<UniteBase> creerGrilleUniteBase() {
592,7 → 605,7
Iterator<String> it = unitesEnregistrees.keySet().iterator();
while (it.hasNext()) {
String cle = it.next();
if (cle.matches(aDonnee.TYPE_AUTRE+aDonnee.SEPARATEUR_TYPE_VALEUR)) {
if (cle.matches(aDonnee.TYPE_AUTRE+aDonnee.SEPARATEUR_TYPE_VALEUR+"[a-zA-Z0-9]+")) {
UniteBase uniteAutreEnregistree = unitesEnregistrees.get(cle);
listeUniteMaj.add(uniteAutreEnregistree);
}
645,7 → 658,7
uniteBase.setTypeAutre(true);
String id = aDonnee.TYPE_AUTRE+aDonnee.SEPARATEUR_TYPE_VALEUR+uniteTypeIdDonnees[0]+"-"+i;
uniteBase.setId(id);
unitesEnregistrees.put(aDonnee.TYPE_AUTRE+aDonnee.SEPARATEUR_TYPE_VALEUR, uniteBase);
unitesEnregistrees.put(aDonnee.TYPE_AUTRE+aDonnee.SEPARATEUR_TYPE_VALEUR+uniteTypeIdDonnees[0], uniteBase);
}
}
}
/trunk/src/org/tela_botanica/client/vues/collection/CollectionFormPersonne.java
1,18 → 1,18
package org.tela_botanica.client.vues.collection;
 
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
 
import org.tela_botanica.client.ComposantClass;
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.composants.ChampComboBoxRechercheTempsReelPaginable;
import org.tela_botanica.client.composants.GrillePaginable;
import org.tela_botanica.client.composants.InfoLogger;
import org.tela_botanica.client.composants.pagination.ProxyCollectionAPersonne;
import org.tela_botanica.client.composants.pagination.ProxyPersonnes;
import org.tela_botanica.client.images.Images;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Information;
import org.tela_botanica.client.modeles.InterneValeur;
import org.tela_botanica.client.modeles.Valeur;
import org.tela_botanica.client.modeles.ValeurListe;
import org.tela_botanica.client.modeles.aDonnee;
19,16 → 19,9
import org.tela_botanica.client.modeles.collection.Collection;
import org.tela_botanica.client.modeles.collection.CollectionAPersonne;
import org.tela_botanica.client.modeles.collection.CollectionAPersonneListe;
import org.tela_botanica.client.modeles.collection.UniteBase;
import org.tela_botanica.client.modeles.collection.UniteRangement;
import org.tela_botanica.client.modeles.personne.Personne;
import org.tela_botanica.client.modeles.personne.PersonneListe;
import org.tela_botanica.client.modeles.projet.Projet;
import org.tela_botanica.client.modeles.publication.Publication;
import org.tela_botanica.client.modeles.structure.StructureAPersonne;
import org.tela_botanica.client.synchronisation.Sequenceur;
import org.tela_botanica.client.util.Debug;
import org.tela_botanica.client.util.UtilString;
import org.tela_botanica.client.vues.FenetreForm;
import org.tela_botanica.client.vues.Formulaire;
import org.tela_botanica.client.vues.FormulaireBarreValidation;
40,18 → 33,14
import com.extjs.gxt.ui.client.data.ModelType;
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.EventType;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.KeyListener;
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.store.Record;
import com.extjs.gxt.ui.client.store.Store;
import com.extjs.gxt.ui.client.store.StoreEvent;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.Text;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.button.ButtonBar;
64,20 → 53,14
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
import com.extjs.gxt.ui.client.widget.grid.ColumnData;
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
import com.extjs.gxt.ui.client.widget.grid.EditorGrid;
import com.extjs.gxt.ui.client.widget.grid.Grid;
import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
import com.extjs.gxt.ui.client.widget.grid.HeaderGroupConfig;
import com.extjs.gxt.ui.client.widget.grid.RowNumberer;
import com.extjs.gxt.ui.client.widget.layout.AnchorLayout;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Element;
import com.google.gwt.event.dom.client.KeyCodes;
 
public class CollectionFormPersonne extends FormulaireOnglet implements Rafraichissable {
87,7 → 70,8
private ContentPanel panneauPrincipal = null;
private ToolBar barreOutils = null;
private EditorGrid<CollectionAPersonne> grille;
private GrillePaginable<ModelData> grille;
private ComboBox<Valeur> typeRelationCombo = null;
private CollectionAPersonneListe personnesAjoutees = null;
111,16 → 95,17
setText(Mediateur.i18nC.collectionPersonne());
setStyleAttribute("padding", "0");
initialiser();
panneauPrincipal = creerPanneauContenantGrille();
barreOutils = creerBarreOutilsGrille();
panneauPrincipal.setTopComponent(barreOutils);
grille = creerGrille();
panneauPrincipal.add(grille);
mediateur.obtenirListeValeurEtRafraichir(this, "ion", null);
mediateur.obtenirListeValeurEtRafraichir(this, "relationPersonneCollection", null);
mediateur.obtenirListeValeurEtRafraichir(this, "ion", sequenceur);
mediateur.obtenirListeValeurEtRafraichir(this, "relationPersonneCollection", sequenceur);
add(panneauPrincipal);
initialiser();
}
private void initialiser() {
129,9 → 114,6
personnesAjoutees = new CollectionAPersonneListe();
personnesSupprimees = new CollectionAPersonneListe();
// Actualisation de l'état des boutons de la barre d'outils
actualiserEtatBoutonsBarreOutils();
collection = ((CollectionForm) formulaire).collection;
}
194,8 → 176,9
Button bouton = new Button(i18nC.modifier());
bouton.setIcon(Images.ICONES.vcardModifier());
bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
CollectionAPersonne personneSaisiSelectionne = grille.getSelectionModel().getSelectedItem();
public void componentSelected(ButtonEvent ce) {
CollectionAPersonne personneSaisiSelectionne = new CollectionAPersonne(grille.getSelection());
if (personneSaisiSelectionne == null) {
InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPersonne());
} else {
210,7 → 193,7
private FenetreForm creerFenetreModaleAvecFormulairePersonne(String mode) {
String personneId = null;
if (mode.equals(Formulaire.MODE_MODIFIER)) {
CollectionAPersonne personneSaisieSelectionnee = grille.getSelectionModel().getSelectedItem();
CollectionAPersonne personneSaisieSelectionnee = new CollectionAPersonne(grille.getSelection());
personneId = personneSaisieSelectionnee.getIdPersonne();
}
264,7 → 247,7
bouton.setIcon(Images.ICONES.vcardSupprimer());
bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
CollectionAPersonne personneSaisiSelectionnee = grille.getSelectionModel().getSelectedItem();
ModelData personneSaisiSelectionnee = grille.getSelection();
if (personneSaisiSelectionnee == null) {
InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPersonne());
} else {
303,7 → 286,7
modelTypePersonnes.addField("cp_deces_lieu");
String displayNamePersonnes = "cp_fmt_nom_complet";
ProxyPersonnes<ModelData> proxyPersonnes = new ProxyPersonnes<ModelData>(sequenceur);
ProxyPersonnes<ModelData> proxyPersonnes = new ProxyPersonnes<ModelData>(null);
recherchePersonnesCombo = new ChampComboBoxRechercheTempsReelPaginable(proxyPersonnes, modelTypePersonnes, displayNamePersonnes);
recherchePersonnesCombo.getCombo().setForceSelection(true);
325,7 → 308,7
recherchePersonnesCombo.getCombo().addListener(Events.Select, new Listener<BaseEvent>() {
public void handleEvent(BaseEvent be) {
if (personnesSaisisComboBox.getValeur() instanceof ModelData) {
if (personnesSaisisComboBox.getValeur() instanceof ModelData) {
Personne personneSaisiSelectionnee = new Personne(personnesSaisisComboBox.getValeur());
ajouterDansGrille(personneSaisiSelectionnee);
personnesSaisisComboBox.getCombo().setValue(null);
343,8 → 326,9
private void ajouterDansGrille(Personne personne, String relation, int index) {
if (personne != null) {
CollectionAPersonne relationCollectionPersonne = new CollectionAPersonne();
relationCollectionPersonne.setPersonne(personne);
relationCollectionPersonne.setPersonnePourGrillePaginable(personne);
relationCollectionPersonne.setIdPersonne(personne.getId());
if (relation != null) {
relationCollectionPersonne.set("_role_", relation);
}
352,84 → 336,92
if (mode.equals(Formulaire.MODE_MODIFIER)) {
relationCollectionPersonne.setIdCollection(collection.getId());
}
relationCollectionPersonne.set("_etat_", aDonnee.ETAT_AJOUTE);
corrigerChampsGrille(relationCollectionPersonne);
// FIXME besoin de ça ?
//corrigerChampsGrille(relationCollectionPersonne);
// Ajout à la grille
grille.stopEditing();
grille.getStore().insert(relationCollectionPersonne, index);
grille.startEditing(index, 0);
grille.getSelectionModel().select(index, false);
grille.getGrille().stopEditing();
grille.getGrille().getStore().insert(relationCollectionPersonne, index);
grille.getGrille().startEditing(index, 0);
grille.getGrille().getSelectionModel().select(index, false);
}
}
private void supprimerDansGrille(CollectionAPersonne relationCollectionPersonne) {
private void supprimerDansGrille(ModelData relationCollectionPersonne) {
CollectionAPersonne cap = new CollectionAPersonne(relationCollectionPersonne);
if (relationCollectionPersonne != null) {
// Ajout de la personne supprimée à la liste
if ((relationCollectionPersonne.get("_etat_").equals("") || !relationCollectionPersonne.get("_etat_").equals(aDonnee.ETAT_AJOUTE))
&& relationCollectionPersonne.getId() != null
&& !relationCollectionPersonne.getId().equals("")) {
personnesSupprimees.put("id"+idGenere++, relationCollectionPersonne);
if ((relationCollectionPersonne.get("_etat_") == null
|| relationCollectionPersonne.get("_etat_").equals("")
|| !relationCollectionPersonne.get("_etat_").equals(aDonnee.ETAT_AJOUTE))
&& cap.getId() != null
&& !cap.getId().equals("")) {
personnesSupprimees.put("id"+idGenere++, cap);
grille.getStore().remove(relationCollectionPersonne);
}
// Suppression de l'enregistrement de la grille
grille.getStore().remove(relationCollectionPersonne);
}
}
 
private EditorGrid<CollectionAPersonne> creerGrille() {
ListStore<CollectionAPersonne> storeGrille = new ListStore<CollectionAPersonne>();
storeGrille.addListener(Store.Add, new Listener<StoreEvent<CollectionAPersonne>>() {
public void handleEvent(StoreEvent<CollectionAPersonne> ce) {
actualiserEtatBoutonsBarreOutils();
}
});
storeGrille.addListener(Store.Remove, new Listener<StoreEvent<CollectionAPersonne>>() {
public void handleEvent(StoreEvent<CollectionAPersonne> ce) {
actualiserEtatBoutonsBarreOutils();
}
});
storeGrille.addListener(Store.Update, new Listener<StoreEvent<CollectionAPersonne>>() {
public void handleEvent(StoreEvent<CollectionAPersonne> ce) {
if (ce.getRecord().isModified("_role_") && !ce.getModel().get("_etat_").equals(aDonnee.ETAT_AJOUTE)) {
ce.getModel().set("_etat_", aDonnee.ETAT_MODIFIE);
}
}
});
private GrillePaginable<ModelData> creerGrille() {
RowNumberer pluginLigneNumero = new RowNumberer();
// ModelType
ModelType modelTypeCollectionAPersonne = new ModelType();
modelTypeCollectionAPersonne.setRoot("collectionsAPersonne");
modelTypeCollectionAPersonne.setTotalName("nbElements");
modelTypeCollectionAPersonne.addField("cp_fmt_nom_complet");
modelTypeCollectionAPersonne.addField("cp_nom");
modelTypeCollectionAPersonne.addField("cp_prenom");
modelTypeCollectionAPersonne.addField("cp_code_postal");
modelTypeCollectionAPersonne.addField("cp_naissance_date");
modelTypeCollectionAPersonne.addField("cp_naissance_lieu");
modelTypeCollectionAPersonne.addField("cp_ce_deces");
modelTypeCollectionAPersonne.addField("cp_deces_date");
modelTypeCollectionAPersonne.addField("cp_deces_lieu");
modelTypeCollectionAPersonne.addField("ccap_id_collection");
modelTypeCollectionAPersonne.addField("ccap_id_personne");
modelTypeCollectionAPersonne.addField("ccap_id_role");
// Proxy
ProxyCollectionAPersonne<ModelData> proxyCollectionAPersonne = new ProxyCollectionAPersonne<ModelData>(null, collection.getId(), null);
 
// Colonnes
List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
colonnes.add(pluginLigneNumero);
colonnes.add(new RowNumberer());
colonnes.add(creerColonneRole());
colonnes.add(new ColumnConfig("fmt_nom_complet", i18nC.personneNomComplet(), 150));
colonnes.add(new ColumnConfig("nom", i18nC.personneNom(), 75));
colonnes.add(new ColumnConfig("prenom", i18nC.personnePrenom(), 75));
colonnes.add(new ColumnConfig("naissance_date", i18nC.date(), 75));
colonnes.add(new ColumnConfig("naissance_lieu", i18nC.lieu(), 100));
colonnes.add(new ColumnConfig("cp_fmt_nom_complet", i18nC.personneNomComplet(), 150));
colonnes.add(new ColumnConfig("cp_nom", i18nC.personneNom(), 75));
colonnes.add(new ColumnConfig("cp_prenom", i18nC.personnePrenom(), 75));
colonnes.add(new ColumnConfig("cp_naissance_date", i18nC.date(), 75));
colonnes.add(new ColumnConfig("cp_naissance_lieu", i18nC.lieu(), 100));
colonnes.add(creerColonneDeces());
colonnes.add(new ColumnConfig("deces_date", i18nC.date(), 75));
colonnes.add(new ColumnConfig("deces_lieu", i18nC.lieu(), 100));
colonnes.add(new ColumnConfig("cp_deces_date", i18nC.date(), 75));
colonnes.add(new ColumnConfig("cp_deces_lieu", i18nC.lieu(), 100));
GridSelectionModel<CollectionAPersonne> modeleDeSelection = new GridSelectionModel<CollectionAPersonne>();
// Modèle de colonnes
ColumnModel modeleDeColonnes = new ColumnModel(colonnes);
modeleDeColonnes.addHeaderGroup(0, 1, new HeaderGroupConfig(i18nC.personneIdentite(), 1, 4));
modeleDeColonnes.addHeaderGroup(0, 5, new HeaderGroupConfig(i18nC.personneNaissance(), 1, 2));
modeleDeColonnes.addHeaderGroup(0, 7, new HeaderGroupConfig(i18nC.personneDeces(), 1, 3));
EditorGrid<CollectionAPersonne> grillePersonne = new EditorGrid<CollectionAPersonne>(storeGrille, modeleDeColonnes);
grillePersonne.setHeight("100%");
grillePersonne.setBorders(true);
grillePersonne.setSelectionModel(modeleDeSelection);
grillePersonne.addPlugin(pluginLigneNumero);
grillePersonne.getView().setForceFit(true);
grillePersonne.setAutoExpandColumn("fmt_nom_complet");
grillePersonne.setStripeRows(true);
grillePersonne.setTrackMouseOver(true);
// Grille
GrillePaginable<ModelData> grillePaginable = new GrillePaginable<ModelData>(modelTypeCollectionAPersonne, proxyCollectionAPersonne, colonnes, modeleDeColonnes);
return grillePersonne;
// Rajouter des écouteurs
grillePaginable.getStore().addListener(Store.Update, new Listener<StoreEvent<ModelData>>() {
public void handleEvent(StoreEvent<ModelData> ce) {
if (ce.getRecord().isModified("_role_") && ce.getModel().get("_etat_") == null || !ce.getModel().get("_etat_").equals(aDonnee.ETAT_AJOUTE)) {
ce.getModel().set("_etat_", aDonnee.ETAT_MODIFIE);
}
}
});
return grillePaginable;
}
private ColumnConfig creerColonneRole() {
441,9 → 433,11
typeRelationCombo.setEditable(false);
typeRelationCombo.addStyleName(ComposantClass.OBLIGATOIRE);
typeRelationCombo.addListener(Events.Select, Formulaire.creerEcouteurChampObligatoire());
CellEditor editeurRelation = new CellEditor(typeRelationCombo) {
public Object preProcessValue(Object valeur) {
 
CellEditor editeurRelation = new CellEditor(typeRelationCombo) {
// Sert à retourner un ModelData à partir d'une String (la string est passée par le Renderer)
public Object preProcessValue(Object valeur) {
Valeur retour = null;
if (valeur != null ) {
if (typeRelationCombo.getStore().findModel("nom", valeur.toString()) != null) {
455,45 → 449,53
}
}
return retour;
}
 
public Object postProcessValue(Object valeur) {
}
// Sert à retourner un String à Partir d'une Valeur
// en postProcess on remplace la valeur du champ par l'Id de la valeur au lieu de son Nom
public Object postProcessValue(Object valeur) {
String retour = null;
if (valeur != null ) {
if (valeur instanceof Valeur) {
Valeur valeurOntologie = (Valeur) valeur;
retour = valeurOntologie.getNom();
String id = valeurOntologie.getId();
retour = id;
}
}
return retour;
}
}
};
GridCellRenderer<CollectionAPersonne> relationRendu = new GridCellRenderer<CollectionAPersonne>() {
public String render(CollectionAPersonne modele, String property, ColumnData config, int rowIndex, int colIndex, ListStore<CollectionAPersonne> store, Grid<CollectionAPersonne> grille) {
// Gestion du texte afficher dans la cellule
String role = modele.get("_role_");
if (typeRelationCombo.getStore() != null && role.matches("[0-9]+")) {
// Sert à afficher le nom du role au lieu de l'id
GridCellRenderer<ModelData> relationRendu = new GridCellRenderer<ModelData>() {
public String render(ModelData modele, String property, ColumnData config, int rowIndex, int colIndex, ListStore<ModelData> store, Grid<ModelData> grille) {
// Gestion du texte afficher dans la cellule
CollectionAPersonne cap = new CollectionAPersonne(modele);
 
String role = cap.getIdRole();
modele.set("_role_", role);
 
if (typeRelationCombo.getStore() != null && typeRelationCombo.getStore().getCount() > 0 && role.matches("[0-9]+")) {
role = typeRelationCombo.getStore().findModel("id_valeur", role).getNom();
}
modele.set("_role_", role);
 
return role;
}
};
ColumnConfig typeRelationColonne = new ColumnConfig("_role_", i18nC.typeRelationPersonneCollection(), 75);
typeRelationColonne.setEditor(editeurRelation);
typeRelationColonne.setRenderer(relationRendu);
return typeRelationColonne;
}
public ColumnConfig creerColonneDeces() {
GridCellRenderer<CollectionAPersonne> decesRendu = new GridCellRenderer<CollectionAPersonne>() {
public String render(CollectionAPersonne modele, String property, ColumnData config, int rowIndex, int colIndex, ListStore<CollectionAPersonne> store, Grid<CollectionAPersonne> grid) {
String deces = modele.getPersonne().getDeces();
if (listeIon != null && modele.getPersonne().getDeces().matches("[0-9]+")) {
deces = listeIon.findModel("id_valeur", modele.getPersonne().getDeces()).getNom();
GridCellRenderer<ModelData> decesRendu = new GridCellRenderer<ModelData>() {
public String render(ModelData modele, String property, ColumnData config, int rowIndex, int colIndex, ListStore<ModelData> store, Grid<ModelData> grid) {
CollectionAPersonne cap = new CollectionAPersonne(modele);
String deces = cap.getPersonne().getDeces();
if (listeIon != null && cap.getPersonne().getDeces().matches("[0-9]+")) {
deces = listeIon.findModel("id_valeur", cap.getPersonne().getDeces()).getNom();
}
modele.set("_deces_", deces);
return deces;
505,6 → 507,7
}
public void actualiserEtatBoutonsBarreOutils() {
// Activation des boutons si la grille contient un élément
if (grille.getStore().getCount() > 0) {
personnesBoutonSupprimer.enable();
529,7 → 532,7
}
}
private void rafraichirValeurListe(ValeurListe listeValeurs) {
private void rafraichirValeurListe(ValeurListe listeValeurs) {
if (listeValeurs.getId().equals(config.getListeId("ion"))) {
listeIon = new ListStore<Valeur>();
listeIon.add(listeValeurs.toList());
547,9 → 550,7
String type = info.getType();
if (info.getType().equals("liste_collection_a_personne")) {
if (info.getDonnee(0) != null) {
initialiser();
collection.setPersonnesLiees((CollectionAPersonneListe) info.getDonnee(0));
peupler();
}
} else if (info.getType().equals("ajout_collection")) {
if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String) {
562,7 → 563,7
} else if (type.equals("personne_modifiee")) {
if (info.getDonnee(0) != null) {
Personne personne = (Personne) info.getDonnee(0);
CollectionAPersonne personneDansGrille = grille.getStore().findModel("id_personne", personne.getId());
ModelData personneDansGrille = grille.getStore().findModel("id_personne", personne.getId());
int index = grille.getStore().indexOf(personneDansGrille);
grille.getStore().remove(personneDansGrille);
String role = (String) personneDansGrille.get("_role_");
577,18 → 578,12
InfoLogger.display("Modification des personnes liées à la collection", info.toString());
} else if (info.getType().equals("suppression_collection_a_personne")) {
InfoLogger.display("Suppression des personnes liées à la collection", info.toString());
actualiserGrille();
} else if (info.getType().equals("ajout_collection_a_personne")) {
InfoLogger.display("Ajout des personnes liées à la collection", info.toString());
}
}
public void peupler() {
grille.getStore().removeAll();
grille.getStore().add(collection.getPersonnesLiees().toList());
layout();
InfoLogger.display(i18nC.chargementPersonne(), i18nC.ok());
}
public ArrayList<String> verifier() {
ArrayList<String> messages = new ArrayList<String>();
String personneNumero = "";
596,7 → 591,7
if (nbrePersonne > 0) {
for (int i = 0; i < nbrePersonne; i++) {
CollectionAPersonne personne = grille.getStore().getAt(i);
CollectionAPersonne personne = new CollectionAPersonne(grille.getStore().getAt(i));
if (personne.get("_role_").equals("")) {
personneNumero += (i != 0 ? ", " : "")+(i+1);
}
613,8 → 608,10
if (etreAccede()) {
int nbrePersonne = grille.getStore().getCount();
for (int i = 0; i < nbrePersonne; i++) {
CollectionAPersonne relationCollectionPersonne = grille.getStore().getAt(i);
CollectionAPersonne relationCollectionPersonne = new CollectionAPersonne(grille.getStore().getAt(i));
if (relationCollectionPersonne.get("_etat_") != null) {
if (relationCollectionPersonne.get("_etat_").equals(aDonnee.ETAT_MODIFIE)) {
// Comme il est impossible de modifier les relations nous supprimons l'ancien enregistrement et ajoutons un nouveau avec le nouveau id_role
personnesSupprimees.put("id"+idGenere++, relationCollectionPersonne);
641,6 → 638,7
if (role.matches("[0-9]+")) {
champModele = "id_valeur";
}
 
if (typeRelationCombo.getStore().findModel(champModele, role) != null) {
String idRole = typeRelationCombo.getStore().findModel(champModele, role).getId();
relationCollectionPersonne.setIdRole(idRole);
649,6 → 647,7
 
public void soumettre() {
if (mode.equals(Formulaire.MODE_MODIFIER)) {
if (personnesAjoutees.size() == 0 && personnesSupprimees.size() == 0) {
InfoLogger.display("Modification des personnes liées", "Rien n'a été enregistré car le formulaire n'a pas été modifié.");
} else {
664,10 → 663,6
}
}
private void obtenirPersonnesSaisis(String nom) {
mediateur.selectionnerPersonneParNomComplet(this, null, "%"+nom+"%", null);
}
private void actualiserGrille() {
if (mode.equals(Formulaire.MODE_MODIFIER)) {
mediateur.selectionnerCollectionAPersonne(this, collection.getId(), null, null);
/trunk/src/org/tela_botanica/client/vues/collection/CollectionFormPublication.java
150,7 → 150,7
bouton.setIcon(Images.ICONES.vcardAjouter());
bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
fenetreFormulaire = creerFenetreModaleAvecFormulairePersonne(Formulaire.MODE_AJOUTER);
fenetreFormulaire = creerFenetreModaleAvecFormulairePublication(Formulaire.MODE_AJOUTER);
fenetreFormulaire.show();
}
});
167,7 → 167,7
if (publicationSaisieSelectionnee == null) {
InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
} else {
fenetreFormulaire = creerFenetreModaleAvecFormulairePersonne(Formulaire.MODE_MODIFIER);
fenetreFormulaire = creerFenetreModaleAvecFormulairePublication(Formulaire.MODE_MODIFIER);
fenetreFormulaire.show();
}
}
175,7 → 175,7
return bouton;
}
private FenetreForm creerFenetreModaleAvecFormulairePersonne(String mode) {
private FenetreForm creerFenetreModaleAvecFormulairePublication(String mode) {
String publicationId = null;
if (mode.equals(Formulaire.MODE_MODIFIER)) {
CollectionAPublication publicationSaisiSelectionne = grille.getSelectionModel().getSelectedItem();
218,7 → 218,7
fenetre.hide();
} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_REINITIALISER)) {
fenetreFormulaire.hide();
fenetreFormulaire = creerFenetreModaleAvecFormulairePersonne(formulaire.mode);
fenetreFormulaire = creerFenetreModaleAvecFormulairePublication(formulaire.mode);
fenetreFormulaire.show();
}
}
/trunk/src/org/tela_botanica/client/vues/structure/StructureForm.java
9,9 → 9,12
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.GrillePaginable;
import org.tela_botanica.client.composants.InfoLogger;
import org.tela_botanica.client.composants.pagination.ProxyCollectionAPersonne;
import org.tela_botanica.client.composants.pagination.ProxyPersonnes;
import org.tela_botanica.client.composants.pagination.ProxyProjets;
import org.tela_botanica.client.composants.pagination.ProxyStructureAPersonne;
import org.tela_botanica.client.composants.pagination.ProxyValeur;
import org.tela_botanica.client.images.Images;
import org.tela_botanica.client.interfaces.Rafraichissable;
88,6 → 91,7
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
import com.extjs.gxt.ui.client.widget.grid.EditorGrid;
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
import com.extjs.gxt.ui.client.widget.grid.HeaderGroupConfig;
import com.extjs.gxt.ui.client.widget.grid.RowNumberer;
import com.extjs.gxt.ui.client.widget.layout.ColumnData;
import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;
1475,7 → 1479,7
modelTypePersonnes.addField("cp_ce_truk_specialite");
String displayNamePersonnes = "cp_fmt_nom_complet";
ProxyPersonnes<ModelData> proxyPersonnes = new ProxyPersonnes<ModelData>(sequenceur);
ProxyPersonnes<ModelData> proxyPersonnes = new ProxyPersonnes<ModelData>(null);
personneExistanteCombo = new ChampComboBoxRechercheTempsReelPaginable(proxyPersonnes, modelTypePersonnes, displayNamePersonnes);
 
1516,16 → 1520,15
personnelGrilleMagazin.addListener(Store.Update, new Listener<StoreEvent<StructureAPersonne>>() {
public void handleEvent(StoreEvent<StructureAPersonne> ce) {
 
StructureAPersonne structureAPersonne = ce.getModel();
String etat = structureAPersonne.get("etat");
if (etat!=null && !etat.equals(aDonnee.ETAT_AJOUTE) && structureAPersonne!=null && !UtilString.isEmpty(structureAPersonne.getId())) {
if ((etat==null || !etat.equals(aDonnee.ETAT_AJOUTE)) && structureAPersonne!=null && !UtilString.isEmpty(structureAPersonne.getId())) {
ce.getModel().set("etat", aDonnee.ETAT_MODIFIE);
}
}
});
cp.add(grillePersonnel);
personnelOnglet.add(cp);
1532,6 → 1535,7
return personnelOnglet;
}
private TabItem creerOngletIdentification() {
//+-----------------------------------------------------------------------------------------------------------+
// Onlget formulaire IDENTIFICATION
1570,7 → 1574,7
modelTypeProjets.addField("cpr_id_projet");
String displayNameProjets = "cpr_nom";
ProxyProjets<ModelData> proxyProjets = new ProxyProjets<ModelData>(sequenceur);
ProxyProjets<ModelData> proxyProjets = new ProxyProjets<ModelData>(null);
projetsCombo = new ChampComboBoxRechercheTempsReelPaginable(proxyProjets, modelTypeProjets, displayNameProjets);
projetsCombo.getCombo().setTabIndex(tabIndex++);
1798,7 → 1802,7
String displayNamePays = "cmlv_nom";
String nomListeTypes = "pays";
ProxyValeur<ModelData> proxyPays = new ProxyValeur<ModelData>(nomListeTypes, sequenceur);
ProxyValeur<ModelData> proxyPays = new ProxyValeur<ModelData>(nomListeTypes, null);
comboPays = new ChampComboBoxRechercheTempsReelPaginable(proxyPays, modelTypesPays, displayNamePays);
comboPays.setWidth(100,500);
2068,15 → 2072,12
}
} else if (info.getType().equals("modif_structure_a_personne")) {
InfoLogger.display("Modification du Personnel", info.toString());
GWT.log("Decompte:"+decompteRafraichissementPersonnel, null);
testerLancementRafraichirPersonnel();
} else if (info.getType().equals("suppression_structure_a_personne")) {
InfoLogger.display("Suppression du Personnel", info.toString());
GWT.log("Decompte:"+decompteRafraichissementPersonnel, null);
testerLancementRafraichirPersonnel();
} else if (info.getType().equals("ajout_structure_a_personne")) {
InfoLogger.display("Ajout du Personnel", info.toString());
GWT.log("Decompte:"+decompteRafraichissementPersonnel, null);
testerLancementRafraichirPersonnel();
} else if (info.getType().equals("selection_structure")) {
InfoLogger.display("Modification d'une institution", info.toString());
/trunk/src/org/tela_botanica/client/vues/DetailVue.java
64,7 → 64,7
}
private void chargerProjets() {
mediateur.selectionnerProjet(this, null, null);
mediateur.selectionnerProjet(this, null, null, false, null);
}
protected String construireTxtProjet(String idProjet) {
/trunk/src/org/tela_botanica/client/vues/commentaire/CommentaireVue.java
41,7 → 41,7
panneauDetail.rafraichir(nouvellesDonnees);
} else if (nouvellesDonnees instanceof CommentaireListe) {
panneauListe.rafraichir(nouvellesDonnees);
mediateur.desactiverChargement();
mediateur.desactiverChargement(this);
} else if (nouvellesDonnees instanceof Information) {
panneauListe.rafraichir(nouvellesDonnees);
} else {
/trunk/src/org/tela_botanica/client/vues/commentaire/CommentaireForm.java
99,7 → 99,7
modelTypeProjets.addField("cpr_id_projet");
String displayNameProjets = "cpr_nom";
ProxyProjets<ModelData> proxyProjets = new ProxyProjets<ModelData>(sequenceur);
ProxyProjets<ModelData> proxyProjets = new ProxyProjets<ModelData>(null);
projetsCombo = new ChampComboBoxRechercheTempsReelPaginable(proxyProjets, modelTypeProjets, displayNameProjets);
projetsCombo.setWidth(100, 550);
174,13 → 174,23
}
return valeur;
}
private void setValeurComboProjets() {
if (projetsCombo.getStore() != null ) {
if (mode.equals(Formulaire.MODE_MODIFIER) && commentaire != null) {
projetsCombo.getCombo().setValue(projetsCombo.getStore().findModel("cpr_id_projet", commentaire.getIdProjet()));
} else if (mode.equals(Formulaire.MODE_AJOUTER)) {
projetsCombo.getCombo().setValue(projetsCombo.getStore().findModel("cpr_id_projet", mediateur.getProjetId()));
if (mode.equals(Formulaire.MODE_MODIFIER)) {
if (projetsCombo.getCombo().getStore() != null
&& commentaire != null
&& commentaire.getIdProjet() != null
&& !UtilString.isEmpty(commentaire.getIdProjet())) {
projetsCombo.chargerValeurInitiale(commentaire.getIdProjet(), "cpr_id_projet");
} else {
projetsCombo.getCombo().setValue(null);
}
} else if (mode.equals(Formulaire.MODE_AJOUTER)) {
if (projetsCombo.getCombo().getStore() != null) {
projetsCombo.chargerValeurInitiale(mediateur.getProjetId(), "cpr_id_projet");
} else {
projetsCombo.getCombo().setValue(null);
}
}
}
/trunk/src/org/tela_botanica/client/vues/projet/ProjetDetailVue.java
185,7 → 185,7
contenuParams.set("licence", projet.getLicence());
contenuParams.set("i18n_langue", i18nC.projetLangue());
contenuParams.set("langue", obtenirValeurLangue(projet.getLangue()));
contenuParams.set("langue", obtenirValeurLangue(projet.getLangueId()));
contenuParams.set("i18n_titre_indexation", i18nC.projetTitreIndexation());
/trunk/src/org/tela_botanica/client/vues/projet/ProjetForm.java
103,7 → 103,7
creerTabIndex();
if (modeDeCreation.equals(Formulaire.MODE_MODIFIER)) {
mediateur.selectionnerProjet(this, projetId, null);
mediateur.selectionnerProjet(this, projetId, null, false, null);
}
}
190,7 → 190,7
String displayNameLangues = "cmlv_nom";
String nomListeTypes = "langues";
ProxyValeur<ModelData> proxyLangues = new ProxyValeur<ModelData>(nomListeTypes, sequenceur);
ProxyValeur<ModelData> proxyLangues = new ProxyValeur<ModelData>(nomListeTypes, null);
langueChp = new ChampComboBoxRechercheTempsReelPaginable(proxyLangues, modelTypesLangues, displayNameLangues);
langueChp.setWidth(100,300);
416,10 → 416,10
motsClesChp.setValue(projet.getMotsCles());
citationChp.setValue(projet.getCitation());
licenceChp.setValue(projet.getLicence());
if (projet.getLangue().matches("[0-9]+")) {
langueChp.getCombo().setValue(langueChp.getStore().findModel("cmlv_id_valeur", projet.getLangue()));
if (projet.getLangueId().matches("[0-9]+")) {
langueChp.getCombo().setValue(langueChp.getStore().findModel("cmlv_id_valeur", projet.getLangueId()));
} else {
langueChp.getCombo().setRawValue(projet.getLangue());
langueChp.getCombo().setRawValue(projet.getLangueId());
}
if (projet.getMarkPublic().equals("1")) {
markPublicChp.setValue(true);
/trunk/src/org/tela_botanica/client/vues/accueil/AccueilVue.java
78,7 → 78,7
chargerParametres();
 
add(panneauPrincipal);
mediateur.desactiverChargement();
mediateur.desactiverChargement(this);
}
private Portal creerPortail() {
/trunk/src/org/tela_botanica/client/vues/BarrePaginationVue.java
351,7 → 351,7
public void componentKeyDown(ComponentEvent ce) {
int caractereSaisi = ce.getKeyCode();
boolean isInteger = (caractereSaisi >= 97 && caractereSaisi <= 105);
boolean isInteger = (caractereSaisi >= 96 && caractereSaisi <= 105);
// si le caractère n'est ni un chiffre ni 'entrée' ni 'backspace'
if (!( isInteger
/trunk/src/org/tela_botanica/client/vues/publication/PublicationVue.java
45,7 → 45,7
panneauPublicationDetail.rafraichir(nouvellesDonnees);
} else if (nouvellesDonnees instanceof PublicationListe) {
panneauPublicationListe.rafraichir(nouvellesDonnees);
mediateur.desactiverChargement();
mediateur.desactiverChargement(this);
} else if (nouvellesDonnees instanceof Information) {
panneauPublicationListe.rafraichir(nouvellesDonnees);
} else {
/trunk/src/org/tela_botanica/client/vues/publication/PublicationForm.java
438,7 → 438,7
modelTypePersonnes.addField("cp_truk_courriel");
String displayNamePersonnes = "cp_fmt_nom_complet";
ProxyPersonnes<ModelData> proxyPersonnes = new ProxyPersonnes<ModelData>(sequenceur);
ProxyPersonnes<ModelData> proxyPersonnes = new ProxyPersonnes<ModelData>(null);
personnesSaisiesComboBox = new ChampComboBoxRechercheTempsReelPaginable(proxyPersonnes, modelTypePersonnes, displayNamePersonnes);
449,7 → 449,11
Personne personneSaisieSelectionnee = new Personne(personnesSaisiesComboBox.getValeur());
PublicationAPersonne pap = new PublicationAPersonne();
pap.setPersonne(personneSaisieSelectionnee);
if (modeDeCreation != Formulaire.MODE_AJOUTER) pap.setPublicationLiee(publication);
pap.setOrdreAuteurs(String.valueOf(grilleAuteurs.getStore().getCount()+1));
if (modeDeCreation != Formulaire.MODE_AJOUTER) {
pap.setPublicationLiee(publication);
pap.setIdPublication(publicationId);
}
if (grilleAuteurs.getStore().findModel(pap) != null) {
Info.display("Information", "La personne est déjà présente dans la liste d'auteurs");
} else {
462,7 → 466,7
}
private void ajouterDansGrille(PublicationAPersonne pap) {
ajouterDansGrille(pap, 0);
ajouterDansGrille(pap, grilleAuteurs.getStore().getCount());
}
private void ajouterDansGrille(PublicationAPersonne pap, int index) {
667,7 → 671,7
modelTypeProjets.addField("cpr_id_projet");
String displayNameProjets = "cpr_nom";
ProxyProjets<ModelData> proxyProjets = new ProxyProjets<ModelData>(sequenceur);
ProxyProjets<ModelData> proxyProjets = new ProxyProjets<ModelData>(null);
projetsCombo = new ChampComboBoxRechercheTempsReelPaginable(proxyProjets, modelTypeProjets, displayNameProjets);
projetsCombo.setWidth(200, 600);
729,7 → 733,7
modelTypeStructures.addField("cs_id_structure");
String displayNameStructures = "cs_nom";
ProxyStructures<ModelData> proxyStructures = new ProxyStructures<ModelData>(sequenceur);
ProxyStructures<ModelData> proxyStructures = new ProxyStructures<ModelData>(null);
editeurCombobox = new ChampComboBoxRechercheTempsReelPaginable(proxyStructures, modelTypeStructures, displayNameStructures);
editeurCombobox.setWidth(200, 600);
867,7 → 871,7
// - Envoyer au médiateur SSI personnes à modifier
if (listeAuteursAModifier.size() > 0) {
int seqId = sequenceur.lancerRequeteSynchrone(this);
mediateur.modifierPublicationAPersonne(sequenceur, publication.getId(), listeAuteursAModifier, PublicationAPersonne.ROLE_AUTEUR, seqId);
mediateur.modifierPublicationAPersonne(sequenceur, this.publicationId, listeAuteursAModifier, PublicationAPersonne.ROLE_AUTEUR, seqId);
}
sequenceur.enfilerRafraichissement(this, new Information("auteurs_enregistres"));
1189,6 → 1193,7
if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String && ((String) info.getDonnee(0)).matches("[0-9]+")) {
String idPublication = (String) info.getDonnee(0);
this.publicationId = idPublication;
this.publication.setId(idPublication);
soumettreAuteurs();
InfoLogger.display("Ajout d'une publication", "La publication '"+publicationId+"' a bien été ajoutée");
} else {
/trunk/src/org/tela_botanica/client/Modele.java
120,14 → 120,14
// GESTION DES PROJETS
//+----------------------------------------------------------------------------------------------------------------+
public void selectionnerProjet(Rafraichissable vueARafraichir, String projetId, String nom, int start, int nbElements, Integer seqId) {
public void selectionnerProjet(Rafraichissable vueARafraichir, String projetId, String nom, int start, int nbElements, String formatRetour, boolean paginationProgressive, Integer seqId) {
ProjetAsyncDao pADAO = new ProjetAsyncDao(vueARafraichir);
pADAO.selectionner(false, projetId, nom, start, nbElements, seqId);
pADAO.selectionner(paginationProgressive, projetId, nom, start, nbElements, formatRetour, seqId);
}
public void selectionnerProjet(Rafraichissable vueARafraichir, String recherche, int start, int nbElements, Integer seqId) {
ProjetAsyncDao pADAO = new ProjetAsyncDao(vueARafraichir);
pADAO.selectionner(true, null, recherche, start, nbElements, seqId);
pADAO.selectionner(true, null, recherche, start, nbElements, null, seqId);
}
 
public void ajouterProjet(Rafraichissable vueARafraichir, Projet projetCollecte) {
182,10 → 182,15
// Gestion des données de la table coel_structure_a_personne
if (structureId != null && roleId != null) {
StructureAPersonneAsyncDao sapDao = new StructureAPersonneAsyncDao(vueARafraichir);
sapDao.selectionner(structureId, roleId, seqId);
sapDao.selectionner(false, structureId, roleId, null, 0, -1, seqId);
}
}
public void selectionnerStructureAPersonne(Rafraichissable vueARafraichir, String structureId, String roleId, String recherche, int start, int nbElements, Integer seqId) {
StructureAPersonneAsyncDao sapDao = new StructureAPersonneAsyncDao(vueARafraichir);
sapDao.selectionner(true, structureId, roleId, recherche, start, nbElements, seqId);
}
public void modifierStructureAPersonne(Rafraichissable vueARafraichir, StructureAPersonne personnel) {
StructureAPersonneAsyncDao structureAPersonneDao = new StructureAPersonneAsyncDao(vueARafraichir);
structureAPersonneDao.modifier(personnel);
233,9 → 238,14
//+----------------------------------------------------------------------------------------------------------------+
// GESTION de la relation COLLECTION A PERSONNE
public void selectionnerCollectionAPersonne(Rafraichissable vueARafraichir, String collectionId, String roleId, String recherche, int start, int nbElements, Integer seqId) {
CollectionAPersonneAsyncDao sapDao = new CollectionAPersonneAsyncDao(vueARafraichir);
sapDao.selectionner(true, collectionId, roleId, recherche, start, nbElements, seqId);
}
public void selectionnerCollectionAPersonne(Rafraichissable vueARafraichir, String collectionId, String roleId, Integer seqId) {
CollectionAPersonneAsyncDao sapDao = new CollectionAPersonneAsyncDao(vueARafraichir);
sapDao.selectionner(collectionId, roleId, seqId);
sapDao.selectionner(false, collectionId, roleId, null, 0, -1, seqId);
}
public void modifierCollectionAPersonne(Rafraichissable vueARafraichir, CollectionAPersonne collectionAPersonne) {
/trunk/src/org/tela_botanica/client/composants/ChampMultiValeursMultiTypes.java
9,6 → 9,7
import org.tela_botanica.client.modeles.ValeurListe;
import org.tela_botanica.client.modeles.aDonnee;
import org.tela_botanica.client.synchronisation.Sequenceur;
import org.tela_botanica.client.util.Debug;
import org.tela_botanica.client.vues.Formulaire;
 
import com.extjs.gxt.ui.client.Registry;
75,6 → 76,7
}
public 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);
84,8 → 86,19
champType.setWidth(largeurType);
colonneConteneur.add(champType, new ColumnData(largeurType));
// on recupere le nom de la valeur à partir de son id
 
String texteValeur = texte;
if (estComboBox) {
ListStore<Valeur> valeursStore = champValeurCombo.getStore();
Valeur objetValeur = valeursStore.findModel("id_valeur", texte);
if (objetValeur != null) {
texteValeur = objetValeur.getNom();
}
}
Text champValeur = new Text();
champValeur.setText(texte);
champValeur.setText(texteValeur);
champValeur.setWidth(largeurChamp);
colonneConteneur.add(champValeur, new ColumnData(largeurChamp));
131,6 → 144,7
}
public void peupler(String chaineExistante) {
 
if (valeurs.size() > 0) {
reinitialiser();
}
150,18 → 164,8
} else {
texteType = idType;
}
String texteValeur = "";
if (champValeurCombo!=null) {
ListStore<Valeur> valeurStore = champValeurCombo.getStore();
Valeur objetValeur = valeurStore.findModel("id_valeur", idValeur);
if (objetValeur != null) {
texteValeur = objetValeur.getNom();
}
} else {
texteValeur = idValeur;
}
ajouterValeur(texteValeur, texteType, idType);
 
ajouterValeur(idValeur, texteType, idType);
} else {
InfoLogger.display("ChampMultiValeursMultiTypes > méthode peupler", "Erreur dans le split d'une valeur, chaine="+chaineExistante, true);
}
/trunk/src/org/tela_botanica/client/composants/ChampMultiValeurs.java
6,6 → 6,7
import org.tela_botanica.client.images.Images;
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.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.Events;
185,7 → 186,7
String valeurChamp = "";
if (estComboBox) {
if (champValeurCombo.getValue() != null) {
valeurChamp = champValeurCombo.getValue().getNom();
valeurChamp = champValeurCombo.getValue().getId();
}
} else {
valeurChamp = champValeurTxt.getValue();
236,6 → 237,7
}
public void ajouterValeur(final String texte) {
LayoutContainer colonneLayout = new LayoutContainer();
colonneLayout.setLayout(new ColumnLayout());
valeurs.put(texte, colonneLayout);
255,7 → 257,7
principalLayout.remove(valeurLayout);
valeurs.remove(valeur);
 
supprimerValeurDuRecapitulatif(valeur);
actualiserLayoutGlobal();
298,9 → 300,21
}
public void supprimerValeurDuRecapitulatif(String texte) {
 
if (champRecapitulatif.getValue() != null) {
// comme c'est le nom de la valeur qui est passée en paramètre,
// on doit récupérer son id
ListStore<Valeur> valeurs = champValeurCombo.getStore();
Valeur objetValeur = valeurs.findModel("nom", texte);
String texteValeur = "";
if (objetValeur != null) {
texteValeur = objetValeur.getId();
} else {
texteValeur = texte;
}
String texteRecapitulatif = champRecapitulatif.getValue();
texteRecapitulatif = texteRecapitulatif.replace(texte + aDonnee.SEPARATEUR_VALEURS, "");
texteRecapitulatif = texteRecapitulatif.replace(texteValeur + aDonnee.SEPARATEUR_VALEURS, "");
champRecapitulatif.setValue(texteRecapitulatif);
}
}
/trunk/src/org/tela_botanica/client/composants/pagination/ProxyStructureAPersonne.java
New file
0,0 → 1,77
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.synchronisation.Sequenceur;
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 ProxyStructureAPersonne<D> extends Proxy {
String structureId = null;
String roleId = null;
public ProxyStructureAPersonne(Sequenceur sequenceur, String structureId, String roleId) {
super(sequenceur);
this.structureId = structureId;
this.roleId = roleId;
}
@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.selectionnerStructureAPersonne(this, this.structureId, this.roleId, recherche, lc.getOffset(), lc.getLimit(), sequenceur);
}
 
@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
1,9 → 1,20
package org.tela_botanica.client.composants.pagination;
 
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
 
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Information;
import org.tela_botanica.client.modeles.collection.CollectionAPersonne;
import org.tela_botanica.client.modeles.personne.Personne;
import org.tela_botanica.client.util.Debug;
import org.tela_botanica.client.util.UtilString;
 
import com.extjs.gxt.ui.client.data.BaseListLoadResult;
import com.extjs.gxt.ui.client.data.BaseModelData;
import com.extjs.gxt.ui.client.data.BasePagingLoadResult;
import com.extjs.gxt.ui.client.data.BasePagingLoader;
import com.extjs.gxt.ui.client.data.LoadEvent;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
12,9 → 23,8
public class ChargeurListe<D extends PagingLoadResult<?>> extends BasePagingLoader<D> {
 
private String recherche = "";
private Integer id = null;
private Rafraichissable vueARafraichir = null;
private boolean rafraichir = false;
private boolean doRafraichir = false;
 
@SuppressWarnings("unchecked")
public ChargeurListe(Proxy proxy, TransformateurJSONaModelData reader, Rafraichissable vueARafraichir) {
22,8 → 32,8
this.vueARafraichir = vueARafraichir;
}
public boolean load(Object loadConfig, String recherche, boolean rafraichir) {
this.rafraichir = rafraichir;
public boolean load(Object loadConfig, String recherche, boolean doRafraichir) {
this.doRafraichir = doRafraichir;
if (fireEvent(BeforeLoad, new LoadEvent(this, loadConfig))) {
lastConfig = loadConfig;
 
62,12 → 72,43
public void onFailure(Throwable caught) {
onLoadFailure(config, caught);
if (!UtilString.isEmpty(caught.getMessage())) Debug.log("[FAILURE] ChargeurListe : message="+caught.getMessage());
else Debug.log("[FAILURE] ChargeurListe : message=NULL. Peut-être le modelType est-il mal paramétré ?");
}
public void onSuccess(D result) {
onLoadSuccess(config, result);
if (rafraichir) {
/*
// SUPPRIMER LES PREFIXES
if (result instanceof BasePagingLoadResult) {
BasePagingLoadResult retourPaging = (BasePagingLoadResult)result;
List retourListe = retourPaging.getData();
for(int i=0; i< retourListe.size(); i++) {
if (retourListe.get(i) instanceof BaseModelData) {
BaseModelData model = (BaseModelData)retourListe.get(i);
Map<String, Object> a = model.getProperties();
Set<String> cles = a.keySet();
Iterator<String> it = cles.iterator();
while (it.hasNext()) {
String cle = it.next();
if (a.get(cle) != null) {
String cleObjet = "";
cleObjet = cle.replaceFirst("^[A-Za-z]+_", "");
model.set(cleObjet, a.get(cle));
model.remove(cle);
}
}
}
}
}*/
// Cas où il faut rafraichir le combo manuellement
// (cela sert pour charger la valeur initiale du combo au chargement d'un formulaire)
if (doRafraichir) {
Information info = new Information("selectionnerValeurCombo");
info.setDonnee(result);
info.setMessage("");
/trunk/src/org/tela_botanica/client/composants/pagination/Proxy.java
13,9 → 13,10
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.extjs.gxt.ui.client.data.ModelData;
import com.google.gwt.user.client.rpc.AsyncCallback;
 
public abstract class Proxy<D> extends MemoryProxy<D> implements Rafraichissable {
public abstract class Proxy<D extends ModelData> extends MemoryProxy<D> implements Rafraichissable {
 
protected Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
/trunk/src/org/tela_botanica/client/composants/pagination/TransformateurJSONaModelData.java
60,7 → 60,7
}
 
@SuppressWarnings("unchecked")
public D read(Object loadConfig, Object data) {
public D read(Object loadConfig, Object data) {
JSONObject jsonRoot = null;
if (data instanceof JSONObject) {
jsonRoot = (JSONObject) data;
68,6 → 68,7
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();
127,6 → 128,7
if (modelType.getTotalName() != null) {
totalCount = getTotalCount(jsonRoot);
}
return (D) createReturnData(loadConfig, models, totalCount);
}
 
/trunk/src/org/tela_botanica/client/composants/pagination/ProxyCollectionAPersonne.java
New file
0,0 → 1,77
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.synchronisation.Sequenceur;
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 ProxyCollectionAPersonne<D> extends Proxy {
String collectionId = null;
String roleId = null;
public ProxyCollectionAPersonne(Sequenceur sequenceur, String collectionId, String roleId) {
super(sequenceur);
this.collectionId = collectionId;
this.roleId = roleId;
}
@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.selectionnerCollectionAPersonne(this, this.collectionId, this.roleId, recherche, lc.getOffset(), lc.getLimit(), sequenceur);
}
 
@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/ProxyProjets.java
7,10 → 7,13
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.Information;
import org.tela_botanica.client.modeles.ValeurListe;
import org.tela_botanica.client.modeles.ValeurListeAsyncDao;
import org.tela_botanica.client.modeles.projet.Projet;
import org.tela_botanica.client.synchronisation.Sequenceur;
import org.tela_botanica.client.util.Debug;
import org.tela_botanica.client.util.UtilString;
 
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.data.BasePagingLoadConfig;
18,6 → 21,7
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.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.user.client.rpc.AsyncCallback;
34,14 → 38,15
this.callback = callback;
this.loadConfig = loadConfig;
 
BasePagingLoadConfig lc = (BasePagingLoadConfig)loadConfig;
mediateur.selectionnerProjet(this, recherche, lc.getOffset(), lc.getLimit(), sequenceur);
BasePagingLoadConfig lc = (BasePagingLoadConfig)loadConfig;
if (UtilString.isNumber(recherche, false)) mediateur.selectionnerProjet(this, recherche, "array", true, sequenceur);
else mediateur.selectionnerProjet(this, recherche, lc.getOffset(), lc.getLimit(), sequenceur);
}
@Override
@SuppressWarnings("unchecked")
public void rafraichir(Object nouvellesDonnees) {
public void rafraichir(Object nouvellesDonnees) {
try
{
data = nouvellesDonnees;
/trunk/src/org/tela_botanica/client/composants/ChampComboBoxRechercheTempsReelPaginable.java
51,7 → 51,6
private ComboBox<ModelData> combo = null;
 
private Proxy<?> proxy = null;
private AsyncCallback callback = null;
private TransformateurJSONaModelData<PagingLoadResult<ModelData>> reader = null;
private ChargeurListe<PagingLoadResult<ModelData>> loader = null;
123,7 → 122,7
public void handleEvent(FieldEvent fe) {
// on vérifie que les touches enfoncées ne sont pas les flèches du clavier
if (fe.getKeyCode() <= 38 || fe.getKeyCode() >= 40) {
if (!fe.isNavKeyPress()) {
recherche = combo.getRawValue();
plc.setLimit(limit); plc.setOffset(start);
loader.setLimit(limit); loader.setOffset(start);
190,7 → 189,7
}
 
public void chargerValeurInitiale(String valeurInitiale, String champ)
{
{
this.valeurInitiale = valeurInitiale;
this.champValeurInitiale = champ;
 
201,11 → 200,17
Rafraichir
-----------------------------*/
public void rafraichir(Object nouvellesDonnees) {
if (nouvellesDonnees instanceof Information) {
Information info = (Information) nouvellesDonnees;
if (info.getType().equals("selectionnerValeurCombo")) {
if (combo.getStore().findModel(champValeurInitiale, valeurInitiale) == null) Debug.log("ERREUR. Modele non trouvé");
if (combo.getStore().findModel(champValeurInitiale, valeurInitiale) == null) {
Debug.log("ERREUR. Modele non trouvé.");
Debug.log("Recherché : ["+champValeurInitiale+"]="+valeurInitiale);
Debug.log("Le magasin contient "+combo.getStore().getCount()+" éléments. Les propriétés des modèles sont :");
for (int i=0; i<combo.getStore().getCount(); i++) {
Debug.log(combo.getStore().getAt(i).getProperties().toString());
}
}
else combo.setValue(combo.getStore().findModel(champValeurInitiale, valeurInitiale));
}
}
/trunk/src/org/tela_botanica/client/composants/GrillePaginable.java
New file
0,0 → 1,193
package org.tela_botanica.client.composants;
 
import java.util.List;
import java.util.Map;
 
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.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.aDonnee;
import org.tela_botanica.client.util.Debug;
import org.tela_botanica.client.composants.GrilleParametrable;
 
import com.extjs.gxt.ui.client.Style.SortDir;
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.PagingLoadConfig;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.GridEvent;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.store.Store;
import com.extjs.gxt.ui.client.store.StoreEvent;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
import com.extjs.gxt.ui.client.widget.grid.EditorGrid;
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
import com.extjs.gxt.ui.client.widget.grid.RowNumberer;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.toolbar.PagingToolBar;
 
public class GrillePaginable<D extends ModelData> extends ContentPanel implements Rafraichissable, GrilleParametrable<D> {
 
//-------------//
// ATTRIBUTS //
//-------------//
// Pagination
private int start = 0;
private int limit = 50;
// Récupération, stockage et pagination des données
private ModelType modelType = null;
private Proxy<D> proxy = null;
private TransformateurJSONaModelData<PagingLoadResult<D>> reader = null;
private ChargeurListe<PagingLoadResult<D>> loader = null;
private ListStore<D> storeGrille = null;
// Elements graphiques
EditorGrid<D> grillePersonne = null;
List<ColumnConfig> colonnes = null;
ColumnModel modeleDeColonnes = null;
//-------------//
// METHODES //
//-------------//
/*--------------
Constructeur
--------------*/
public GrillePaginable(ModelType modeltype, Proxy<D> proxy, List<ColumnConfig> colonnes, ColumnModel modeleDeColonnes) {
// Récupération des paramètres
this.modelType = modeltype;
this.proxy = proxy;
this.colonnes = colonnes;
this.modeleDeColonnes = modeleDeColonnes;
// Formatage du conteneur;
this.setLayout(new FitLayout());
// Création des objets pour la récupération et la pagination des données
BasePagingLoadConfig plc = new BasePagingLoadConfig();
plc.setLimit(limit);
plc.setOffset(start);
reader = new TransformateurJSONaModelData<PagingLoadResult<D>>(modelType);
loader = new ChargeurListe<PagingLoadResult<D>>(proxy, reader, this);
loader.setLimit(plc.getLimit());
loader.setOffset(plc.getOffset());
 
loader.addListener(Loader.BeforeLoad, new Listener<LoadEvent>() {
public void handleEvent(LoadEvent be) {
 
}
});
// Création de la grille
creerGrille();
}
/*------------
Accesseurs
------------*/
public EditorGrid<D> getGrille() {
return grillePersonne;
}
public ListStore<D> getStore() {
return storeGrille;
}
public D getSelection() {
return grillePersonne.getSelectionModel().getSelectedItem();
}
/*-----------------------------
Rafraichir
-----------------------------*/
public void rafraichir(Object nouvellesDonnees) {
}
/*----------------
Méthode privées
-----------------*/
private void creerGrille() {
final PagingToolBar toolBar = new PagingToolBar(this.limit);
toolBar.bind(loader);
this.setBottomComponent(toolBar);
storeGrille = new ListStore<D>(loader);
storeGrille.addListener(Store.Add, new Listener<StoreEvent<D>>() {
public void handleEvent(StoreEvent<D> ce) {
 
}
});
storeGrille.addListener(Store.Remove, new Listener<StoreEvent<D>>() {
public void handleEvent(StoreEvent<D> ce) {
 
}
});
storeGrille.addListener(Store.Update, new Listener<StoreEvent<D>>() {
public void handleEvent(StoreEvent<D> ce) {
 
}
});
RowNumberer pluginLigneNumero = new RowNumberer();
GridSelectionModel<D> modeleDeSelection = new GridSelectionModel<D>();
grillePersonne = new EditorGrid<D>(storeGrille, modeleDeColonnes);
grillePersonne.setHeight("100%");
grillePersonne.setBorders(true);
grillePersonne.setSelectionModel(modeleDeSelection);
grillePersonne.addPlugin(pluginLigneNumero);
grillePersonne.getView().setForceFit(true);
grillePersonne.setAutoExpandColumn("fmt_nom_complet");
grillePersonne.setStripeRows(true);
grillePersonne.setBorders(true);
grillePersonne.setStateful(true);
grillePersonne.addListener(Events.Attach, new Listener<GridEvent<D>>() {
public void handleEvent(GridEvent<D> be) {
PagingLoadConfig config = new BasePagingLoadConfig();
config.setOffset(0);
config.setLimit(50);
Map<String, Object> state = grillePersonne.getState();
if (state.containsKey("offset")) {
int offset = (Integer)state.get("offset");
int limit = (Integer)state.get("limit");
config.setOffset(offset);
config.setLimit(limit);
}
if (state.containsKey("sortField")) {
config.setSortField((String)state.get("sortField"));
config.setSortDir(SortDir.valueOf((String)state.get("sortDir")));
}
loader.load(config);
}
});
this.add(grillePersonne);
}
}
/trunk/src/org/tela_botanica/client/composants/GrilleParametrable.java
New file
0,0 → 1,7
package org.tela_botanica.client.composants;
 
public interface GrilleParametrable<D> {
 
}