Subversion Repositories eFlore/Applications.coel

Compare Revisions

Ignore whitespace Rev 244 → Rev 245

/trunk/src/org/tela_botanica/client/Mediateur.java
12,6 → 12,7
import org.tela_botanica.client.modeles.Menu;
import org.tela_botanica.client.modeles.Personne;
import org.tela_botanica.client.modeles.PersonneListe;
import org.tela_botanica.client.modeles.Projet;
import org.tela_botanica.client.modeles.ProjetsListe;
import org.tela_botanica.client.modeles.Publication;
import org.tela_botanica.client.modeles.PublicationListe;
142,7 → 143,7
public void clicMenu(String menuNom) {
panneauCentre.removeAll();
if (menuNom.equals("Institutions")) {
((Modele) Registry.get(RegistreId.MODELE)).selectionnerStructures(getUtilisateurId());
((Modele) Registry.get(RegistreId.MODELE)).selectionnerStructures(getUtilisateurId(), getProjetId());
} else if (menuNom.equals("Publications")) {
((Modele) Registry.get(RegistreId.MODELE)).obtenirListePublications();
} else if (menuNom.equals("Personnes")) {
186,7 → 187,9
//+----------------------------------------------------------------------------------------------------------------+
// GESTION de l'UTILISATEUR et de l'IDENTIFICATION
//+----------------------------------------------------------------------------------------------------------------+
/**
* Retourne l'identifiant de l'utilisateur courrant de l'application.
*/
public String getUtilisateurId() {
return utilisateur.getId();
}
249,6 → 252,29
modele.selectionnerPersonne(vue, null, projetId, nomComplet);
}
public void clicSupprimerPersonne(Rafraichissable vue,List<Personne> personneSelection) {
String ids = "" ;
if (personneSelection.size() == 0) {
Info.display("Information", "Veuillez sélectionner une personne.");
} else if(personneSelection.size() > 0) {
String message = "Êtes vous sur de vouloir supprimer les personnes sélectionnées ?";
if (personneSelection.size() == 1) {
message = "Êtes vous sur de vouloir supprimer la personne sélectionnée ?";
}
if(Window.confirm(message)) {
String idStr = "" ;
for(int i = 0 ; i < personneSelection.size() ; i++) {
idStr += personneSelection.get(i).getId()+"," ;
}
modele.supprimerPersonne(vue, getUtilisateurId(), idStr);
}
} else {
Info.display("Erreur", "Une erreur est survenue dans la méthode clicSupprimerPersonne() du Médiateur.");
}
}
//+----------------------------------------------------------------------------------------------------------------+
// GESTION DES VALEURS ET LISTES
//+----------------------------------------------------------------------------------------------------------------+
288,6 → 314,60
panneauCentre.layout();
}
public void clicModifierPublication(List<Publication> publicationListe) {
if(publicationListe.size() <= 0) {
Window.alert("Il faut selectionner une publication");
}
else {
Publication pubAModifier = publicationListe.get(publicationListe.size() -1);
panneauCentre.removeAll();
FormPublicationVue formPublicationVue = new FormPublicationVue();
panneauCentre.add(formPublicationVue);
panneauCentre.setId(ComposantId.PANNEAU_FORM_PUBLICATION);
panneauCentre.layout();
formPublicationVue.rafraichir(pubAModifier);
}
}
public void clicSupprimerPublication(List<Publication> publicationListe) {
if(publicationListe.size() <= 0) {
Window.alert("Il faut selectionner une publication");
}
else {
String message = "" ;
if(publicationListe.size() == 1) {
message = "Voulez-vous vraiment supprimer cette publication ?";
}
else {
message = "Voulez-vous vraiment supprimer ces publication ?";
}
if(Window.confirm(message)) {
modele.supprimerPublication(getUtilisateurId(),publicationListe);
}
}
}
 
public void ajouterPublication(FormPublicationVue formPublicationVue,
Publication publi) {
modele.ajouterPublication(getUtilisateurId(),publi);
}
public void modifierPublication(FormPublicationVue formPublicationVue, Publication publi) {
modele.modifierPublication(getUtilisateurId(),publi);
}
 
