New file |
0,0 → 1,821 |
package org.tela_botanica.client.vues.publication; |
|
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.projet.Projet; |
import org.tela_botanica.client.modeles.projet.ProjetListe; |
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.Debug; |
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.Info; |
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.Field; |
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.Validator; |
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 PublicationForm extends Formulaire implements Rafraichissable { |
|
private Publication publication; |
private PersonneListe auteursInitialListe = null; |
private static boolean publicationAPersonneListeChargementOk = false; |
private PublicationAPersonneListe auteursAjoutes = null; |
private PublicationAPersonneListe auteursSupprimes = null; |
|
private FieldSet auteursFieldset = null; |
private ComboBox<Projet> projetsCombo = 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 publicationOk = false; |
private static boolean attenteAjoutAuteursOk = true; |
private static boolean attenteSuppressionAuteursOk = true; |
|
public PublicationForm(Mediateur mediateurCourrant, String publicationId) { |
initialiserPublicationForm(mediateurCourrant, publicationId); |
} |
|
public PublicationForm(Mediateur mediateurCourrant, String publicationId, Rafraichissable vueARafraichirApresValidation) { |
vueExterneARafraichirApresValidation = vueARafraichirApresValidation; |
initialiserPublicationForm(mediateurCourrant, publicationId); |
} |
|
private void initialiserPublicationForm(Mediateur mediateurCourrant, String publicationId) { |
auteursInitialListe = new PersonneListe(); |
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()); |
genererTitreFormulaire(); |
|
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 void genererTitreFormulaire() { |
String titre = i18nC.publicationTitreFormAjout(); |
if (mode.equals(Formulaire.MODE_MODIFIER)) { |
titre = i18nC.publicationTitreFormModif(); |
if (publication != null) { |
titre += " - "+i18nC.id()+": "+publication.getId(); |
} |
} |
panneauFormulaire.setHeading(titre); |
} |
|
private void creerZoneAuteurs() { |
FormLayout layout = new FormLayout(); |
layout.setLabelWidth(200); |
|
// Fieldset Auteur |
auteursFieldset = new FieldSet(); |
auteursFieldset.setHeading(i18nC.publicationAuteursTitre()); |
auteursFieldset.setCollapsible(true); |
auteursFieldset.setLayout(layout); |
|
Debug.log("Dans creerZoneAuteurs"); |
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(i18nC.publicationAuteurBoutonAjouter()); |
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(); |
|
if (mode.equals(Formulaire.MODE_AJOUTER)) { |
creerChampAuteurEtBoutonSupprimer(null); |
} |
} |
|
public void creerChampAuteurEtBoutonSupprimer(Personne auteur) { |
final HorizontalPanel panneauHorizontal = new HorizontalPanel(); |
|
LayoutContainer panneauChampTxt = new LayoutContainer(); |
panneauChampTxt.setLayout(new FormLayout()); |
|
final ComboBox<Personne> auteursSaisisComboBox = creerComboBoxAuteursSaisis(); |
if (auteur != null) { |
auteursSaisisComboBox.setValue(auteur); |
auteursSaisisComboBox.validate(); |
} |
auteurComboboxListe.add(auteursSaisisComboBox); |
auteursSaisisComboBox.setFieldLabel(i18nC.publicationAuteurSingulier()+" "+auteurComboboxListe.size()); |
panneauChampTxt.add(auteursSaisisComboBox, new FormData(300, 0)); |
panneauHorizontal.add(panneauChampTxt); |
|
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(i18nC.publicationAuteurSingulier()+" "+numeroAuteurs); |
numeroAuteurs++; |
} |
|
auteursFieldset.layout(); |
} |
}); |
panneauHorizontal.add(supprimerAuteurBouton); |
|
conteneurChamps.add(panneauHorizontal); |
auteursFieldset.layout(); |
} |
|
private ComboBox<Personne> creerComboBoxAuteursSaisis() { |
ListStore<Personne> auteursStore = new ListStore<Personne>(); |
auteursStore.add(auteursStorePartage.getModels()); |
|
ComboBox<Personne> comboBox = new ComboBox<Personne>(); |
comboBox.setEmptyText(i18nC.chercherPersonneSaisi()); |
comboBox.setEditable(true); |
comboBox.setAllowBlank(false); |
comboBox.setForceSelection(true); |
comboBox.setDisplayField("fmt_nom_complet"); |
comboBox.setTriggerAction(TriggerAction.ALL); |
comboBox.setStore(auteursStore); |
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); |
|
projetsCombo = new ComboBox<Projet>(); |
projetsCombo.setTabIndex(tabIndex++); |
projetsCombo.setFieldLabel(i18nC.projetChamp()); |
projetsCombo.setDisplayField("nom"); |
projetsCombo.setForceSelection(true); |
projetsCombo.setValidator(new Validator() { |
@Override |
public String validate(Field<?> field, String value) { |
String retour = null; |
if (field.getRawValue().equals("")) { |
field.setValue(null); |
} else if (projetsCombo.getStore().findModel("nom", field.getRawValue()) == null) { |
String contenuBrut = field.getRawValue(); |
field.setValue(null); |
field.setRawValue(contenuBrut); |
retour = "Veuillez sélectionner une valeur ou laisser le champ vide"; |
} |
return retour; |
} |
}); |
projetsCombo.setTriggerAction(TriggerAction.ALL); |
projetsCombo.setStore(new ListStore<Projet>()); |
projetsCombo.addStyleName(ComposantClass.OBLIGATOIRE); |
projetsCombo.addListener(Events.Valid, Formulaire.creerEcouteurChampObligatoire()); |
generalitesFieldset.add(projetsCombo, new FormData(450, 0)); |
mediateur.selectionnerProjet(this, null); |
|
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 if (nouvellesDonnees instanceof ProjetListe) { |
ProjetListe projets = (ProjetListe) nouvellesDonnees; |
Formulaire.rafraichirComboBox(projets, projetsCombo); |
setValeurComboProjets(); |
} else { |
GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null); |
} |
|
if (etrePretAAfficherAuteurs()) { |
afficherAuteurs(); |
initialiserAffichageAuteurs(); |
} |
|
if (etreValide()) { |
initialiserValidation(); |
repandreRafraichissement(); |
controlerFermetureApresRafraichissement(); |
} |
} |
|
private void miseAJourAuteursInitialListe() { |
Iterator<String> clesAjoutees = auteursAjoutes.keySet().iterator(); |
while (clesAjoutees.hasNext()) { |
Personne auteurAjoute = auteursAjoutes.get(clesAjoutees.next()).getPersonne(); |
auteursInitialListe.put(auteurAjoute.getId(), auteurAjoute); |
} |
|
Iterator<String> clesSupprimees = auteursSupprimes.keySet().iterator(); |
while (clesSupprimees.hasNext()) { |
Personne auteurSupprime = auteursSupprimes.get(clesSupprimees.next()).getPersonne(); |
auteursInitialListe.remove(auteurSupprime.getId()); |
} |
} |
|
private void rafraichirPublication(Publication publi) { |
publicationOk = true; |
publication = publi; |
peuplerFormulaire(); |
genererTitreFormulaire(); |
} |
|
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) { |
Iterator<String> it = auteurs.keySet().iterator(); |
while (it.hasNext()) { |
Personne auteur = auteurs.get(it.next()).getPersonne(); |
auteursInitialListe.put(auteur.getId(), auteur); |
} |
publicationAPersonneListeChargementOk = true; |
} |
|
private void rafraichirInformation(Information info) { |
String type = info.getType(); |
if (type.equals("ajout_publication") || type.equals("modif_publication")) { |
publicationValideOk = true; |
if (vueExterneARafraichirApresValidation != null) { |
publication.setId((String) info.getDonnee(0)); |
} |
|
if (mode.equals(Formulaire.MODE_AJOUTER)) { |
attenteAjoutAuteursOk = true; |
mediateur.ajouterPublicationAPersonne(this, publication.getId(), auteursAjoutes, PublicationAPersonne.ROLE_AUTEUR); |
} |
} |
|
if (info.getType().equals("liste_personne")) { |
PersonneListe listePersonneAuteur = (PersonneListe) info.getDonnee(0); |
|
List<Personne> liste = listePersonneAuteur.toList(); |
auteursStorePartage.removeAll(); |
auteursStorePartage.add(liste); |
Debug.log("Reception nouvelle liste auteurs"); |
auteurStorePartageChargementOk = true; |
} 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); |
} else if (info.getType().equals("modif_publication")) { |
Info.display("Modification d'une publication", info.toString()); |
} else if (info.getType().equals("ajout_publication")) { |
if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String) { |
String publicationId = (String) info.getDonnee(0); |
Info.display("Ajout d'une publication", "La publication '"+publicationId+"' a bien été ajoutée"); |
if (vueExterneARafraichirApresValidation != null) { |
publication.setId(publicationId); |
} |
} else { |
Info.display("Ajout d'une publication", info.toString()); |
} |
} |
|
if (avoirAuteursMiseAJourCorrectement()) { |
Debug.log("Mise à jour liste auteur"); |
miseAJourAuteursInitialListe(); |
initialiserAuteurs(); |
auteursValideOk = true; |
} |
} |
|
private boolean avoirAuteursMiseAJourCorrectement() { |
boolean ok = false; |
if (attenteAjoutAuteursOk == false && attenteSuppressionAuteursOk == false) { |
ok = true; |
} |
return ok; |
} |
|
private void afficherAuteurs() { |
Iterator<String> itap = auteursInitialListe.keySet().iterator(); |
while (itap.hasNext()) { |
creerChampAuteurEtBoutonSupprimer(auteursInitialListe.get(itap.next())); |
} |
} |
|
private void initialiserAffichageAuteurs() { |
publicationOk = false; |
auteurStorePartageChargementOk = false; |
publicationAPersonneListeChargementOk = false; |
} |
|
private boolean etrePretAAfficherAuteurs() { |
boolean ok = false; |
if (publicationOk && auteurStorePartageChargementOk && publicationAPersonneListeChargementOk) { |
ok = true; |
} |
return ok; |
} |
|
private Boolean etreValide() { |
Boolean valide = false; |
//Debug.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(); |
if (formulaireValideOk) { |
soumettrePublication(); |
soumettreAuteurs(); |
} |
return formulaireValideOk; |
} |
|
private void soumettrePublication() { |
Publication publicationCollectee = collecterPublication(); |
if (publicationCollectee != 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 = auteursInitialListe; |
|
PersonneListe personnesActuelles = new PersonneListe(); |
if (auteurComboboxListe != null) { |
Iterator<ComboBox<Personne>> itcp = auteurComboboxListe.iterator(); |
while (itcp.hasNext()) { |
ComboBox<Personne> combobox = itcp.next(); |
Personne personne = combobox.getValue(); |
if (personne != null) { |
personnesActuelles.put(personne.getId(), personne); |
} else { |
Debug.log("Etre valide :"+combobox.isValid()+" - "+combobox.getRawValue()); |
} |
} |
} |
|
// 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); |
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); |
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); |
} |
} |
Debug.log("personnesInitiales:"+personnesInitiales.size()+" - personnesActuelles :"+personnesActuelles.size()+" - auteursSupprimes :"+auteursSupprimes.size()+" - auteursAjoutes :"+auteursAjoutes.size()); |
} |
|
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(); |
setValeurComboProjets(); |
titreChp.setValue(publication.getTitre()); |
collectionChp.setValue(publication.getCollection()); |
uriChp.setValue(publication.getURI()); |
datePublicationChp.setValue(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()); |
|
publicationCollectee.setIdProjet(getValeurComboProjets()); |
|
publicationCollectee.setAuteur(construireIntituleAuteur()); |
|
String titre = titreChp.getValue(); |
publicationCollectee.setTitre(titre); |
|
String collection = collectionChp.getValue(); |
publicationCollectee.setCollection(collection); |
|
publicationCollectee.setNomComplet(construireNomComplet()); |
|
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; |
} |
|
private String construireIntituleEditeur() { |
String editeur = ""; |
if (editeurCombobox.getValue() != null) { |
editeur = editeurCombobox.getValue().getNom(); |
} else if (editeurCombobox.getRawValue() != "") { |
editeur = editeurCombobox.getRawValue(); |
} |
return editeur; |
} |
|
private String construireIntituleAuteur() { |
String inituleAuteur = ""; |
int auteursNombre = auteurComboboxListe.size(); |
for (int i = 0; i < auteursNombre; i++) { |
if (auteurComboboxListe.get(i).getValue() != null) { |
Personne auteur = auteurComboboxListe.get(i).getValue(); |
inituleAuteur += auteur.getNom().toUpperCase()+ " "+auteur.getPrenom(); |
if (i != (auteursNombre - 1)) { |
inituleAuteur += ", "; |
} |
} |
} |
return inituleAuteur; |
} |
|
private String construireNomComplet() { |
// Intitulé de la publication complet : fmt_auteur, date_parution(année). titre. Editeur (nom), collection, fascicule, indication_nvt. pages. |
String nomComplet = ""; |
String auteurs = construireIntituleAuteur(); |
String annee = datePublicationChp.getRawValue(); |
String titre = titreChp.getValue(); |
String editeur = construireIntituleEditeur(); |
|
nomComplet += auteurs+", "+annee+". "+titre+"."; |
|
if (!UtilString.isEmpty(editeur)) { |
nomComplet += " Éditeur "+editeur+"."; |
} |
|
if (collectionChp.getValue() != null) { |
String revue = collectionChp.getValue(); |
nomComplet += ", "+revue; |
} |
|
if (fasciculeChp.getValue() != null) { |
String fascicule = fasciculeChp.getValue(); |
nomComplet += ", "+fascicule; |
} |
|
if (tomeChp.getValue() != null) { |
String tomaison = tomeChp.getValue(); |
nomComplet += ", "+tomaison; |
} |
|
if (collectionChp.getValue() != null || fasciculeChp.getValue() != null || tomeChp.getValue() != null) { |
nomComplet += "."; |
} |
|
if (pagesChp.getValue() != null) { |
String pages = pagesChp.getValue(); |
nomComplet += pages+"."; |
} |
|
return nomComplet; |
} |
|
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 ""; |
} |
} |
|
private String getValeurComboProjets() { |
String valeur = ""; |
if (projetsCombo.getValue() != null) { |
valeur = projetsCombo.getValue().getId(); |
} |
return valeur; |
} |
private void setValeurComboProjets() { |
if (projetsCombo.getStore() != null ) { |
if (mode.equals(Formulaire.MODE_MODIFIER) && publication != null) { |
projetsCombo.setValue(projetsCombo.getStore().findModel("id_projet", publication.getIdProjet())); |
} else if (mode.equals(Formulaire.MODE_AJOUTER)) { |
projetsCombo.setValue(projetsCombo.getStore().findModel("id_projet", mediateur.getProjetId())); |
} |
} |
} |
} |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |