/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.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/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/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/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/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/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/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/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); |
} |
} |