public void clicObtenirListeEditeurs(Rafraichissable r) {
modele.obtenirListeStructures(r,getUtilisateurId(), null);
}
 
public void clicObtenirListeAuteurs(Rafraichissable r) {
modele.obtenirListePersonnes(r);
}
//+----------------------------------------------------------------------------------------------------------------+
// GESTION DES STRUCTURES
//+----------------------------------------------------------------------------------------------------------------+
371,7 → 451,7
}
 
public void selectionnerStructureAPersonne(Rafraichissable vue, String structureId, String roleId) {
modele.selectionnerStructure(vue, getUtilisateurId(), structureId, roleId);
modele.selectionnerStructure(vue, getUtilisateurId(), null, structureId, roleId);
}
public void modifierStructureAPersonne(Rafraichissable vue, StructureAPersonneListe personnelModifie) {
401,11 → 481,17
}
}
 
//+----------------------------------------------------------------------------------------------------------------+
// GESTION des PROJETS
//+----------------------------------------------------------------------------------------------------------------+
/**
* Retourne l'identifiant du projet courrant de l'application.
*/
public String getProjetId() {
return Registry.get(RegistreId.PROJET);
}
//Greg : ajout d'un écouteur pour le changement liste projet
public void rafraichirListeProjets() {
((Modele) Registry.get(RegistreId.MODELE)).obtenirListeProjets();
422,86 → 508,7
//FIXME Le rafraichissement du panneau ne se fait pas!
}
}
 
public void clicSupprimerPersonne(Rafraichissable vue,List<Personne> personneSelection) {
String ids = "" ;
if (personneSelection.size() == 0) {
Info.display("Information", "Veuillez sélectionner une personne.");
} else if(personneSelection.size() > 0) {
String message = "Êtes vous sur de vouloir supprimer les personnes sélectionnées ?";
if (personneSelection.size() == 1) {
message = "Êtes vous sur de vouloir supprimer la personne sélectionnée ?";
}
if(Window.confirm(message)) {
String idStr = "" ;
for(int i = 0 ; i < personneSelection.size() ; i++) {
idStr += personneSelection.get(i).getId()+"," ;
}
modele.supprimerPersonne(vue, getUtilisateurId(), idStr);
}
} else {
Info.display("Erreur", "Une erreur est survenue dans la méthode clicSupprimerPersonne() du Médiateur.");
}
}
 
public void clicModifierPublication(List<Publication> publicationListe) {
if(publicationListe.size() <= 0) {
Window.alert("Il faut selectionner une publication");
}
else {
Publication pubAModifier = publicationListe.get(publicationListe.size() -1);
panneauCentre.removeAll();
FormPublicationVue formPublicationVue = new FormPublicationVue();
panneauCentre.add(formPublicationVue);
panneauCentre.setId(ComposantId.PANNEAU_FORM_PUBLICATION);
panneauCentre.layout();
formPublicationVue.rafraichir(pubAModifier);
}
}
public void clicSupprimerPublication(List<Publication> publicationListe) {
if(publicationListe.size() <= 0) {
Window.alert("Il faut selectionner une publication");
}
else {
String message = "" ;
if(publicationListe.size() == 1) {
message = "Voulez-vous vraiment supprimer cette publication ?";
}
else {
message = "Voulez-vous vraiment supprimer ces publication ?";
}
if(Window.confirm(message)) {
modele.supprimerPublication(getUtilisateurId(),publicationListe);
}
}
}
 
public void ajouterPublication(FormPublicationVue formPublicationVue,
Publication publi) {
modele.ajouterPublication(getUtilisateurId(),publi);
}
public void modifierPublication(FormPublicationVue formPublicationVue,
Publication publi) {
modele.modifierPublication(getUtilisateurId(),publi);
}
 
public void clicObtenirListeEditeurs(Rafraichissable r) {
modele.obtenirListeStructures(r,getUtilisateurId());
}
 
