18,6 → 18,7 |
import org.tela_botanica.client.modeles.PublicationListe; |
import org.tela_botanica.client.modeles.Structure; |
import org.tela_botanica.client.modeles.StructureListe; |
import org.tela_botanica.client.util.UtilArray; |
|
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.Style.HorizontalAlignment; |
84,10 → 85,21 |
private boolean validationPublication = false; |
private boolean validationAuteurs = false; |
|
protected boolean listeAuteurInitialisee = false; |
protected boolean listePersonneAuteurInitialisee = false; |
protected boolean listeAuteurPublicationInitialisee = false; |
|
private Rafraichissable vueExterneARafraichirApresValidation = null; |
|
public PublicationForm(Mediateur mediateurCourrant, String publicationId) { |
initialiserPublicationForm(mediateurCourrant, publicationId); |
} |
|
public PublicationForm(Mediateur mediateurCourrant, String publicationId, Rafraichissable vueARafraichirApresValidation) { |
initialiserPublicationForm(mediateurCourrant, publicationId); |
vueExterneARafraichirApresValidation = vueARafraichirApresValidation; |
} |
|
private void initialiserPublicationForm(Mediateur mediateurCourrant, String publicationId) { |
String modeDeCreation = Formulaire.MODE_AJOUTER; |
if (publicationId != null) { |
modeDeCreation = Formulaire.MODE_MODIFIER; |
111,7 → 123,7 |
mediateurCourrant.selectionnerPublication(this, publicationId); |
mediateurCourrant.selectionnerAuteurAPublication(this, publicationId); |
} |
|
|
private void chargerOntologie() { |
mediateur.clicObtenirListeEditeurs(this); |
mediateur.clicObtenirListeAuteurs(this); |
284,166 → 296,213 |
} |
|
public void rafraichir(Object nouvellesDonnees) { |
// Si on a reçu les details d'une publication |
if (nouvellesDonnees instanceof Publication) { |
publi = (Publication) nouvellesDonnees; |
|
genererChampsAuteur(true); |
nomArticle.setValue(publi.getTitre()); |
intituleCollPub.setValue(publi.getCollection()); |
uriPub.setValue(publi.getURI()); |
datePub.setRawValue(reduireDateParAnnee(publi.getDateParution())); |
tomPub.setValue(publi.getIndicationNvt()); |
fasciculePub.setValue(publi.getFascicule()); |
pagesPub.setValue(publi.getPages()); |
idPublication = publi.getId(); |
idStructureEdition = publi.getEditeur(); |
idProjet = publi.getProjet() ; |
// 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); |
} |
|
// Si on a reçu une liste des editeurs |
if (nouvellesDonnees instanceof StructureListe) { |
storeEditeurs.removeAll(); |
StructureListe listeStructure = (StructureListe) nouvellesDonnees; |
storeEditeurs.add((List<Structure>) listeStructure.toList()); |
|
if (mode.equals(Formulaire.MODE_MODIFIER)) { |
comboListeEditeurs.setValue((Structure) listeStructure.get(idStructureEdition)); |
} |
comboListeEditeurs.expand(); |
if (etreValide()) { |
reinitialiserValidation(); |
repandreRafraichissement(); |
controlerFermetureApresRafraichissement(); |
} |
} |
|
private void rafraichirPublication(Publication publication) { |
publi = publication; |
|
if (nouvellesDonnees instanceof PublicationAPersonneListe) { |
pubAPersonneListeAuteur = (PublicationAPersonneListe) nouvellesDonnees; |
genererChampsAuteur(true); |
nomArticle.setValue(publi.getTitre()); |
intituleCollPub.setValue(publi.getCollection()); |
uriPub.setValue(publi.getURI()); |
datePub.setRawValue(reduireDateParAnnee(publi.getDateParution())); |
tomPub.setValue(publi.getIndicationNvt()); |
fasciculePub.setValue(publi.getFascicule()); |
pagesPub.setValue(publi.getPages()); |
idPublication = publi.getId(); |
idStructureEdition = publi.getEditeur(); |
idProjet = publi.getIdProjet() ; |
} |
|
private void rafraichirListeEditeurs(StructureListe editeurs) { |
storeEditeurs.removeAll(); |
storeEditeurs.add((List<Structure>) editeurs.toList()); |
|
if (mode.equals(Formulaire.MODE_MODIFIER)) { |
comboListeEditeurs.setValue((Structure) editeurs.get(idStructureEdition)); |
} |
comboListeEditeurs.expand(); |
} |
|
private void rafraichirListeAuteurs(PublicationAPersonneListe auteurs) { |
pubAPersonneListeAuteur = auteurs; |
|
if (listePersonneAuteurInitialisee) { |
Iterator<String> itap = pubAPersonneListeAuteur.keySet().iterator(); |
while (itap.hasNext()) { |
creerTextFieldEtBouton(pubAPersonneListeAuteur.get(itap.next()).getPersonne()); |
} |
|
if (listeAuteurInitialisee) { |
Iterator<String> itap = pubAPersonneListeAuteur.keySet().iterator(); |
while (itap.hasNext()) { |
creerTextFieldEtBouton(pubAPersonneListeAuteur.get(itap.next()).getPersonne()); |
int nbAuteurs = 0; |
for (Iterator<ComboBox<Personne>> it = auteurComboboxListe.iterator(); it.hasNext();) { |
if (auteurComboboxListe.size() > 1) { |
it.next().setFieldLabel("Auteur "+nbAuteurs); |
nbAuteurs++; |
} |
|
int nbAuteurs = 0; |
for (Iterator<ComboBox<Personne>> it = auteurComboboxListe.iterator(); it.hasNext();) { |
if (auteurComboboxListe.size() > 1) { |
it.next().setFieldLabel("Auteur "+nbAuteurs); |
nbAuteurs++; |
} |
} |
listeAuteurPublicationInitialisee = true; |
} |
listeAuteurPublicationInitialisee = true; |
} |
|
if (nouvellesDonnees instanceof Information) { |
Information nouvellesInfos = (Information)nouvellesDonnees; |
} |
|
private void rafraichirInformation(Information info) { |
if (info.getType().equals("liste_personne")) { |
listePersonneAuteurInitialisee = true; |
listePersonneAuteur = (PersonneListe) info.getDonnee(0); |
List<Personne> liste = listePersonneAuteur.toList(); |
auteursStorePartage.removeAll(); |
auteursStorePartage.add(liste); |
} else if (info.getType().equals("publication_valide")) { |
validationPublication = true; |
idPublication = (String) info.getDonnee(0); |
|
if (nouvellesInfos.getType().equals("liste_personne")) { |
listePersonneAuteur = (PersonneListe) nouvellesInfos.getDonnee(0); |
List<Personne> liste = listePersonneAuteur.toList(); |
auteursStorePartage.removeAll(); |
auteursStorePartage.add(liste); |
GWT.log("ok", null); |
listeAuteurInitialisee = true; |
if (mode.equals(Formulaire.MODE_AJOUTER)) { |
mediateur.ajouterAuteurPublication(this, idAuteurs, PublicationAPersonne.ROLE_AUTEUR, idPublication); |
} else if (mode.equals(Formulaire.MODE_MODIFIER)) { |
mediateur.modifierAuteurPublication(this, idAuteurs, idPublication); |
} |
} else if (info.getType().equals("auteur_valide")) { |
validationAuteurs = true; |
} |
} |
|
private Boolean etreValide() { |
Boolean valide = false; |
if (formValide && validationPublication && validationAuteurs) { |
valide = true; |
} |
return valide; |
} |
|
private void reinitialiserValidation() { |
formValide = false; |
validationPublication = false; |
validationAuteurs = false; |
} |
|
private void repandreRafraichissement() { |
if (vueExterneARafraichirApresValidation != null) { |
Information info = new Information(""); |
|
if (nouvellesInfos.getType().equals("publication_valide")) { |
validationPublication = true; |
idPublication = ""+nouvellesInfos.getDonnee(0); |
|
if (mode.equals(Formulaire.MODE_AJOUTER)) { |
mediateur.ajouterAuteurPublication(this, idAuteurs, "2360", idPublication); |
} else if (mode.equals(Formulaire.MODE_MODIFIER)) { |
mediateur.modifierAuteurPublication(this, idAuteurs, idPublication); |
vueExterneARafraichirApresValidation.rafraichir(info); |
} |
} |
|
public void soumettreFormulaire() { |
formValide = verifierFormulaire(); |
if (formValide) { |
Publication publication = new Publication(); |
|
String auteur = ""; |
for (int i = 0; i < auteurComboboxListe.size(); i++) { |
if (auteurComboboxListe.get(i).getValue() != null) { |
idAuteurs += auteurComboboxListe.get(i).getValue().getId(); |
auteur += auteurComboboxListe.get(i).getValue().getNom()+ " "+auteurComboboxListe.get(i).getValue().getPrenom(); |
if (i != auteurComboboxListe.size() -1) { |
auteur += "|"; |
idAuteurs += ","; |
} |
} |
} |
|
if (nouvellesInfos.getType().equals("auteur_valide")) { |
validationAuteurs = true; |
publication.setAuteur(auteur); |
|
String titre = nomArticle.getValue(); |
publication.setTitre(titre); |
|
String collection = intituleCollPub.getValue(); |
publication.setCollection(collection); |
|
String nomComplet = nomArticle.getValue()+" "+intituleCollPub.getValue(); |
publication.setNomComplet(nomComplet); |
|
String uri = uriPub.getValue(); |
publication.setUri(uri); |
|
String editeur = ""; |
if (comboListeEditeurs.getValue() != null) { |
editeur = comboListeEditeurs.getValue().getId(); |
} else if (comboListeEditeurs.getRawValue() != "") { |
editeur = comboListeEditeurs.getRawValue(); |
} |
publication.setEditeur(editeur); |
|
if (formValide && validationPublication && validationAuteurs && clicBoutonvalidation) { |
clicBoutonvalidation = false; |
panneauFormulaire.setEnabled(false); |
mediateur.clicMenu(MenuApplicationId.PUBLICATION); |
String datePar = datePub.getRawValue(); |
datePar = datePar+"-00-00"; |
|
String tome = tomPub.getValue(); |
publication.setIndicationNvt(tome); |
|
String fascicule = fasciculePub.getValue(); |
publication.setFascicule(fascicule); |
|
String pages = pagesPub.getValue(); |
publication.setPages(pages); |
|
|
if (mode.equals(Formulaire.MODE_AJOUTER)) { |
mediateur.ajouterPublication(this, publication); |
} else if (mode.equals(Formulaire.MODE_MODIFIER)) { |
mediateur.modifierPublication(this, publication); |
} |
} |
} |
|
public void soumettreFormulaire(Rafraichissable vueARafraichir) { |
String auteur = ""; |
String idAuteur = ""; |
private boolean verifierFormulaire() { |
boolean valide = true; |
ArrayList<String> messages = new ArrayList<String>(); |
|
boolean auteurErreur = false; |
for (int i = 0; i < auteurComboboxListe.size(); i++) { |
if (auteurComboboxListe.get(i).getValue() != null) { |
idAuteur += auteurComboboxListe.get(i).getValue().getId(); |
auteur += auteurComboboxListe.get(i).getValue().getNom()+ " "+auteurComboboxListe.get(i).getValue().getPrenom(); |
if (i != auteurComboboxListe.size() -1) { |
auteur += "|"; |
idAuteur += ","; |
} |
auteurErreur = true; |
break; |
} |
} |
|
String erreurs = ""; |
|
if (idAuteur == null || idAuteur.equals("")) { |
erreurs += "Veuillez entrer au moins un auteur ! "; |
} else { |
idAuteurs = idAuteur; |
if (auteurErreur) { |
messages.add("Veuillez saisir au moins un auteur !"); |
} |
|
String nomArt = nomArticle.getValue(); |
if (nomArt == null || nomArt.equals("")) { |
erreurs += "Veuillez entrer le nom de l'article ! "; |
String titre = nomArticle.getValue(); |
if (titre == null || titre.equals("")) { |
messages.add("Veuillez saisir le titre de la publication !"); |
} |
|
String collPub = intituleCollPub.getValue(); |
|
String pub = nomArticle.getValue()+" "+intituleCollPub.getValue(); |
|
String uri = uriPub.getValue(); |
|
String editeur = ""; |
|
if (comboListeEditeurs.getValue() == null) { |
//erreurs += "Veuillez sélectionner un éditeur ! "; |
} else { |
editeur = comboListeEditeurs.getValue().getId(); |
if(editeur == null || editeur.equals("")) { |
erreurs += "Veuillez sélectionner un éditeur ! "; |
} |
} |
|
String datePar = datePub.getRawValue(); |
if (datePar == null || datePar.equals("")) { |
erreurs += "Veuillez entrer une date ! "; |
messages.add("Veuillez saisir une date !"); |
} else { |
String resDate = analyserDate(datePar); |
if (resDate.equals("")) { |
datePar = datePar+"-00-00"; |
} else { |
erreurs += resDate; |
if (!etreDateValide(datePar)) { |
messages.add("Format de l'année saisie est incorrect"); |
} |
} |
String tome = tomPub.getValue(); |
|
String fascicule = fasciculePub.getValue(); |
|
String pages = pagesPub.getValue(); |
|
if (erreurs.length() > 0) { |
MessageBox.alert("Erreur dans la saisie des champs", erreurs, null); |
} else { |
formValide = true; |
if (mode.equals(Formulaire.MODE_AJOUTER)) { |
Publication publi = new Publication(pub, uri, auteur, collPub, nomArt, editeur, datePar, tome, fascicule, pages); |
mediateur.ajouterPublication(this, publi); |
} else if (mode.equals(Formulaire.MODE_MODIFIER)) { |
Publication publi = new Publication(idPublication, idProjet, pub, uri, auteur, collPub, nomArt, editeur, datePar, tome, fascicule, pages); |
mediateur.modifierPublication(this, publi); |
} |
if (messages.size() != 0) { |
String[] tableauDeMessages = {}; |
tableauDeMessages = messages.toArray(tableauDeMessages); |
MessageBox.alert("Erreurs de saisies", UtilArray.implode(tableauDeMessages, "\n\n"), null); |
valide = false; |
} |
return valide; |
} |
|
|
protected void reinitialiserFormulaire() { |
if (mode.equals(Formulaire.MODE_MODIFIER)) { |
mediateur.afficherFormPublication(publi.getId()); |
452,12 → 511,12 |
} |
} |
|
private String analyserDate(String datePar) { |
if (datePar.matches("^[0-2][0-9]{3}$")) { |
return ""; |
} else { |
return "Format de date incorrect "; |
private boolean etreDateValide(String datePar) { |
boolean valide = true; |
if (!datePar.matches("^[0-2][0-9]{3}$")) { |
valide = false; |
} |
return valide; |
} |
|
private String reduireDateParAnnee(String datePar) { |
475,10 → 534,10 |
public void componentSelected(ButtonEvent ce) { |
String code = ((Button) ce.getComponent()).getData("code"); |
if (code.equals(FormulaireBarreValidation.CODE_BOUTON_VALIDER)) { |
soumettreFormulaire(renvoyerPublicationForm()); |
soumettreFormulaire(); |
clicBoutonvalidation = true; |
} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_APPLIQUER)) { |
soumettreFormulaire(renvoyerPublicationForm()); |
soumettreFormulaire(); |
} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_ANNULER)) { |
mediateur.clicMenu(menuIdCourant); |
} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_REINITIALISER)) { |
490,7 → 549,4 |
return ecouteur; |
} |
|
private PublicationForm renvoyerPublicationForm() { |
return this; |
} |
} |