Subversion Repositories eFlore/Applications.coel

Compare Revisions

No changes between revisions

Ignore whitespace Rev 984 → Rev 985

/trunk/.classpath
6,7 → 6,6
<classpathentry kind="lib" path="/opt/gwt-2.0.0/gwt-dev.jar"/>
<classpathentry kind="lib" path="/opt/gxt-2.1.0/gxt.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="com.google.gwt.eclipse.core.GWT_CONTAINER"/>
<classpathentry kind="var" path="JUNIT_HOME/junit.jar"/>
<classpathentry kind="output" path="war/WEB-INF/classes"/>
</classpath>
/trunk/doc/bdd/coel_table_coel_collection_a_relation.html
166,7 → 166,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:39</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel_table_coel_structure_conservation.html
374,7 → 374,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:38</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel_module_Projet.html
75,7 → 75,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:38</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel_table_coel_structure.html
518,7 → 518,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:38</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel_table_coel_collection_botanique.html
758,7 → 758,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:39</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel_table_coel_meta_colonne.html
254,7 → 254,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:38</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel_table_coel_commentaire.html
214,7 → 214,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:39</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel_table_coel_collection_a_personne.html
166,7 → 166,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:39</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel_table_coel_structure_a_personne.html
242,7 → 242,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:38</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel_table_coel_publication.html
282,7 → 282,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:39</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel_module_Metadonnee.html
77,7 → 77,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:38</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel_table_coel_meta_donnee.html
162,7 → 162,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:38</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel_table_coel_collection_a_commentaire.html
158,7 → 158,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:39</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel_table_coel_projet_a_structure.html
158,7 → 158,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:39</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel_table_coel_collection_a_publication.html
158,7 → 158,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:39</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel_table_coel_personne.html
694,7 → 694,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:38</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel_table_coel_structure_valorisation.html
282,7 → 282,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:39</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel_table_coel_collection.html
706,7 → 706,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:38</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/index.html
141,7 → 141,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:39</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel_module_Structure.html
77,7 → 77,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:38</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel.sql.bz2
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/doc/bdd/coel_module_Commentaire.html
71,7 → 71,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:38</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel_table_coel_projet.html
390,7 → 390,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:39</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel_table_coel_meta_liste_valeur.html
602,7 → 602,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:38</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel_module_Publication.html
73,7 → 73,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:38</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel_table_coel_projet_version.html
186,7 → 186,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:39</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel_table_coel_meta_historique_ligne.html
402,7 → 402,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:39</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel_table_coel_publication_a_personne.html
186,7 → 186,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:39</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel_module_Personne.html
73,7 → 73,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:38</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel_table_coel_personne_a_relation.html
186,7 → 186,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:39</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/doc/bdd/coel_module_Collection.html
81,7 → 81,7
</div>
<div id="zone_contenu_pied">
<p>Documentation générée le 7 décembre 2009 15:45:38</p>
<p>Documentation générée le 16 décembre 2009 19:03:18</p>
<!-- CONTENU_PIED -->
</div>
/trunk/src/org/tela_botanica/client/modeles/commentaire/Commentaire.java
New file
0,0 → 1,133
package org.tela_botanica.client.modeles.commentaire;
 
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.modeles.aDonnee;
import org.tela_botanica.client.modeles.collection.Collection;
import org.tela_botanica.client.modeles.collection.CollectionACommentaire;
 
import com.google.gwt.json.client.JSONObject;
 
public class Commentaire extends aDonnee {
 
private static final long serialVersionUID = 7216356814682582569L;
private static final String PREFIXE = "ccm";
private Collection collection = null;
private CollectionACommentaire collectionACommentaire = null;
public Commentaire() {
}
public Commentaire(JSONObject commentaire) {
initialiserCommentaire(commentaire, false);
}
 
public Commentaire(JSONObject commentaire, boolean chargerCollectionACommentaire) {
initialiserCommentaire(commentaire, chargerCollectionACommentaire);
}
public void initialiserCommentaire(JSONObject commentaire, boolean chargerCollectionACommentaire) {
initialiserModele(commentaire);
collection = new Collection(commentaire);
if (chargerCollectionACommentaire) {
collectionACommentaire = new CollectionACommentaire(commentaire);
} else {
collectionACommentaire = new CollectionACommentaire();
}
initialiserChampsPourGrille();
}
@Override
protected String getPrefixe() {
return PREFIXE;
}
private void initialiserChampsPourGrille() {
set("_collection_nom_", getCollection().getNom());
set("_type_", getCollectionACommentaire().getType());
set("_titre_", getTitre());
set("_texte_", getTexteResume());
set("_ponderation_", getPonderation());
set("_public_", getPublic());
set("_etat_", "");
}
public Collection getCollection() {
if (collection == null) {
collection = new Collection();
}
return collection;
}
public void setCollection(Collection collectionAStocker) {
collection = collectionAStocker;
}
public CollectionACommentaire getCollectionACommentaire() {
if (collectionACommentaire == null) {
collectionACommentaire = new CollectionACommentaire();
}
return collectionACommentaire;
}
public void setCollectionACommentaire(CollectionACommentaire collectionACommentaireAStocker) {
collectionACommentaire = collectionACommentaireAStocker;
}
public String getId() {
return renvoyerValeurCorrecte("id_commentaire");
}
public void setId(String idCommentaire) {
this.set("id_commentaire", idCommentaire);
}
public String getIdProjet() {
return renvoyerValeurCorrecte("ce_projet");
}
public void setIdProjet(String idProjet) {
this.set("ce_projet", idProjet);
}
public String getCommentairePereId() {
return renvoyerValeurCorrecte("ce_pere");
}
public void setCommentairePereId(String idPere) {
this.set("ce_pere", idPere);
}
public String getTitre() {
return renvoyerValeurCorrecte("titre");
}
public void setTitre(String titre) {
this.set("titre", titre);
}
public String getTexteResume() {
String resume = getTexte();
if (getTexte().length() > 100) {
resume = getTexte().substring(0, 100);
}
return resume;
}
public String getTexte() {
return renvoyerValeurCorrecte("texte");
}
public void setTexte(String texte) {
this.set("texte", texte);
}
public String getPonderation() {
return renvoyerValeurCorrecte("ponderation");
}
public void setPonderation(String ponderation) {
this.set("ponderation", ponderation);
}
public boolean etrePublic() {
return (getPublic().equals("1") ? true : false);
}
public String getPublic() {
return renvoyerValeurCorrecte("public");
}
public void setPublic(String publique) {
this.set("public", publique);
}
}
/trunk/src/org/tela_botanica/client/modeles/commentaire/CommentaireListe.java
New file
0,0 → 1,38
package org.tela_botanica.client.modeles.commentaire;
 
import org.tela_botanica.client.modeles.aDonneeListe;
 
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
 
public class CommentaireListe extends aDonneeListe<Commentaire> {
 
private static final long serialVersionUID = 2600314321196345072L;
 
public CommentaireListe() {
super();
}
public CommentaireListe(int taille) {
super(taille);
}
/**
* Constructeur pour une liste de commentaires
* @param dates
*/
public CommentaireListe(JSONArray commentaires) {
super(commentaires.size());
boolean chargerCollectionACommentaire = true;
int taille = commentaires.size();
for (int i = 0; i < taille; i++) {
JSONObject commentaireCourant = commentaires.get(i).isObject() ;
if (commentaireCourant != null) {
Commentaire commentaire = new Commentaire(commentaireCourant, chargerCollectionACommentaire);
this.put(commentaire.getId(), commentaire);
}
}
}
}
/trunk/src/org/tela_botanica/client/modeles/commentaire/CommentaireAsyncDao.java
New file
0,0 → 1,115
package org.tela_botanica.client.modeles.commentaire;
 
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.http.JsonRestRequestBuilder;
import org.tela_botanica.client.http.JsonRestRequestCallback;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Information;
import org.tela_botanica.client.util.UtilDAO;
 
import com.extjs.gxt.ui.client.Registry;
import com.google.gwt.core.client.GWT;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONValue;
 
public class CommentaireAsyncDao {
private static final String SERVICE_NOM = "CoelCommentaire";
private String utilisateurId = null;
private Rafraichissable vueARafraichir = null;
public CommentaireAsyncDao(Rafraichissable vueARafraichirCourrante) {
vueARafraichir = vueARafraichirCourrante ;
utilisateurId = ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).getUtilisateurId();
}
 
public void selectionner(final String commentaireId, String projetId) {
String[] parametres = {projetId, commentaireId};
 
final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres);
rb.envoyerRequete(null, new JsonRestRequestCallback() {
@Override
public void surReponse(JSONValue responseValue) {
if (responseValue != null) {
// Si la requête est un succès, réception d'un objet ou d'un tableau
if (responseValue.isObject() != null) {
final JSONObject reponse = responseValue.isObject();
// Transformation du tableau JSON réponse en ListeInstitution
Commentaire commentaire = new Commentaire(reponse);
// et on met à jour le demandeur des données
vueARafraichir.rafraichir(commentaire);
} else if (responseValue.isArray() != null) {
final JSONArray reponse = responseValue.isArray();
CommentaireListe commentaires = new CommentaireListe(reponse);
vueARafraichir.rafraichir(commentaires);
} else {
GWT.log("La réponse n'est pas un objet ou un talbeau JSON et vaut : "+responseValue.toString(), null);
}
} else {
// Dans le cas, où nous demandons toutes les publication et qu'il n'y en a pas, nous retournons un objet vide
if (commentaireId == null) {
CommentaireListe commentaires = new CommentaireListe(0);
vueARafraichir.rafraichir(commentaires);
}
}
}
});
}
 
public void ajouter(Commentaire commentaire) {
String postDonneesEncodees = commentaire.obtenirChainePOST()+"&cmhl_ce_modifier_par="+utilisateurId;
final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM);
rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() {
@Override
public void surReponse(JSONValue reponseValeur) {
traiterReponse(reponseValeur, "ajout_commentaire");
}
}) ;
}
public void modifier(Commentaire commentaire) {
String[] parametres = {commentaire.getId()};
final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM, parametres);
String postDonneesEncodees = commentaire.obtenirChainePOST()+"&cmhl_ce_modifier_par="+utilisateurId;
rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() {
@Override
public void surReponse(JSONValue reponseValeur) {
traiterReponse(reponseValeur, "modif_commentaire");
}
});
}
 
public void supprimer(String commentairesId) {
String[] parametres = {utilisateurId, commentairesId};
final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM, parametres);
rb.envoyerRequeteSuppression(new JsonRestRequestCallback() {
@Override
public void surReponse(JSONValue reponseValeur) {
traiterReponse(reponseValeur, "suppression_commentaire");
}
});
}
private void traiterReponse(JSONValue reponseValeur, String type) {
Information info = new Information(type);
// Si la requête est un succès, réception d'une chaîne
if (reponseValeur.isString() != null) {
info.setDonnee(reponseValeur.isString().stringValue());
String idOuMessage = reponseValeur.isString().stringValue();
if (idOuMessage.matches("^[0-9]+$")) {
info.setDonnee(idOuMessage);
} else {
info.setMessage(idOuMessage);
}
} else {
info.setDeboguage("La réponse n'est pas une chaine JSON.");
}
vueARafraichir.rafraichir(info);
}
 
}
/trunk/src/org/tela_botanica/client/modeles/MenuApplicationId.java
8,4 → 8,5
public static final String COLLECTION = "Collections";
public static final String PERSONNE = "Personnes";
public static final String PUBLICATION = "Publications";
public static final String COMMENTAIRE = "Commentaires";
}
/trunk/src/org/tela_botanica/client/modeles/collection/CollectionACommentaire.java
New file
0,0 → 1,105
package org.tela_botanica.client.modeles.collection;
 
import org.tela_botanica.client.modeles.aDonnee;
import org.tela_botanica.client.modeles.commentaire.Commentaire;
 
import com.google.gwt.json.client.JSONObject;
 
public class CollectionACommentaire extends aDonnee {
private static final long serialVersionUID = 8751553802444398035L;
public static final String PREFIXE = "ccac";
private Commentaire commentaireLiee = null;
public CollectionACommentaire() {
initialiser(new JSONObject(), false);
}
public CollectionACommentaire(JSONObject collectionACommentaireListe) {
initialiser(collectionACommentaireListe, false);
}
public CollectionACommentaire(JSONObject collectionACommentaireListe, boolean chargerCommentaire) {
initialiser(collectionACommentaireListe, chargerCommentaire);
}
@Override
protected String getPrefixe() {
return PREFIXE;
}
private void initialiser(JSONObject collectionACommentaireListe, boolean chargerCommentaire) {
if (chargerCommentaire) {
setCommentaire(new Commentaire(collectionACommentaireListe, false));
} else {
setCommentaire(new Commentaire());
}
initialiserModele(collectionACommentaireListe);
initialiserChampsPourGrille();
}
// COMMENTAIRE
public Commentaire getCommentaire() {
return commentaireLiee;
}
public void setCommentaire(Commentaire commentaire) {
commentaireLiee = commentaire;
initialiserChampsPourGrille();
if (commentaire != null) {
setIdCommentaire(commentaire.getId());
}
}
private void initialiserChampsPourGrille() {
set("_type_", getType());
set("_titre_", getCommentaire().getTitre());
set("_texte_", getCommentaire().getTexte());
set("_ponderation_", getCommentaire().getPonderation());
set("_public_", getCommentaire().getPublic());
set("_etat_", "");
}
// ID
/** Génère un identifiant de CollectionACommentaire.
*
* C'est une concaténation des clés primaires de la table coel_collection_a_commentaire séparées par un tiret "-".
*
* @return identifiant unique d'une relation "collection à commentaire".
*/
public String getId() {
String idCollection = getIdCollection();
String idCommentaire = getIdCommentaire();
if (idCollection.equals("") && idCommentaire.equals("")) {
return null;
} else {
return (idCollection+"-"+idCommentaire);
}
}
//+---------------------------------------------------------------------------------------------------------------+
// CHAMPS PROVENANT de la TABLE COEL_COLLECTION_A_COMMENTAIRE
// ID COLLECTION
public String getIdCollection() {
return renvoyerValeurCorrecte("id_collection");
}
public void setIdCollection(String idCollection) {
set("id_collection", idCollection);
}
// ID COMENTAIRE
public String getIdCommentaire() {
return renvoyerValeurCorrecte("id_commentaire");
}
public void setIdCommentaire(String ic) {
set("id_commentaire", ic);
}
// TRUCK TYPE
public String getType() {
return renvoyerValeurCorrecte("truk_type");
}
public void setType(String type) {
set("truk_type", type);
}
}
/trunk/src/org/tela_botanica/client/modeles/collection/CollectionACommentaireListe.java
New file
0,0 → 1,34
package org.tela_botanica.client.modeles.collection;
 
import org.tela_botanica.client.modeles.aDonneeListe;
 
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
 
public class CollectionACommentaireListe extends aDonneeListe<CollectionACommentaire> {
 
private static final long serialVersionUID = 1L;
 
public CollectionACommentaireListe() {
super();
}
public CollectionACommentaireListe(int taille) {
super(taille);
}
public CollectionACommentaireListe(JSONArray collectionACommentaires) {
super(collectionACommentaires.size()) ;
final int taillemax = collectionACommentaires.size();
for (int i = 0; i < taillemax; i++) {
JSONObject collectionACommentaireCourant = collectionACommentaires.get(i).isObject() ;
if (collectionACommentaireCourant != null) {
CollectionACommentaire collectionACommentaire = new CollectionACommentaire(collectionACommentaireCourant);
this.put(collectionACommentaire.getId(), collectionACommentaire);
}
}
}
}
/trunk/src/org/tela_botanica/client/Mediateur.java
22,6 → 22,8
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.commentaire.Commentaire;
import org.tela_botanica.client.modeles.commentaire.CommentaireListe;
import org.tela_botanica.client.modeles.personne.Personne;
import org.tela_botanica.client.modeles.personne.PersonneListe;
import org.tela_botanica.client.modeles.projet.Projet;
48,6 → 50,7
import org.tela_botanica.client.vues.collection.CollectionForm;
import org.tela_botanica.client.vues.collection.CollectionListeVue;
import org.tela_botanica.client.vues.collection.CollectionVue;
import org.tela_botanica.client.vues.commentaire.CommentaireVue;
import org.tela_botanica.client.vues.personne.PersonneForm;
import org.tela_botanica.client.vues.personne.PersonneVue;
import org.tela_botanica.client.vues.projet.ProjetForm;
214,6 → 217,8
selectionnerPersonne(panneauCentre, null, null);
} else if (codeMenuClique.equals(MenuApplicationId.PUBLICATION)) {
selectionnerPublication(panneauCentre, null);
} else if (codeMenuClique.equals(MenuApplicationId.COMMENTAIRE)) {
selectionnerCommentaire(panneauCentre, null);
} else {
GWT.log(i18nM.nonImplemente(codeMenuClique), null);
}
1056,6 → 1061,100
}
//+----------------------------------------------------------------------------------------------------------------+
// GESTION DES COMMENTAIRES
//+----------------------------------------------------------------------------------------------------------------+
 
public void afficherListeCommentaire(CommentaireListe nouvelleDonnees) {
if (!(panneauCentre.getContenu() instanceof CommentaireVue)) {
panneauCentre.removeAll();
panneauCentre.add(new CommentaireVue(this));
}
panneauCentre.getContenu().rafraichir(nouvelleDonnees);
}
public void afficherFormCommentaire(String commentaireId) {
panneauCentre.removeAll();
PublicationForm commentaireForm = new PublicationForm(this, commentaireId);
panneauCentre.add(commentaireForm);
panneauCentre.layout();
}
public void clicListeCommentaire(Commentaire commentaire) {
if (commentaire != null) {
panneauCentre.getContenu().rafraichir(commentaire);
}
}
 