public void clicObtenirListeAuteurs(Rafraichissable r) {
modele.obtenirListePersonnes(r);
}
 
}
 
 
/trunk/src/org/tela_botanica/client/vues/FormStructureVue.java
38,6 → 38,9
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.event.ToolBarEvent;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.store.Record;
import com.extjs.gxt.ui.client.store.Store;
import com.extjs.gxt.ui.client.store.StoreEvent;
import com.extjs.gxt.ui.client.widget.Component;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Info;
205,6 → 208,7
private ContentPanel materielConservationCp;
private ListStore<Personne> personneExistanteMagazin;
private ComboBox<Personne> personneExistanteCombo;
private TextToolItem supprimerPersonnelBtn;
 
 
public FormStructureVue() {
925,6 → 929,12
// Seules les lignes ajoutées ou modifiées sont prises en compte.
if (personnelGrilleMagazin.getModifiedRecords().contains(personnelGrilleMagazin.getRecord(personne)) == true) {
// Gestion de l'id de la structure
if (mode.equals("MODIF")) {
personne.setIdStructure(identification.getId());
}
// Gestion de la fonction
String fonction = personne.get("fonction");
if (fonction != null && !fonction.equals("")) {
983,11 → 993,13
}
// Ajout de la personne dans la liste correspondant à son état (ajouté ou modifié)
if (personne.getIdPersonne().equals("")) {// Une personne ajoutée
if (personne.get("etat").equals("A")) {// Une personne ajoutée
personnelAjoute.put(""+i, personne);
} else {// Une personne modifiée
personnelModifie.put(personne.getId(), personne);
}
} else {
GWT.log("Personne non modifiées : "+personne.getPrenom()+" "+personne.getNom(), null);
}
}
}
1065,7 → 1077,17
personnes.add(new StructureAPersonne(Valeur.FONCTION_CONSERVATEUR, StructureAPersonne.ROLE_EQUIPE));
personnelGrilleMagazin = new ListStore<StructureAPersonne>();
personnelGrilleMagazin.add(personnes);
personnelGrilleMagazin.add(personnes);
personnelGrilleMagazin.addListener(Store.Add, new Listener<StoreEvent<StructureAPersonne>>() {
 
public void handleEvent(StoreEvent<StructureAPersonne> ce) {
// Activation du bouton supprimer si la grille contient un élément
if (grillePersonnel.getStore().getCount() > 0) {
supprimerPersonnelBtn.enable();
}
}
});
RowNumberer r = new RowNumberer();
1231,16 → 1253,12
@Override
public void componentSelected(ToolBarEvent ce) {
StructureAPersonne personne = new StructureAPersonne("", StructureAPersonne.ROLE_EQUIPE);
personne.set("etat", "A");
grillePersonnel.stopEditing();
int numNouveau = grillePersonnel.getData("nouveau");
grillePersonnel.setData("nouveau", ++numNouveau);
personnelGrilleMagazin.insert(personne, 0);
personnelGrilleMagazin.insert(personne, 0);
grillePersonnel.startEditing(0, 0);
 
// Activation du bouton supprimer si la grille contient un élément
if (grillePersonnel.getStore().getCount() > 0) {
ce.component.enable();
}
}
});
toolBar.add(ajouterPersonnelBtn);
1247,7 → 1265,7
toolBar.add(new SeparatorToolItem());
TextToolItem supprimerPersonnelBtn = new TextToolItem("Supprimer", "icone-vcard-supprimer");
supprimerPersonnelBtn = new TextToolItem("Supprimer", "icone-vcard-supprimer");
supprimerPersonnelBtn.addSelectionListener(new SelectionListener<ToolBarEvent>() {
@Override
public void componentSelected(ToolBarEvent ce) {
1286,7 → 1304,7
personneExistanteMagazin = new ListStore<Personne>();
personneExistanteMagazin.add(new ArrayList<Personne>());
personneExistanteCombo = new ComboBox<Personne>();
personneExistanteCombo = new ComboBox<Personne>();
personneExistanteCombo.setWidth(200);
personneExistanteCombo.setEmptyText("Chercher une personne existante...");
personneExistanteCombo.setTriggerAction(TriggerAction.ALL);
1314,19 → 1332,29
StructureAPersonne personne = new StructureAPersonne("", StructureAPersonne.ROLE_EQUIPE);
personne.setIdPersonne(personneExistante.getId());
personne.setPrenom(personneExistante.getPrenom());
personne.setNom(personneExistante.getNom());
grillePersonnel.stopEditing();
 
// Ajout au magazin de la grille
int numNouveau = grillePersonnel.getData("nouveau");
grillePersonnel.setData("nouveau", ++numNouveau);
personnelGrilleMagazin.insert(personne, 0);
personnelGrilleMagazin.insert(personne, 0);
// Nous modifions l'enregistrement pour que le modèle soit pris en compte lors de la collecte.
Record record = personnelGrilleMagazin.getRecord(personnelGrilleMagazin.getAt(0));
record.beginEdit();
record.set("nom", personneExistante.getNom());
record.set("prenom", personneExistante.getPrenom());
record.set("telephone", personneExistante.selectionnerTelephone(Personne.TELEPHONE_FIXE));
record.set("fax", personneExistante.selectionnerFax(1));
record.set("courriel", personneExistante.selectionnerCourriel(1));
record.set("specialite", personneExistante.afficherSpecialite());
record.set("etat", "A");
record.endEdit();
grillePersonnel.startEditing(0, 0);
 
// Activation du bouton supprimer si la grille contient un élément
if (grillePersonnel.getStore().getCount() > 0) {
ce.component.enable();
}
//GWT.log("Ajout : "+personnelGrilleMagazin.getModifiedRecords()., null);
GWT.log("ici : "+personnelGrilleMagazin.getModifiedRecords().contains(record), null);
}
});
toolBar.add(ajouterPersonneExistanteBtn);
2080,6 → 2108,6
}
private void rafraichirPersonneExistante(String nom) {
mediateur.selectionnerPersonneParNomComplet(this, null, nom);
mediateur.selectionnerPersonneParNomComplet(this, null, nom+"%");
}
}
/trunk/src/org/tela_botanica/client/Modele.java
88,16 → 88,17
// GESTION DES STRUCTURES
//+----------------------------------------------------------------------------------------------------------------+
 
