Subversion Repositories eFlore/Applications.coel

Compare Revisions

Ignore whitespace Rev 821 → Rev 822

/trunk/src/org/tela_botanica/client/Mediateur.java
756,6 → 756,21
}
//+----------------------------------------------------------------------------------------------------------------+
// GESTION de la relation PUBLICATION A PERSONNE
 
public void selectionnerPublicationAPersonne(Rafraichissable vueARafraichir, String publicationId, String personnesId, String roleId) {
modele.selectionPublicationAPersonne(vueARafraichir, publicationId, personnesId, roleId);
}
public void ajouterPublicationAPersonne(Rafraichissable vueArafraichir, String publicationId, String personnesId, String roleId) {
modele.ajouterAuteurPublication(vueArafraichir, publicationId, personnesId, roleId);
}
 
public void modifierPublicationAPersonne(Rafraichissable vueArafraichir, String publicationId, String personnesId, String roleId) {
modele.modifierAuteurPublication(vueArafraichir, publicationId, personnesId, roleId);
}
//+----------------------------------------------------------------------------------------------------------------+
// RAFRAICHISSEMENT
//+----------------------------------------------------------------------------------------------------------------+
779,17 → 794,4
((PopupChargement) Registry.get(RegistreId.POPUP_CHARGEMENT)).hide();
}
 
public void ajouterAuteurPublication(Rafraichissable vueArafraichir, String idAuteurs, String role, String idPublication) {
modele.ajouterAuteurPublication(vueArafraichir, idAuteurs, role, idPublication);
}
 
public void modifierAuteurPublication(Rafraichissable vueArafraichir, String idAuteurs, String idPublication) {
modele.modifierAuteurPublication(vueArafraichir, idAuteurs, idPublication);
}
public void selectionnerAuteurAPublication(Rafraichissable vueARafraichir, String idPublication) {
modele.selectionPublicationAPersonne(vueARafraichir, null, idPublication, "2360");
}
 
}
/trunk/src/org/tela_botanica/client/vues/PublicationForm.java
3,10 → 3,9
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
 
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
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;
15,20 → 14,12
import org.tela_botanica.client.modeles.Publication;
import org.tela_botanica.client.modeles.PublicationAPersonne;
import org.tela_botanica.client.modeles.PublicationAPersonneListe;
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.Pattern;
import org.tela_botanica.client.util.UtilArray;
 
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.KeyListener;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
36,35 → 27,25
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.DateField;
import com.extjs.gxt.ui.client.widget.form.FieldSet;
import com.extjs.gxt.ui.client.widget.form.FormPanel;
import com.extjs.gxt.ui.client.widget.form.Radio;
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.grid.ColumnConfig;
import com.extjs.gxt.ui.client.widget.grid.ColumnData;
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.layout.FitLayout;
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;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Label;
 