public void clicAjouterCommentaire() {
afficherFormCommentaire(null);
}
public void clicModifierCommentaire(List<Commentaire> selection) {
if (selection.size() == 0) {
Info.display("Information", "Veuillez sélectionner un commentaire.");
} else if (selection.size() > 1) {
Info.display("Information", "Veuillez sélectionner un seul commentaire à la fois.");
} else if (selection.size() == 1) {
afficherFormCommentaire(selection.get(0).getId());
} else {
Info.display("Erreur", "Une erreur est survenue dans la méthode clicModifierCommentaire() du Médiateur.");
}
}
public void clicSupprimerCommentaire(final List<Commentaire> commentaireListe) {
if (commentaireListe.size() <= 0) {
MessageBox.alert("Attention", "Vous devez sélectionner un commentaire", null);
} else {
String message = "Voulez-vous vraiment supprimer ces commentaires ?";
if (commentaireListe.size() == 1) {
message = "Voulez-vous vraiment supprimer ce commentaire ?";
}
final Listener<MessageBoxEvent> listenerSuppression = new Listener<MessageBoxEvent>() {
public void handleEvent(MessageBoxEvent ce) {
Dialog dialog = (Dialog) ce.getComponent();
Button btn = ce.getButtonClicked();
if (btn.getText().equals(dialog.yesText)) {
supprimerCommentaire(panneauCentre.getContenu(), commentaireListe);
}
}
};
MessageBox.confirm("Supprimer un commentaire", message, listenerSuppression);
}
}
public void selectionnerCommentaire(Rafraichissable vueARafraichir, String commentaireId) {
modele.selectionnerCommentaire(vueARafraichir, commentaireId, getProjetId());
}
public void ajouterCommentaire(Rafraichissable vueARafraichir, Commentaire commentaire) {
modele.ajouterCommentaire(vueARafraichir, commentaire);
}
public void modifierCommentaire(Rafraichissable vueARafraichir, Commentaire commentaire) {
modele.modifierCommentaire(vueARafraichir, commentaire);
}
public void supprimerCommentaire(Rafraichissable vueARafraichir, List<Commentaire> commentairesListe) {
if (commentairesListe != null && commentairesListe.size() > 0) {
String idCommentaireSeparesParVirgule = "" ;
Iterator<Commentaire> it = commentairesListe.iterator();
while (it.hasNext()) {
idCommentaireSeparesParVirgule += it.next().getId();
if (it.hasNext()) {
idCommentaireSeparesParVirgule += ",";
}
}
modele.supprimerCommentaire(vueARafraichir, idCommentaireSeparesParVirgule);
//modele.supprimerCollectionACommentaire(vueARafraichir, idCommentaireSeparesParVirgule);
}
}
//+----------------------------------------------------------------------------------------------------------------+
// RAFRAICHISSEMENT
//+----------------------------------------------------------------------------------------------------------------+
/trunk/src/org/tela_botanica/client/i18n/Constantes.java
27,7 → 27,9
String total();
String inconnue();
String nonRenseigne();
 
String donneePublic();
String donneePrivee();
// Boutons
String ajouter();
String modifier();
62,7 → 64,11
String menuCollection();
String menuPersonne();
String menuPublication();
String menuCommentaire();
// Filtre
String titreFiltre();
// Pagination
String page();
String sur();
439,5 → 445,17
String publicationDateParution();
String publicationNvt();
String publicationFascicule();
String publicationPage();
String publicationPage();
// +---------------------------------------------------------------------------------------------------------------+
// Commentaire
String commentaireSingulier();
String commentairePluriel();
String commentaireCollection();
String commentaireTitre();
String commentaireTitreSuppression();
String commentaireType();
String commentairePonderation();
String commentaireTexte();
String commentairePublic();
}
/trunk/src/org/tela_botanica/client/i18n/Constantes.properties
18,6 → 18,8
total = TOTAL
inconnue = inconnue
nonRenseigne = Non renseigné
donneePublic = Public
donneePrivee = Privé
 
# Identification
modeAnonyme = Mode anonyme
70,7 → 72,11
menuCollection = Collections
menuPersonne = Personnes
menuPublication = Publications
menuCommentaire = Notes
 
# Filtre
titreFiltre = Filtre
 
# Pagination
page = Page
sur = sur
450,4 → 456,16
publicationDateParution = Année
publicationNvt = Série / Tome
publicationFascicule = Fascicule
publicationPage = Page(s)
publicationPage = Page(s)
 
# +---------------------------------------------------------------------------------------------------------------+
# Commentaire
commentaireSingulier = note
commentairePluriel = notes
commentaireTitreSuppression = Suppression de commentaire(s)
commentaireCollection = Collection
commentaireTitre = Titre
commentaireType = Type
commentairePonderation = Poids
commentaireTexte = Texte
commentairePublic = Accès
/trunk/src/org/tela_botanica/client/Coel.java
15,7 → 15,7
mediateur = getMediateur();
// J'appelle directement la page où je travaille
mediateur.clicMenu(MenuApplicationId.COLLECTION);
mediateur.clicMenu(MenuApplicationId.ACCUEIL);
}
protected Mediateur getMediateur() {
/trunk/src/org/tela_botanica/client/vues/publication/PublicationListeVue.java
144,7 → 144,7
return editeur;
}
};
ColumnConfig editeurColonne = new ColumnConfig("_editeur_", Mediateur.i18nC.publicationEditeur(), 135);
ColumnConfig editeurColonne = new ColumnConfig("_editeur_", i18nC.publicationEditeur(), 135);
editeurColonne.setRenderer(editeurRendu);
return editeurColonne;
}
158,7 → 158,7
return annee;
}
};
ColumnConfig datePublicationColonne = new ColumnConfig("_annee_", Mediateur.i18nC.publicationDateParution(), 75);
ColumnConfig datePublicationColonne = new ColumnConfig("_annee_", i18nC.publicationDateParution(), 75);
datePublicationColonne.setRenderer(datePublicationRendu);
return datePublicationColonne;
}
/trunk/src/org/tela_botanica/client/vues/ContenuVue.java
4,6 → 4,7
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Information;
import org.tela_botanica.client.modeles.collection.CollectionListe;
import org.tela_botanica.client.modeles.commentaire.CommentaireListe;
import org.tela_botanica.client.modeles.personne.PersonneListe;
import org.tela_botanica.client.modeles.projet.ProjetListe;
import org.tela_botanica.client.modeles.publication.PublicationListe;
37,17 → 38,18
//+----------------------------------------------------------------------------------------------------------------+
public void rafraichir(Object nouvellesDonnees) {
if (nouvellesDonnees instanceof StructureListe) {
if (nouvellesDonnees instanceof ProjetListe) {
mediateur.afficherListeProjets((ProjetListe) nouvellesDonnees);
} else if (nouvellesDonnees instanceof StructureListe) {
mediateur.afficherListeStructures((StructureListe) nouvellesDonnees);
} else if (nouvellesDonnees instanceof CollectionListe) {
} else if (nouvellesDonnees instanceof CollectionListe) {
mediateur.afficherListeCollections((CollectionListe) nouvellesDonnees);
} else if (nouvellesDonnees instanceof PersonneListe) {
mediateur.afficherListePersonnes((PersonneListe) nouvellesDonnees);
} else if (nouvellesDonnees instanceof PublicationListe) {
mediateur.afficherListePublication((PublicationListe) nouvellesDonnees);
} else if (nouvellesDonnees instanceof PersonneListe) {
mediateur.afficherListePersonnes((PersonneListe) nouvellesDonnees);
} else if (nouvellesDonnees instanceof ProjetListe) {
GWT.log("reception d'une liste de projets", null);
mediateur.afficherListeProjets((ProjetListe) nouvellesDonnees);
} else if (nouvellesDonnees instanceof CommentaireListe) {
mediateur.afficherListeCommentaire((CommentaireListe) nouvellesDonnees);
} else if (nouvellesDonnees instanceof Information) {
Information info = (Information) nouvellesDonnees;
if (info.getType().equals("maj_utilisateur")) {
/trunk/src/org/tela_botanica/client/vues/commentaire/CommentaireVue.java
New file
0,0 → 1,50
package org.tela_botanica.client.vues.commentaire;
 
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Information;
import org.tela_botanica.client.modeles.commentaire.Commentaire;
import org.tela_botanica.client.modeles.commentaire.CommentaireListe;
 
import com.extjs.gxt.ui.client.Style.LayoutRegion;
import com.extjs.gxt.ui.client.util.Margins;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;
import com.google.gwt.core.client.GWT;
 
public class CommentaireVue extends LayoutContainer implements Rafraichissable {
private Mediateur mediateur = null;
private CommentaireListeVue panneauListe;
private CommentaireDetailVue panneauDetail;
public CommentaireVue(Mediateur mediateurCourant) {
mediateur = mediateurCourant;
BorderLayout layout = new BorderLayout();
layout.setEnableState(false);
setLayout(layout);
 
panneauListe = new CommentaireListeVue(mediateur);
add(panneauListe, new BorderLayoutData(LayoutRegion.CENTER));
 
panneauDetail = new CommentaireDetailVue(mediateur);
BorderLayoutData southData = new BorderLayoutData(LayoutRegion.SOUTH, .5f, 200, 1000);
southData.setSplit(true);
southData.setMargins(new Margins(5, 0, 0, 0));
add(panneauDetail, southData);
}
public void rafraichir(Object nouvellesDonnees) {
if (nouvellesDonnees instanceof Commentaire) {
panneauDetail.rafraichir(nouvellesDonnees);
} else if (nouvellesDonnees instanceof CommentaireListe) {
panneauListe.rafraichir(nouvellesDonnees);
} else if (nouvellesDonnees instanceof Information) {
panneauListe.rafraichir(nouvellesDonnees);
} else {
GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
}
}
}
/trunk/src/org/tela_botanica/client/vues/commentaire/CommentaireListeVue.java
New file
0,0 → 1,301
package org.tela_botanica.client.vues.commentaire;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
 
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.i18n.Constantes;
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.Utilisateur;
import org.tela_botanica.client.modeles.Valeur;
import org.tela_botanica.client.modeles.ValeurListe;
import org.tela_botanica.client.modeles.aDonnee;
import org.tela_botanica.client.modeles.commentaire.Commentaire;
import org.tela_botanica.client.modeles.commentaire.CommentaireListe;
 
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.SortDir;
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.store.GroupingStore;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.button.Button;
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.Grid;
import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;
import com.extjs.gxt.ui.client.widget.grid.GridGroupRenderer;
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
import com.extjs.gxt.ui.client.widget.grid.GroupColumnData;
import com.extjs.gxt.ui.client.widget.grid.GroupingView;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
import com.google.gwt.core.client.GWT;
 
public class CommentaireListeVue extends ContentPanel implements Rafraichissable {
 
private Mediateur mediateur = null;
private Constantes i18nC = null;
 
private Grid<Commentaire> grille = null;
private GroupingStore<Commentaire> store = null;
private ColumnModel modeleDesColonnes = null;
private Button ajouter;
private Button modifier;
private Button supprimer;
private CommentaireListe commentaires = null;
protected boolean commentairesChargementOk = false;
protected HashMap<String, Valeur> ontologie = null;
protected boolean ontologieChargementOk = false;
public CommentaireListeVue(Mediateur mediateurCourant) {
mediateur = mediateurCourant;
i18nC = Mediateur.i18nC;
setLayout(new FitLayout());
setHeading(i18nC.menuCommentaire());
// Gestion de l'ontologie
ontologie = new HashMap<String, Valeur>();
mediateur.obtenirListeValeurEtRafraichir(this, "typeCommentaireCollection");
// Gestion de la barre d'outil
ToolBar toolBar = new ToolBar();
ajouter = new Button(i18nC.ajouter());
ajouter.setIcon(Images.ICONES.ajouter());
ajouter.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent be) {
mediateur.clicAjouterCommentaire();
}
});
toolBar.add(ajouter);
 
modifier = new Button(i18nC.modifier());
modifier.setIcon(Images.ICONES.formModifier());
modifier.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent be) {
mediateur.clicModifierCommentaire(grille.getSelectionModel().getSelectedItems());
}
});
toolBar.add(modifier);
supprimer = new Button(i18nC.supprimer());
supprimer.setIcon(Images.ICONES.supprimer());
supprimer.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent be) {
mediateur.clicSupprimerCommentaire(grille.getSelectionModel().getSelectedItems());
}
});
toolBar.add(supprimer);
setTopComponent(toolBar);
 