public void obtenirListeStructures(Rafraichissable r, String utilisateurId) {
public void obtenirListeStructures(Rafraichissable r, String utilisateurId, String projetId) {
StructureAsyncDao sDao = new StructureAsyncDao();
sDao.selectionner(r, utilisateurId, "");
sDao.selectionner(r, utilisateurId, projetId,"");
}
public void selectionnerStructure(Rafraichissable r, String idUtilisateur, String idStr, String idRole) {
public void selectionnerStructure(Rafraichissable r, String idUtilisateur, String projetId, String idStr, String idRole) {
// Gestion des données des tables coel_structure, coel_structure_conservation et coel_structure_valorisation
StructureAsyncDao sDao = new StructureAsyncDao();
sDao.selectionner(r, idUtilisateur, idStr);
sDao.selectionner(r, idUtilisateur, projetId, idStr);
// Gestion des données de la table coel_structure_a_personne
// TODO : créer une méthode séparée pour les données structure_a_personne
if (idStr != null && idRole != null) {
StructureAPersonneAsyncDao sapDao = new StructureAPersonneAsyncDao();
sapDao.selectionner(r, idUtilisateur, idStr, idRole);
104,11 → 105,11
}
}
public void selectionnerStructures(String idUtilisateur) {
public void selectionnerStructures(String idUtilisateur, String projetId) {
Rafraichissable r = this;
String idStr = null;
String idRole = null;
selectionnerStructure(r, idUtilisateur, idStr, idRole);
selectionnerStructure(r, idUtilisateur, projetId, idStr, idRole);
}
/** Lance la creation d'une Structure
/trunk/src/org/tela_botanica/client/modeles/Personne.java
8,6 → 8,8
public class Personne extends aDonnee {
 
public static final String PREFIXE = "cp";
public static final String TELEPHONE_FIXE = "FIX";
public static final String TELEPHONE_GSM = "GSM";
/**
* Constructeur vide
69,9 → 71,12
public void setTelephone(String t) {
this.set("truk_telephone", t);
}
public void addTelephone(String type, Object valeur) {
public void ajouterTelephone(String type, Object valeur) {
ajouterChaineDenormaliseAvecType("truk_telephone", type, valeur);
}
public String selectionnerTelephone(String type) {
return getInfoDenormaliseParType(renvoyerValeurCorrecte("truk_telephone"), type);
}
// FAX
public String getFax() {
80,9 → 85,12
public void setFax(String f) {
this.set("truk_fax", f);
}
public void addFax(Object valeur) {
public void ajouterFax(Object valeur) {
ajouterChaineDenormalise("truk_fax", valeur);
}
public String selectionnerFax(int position) {
return getInfoDenormaliseParPosition(renvoyerValeurCorrecte("truk_fax"), position);
}
// COURRIEL
public String getCourriel() {
91,9 → 99,12
public void setCourriel(String c) {
this.set("truk_courriel", c);
}
public void addCourriel(String c) {
public void ajouterCourriel(String c) {
ajouterChaineDenormalise("truk_courriel", c);
}
public String selectionnerCourriel(int position) {
return getInfoDenormaliseParPosition(renvoyerValeurCorrecte("truk_courriel"), position);
}
// SPÉCIALITÉ
public String getSpecialite() {
103,6 → 114,9
// Pas de liste pour l'instant, donc tout passe dans "Autre".
setChaineDenormaliseUnique("ce_truk_specialite", "AUTRE", s);
}
public String afficherSpecialite() {
return getChaineDenormaliseUnique("ce_truk_specialite");
}
public Object obtenirValeurChamp(String nomChamp) {
return renvoyerValeurCorrecte(nomChamp);
/trunk/src/org/tela_botanica/client/modeles/StructureAPersonneAsyncDao.java
22,9 → 22,9
public void selectionner(final Rafraichissable r, String idUtilisateur, final String idStructure, final String idRole) {
// Ajout des paramètres et données à selectionner dans l'URL
final String url = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl() +
SERVICE_NOM +
(idStructure == null ? "" : "/"+idStructure) +
(idRole == null ? "" : "/"+idRole) +
SERVICE_NOM + "/" +
(idStructure == null ? "*" : idStructure) + "/" +
(idRole == null ? "*" : idRole) + "/" +
"";
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, url);
174,9 → 174,6
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, url);
String postDonnees = "cmhl_ce_modifier_par=" + utilisateurId +
"&csap_id_structure=" + URL.encodeComponent(personnel.getIdStructure()) +
"&csap_id_personne=" + URL.encodeComponent(personnel.getIdPersonne()) +
"&csap_id_role=" + URL.encodeComponent(personnel.getIdRole()) +
"&csap_ce_truk_fonction=" + URL.encodeComponent(personnel.getFonction()) +
"&csap_service=" + URL.encodeComponent(personnel.getService()) +
"&csap_ce_truk_statut=" + URL.encodeComponent(personnel.getStatut()) +
/trunk/src/org/tela_botanica/client/modeles/aDonnee.java
101,6 → 101,21
}
}
/**
* Permet de récupérer pour l'affichage une chaine dénormalisée unique (champ de type "ce_truk").
*
* @param champ le nom du champ dénormalisé
*/
protected String getChaineDenormaliseUnique(String champ) {
String sortie = renvoyerValeurCorrecte(champ);
if (!sortie.equals("")) {
sortie = sortie.replaceFirst("^AUTRE##", "");
}
return sortie;
}
protected String getInfoDenormaliseParType(String chaineExistante, String type) {
String sortie = "";
if (!chaineExistante.equals("")) {
/trunk/src/org/tela_botanica/client/modeles/StructureAsyncDao.java
19,10 → 19,11
 
public class StructureAsyncDao {
 
public void selectionner(final Rafraichissable r, String idUtilisateur, final String idStr) {
public void selectionner(final Rafraichissable r, String idUtilisateur, final String projetId, final String idStr) {
// Ajout des paramètres et données à selectionner dans l'URL
final String url = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl() +
"CoelStructureListe/" +
(projetId == null ? "*" : projetId) + "/" +
(idStr == null ? "" : idStr) +
"";