public class PublicationForm extends Formulaire implements Rafraichissable {
private Publication publication;
private PublicationAPersonneListe publicationAPersonneListe = null;
private boolean publicationAPersonneListeChargementOk = false;
private FieldSet auteursFieldset = null;
private ArrayList<ComboBox<Personne>> auteurComboboxListe = null;
private PersonneListe listePersonneAuteur = null;
private LayoutContainer conteneurChamps;
private ListStore<Personne> auteursStorePartage = null;
private boolean auteurStorePartageChargementOk = false;
private FieldSet generalitesFieldset = null;
private TextField<String> titreChp = null;
80,35 → 61,32
private String idStructureEdition = "";
private String idAuteurs = "";
protected boolean listePersonneAuteurInitialisee = false;
protected boolean listeAuteurPublicationInitialisee = false;
 
private boolean formValide = false;
private boolean validationPublication = false;
private boolean validationAuteurs = false;
private boolean formulaireValideOk = false;
private boolean publicationValideOk = false;
private boolean auteursValideOk = false;
 
private Rafraichissable vueExterneARafraichirApresValidation = null;
 
 
public PublicationForm(Mediateur mediateurCourrant, String publicationId) {
initialiserPublicationForm(mediateurCourrant, publicationId);
}
 
public PublicationForm(Mediateur mediateurCourrant, String publicationId, Rafraichissable vueARafraichirApresValidation) {
vueExterneARafraichirApresValidation = vueARafraichirApresValidation;
initialiserPublicationForm(mediateurCourrant, publicationId);
vueExterneARafraichirApresValidation = vueARafraichirApresValidation;
}
private void initialiserPublicationForm(Mediateur mediateurCourrant, String publicationId) {
String modeDeCreation = Formulaire.MODE_AJOUTER;
publication = new Publication();
if (publicationId != null) {
modeDeCreation = Formulaire.MODE_MODIFIER;
}
publication.setId(publicationId);
String modeDeCreation = (publication.getId().isEmpty() ? Formulaire.MODE_AJOUTER : Formulaire.MODE_MODIFIER);
initialiserFormulaire(mediateurCourrant, modeDeCreation, MenuApplicationId.PUBLICATION);
panneauFormulaire.setLayout(new FlowLayout());
String titre = (modeDeCreation.equals(Formulaire.MODE_AJOUTER) ? "Ajout d'une publication" : "Modification d'une publication");
String titre = genererTitreFormulaire();
panneauFormulaire.setHeading(titre);
 
creerZoneAuteurs();
119,11 → 97,21
creerZoneEdition();
panneauFormulaire.add(editionFieldset);
mediateurCourrant.selectionnerPublication(this, publicationId);
mediateurCourrant.selectionnerAuteurAPublication(this, publicationId);
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);
138,42 → 126,33
auteursStorePartage = new ListStore<Personne>();
mediateur.clicObtenirListeAuteurs(this);
genererChampsAuteur(false);
creerChampsAuteur();
}
private void genererChampsAuteur(boolean vider) {
private void creerChampsAuteur() {
auteursFieldset.removeAll();
conteneurChamps = new LayoutContainer();
Button ajoutAuteurBtn = new Button("Ajouter un auteur");
ajoutAuteurBtn.addSelectionListener(new SelectionListener<ButtonEvent>() {
Button ajouterAuteurBouton = new Button("Ajouter un auteur");
ajouterAuteurBouton.setIcon(Images.ICONES.ajouter());
ajouterAuteurBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent be) {
creerTextFieldEtBouton(null);
int nbAuteurs = 0;
for (Iterator<ComboBox<Personne>> it = auteurComboboxListe.iterator(); it.hasNext();) {
if (auteurComboboxListe.size() > 1) {
it.next().setFieldLabel("Auteur "+nbAuteurs);
nbAuteurs++;
}
}
auteursFieldset.layout(true);
creerChampAuteurEtBoutonSupprimer(null);
}
});
auteursFieldset.add(conteneurChamps);
auteursFieldset.add(ajoutAuteurBtn);
auteursFieldset.add(ajouterAuteurBouton);
auteursFieldset.layout(true);
if (!vider) {
creerTextFieldEtBouton(null);
if (mode.equals(Formulaire.MODE_AJOUTER)) {
creerChampAuteurEtBoutonSupprimer(null);
}
}
public void creerTextFieldEtBouton(Personne auteur) {
public void creerChampAuteurEtBoutonSupprimer(Personne auteur) {
final HorizontalPanel panneauHorizontal = new HorizontalPanel();
panneauHorizontal.setLayout(new FormLayout());
183,30 → 162,33
auteursSaisisComboBox.setValue(auteursStorePartage.findModel("id_personne", auteur.getId()));
}
auteurComboboxListe.add(auteursSaisisComboBox);
auteursSaisisComboBox.setFieldLabel("Auteur "+auteurComboboxListe.size());
LayoutContainer lc = new LayoutContainer();
lc.setLayout(new FormLayout());
lc.add(auteursSaisisComboBox, new FormData(300, 0));
LayoutContainer panneauChampTxtEtBouton = new LayoutContainer();
panneauChampTxtEtBouton.setLayout(new FormLayout());
panneauChampTxtEtBouton.add(auteursSaisisComboBox, new FormData(300, 0));
panneauHorizontal.add(panneauChampTxtEtBouton);
Button supp = new Button("-");
supp.addSelectionListener(new SelectionListener<ButtonEvent>() {
Button supprimerAuteurBouton = new Button();
supprimerAuteurBouton.setIcon(Images.ICONES.supprimer());
supprimerAuteurBouton.setToolTip(i18nC.supprimer());
supprimerAuteurBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent be) {
int nbAuteurs = 0;
if (auteurComboboxListe.size() != 1) {
for (Iterator<ComboBox<Personne>> it = auteurComboboxListe.iterator(); it.hasNext();) {
it.next().setFieldLabel("Auteur "+nbAuteurs);
nbAuteurs++;
}
}
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(lc);
panneauHorizontal.add(supp);
panneauHorizontal.add(supprimerAuteurBouton);
conteneurChamps.add(panneauHorizontal);
auteursFieldset.layout(true);
}
303,8 → 285,12
GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
}
if (etrePretAAfficherAuteurs()) {
afficherAuteurs();
}
if (etreValide()) {
reinitialiserValidation();
initialiserValidation();
repandreRafraichissement();
controlerFermetureApresRafraichissement();
}
312,22 → 298,7
 
private void rafraichirPublication(Publication publi) {
publication = publi;
genererChampsAuteur(true);
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());
}
peuplerFormulaire();
}
private void rafraichirListeEditeurs(StructureListe editeurs) {
342,57 → 313,66
private void rafraichirListeAuteurs(PublicationAPersonneListe auteurs) {
publicationAPersonneListe = auteurs;
if (listePersonneAuteurInitialisee) {
Iterator<String> itap = publicationAPersonneListe.keySet().iterator();
while (itap.hasNext()) {
creerTextFieldEtBouton(publicationAPersonneListe.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++;
}
}
listeAuteurPublicationInitialisee = true;
}
publicationAPersonneListeChargementOk = true;
}
private void rafraichirInformation(Information info) {
if (info.getType().equals("liste_personne")) {
listePersonneAuteurInitialisee = true;
listePersonneAuteur = (PersonneListe) info.getDonnee(0);
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")) {
validationPublication = true;
publicationValideOk = true;
publication.setId((String) info.getDonnee(0));
if (mode.equals(Formulaire.MODE_AJOUTER)) {
mediateur.ajouterAuteurPublication(this, idAuteurs, PublicationAPersonne.ROLE_AUTEUR, publication.getId());
mediateur.ajouterPublicationAPersonne(this, publication.getId(), idAuteurs, PublicationAPersonne.ROLE_AUTEUR);
} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
mediateur.modifierAuteurPublication(this, idAuteurs, publication.getId());
mediateur.modifierPublicationAPersonne(this, publication.getId(), idAuteurs, PublicationAPersonne.ROLE_AUTEUR);
}
} else if (info.getType().equals("auteur_valide")) {
validationAuteurs = true;
auteursValideOk = true;
}
}
private void afficherAuteurs() {
Iterator<String> itap = publicationAPersonneListe.keySet().iterator();
while (itap.hasNext()) {
creerChampAuteurEtBoutonSupprimer(publicationAPersonneListe.get(itap.next()).getPersonne());
}
initialiserAffichageAuteurs();
}
 
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;
if (formValide && validationPublication && validationAuteurs) {
GWT.log("formulaire"+formulaireValideOk+" - Publication :"+publicationValideOk+" - Auteurs :"+auteursValideOk, null);
if (formulaireValideOk && publicationValideOk && auteursValideOk) {
valide = true;
}
return valide;
}
private void reinitialiserValidation() {
formValide = false;
validationPublication = false;
validationAuteurs = false;
private void initialiserValidation() {
formulaireValideOk = false;
publicationValideOk = false;
auteursValideOk = false;
}
private void repandreRafraichissement() {
408,10 → 388,12
}
public boolean soumettreFormulaire() {
formValide = verifierFormulaire();
if (formValide) {
formulaireValideOk = verifierFormulaire();
GWT.log("Form?"+formulaireValideOk, null);
if (formulaireValideOk) {
Publication publicationCollectee = collecterPublication();
if (publicationCollectee != null) {
GWT.log("Info collectée ? ok", null);
if (mode.equals(Formulaire.MODE_AJOUTER)) {
mediateur.ajouterPublication(this, publicationCollectee);
} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
419,7 → 401,7
}
}
}
return formValide;
return formulaireValideOk;
}
protected boolean verifierFormulaire() {
471,22 → 453,44
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 publicationARetourner = null;
Publication publicationCollectee = (Publication) publication.cloner(new Publication());
String auteur = "";
for (int i = 0; i < auteurComboboxListe.size(); i++) {
String auteurIntituleFormate = "";
int auteursNombre = auteurComboboxListe.size();
for (int i = 0; i < auteursNombre; 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 += ", ";
Personne auteur = auteurComboboxListe.get(i).getValue();
idAuteurs += auteur.getId();
auteurIntituleFormate += auteur.getNom()+ " "+auteur.getPrenom();
if (i != (auteursNombre - 1)) {
auteurIntituleFormate += ", ";
idAuteurs += ",";
}
}
}
publicationCollectee.setAuteur(auteur);
GWT.log("Auteurs formaté :"+auteurIntituleFormate, null);
GWT.log("Auteurs ids :"+idAuteurs, null);
publicationCollectee.setAuteur(auteurIntituleFormate);
String titre = titreChp.getValue();
publicationCollectee.setTitre(titre);
/trunk/src/org/tela_botanica/client/Modele.java
216,22 → 216,22
pDao.supprimer(publicationsId);
}
 
public void ajouterAuteurPublication(Rafraichissable vueARafraichir, String idAuteurs, String role, String idPublication) {
//+----------------------------------------------------------------------------------------------------------------+
// GESTION de la relation PUBLICATION A PERSONNE
 
public void selectionPublicationAPersonne(Rafraichissable vueARafraichir, String publicationId, String personnesId, String roleId) {
PublicationAPersonneAsyncDao paDao = new PublicationAPersonneAsyncDao(vueARafraichir);
paDao.ajouter(idAuteurs, role, idPublication);
paDao.selectionner(publicationId, personnesId, roleId);
}
 
public void modifierAuteurPublication(Rafraichissable vueARafraichir, String idAuteurs, String idPublication) {
public void ajouterAuteurPublication(Rafraichissable vueARafraichir, String publicationId, String personnesId, String roleId) {
PublicationAPersonneAsyncDao paDao = new PublicationAPersonneAsyncDao(vueARafraichir);
paDao.modifier(idAuteurs, idPublication);
paDao.ajouter(publicationId, personnesId, roleId);
}
 
public void selectionPublicationAPersonne(Rafraichissable vueARafraichir, String idAuteur, String idPublication, String idRole) {
public void modifierAuteurPublication(Rafraichissable vueARafraichir, String publicationId, String personnesId, String roleId) {
PublicationAPersonneAsyncDao paDao = new PublicationAPersonneAsyncDao(vueARafraichir);
paDao.selectionner(idAuteur, idPublication, idRole);
paDao.modifier(publicationId, personnesId, roleId);
}
 
}
/trunk/src/org/tela_botanica/client/modeles/PublicationAPersonneAsyncDao.java
26,8 → 26,8
utilisateurId = ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).getUtilisateurId();
}
public void selectionner(String idAuteurs, String idPublication, String roleId) {
String[] parametres = {idAuteurs, idPublication, roleId};
public void selectionner(String publicationId, String personnesId, String roleId) {
String[] parametres = {publicationId, personnesId, roleId};
final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres);
rb.envoyerRequete(null, new JsonRestRequestCallback() {
@Override
56,10 → 56,10
});
}
public void ajouter(String personnesId, String role, String publicationId) {
public void ajouter(String publicationId, String personnesId, String roleId) {
String postDonneesEncodees = "cpuap_id_publication="+URL.encodeComponent(publicationId)
+"&cpuap_id_auteur="+personnesId
+"&cpuap_id_role="+URL.encodeComponent(role)
+"&cpuap_id_role="+URL.encodeComponent(roleId)
+"&cmhl_ce_modifier_par="+utilisateurId;
final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM);
71,12 → 71,12
}) ;
}
 
public void modifier(String idAuteurs, String idPublication) {
String[] parametres = {idPublication, idAuteurs, PublicationAPersonne.ROLE_AUTEUR};
public void modifier(String publicationId, String personnesId, String roleId) {
String[] parametres = {publicationId, personnesId, roleId};
final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM, parametres);
String postDonneesEncodees = "cpuap_id_publication="+URL.encodeComponent(idPublication)
String postDonneesEncodees = "cpuap_id_publication="+URL.encodeComponent(publicationId)
+"&cmhl_ce_modifier_par="+utilisateurId;
rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() {