// Gestion de la grille
List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
// ATTENTION : les noms des colonnes doivent correspondre aux noms variables de la classe utilisée dans la liste
colonnes.add(new ColumnConfig("_collection_nom_", i18nC.commentaireCollection(), 150));
colonnes.add(creerColonneType());
colonnes.add(new ColumnConfig("_titre_", i18nC.commentaireTitre(), 150));
colonnes.add(new ColumnConfig("_ponderation_", i18nC.commentairePonderation(), 30));
colonnes.add(creerColonneAcces());
modeleDesColonnes = new ColumnModel(colonnes);
 
GridSelectionModel<Commentaire> modeleDeSelection = new GridSelectionModel<Commentaire>();
modeleDeSelection.addSelectionChangedListener(new SelectionChangedListener<Commentaire>() {
public void selectionChanged(SelectionChangedEvent<Commentaire> event) {
Commentaire commentaire = (Commentaire) event.getSelectedItem();
clicListe(commentaire);
}
});
store = new GroupingStore<Commentaire>();
store.sort("cmhl_date_modification", SortDir.ASC);
store.groupBy("_collection_nom_");
GroupingView vueDeGroupe = new GroupingView();
vueDeGroupe.setShowGroupedColumn(false);
vueDeGroupe.setForceFit(true);
vueDeGroupe.setGroupRenderer(new GridGroupRenderer() {
@Override
public String render(GroupColumnData data) {
String f = modeleDesColonnes.getColumnById(data.field).getHeader();
String l = data.models.size() == 1 ? i18nC.commentaireSingulier() : i18nC.commentairePluriel();
return f + ": " + data.group + " (" + data.models.size() + " " + l + ")";
}
});
grille = new Grid<Commentaire>(store, modeleDesColonnes);
grille.setView(vueDeGroupe);
grille.setWidth("100%");
grille.setAutoExpandColumn("_titre_");
grille.getView().setAutoFill(true);
grille.getView().setForceFit(true);
grille.setSelectionModel(modeleDeSelection);
grille.addListener(Events.ViewReady, new Listener<BaseEvent>() {
@Override
public void handleEvent(BaseEvent be) {
grille.getSelectionModel().select(0, false);
}
});
grille.addListener(Events.OnDoubleClick, new Listener<BaseEvent>(){
@Override
public void handleEvent(BaseEvent be) {
modifier.fireEvent(Events.Select);
}
});
add(grille);
}
private ColumnConfig creerColonneType() {
GridCellRenderer<Commentaire> typeRendu = new GridCellRenderer<Commentaire>() {
@Override
public String render(Commentaire model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<Commentaire> store, Grid<Commentaire> grid) {
// FIXME : créer une classe Ontologie qui mixe le code ci-dessous et tout ce qui concerne l'ontologie dans DetailVue
String type = "";
String[] valeurs = model.getCollectionACommentaire().getType().split(aDonnee.SEPARATEUR_VALEURS);
int nbreValeurs = valeurs.length;
int indexAvtDernier = nbreValeurs - 1;
if (nbreValeurs > 0) {
for (int i = 0; i < nbreValeurs; i++) {
String valeur = valeurs[i];
if (valeur.matches("^[0-9]+$")) {
if (valeur.equals("0")) {
valeur = "";
} else if (ontologie != null) {
Valeur valeurOntologie = ontologie.get(valeur);
if (valeurOntologie != null) {
valeur = valeurOntologie.getNom();
}
}
}
if (i != indexAvtDernier) {
type += valeur+", ";
} else {
type += valeur;
}
}
}
model.set("_type_", type);
return type;
}
};
ColumnConfig typeColonne = new ColumnConfig("_type_", i18nC.commentaireType(), 100);
typeColonne.setRenderer(typeRendu);
return typeColonne;
}
private ColumnConfig creerColonneAcces() {
GridCellRenderer<Commentaire> accesRendu = new GridCellRenderer<Commentaire>() {
@Override
public String render(Commentaire model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<Commentaire> store, Grid<Commentaire> grid) {
String acces = (model.etrePublic() ? i18nC.donneePublic() : i18nC.donneePrivee());
model.set("_public_", acces);
return acces;
}
};
ColumnConfig accesColonne = new ColumnConfig("_public_", i18nC.commentairePublic(), 30);
accesColonne.setRenderer(accesRendu);
return accesColonne;
}
private void clicListe(Commentaire commentaire) {
if (commentaire != null && store.getCount() > 0) {
mediateur.clicListeCommentaire(commentaire);
}
}
 
private void gererEtatActivationBouton() {
int nbreElementDuMagazin = store.getCount();
ajouter.enable();
if (nbreElementDuMagazin <= 0) {
supprimer.disable();
modifier.disable();
} else if (nbreElementDuMagazin > 0) {
modifier.enable();
if (((Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT)).isIdentifie()) {
supprimer.enable();
}
}
}
public void rafraichir(Object nouvellesDonnees) {
if (nouvellesDonnees instanceof CommentaireListe) {
commentaires = (CommentaireListe) nouvellesDonnees;
commentairesChargementOk = true;
} else if (nouvellesDonnees instanceof ValeurListe) {
ValeurListe listeValeursReceptionnee = (ValeurListe) nouvellesDonnees;
Iterator<String> it = listeValeursReceptionnee.keySet().iterator();
while (it.hasNext()) {
String cle = it.next();
Valeur valeur = listeValeursReceptionnee.get(cle);
if (valeur != null) {
ontologie.put(cle, valeur);
}
}
ontologieChargementOk = true;
} else if (nouvellesDonnees instanceof Information) {
Information info = (Information) nouvellesDonnees;
if (info.getType().equals("maj_utilisateur")) {
gererEtatActivationBouton();
} else if (info.getType().equals("suppression_commentaire")) {
String message = info.toString();
if (info.getDonnee(0) != null) {
message = (String) info.getDonnee(0);
}
Info.display(i18nC.commentaireTitreSuppression(), message);
supprimerCommentairesSelectionnees();
gererEtatActivationBouton();
}
} else {
GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
}
if (etrePretAAfficherListe()) {
chargerListe();
}
layout();
}
private boolean etrePretAAfficherListe() {
boolean ok = false;
if (commentairesChargementOk && ontologieChargementOk) {
ok = true;
}
return ok;
}
private void chargerListe() {
if (commentaires != null) {
List<Commentaire> liste = commentaires.toList();
store.removeAll();
store.add(liste);
mediateur.actualiserPanneauCentral();
}
}
private void supprimerCommentairesSelectionnees() {
List<Commentaire> commentairesSelectionnees = grille.getSelectionModel().getSelectedItems();
Iterator<Commentaire> it = commentairesSelectionnees.iterator();
while (it.hasNext()) {
grille.getStore().remove(it.next());
}
layout(true);
}
}
/trunk/src/org/tela_botanica/client/vues/commentaire/CommentaireDetailVue.java
New file
0,0 → 1,158
package org.tela_botanica.client.vues.commentaire;
 
import org.tela_botanica.client.ComposantClass;
import org.tela_botanica.client.ComposantId;
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.ValeurListe;
import org.tela_botanica.client.modeles.commentaire.Commentaire;
import org.tela_botanica.client.modeles.projet.ProjetListe;
import org.tela_botanica.client.vues.DetailVue;
 
import com.extjs.gxt.ui.client.util.Format;
import com.extjs.gxt.ui.client.util.Params;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Html;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.google.gwt.core.client.GWT;
 
public class CommentaireDetailVue extends DetailVue implements Rafraichissable {
private String enteteTpl = null;
private String contenuTpl = null;
private ContentPanel panneauPrincipal = null;
private Html entete = null;
private Html contenu = null;
private Commentaire commentaire = null;
private boolean commentaireChargementOk = false;
 
public CommentaireDetailVue(Mediateur mediateurCourant) {
super(mediateurCourant);
initialiserTousLesTpl();
chargerOntologie();
panneauPrincipal = new ContentPanel();
panneauPrincipal.setLayout(new FitLayout());
panneauPrincipal.setHeaderVisible(false);
panneauPrincipal.setBodyBorder(false);
entete = new Html();
entete.setId(ComposantId.ZONE_DETAIL_ENTETE);
panneauPrincipal.setTopComponent(entete);
contenu = new Html();
panneauPrincipal.add(contenu);
add(panneauPrincipal);
}
 
private void initialiserTousLesTpl() {
initialiserEnteteHtmlTpl();
initialiserGeneralTpl();
}
private void initialiserEnteteHtmlTpl() {
enteteTpl =
"<div id='{css_id}'>"+
" <h1>{titre}</h1>"+
" <h2>{collection}<span class='{css_meta}'>{projet} <br /> {i18n_id}:{id} - {guid}</span></h2>" +
"</div>";
}
private void initialiserGeneralTpl() {
contenuTpl =
"<div class='{css_corps}'>"+
" <span class='{css_label}'>{i18n_type} :</span> {type}<br />"+
" <span class='{css_label}'>{i18n_public} :</span> {public}<br />"+
" <span class='{css_label}'>{i18n_ponderation} :</span> {ponderation}<br />"+
" <span class='{css_label}'>{i18n_texte} :</span>"+
" {texte}"+
"</div>";
}
private void chargerOntologie() {
String[] listesCodes = {"typeCommentaireCollection"};
lancerChargementListesValeurs(listesCodes);
}
public void afficherDetail() {
if (commentaire != null) {
afficherEntete();
afficherDetailCommentaire();
}
layout();
}
private void afficherEntete() {
Params enteteParams = new Params();
enteteParams.set("css_id", ComposantId.ZONE_DETAIL_ENTETE);
enteteParams.set("css_meta", ComposantClass.META);
enteteParams.set("i18n_id", i18nC.id());
enteteParams.set("collection", commentaire.getCollection().getNom());
enteteParams.set("titre", commentaire.getTitre());
enteteParams.set("id", commentaire.getId());
enteteParams.set("guid", getGuid());
enteteParams.set("projet", construireTxtProjet(commentaire.getIdProjet()));
String eHtml = Format.substitute(enteteTpl, enteteParams);
entete.getElement().setInnerHTML(eHtml);
}
public String getGuid() {
String guid = "URN:tela-botanica.org:";
guid += "coel"+commentaire.getIdProjet()+":";
guid += "com"+commentaire.getId();
return guid;
}
public void afficherDetailCommentaire() {
Params contenuParams = new Params();
contenuParams.set("i18n_type", i18nC.commentaireType());
contenuParams.set("i18n_public", i18nC.commentairePublic());
contenuParams.set("i18n_ponderation", i18nC.commentairePonderation());
contenuParams.set("i18n_texte", i18nC.commentaireTexte());
String type = construireTxtListeOntologie(commentaire.getCollectionACommentaire().getType());
contenuParams.set("type", type);
contenuParams.set("ponderation", commentaire.getPonderation());
contenuParams.set("public", (commentaire.etrePublic() ? "public" : "privé"));
contenuParams.set("texte", commentaire.getTexte());
String gHtml = formaterContenu(contenuTpl, contenuParams);
contenu.getElement().setInnerHTML(gHtml);
}
public void rafraichir(Object nouvellesDonnees) {
if (nouvellesDonnees instanceof Commentaire) {
commentaire = (Commentaire) nouvellesDonnees;
commentaireChargementOk = true;
} else if (nouvellesDonnees instanceof ProjetListe) {
projets = (ProjetListe) nouvellesDonnees;
projetsChargementOk = true;
} else if (nouvellesDonnees instanceof ValeurListe) {
ValeurListe listeValeursReceptionnee = (ValeurListe) nouvellesDonnees;
receptionerListeValeurs(listeValeursReceptionnee);
} else {
GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
}
if (avoirDonneesChargees()) {
afficherDetail();
}
}
private boolean avoirDonneesChargees() {
boolean ok = false;
if (projetsChargementOk && commentaireChargementOk) {
ok = true;
}
return ok;
}
}
/trunk/src/org/tela_botanica/client/vues/commentaire/CommentaireForm.java
New file
0,0 → 1,693
package org.tela_botanica.client.vues.commentaire;
 
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.images.Images;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Information;
import org.tela_botanica.client.modeles.MenuApplicationId;
import org.tela_botanica.client.modeles.personne.Personne;
import org.tela_botanica.client.modeles.personne.PersonneListe;
import org.tela_botanica.client.modeles.publication.Publication;
import org.tela_botanica.client.modeles.publication.PublicationAPersonne;
import org.tela_botanica.client.modeles.publication.PublicationAPersonneListe;
import org.tela_botanica.client.modeles.structure.Structure;
import org.tela_botanica.client.modeles.structure.StructureListe;
import org.tela_botanica.client.util.Pattern;
import org.tela_botanica.client.util.UtilArray;
import org.tela_botanica.client.util.UtilString;
import org.tela_botanica.client.vues.Formulaire;
 
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.ComboBox;
import com.extjs.gxt.ui.client.widget.form.FieldSet;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
import com.extjs.gxt.ui.client.widget.layout.FormData;
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
import com.google.gwt.core.client.GWT;
 
 
public class CommentaireForm extends Formulaire implements Rafraichissable {
private Publication publication;
private PublicationAPersonneListe publicationAPersonneListe = null;
private static boolean publicationAPersonneListeChargementOk = false;
private PublicationAPersonneListe auteursAjoutes = null;
private PublicationAPersonneListe auteursSupprimes = null;
private FieldSet auteursFieldset = null;
private ArrayList<ComboBox<Personne>> auteurComboboxListe = null;
private LayoutContainer conteneurChamps;
private ListStore<Personne> auteursStorePartage = null;
private static boolean auteurStorePartageChargementOk = false;
private FieldSet generalitesFieldset = null;
private TextField<String> titreChp = null;
private TextField<String> collectionChp = null;
private TextField<String> uriChp = null;
private FieldSet editionFieldset = null;
private ComboBox<Structure> editeurCombobox = null;
private TextField<String> datePublicationChp = null;
private TextField<String> tomeChp = null;
private TextField<String> fasciculeChp = null;
private TextField<String> pagesChp = null;
private String idStructureEdition = "";
 
private static boolean formulaireValideOk = false;
private static boolean publicationValideOk = false;
private static boolean auteursValideOk = false;
private static boolean attenteAjoutAuteursOk = true;
private static boolean attenteSuppressionAuteursOk = true;
 
public CommentaireForm(Mediateur mediateurCourrant, String publicationId) {
initialiserPublicationForm(mediateurCourrant, publicationId);
}
 
public CommentaireForm(Mediateur mediateurCourrant, String publicationId, Rafraichissable vueARafraichirApresValidation) {
vueExterneARafraichirApresValidation = vueARafraichirApresValidation;
initialiserPublicationForm(mediateurCourrant, publicationId);
}
private void initialiserPublicationForm(Mediateur mediateurCourrant, String publicationId) {
publicationAPersonneListe = new PublicationAPersonneListe();
initialiserValidation();
initialiserAffichageAuteurs();
publication = new Publication();
publication.setId(publicationId);
String modeDeCreation = (UtilString.isEmpty(publication.getId()) ? Formulaire.MODE_AJOUTER : Formulaire.MODE_MODIFIER);
initialiserFormulaire(mediateurCourrant, modeDeCreation, MenuApplicationId.PUBLICATION);
panneauFormulaire.setLayout(new FlowLayout());
String titre = genererTitreFormulaire();
panneauFormulaire.setHeading(titre);
 
creerZoneAuteurs();
panneauFormulaire.add(auteursFieldset);
creerZoneGeneralites();
panneauFormulaire.add(generalitesFieldset);
creerZoneEdition();
panneauFormulaire.add(editionFieldset);
if (modeDeCreation.equals(Formulaire.MODE_MODIFIER)) {
mediateurCourrant.selectionnerPublication(this, publicationId);
mediateurCourrant.selectionnerPublicationAPersonne(this, publicationId, null, PublicationAPersonne.ROLE_AUTEUR);
}
}
private String genererTitreFormulaire() {
String titre = "Ajout d'une publication";
if (mode.equals(Formulaire.MODE_MODIFIER)) {
titre = "Modification d'une publication - "+i18nC.id()+": "+publication.getId();
}
return titre;
}
private void creerZoneAuteurs() {
FormLayout layout = new FormLayout();
layout.setLabelWidth(200);
// Fieldset Auteur
auteursFieldset = new FieldSet();
auteursFieldset.setHeading("Auteur(s)");
auteursFieldset.setCollapsible(true);
auteursFieldset.setLayout(layout);
auteurComboboxListe = new ArrayList<ComboBox<Personne>>(0);
auteursStorePartage = new ListStore<Personne>();
mediateur.clicObtenirListeAuteurs(this);
creerChampsAuteur();
}
private void creerChampsAuteur() {
auteursFieldset.removeAll();
conteneurChamps = new LayoutContainer();
Button ajouterAuteurBouton = new Button("Ajouter un auteur");
ajouterAuteurBouton.setIcon(Images.ICONES.ajouter());
ajouterAuteurBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent be) {
creerChampAuteurEtBoutonSupprimer(null);
}
});
auteursFieldset.add(conteneurChamps);
auteursFieldset.add(ajouterAuteurBouton);
auteursFieldset.layout(true);
if (mode.equals(Formulaire.MODE_AJOUTER)) {
creerChampAuteurEtBoutonSupprimer(null);
}
}
public void creerChampAuteurEtBoutonSupprimer(Personne auteur) {
final HorizontalPanel panneauHorizontal = new HorizontalPanel();
panneauHorizontal.setLayout(new FormLayout());
final ComboBox<Personne> auteursSaisisComboBox = creerComboBoxAuteursSaisis();
if (auteur != null) {
GWT.log("Auteur peuplé : "+auteur.getId(), null);
auteursSaisisComboBox.setValue(auteursStorePartage.findModel("id_personne", auteur.getId()));
auteursSaisisComboBox.validate();
}
auteurComboboxListe.add(auteursSaisisComboBox);
auteursSaisisComboBox.setFieldLabel("Auteur "+auteurComboboxListe.size());
GWT.log("Nbre de combobox auteur dans liste : "+auteurComboboxListe.size(), null);
LayoutContainer panneauChampTxtEtBouton = new LayoutContainer();
panneauChampTxtEtBouton.setLayout(new FormLayout());
panneauChampTxtEtBouton.add(auteursSaisisComboBox, new FormData(300, 0));
panneauHorizontal.add(panneauChampTxtEtBouton);
Button supprimerAuteurBouton = new Button();
supprimerAuteurBouton.setIcon(Images.ICONES.supprimer());
supprimerAuteurBouton.setToolTip(i18nC.supprimer());
supprimerAuteurBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent be) {
auteurComboboxListe.remove(auteursSaisisComboBox);
conteneurChamps.remove(panneauHorizontal);
int numeroAuteurs = 1;
for (Iterator<ComboBox<Personne>> it = auteurComboboxListe.iterator(); it.hasNext();) {
it.next().setFieldLabel("Auteur "+numeroAuteurs);
numeroAuteurs++;
}
 
auteursFieldset.layout(true);
}
});
panneauHorizontal.add(supprimerAuteurBouton);
conteneurChamps.add(panneauHorizontal);
auteursFieldset.layout(true);
}
private ComboBox<Personne> creerComboBoxAuteursSaisis() {
ComboBox<Personne> comboBox = new ComboBox<Personne>();
comboBox.setEmptyText(i18nC.chercherPersonneSaisi());
comboBox.setEditable(true);
comboBox.setForceSelection(true);
comboBox.setDisplayField("fmt_nom_complet");
comboBox.setTriggerAction(TriggerAction.ALL);
comboBox.setStore(auteursStorePartage);
comboBox.addStyleName(ComposantClass.OBLIGATOIRE);
comboBox.addListener(Events.Valid, creerEcouteurChampObligatoire());
 
return comboBox;
}
private void creerZoneGeneralites() {
FormLayout layout = new FormLayout();
layout.setLabelWidth(200);
// Fieldset Infos Générales
generalitesFieldset = new FieldSet();
generalitesFieldset.setHeading("Informations générales");
generalitesFieldset.setCollapsible(true);
generalitesFieldset.setLayout(layout);
titreChp = new TextField<String>();
titreChp.setName("cpu");
titreChp.setFieldLabel("Titre de l'article ou de l'ouvrage");
titreChp.addStyleName(ComposantClass.OBLIGATOIRE);
titreChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
generalitesFieldset.add(titreChp, new FormData(450, 0));
collectionChp = new TextField<String>();
collectionChp.setFieldLabel("Intitulé de la revue ou de la collection");
generalitesFieldset.add(collectionChp, new FormData(450, 0));
uriChp = new TextField<String>();
uriChp.setFieldLabel("URL de la publication");
generalitesFieldset.add(uriChp, new FormData(450, 0));
}
private void creerZoneEdition() {
FormLayout layout = new FormLayout();
layout.setLabelWidth(200);
 
// Fieldset Edition
editionFieldset = new FieldSet();
editionFieldset.setHeading("Édition");
editionFieldset.setCollapsible(true);
editionFieldset.setLayout(layout);
ListStore<Structure> editeurStore = new ListStore<Structure>();
editeurCombobox = new ComboBox<Structure>();
editeurCombobox.setEmptyText("Sélectionner un éditeur...");
editeurCombobox.setFieldLabel("Éditeur de la publication");
editeurCombobox.setDisplayField("nom");
editeurCombobox.setStore(editeurStore);
editeurCombobox.setEditable(true);
editeurCombobox.setTriggerAction(TriggerAction.ALL);
editionFieldset.add(editeurCombobox, new FormData(450, 0));
mediateur.clicObtenirListeEditeurs(this);
datePublicationChp = new TextField<String>();
datePublicationChp.setMaxLength(4);
datePublicationChp.setMinLength(4);
datePublicationChp.setFieldLabel("Année de publication");
datePublicationChp.addStyleName(ComposantClass.OBLIGATOIRE);
datePublicationChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
editionFieldset.add(datePublicationChp, new FormData(40, 0));
tomeChp = new TextField<String>();
tomeChp.setFieldLabel("Série de la revue ou tome");
editionFieldset.add(tomeChp, new FormData(75, 0));
fasciculeChp = new TextField<String>();
fasciculeChp.setFieldLabel("Fascicule de la revue");
editionFieldset.add(fasciculeChp, new FormData(75, 0));
pagesChp = new TextField<String>();
pagesChp.setFieldLabel("Pages");
pagesChp.setToolTip("Fomat : NBRE ou NBRE-NBRE. ('NBRE' correspond à une suite de chiffres arabes ou romains ou à un point d'interrogation '?' dans le cas d'une donnée inconnue)");
editionFieldset.add(pagesChp, new FormData(100, 0));
}
 
public void rafraichir(Object nouvellesDonnees) {
if (nouvellesDonnees instanceof Publication) {
// Si on a reçu les details d'une publication
rafraichirPublication((Publication) nouvellesDonnees);
} else if (nouvellesDonnees instanceof StructureListe) {
// Si on a reçu une liste des editeurs
rafraichirListeEditeurs((StructureListe) nouvellesDonnees);
} else if (nouvellesDonnees instanceof PublicationAPersonneListe) {
rafraichirListeAuteurs((PublicationAPersonneListe) nouvellesDonnees);
} else if (nouvellesDonnees instanceof Information) {
rafraichirInformation((Information) nouvellesDonnees);
} else {
GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
}
if (etrePretAAfficherAuteurs()) {
initialiserAffichageAuteurs();
afficherAuteurs();
}
if (etreValide()) {
initialiserValidation();
repandreRafraichissement();
controlerFermetureApresRafraichissement();
}
}
private void miseAJourPublicationAPersonneListe() {
GWT.log("Mise à jour liste publication à personne", null);
Iterator<String> clesAjoutees = auteursAjoutes.keySet().iterator();
while (clesAjoutees.hasNext()) {
String id = clesAjoutees.next();
publicationAPersonneListe.put(id, auteursAjoutes.get(id));
GWT.log("Auteurs ajouté :"+publicationAPersonneListe.get(id).getPersonne().getNomComplet(), null);
}
Iterator<String> clesSupprimees = auteursSupprimes.keySet().iterator();
while (clesSupprimees.hasNext()) {
String id = clesSupprimees.next();
publicationAPersonneListe.remove(id);
GWT.log("Personne surpprimé :"+id, null);
}
GWT.log("Nbre auteurs après maj :"+publicationAPersonneListe.size(), null);
}
private void rafraichirPublication(Publication publi) {
publication = publi;
peuplerFormulaire();
}
private void rafraichirListeEditeurs(StructureListe editeurs) {
editeurCombobox.getStore().removeAll();
editeurCombobox.getStore().add((List<Structure>) editeurs.toList());
if (mode.equals(Formulaire.MODE_MODIFIER)) {
editeurCombobox.setValue((Structure) editeurs.get(idStructureEdition));
}
editeurCombobox.expand();
}
private void rafraichirListeAuteurs(PublicationAPersonneListe auteurs) {
publicationAPersonneListe = auteurs;
publicationAPersonneListeChargementOk = true;
}
private void rafraichirInformation(Information info) {
if (info.getType().equals("liste_personne")) {
PersonneListe listePersonneAuteur = (PersonneListe) info.getDonnee(0);
List<Personne> liste = listePersonneAuteur.toList();
auteursStorePartage.removeAll();
auteursStorePartage.add(liste);
auteurStorePartageChargementOk = true;
} else if (info.getType().equals("publication_valide")) {
publicationValideOk = true;
publication.setId((String) info.getDonnee(0));
if (mode.equals(Formulaire.MODE_AJOUTER)) {
attenteAjoutAuteursOk = true;
mediateur.ajouterPublicationAPersonne(this, publication.getId(), auteursAjoutes, PublicationAPersonne.ROLE_AUTEUR);
}
} else if (info.getType().equals("ajout_publication_a_personne")) {
attenteAjoutAuteursOk = false;
GWT.log("attenteAjoutAuteursOk", null);
} else if (info.getType().equals("suppression_publication_a_personne")) {
attenteSuppressionAuteursOk = false;
GWT.log("attenteSuppressionAuteursOk", null);
}
if (avoirAuteursMiseAJourCorrectement()) {
auteursValideOk = true;
miseAJourPublicationAPersonneListe();
initialiserAuteurs();
}
}
private boolean avoirAuteursMiseAJourCorrectement() {
boolean ok = false;
if (attenteAjoutAuteursOk == false && attenteSuppressionAuteursOk == false) {
ok = true;
}
return ok;
}
private void afficherAuteurs() {
Iterator<String> itap = publicationAPersonneListe.keySet().iterator();
GWT.log("Auteur"+publicationAPersonneListe.size(), null);
while (itap.hasNext()) {
creerChampAuteurEtBoutonSupprimer(publicationAPersonneListe.get(itap.next()).getPersonne());
}
}
 
private void initialiserAffichageAuteurs() {
auteurStorePartageChargementOk = false;
publicationAPersonneListeChargementOk = false;
}
 
private boolean etrePretAAfficherAuteurs() {
boolean ok = false;
if (auteurStorePartageChargementOk && publicationAPersonneListeChargementOk) {
ok = true;
}
return ok;
}
 
private Boolean etreValide() {
Boolean valide = false;
GWT.log("formulaire"+formulaireValideOk+" - Publication :"+publicationValideOk+" - Auteurs :"+auteursValideOk, null);
if (formulaireValideOk && publicationValideOk && auteursValideOk) {
valide = true;
}
return valide;
}
private void initialiserValidation() {
formulaireValideOk = false;
publicationValideOk = false;
initialiserAuteurs();
auteursValideOk = false;
}
private void initialiserAuteurs() {
attenteAjoutAuteursOk = true;
auteursAjoutes = new PublicationAPersonneListe();
attenteSuppressionAuteursOk = true;
auteursSupprimes = new PublicationAPersonneListe();
}
private void repandreRafraichissement() {
if (vueExterneARafraichirApresValidation != null) {
String type = "publication_modifiee";
if (mode.equals(Formulaire.MODE_AJOUTER)) {
type = "publication_ajoutee";
}
Information info = new Information(type);
info.setDonnee(0, publication);
vueExterneARafraichirApresValidation.rafraichir(info);
}
}
public boolean soumettreFormulaire() {
formulaireValideOk = verifierFormulaire();
GWT.log("Form?"+formulaireValideOk, null);
if (formulaireValideOk) {
soumettrePublication();
soumettreAuteurs();
}
return formulaireValideOk;
}
private void soumettrePublication() {
Publication publicationCollectee = collecterPublication();
if (publicationCollectee != null) {
GWT.log("Info public collectée ? ok", null);
if (mode.equals(Formulaire.MODE_AJOUTER)) {
mediateur.ajouterPublication(this, publicationCollectee);
} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
mediateur.modifierPublication(this, publicationCollectee);
}
}
}
private void soumettreAuteurs() {
attenteAjoutAuteursOk = false;
attenteSuppressionAuteursOk = false;
PersonneListe personnesInitiales = new PersonneListe();
if (publicationAPersonneListe != null) {
GWT.log("Nbre auteur initial :"+publicationAPersonneListe.size(), null);
Iterator<String> itap = publicationAPersonneListe.keySet().iterator();
while (itap.hasNext()) {
Personne personne = publicationAPersonneListe.get(itap.next()).getPersonne();
GWT.log("Auteur initial :"+personne.getNomComplet(), null);
personnesInitiales.put(personne.getId(), personne);
}
}
PersonneListe personnesActuelles = new PersonneListe();
GWT.log("Nbre auteur actuel :"+auteurComboboxListe.size(), null);
for (int i = 0; i < auteurComboboxListe.size(); i++) {
if (auteurComboboxListe.get(i).getValue() != null) {
Personne personne = auteurComboboxListe.get(i).getValue();
personnesActuelles.put(personne.getId(), personne);
}
}
// Auteurs ajoutés
Iterator<String> clesActuelles = personnesActuelles.keySet().iterator();
while (clesActuelles.hasNext()) {
String idActuel = clesActuelles.next();
if (personnesInitiales.size() == 0 || personnesInitiales.get(idActuel) == null) {
Personne personne = personnesActuelles.get(idActuel);
GWT.log("Auteur ajouté :"+personne.getNomComplet(), null);
PublicationAPersonne publicationAAuteur = new PublicationAPersonne();
if (mode.equals(Formulaire.MODE_MODIFIER)) {
publicationAAuteur.setIdPublication(publication.getId());
}
publicationAAuteur.setPersonne(personne);
publicationAAuteur.setIdRole(PublicationAPersonne.ROLE_AUTEUR);
auteursAjoutes.put(publicationAAuteur.getId(), publicationAAuteur);
attenteAjoutAuteursOk = true;
}
}
 
// Auteurs supprimés
if (mode.equals(Formulaire.MODE_MODIFIER)) {
Iterator<String> clesInitiales = personnesInitiales.keySet().iterator();
while (clesInitiales.hasNext()) {
String idInitial = clesInitiales.next();
if (personnesActuelles.size() == 0 || personnesActuelles.get(idInitial) == null) {
Personne personne = personnesInitiales.get(idInitial);
GWT.log("Auteur supprimé :"+personne.getNomComplet(), null);
PublicationAPersonne publicationAAuteur = new PublicationAPersonne();
publicationAAuteur.setIdPublication(publication.getId());
publicationAAuteur.setPersonne(personne);
publicationAAuteur.setIdRole(PublicationAPersonne.ROLE_AUTEUR);
auteursSupprimes.put(publicationAAuteur.getId(), publicationAAuteur);
attenteSuppressionAuteursOk = true;
}
}
}
// Execution de les mise à jour pour le mode MODIFICATION
if (mode.equals(Formulaire.MODE_MODIFIER)) {
if (auteursAjoutes != null && auteursAjoutes.size() != 0) {
mediateur.ajouterPublicationAPersonne(this, publication.getId(), auteursAjoutes, PublicationAPersonne.ROLE_AUTEUR);
}
if (auteursSupprimes != null && auteursSupprimes.size() != 0) {
mediateur.supprimerPublicationAPersonne(this, auteursSupprimes);
}
}
}
public boolean verifierFormulaire() {
boolean valide = true;
ArrayList<String> messages = new ArrayList<String>();
boolean auteurErreur = true;
for (int i = 0; i < auteurComboboxListe.size(); i++) {
if (auteurComboboxListe.get(i).getValue() != null) {
auteurErreur = false;
break;
}
}
if (auteurErreur) {
messages.add("Veuillez saisir au moins un auteur !");
}
String titre = titreChp.getValue();
if (titre == null || titre.equals("")) {
messages.add("Veuillez saisir le titre de la publication !");
}
String uri = uriChp.getValue();
if (uri != null && ! uri.isEmpty() && ! uri.matches(Pattern.url)) {
messages.add("L'URL saisie n'est pas valide !");
}
String datePublication = datePublicationChp.getRawValue();
if (datePublication == null || datePublication.equals("")) {
messages.add("Veuillez saisir une année de parution !");
} else {
if (!etreDateValide(datePublication)) {
messages.add("Le format de l'année saisie est incorrect !");
}
}
String pages = pagesChp.getValue();
String valeurPage = "(?:[0-9]+|[IVXLCDM]+|\\?)";
if (pages != null && ! pages.matches("^(?:"+valeurPage+"|"+valeurPage+"-"+valeurPage+")$")) {
messages.add("Le format des pages est incorrect !");
}
if (messages.size() != 0) {
String[] tableauDeMessages = {};
tableauDeMessages = messages.toArray(tableauDeMessages);
MessageBox.alert("Erreurs de saisies", UtilArray.implode(tableauDeMessages, "<br />"), null);
valide = false;
}
return valide;
}
private void peuplerFormulaire() {
creerChampsAuteur();
titreChp.setValue(publication.getTitre());
collectionChp.setValue(publication.getCollection());
uriChp.setValue(publication.getURI());
datePublicationChp.setRawValue(reduireDateParAnnee(publication.getDateParution()));
tomeChp.setValue(publication.getIndicationNvt());
fasciculeChp.setValue(publication.getFascicule());
pagesChp.setValue(publication.getPages());
if (publication.getEditeur().matches("^[0-9]+$")) {
editeurCombobox.setValue(editeurCombobox.getStore().findModel("id_structure", publication.getEditeur()));
idStructureEdition = publication.getEditeur();
} else {
editeurCombobox.setRawValue(publication.getEditeur());
}
}
private Publication collecterPublication() {
Publication publicationCollectee = (Publication) publication.cloner(new Publication());
String auteurIntituleFormate = "";
int auteursNombre = auteurComboboxListe.size();
for (int i = 0; i < auteursNombre; i++) {
if (auteurComboboxListe.get(i).getValue() != null) {
Personne auteur = auteurComboboxListe.get(i).getValue();
auteurIntituleFormate += auteur.getNom()+ " "+auteur.getPrenom();
if (i != (auteursNombre - 1)) {
auteurIntituleFormate += ", ";
}
}
}
GWT.log("Auteurs formaté :"+auteurIntituleFormate, null);
publicationCollectee.setAuteur(auteurIntituleFormate);
String titre = titreChp.getValue();
publicationCollectee.setTitre(titre);
String collection = collectionChp.getValue();
publicationCollectee.setCollection(collection);
String nomComplet = titreChp.getValue()+" "+collectionChp.getValue();
publicationCollectee.setNomComplet(nomComplet);
String uri = uriChp.getValue();
publicationCollectee.setUri(uri);
String editeur = "";
if (editeurCombobox.getValue() != null) {
editeur = editeurCombobox.getValue().getId();
publicationCollectee.setStructureEditeur(editeurCombobox.getValue());
} else if (editeurCombobox.getRawValue() != "") {
editeur = editeurCombobox.getRawValue();
}
publicationCollectee.setEditeur(editeur);
String anneePublication = datePublicationChp.getRawValue();
String datePublication = anneePublication+"-00-00";
publicationCollectee.setDateParution(datePublication);
String tome = tomeChp.getValue();
publicationCollectee.setIndicationNvt(tome);
String fascicule = fasciculeChp.getValue();
publicationCollectee.setFascicule(fascicule);
String pages = pagesChp.getValue();
publicationCollectee.setPages(pages);
Publication publicationARetourner = null;
if (!publicationCollectee.comparer(publication)) {
publicationARetourner = publication = publicationCollectee;
}
return publicationARetourner;
}
public void reinitialiserFormulaire() {
if (mode.equals(Formulaire.MODE_MODIFIER)) {
mediateur.afficherFormPublication(publication.getId());
} else {
mediateur.afficherFormPublication(null);
}
}
private boolean etreDateValide(String anneePublication) {
boolean valide = true;
if (!anneePublication.matches("^[0-2][0-9]{3}$")) {
valide = false;
}
return valide;
}
private String reduireDateParAnnee(String datePar) {
if (datePar.matches("^[0-2][0-9]{3}(-[0-9]{2}){2}$")) {
return datePar.split("-")[0];
} else {
return "";
}
}
}
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/src/org/tela_botanica/client/vues/MenuVue.java
44,6 → 44,7
Menu menuCollections = new Menu(i18nC.menuCollection(), MenuApplicationId.COLLECTION);
Menu menuPersonnes = new Menu(i18nC.menuPersonne(), MenuApplicationId.PERSONNE);
Menu menuPublications = new Menu(i18nC.menuPublication(), MenuApplicationId.PUBLICATION);
Menu menuCommentaires = new Menu(i18nC.menuCommentaire(), MenuApplicationId.COMMENTAIRE);
menuStore.add(accueilMenu, false);
menuStore.add(projetMenu, false);
51,6 → 52,7
menuStore.add(menuCollections, false);
menuStore.add(menuPersonnes, false);
menuStore.add(menuPublications, false);
menuStore.add(menuCommentaires, false);
}
private void afficherMenu() {
/trunk/src/org/tela_botanica/client/Modele.java
14,6 → 14,8
import org.tela_botanica.client.modeles.collection.CollectionAPublication;
import org.tela_botanica.client.modeles.collection.CollectionAPublicationAsyncDao;
import org.tela_botanica.client.modeles.collection.CollectionAsyncDao;
import org.tela_botanica.client.modeles.commentaire.Commentaire;
import org.tela_botanica.client.modeles.commentaire.CommentaireAsyncDao;
import org.tela_botanica.client.modeles.personne.Personne;
import org.tela_botanica.client.modeles.personne.PersonneAsyncDao;
import org.tela_botanica.client.modeles.projet.Projet;
343,5 → 345,28
ProjetAsyncDao pADAO = new ProjetAsyncDao(vueARafraichir);
pADAO.supprimer(projetsId);
}
//+----------------------------------------------------------------------------------------------------------------+
// GESTION DES COMMENTAIRES
//+----------------------------------------------------------------------------------------------------------------+
public void selectionnerCommentaire(Rafraichissable vueARafraichir, String commentaireId, String projetId) {
CommentaireAsyncDao cDao = new CommentaireAsyncDao(vueARafraichir);
cDao.selectionner(commentaireId, projetId);
}
public void modifierCommentaire(Rafraichissable vueRafraichir, Commentaire commentaire) {
CommentaireAsyncDao cDao = new CommentaireAsyncDao(vueRafraichir);
cDao.modifier(commentaire);
}
 
public void ajouterCommentaire(Rafraichissable vueARafraichir, Commentaire commentaire) {
CommentaireAsyncDao cDao = new CommentaireAsyncDao(vueARafraichir);
cDao.ajouter(commentaire);
}
 
public void supprimerCommentaire(Rafraichissable vueARafraichir, String idCommentaireSeparesParVirgule) {
CommentaireAsyncDao cDao = new CommentaireAsyncDao(vueARafraichir);
cDao.supprimer(idCommentaireSeparesParVirgule);
}
}
/trunk/src/org/tela_botanica/client/configuration/Configuration.java
85,6 → 85,7
listesId.put("groupementPrincipe", Integer.valueOf(configuration.get("listeGroupementPrincipe")));
listesId.put("realisationBut", Integer.valueOf(configuration.get("listeRealisationBut")));
listesId.put("ion", Integer.valueOf(configuration.get("listeION")));
listesId.put("typeCommentaireCollection", Integer.valueOf(configuration.get("listeTypeCommentaireCollection")));
listesId.put("prefixe", Integer.valueOf(configuration.get("listePrefixes")));
listesId.put("suffixes", Integer.valueOf(configuration.get("listeSuffixes")));
/trunk/war/config.js
89,6 → 89,8
listeInventaireLogiciel:1062,
// liste 60 : Liste des états d'inventaire
listeInventaireEtat:1063,
// liste 65 : Liste des types de commentaires associés à une collection
listeTypeCommentaireCollection:1068,
// liste 71 : Liste des pays du standard ISO-3166-1
listePays:1074,
// liste 77 : Liste indéterminé/oui/non