/trunk/src/org/tela_botanica/client/Mediateur.java |
---|
1,5 → 1,6 |
package org.tela_botanica.client; |
import java.util.Iterator; |
import java.util.List; |
import org.tela_botanica.client.composants.AideFenetre; |
16,6 → 17,7 |
import org.tela_botanica.client.modeles.PublicationListe; |
import org.tela_botanica.client.modeles.Structure; |
import org.tela_botanica.client.modeles.StructureAPersonne; |
import org.tela_botanica.client.modeles.StructureAPersonneListe; |
import org.tela_botanica.client.modeles.StructureConservation; |
import org.tela_botanica.client.modeles.StructureListe; |
import org.tela_botanica.client.modeles.StructureValorisation; |
350,7 → 352,7 |
for(int i = 0 ; i < structureSelection.size() ; i++) { |
idStr = structureSelection.get(i).getId(); |
} |
modele.selectionnerStructure(formStructureVue, getUtilisateurId(), idStr, StructureAPersonne.ROLE_EQUIPE); |
selectionnerStructureAPersonne(formStructureVue, idStr, StructureAPersonne.ROLE_EQUIPE); |
panneauCentre.layout(); |
} else { |
363,6 → 365,38 |
modele.modifierStructure(vue, getUtilisateurId(), structure, conservation, valorisation); |
} |
public void selectionnerStructureAPersonne(Rafraichissable vue, String structureId, String roleId) { |
modele.selectionnerStructure(vue, getUtilisateurId(), structureId, roleId); |
} |
public void modifierStructureAPersonne(Rafraichissable vue, StructureAPersonneListe personnelModifie) { |
if (personnelModifie != null && personnelModifie.size() > 0) { |
GWT.log("Mediateur :modif", null); |
for (Iterator<String> it = personnelModifie.keySet().iterator(); it.hasNext();) { |
modele.modifierStructureAPersonne(vue, getUtilisateurId(), (StructureAPersonne) personnelModifie.get(it.next())); |
} |
} |
} |
public void ajouterStructureAPersonne(Rafraichissable vue, String structureId, StructureAPersonneListe personnelAjoute) { |
if (personnelAjoute != null && personnelAjoute.size() > 0) { |
for (Iterator<String> it = personnelAjoute.keySet().iterator(); it.hasNext();) { |
modele.ajouterStructureAPersonne(vue, getUtilisateurId(), structureId, (StructureAPersonne) personnelAjoute.get(it.next())); |
} |
} |
} |
public void supprimerStructureAPersonne(Rafraichissable vue, StructureAPersonneListe personnelSupprime) { |
if (personnelSupprime != null && personnelSupprime.size() > 0) { |
String idStrAPer = "" ; |
for (Iterator<String> it = personnelSupprime.keySet().iterator(); it.hasNext();) { |
idStrAPer += personnelSupprime.get(it.next()).getId()+"," ; |
} |
modele.supprimerStructureAPersonne(vue, getUtilisateurId(), idStrAPer); |
} |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION des PROJETS |
//+----------------------------------------------------------------------------------------------------------------+ |
438,6 → 472,8 |
} |
} |
/trunk/src/org/tela_botanica/client/vues/FormStructureVue.java |
---|
1,8 → 1,10 |
package org.tela_botanica.client.vues; |
import java.util.ArrayList; |
import java.util.Arrays; |
import java.util.Iterator; |
import java.util.List; |
import java.util.Map; |
import org.tela_botanica.client.ComposantId; |
import org.tela_botanica.client.Mediateur; |
28,6 → 30,7 |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.Style.HorizontalAlignment; |
import com.extjs.gxt.ui.client.Style.Scroll; |
import com.extjs.gxt.ui.client.Style.SelectionMode; |
import com.extjs.gxt.ui.client.event.BaseEvent; |
import com.extjs.gxt.ui.client.event.ComponentEvent; |
import com.extjs.gxt.ui.client.event.EditorEvent; |
38,6 → 41,7 |
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.widget.Component; |
import com.extjs.gxt.ui.client.widget.ContentPanel; |
45,6 → 49,7 |
import com.extjs.gxt.ui.client.widget.LayoutContainer; |
import com.extjs.gxt.ui.client.widget.TabItem; |
import com.extjs.gxt.ui.client.widget.TabPanel; |
import com.extjs.gxt.ui.client.widget.VerticalPanel; |
import com.extjs.gxt.ui.client.widget.WidgetComponent; |
import com.extjs.gxt.ui.client.widget.button.Button; |
import com.extjs.gxt.ui.client.widget.form.CheckBox; |
69,6 → 74,8 |
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig; |
import com.extjs.gxt.ui.client.widget.grid.ColumnModel; |
import com.extjs.gxt.ui.client.widget.grid.EditorGrid; |
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel; |
import com.extjs.gxt.ui.client.widget.grid.RowNumberer; |
import com.extjs.gxt.ui.client.widget.layout.ColumnData; |
import com.extjs.gxt.ui.client.widget.layout.ColumnLayout; |
import com.extjs.gxt.ui.client.widget.layout.FitLayout; |
135,10 → 142,12 |
// Onglet PERSONNEL |
private StructureAPersonneListe personnel; |
private StructureAPersonneListe personnelAjoute = null; |
private StructureAPersonneListe personnelModifie = null; |
private StructureAPersonneListe personnelSupprime = null; |
private NumberField nbreTotalPersonneStructureChp = null; |
private EditorGrid<StructureAPersonne> grillePersonnel = null; |
private ListStore<StructureAPersonne> personnelGrilleMagazin = null; |
private LabelField nbreTotalPersonnelChp = null; |
// Onglet CONSERVATION |
private StructureConservation conservation = null; |
207,6 → 216,7 |
private TextField<String> publicationChp; |
private ContentPanel materielConservationCp; |
public FormStructureVue() { |
//+-----------------------------------------------------------------------------------------------------------+ |
// Initialisation de variables |
287,13 → 297,28 |
Structure structure = collecterStructureIdentification(); |
StructureConservation conservation = collecterStructureConservation(); |
StructureValorisation valorisation = collecterStructureValorisation(); |
// JAMAIS DE COMPARAISONS DE STRING AVEC == !!!!!! ON UTILISE equals ou compareTo |
collecterStructurePersonnel(); |
if (mode.equals("AJOUT")) { |
// Ajout des informations sur la Structure |
//mediateur.ajouterStructure(this, structure); |
// L'ajout des relations StructureAPersonne se fait quand la structure a été ajoutée |
// Voir la méthode rafraichir(). |
} else if (mode.equals("MODIF")) { |
// Modification des informations sur la Structure |
mediateur.modifierStructure(this, structure, conservation, valorisation); |
// Modification des relations StructureAPersonne |
GWT.log("Personnel modifié :"+personnelModifie.size(), null); |
mediateur.modifierStructureAPersonne(this, personnelModifie); |
// Ajout des relations StructureAPersonne |
GWT.log("Personnel ajouté :"+personnelAjoute.size(), null); |
mediateur.ajouterStructureAPersonne(this, identification.getId(), personnelAjoute); |
// Suppression des relations StructureAPersonne |
GWT.log("Personnel supprimé :"+personnelSupprime.size(), null); |
mediateur.supprimerStructureAPersonne(this, personnelSupprime); |
// Nous rechargeons la liste |
mediateur.selectionnerStructureAPersonne(this, identification.getId(), StructureAPersonne.ROLE_EQUIPE); |
} |
GWT.log("Info Structure envoyées :\n"+conservation.toString(), null); |
} |
private StructureValorisation collecterStructureValorisation() { |
600,6 → 625,8 |
structure.setCourriel(emailChp.getValue()); |
structure.setUrl(Structure.URL_SITE, urlChp.getValue()); |
structure.setNbrePersonne(nbreTotalPersonneStructureChp.getValue().intValue()); |
return structure; |
} |
} |
646,6 → 673,8 |
emailChp.setValue(identification.getCourriel()); |
urlChp.setValue(identification.getUrl("WEB")); |
nbreTotalPersonneStructureChp.setValue(identification.getNbrePersonne()); |
identificationOnglet.layout(); |
} |
} |
855,17 → 884,89 |
return conservationOnglet; |
} |
private void collecterStructurePersonnel() { |
if (personnelOnglet.getData("acces").equals(true)) { |
int nbrePersonne = personnelGrilleMagazin.getCount(); |
for (int i = 0; i < nbrePersonne; i++) { |
StructureAPersonne personne = personnelGrilleMagazin.getAt(i); |
private void peuplerStructurePersonnel() { |
if (identification != null) { |
// NBRE PERSONNE |
nbreTotalPersonneStructureChp.setValue(identification.getNbrePersonne()); |
// Seules les lignes ajoutées ou modifiées sont prises en compte. |
if (personnelGrilleMagazin.getModifiedRecords().contains(personnelGrilleMagazin.getRecord(personne)) == true) { |
// Gestion de la fonction |
String fonction = personne.get("fonction"); |
if (fonction != null && !fonction.equals("")) { |
Valeur valeurRecherche = comboLiFonction.getStore().findModel("nom", fonction); |
if (valeurRecherche != null) { |
personne.setFonction(valeurRecherche.getId()); |
} else { |
personne.setFonction("AUTRE", fonction); |
} |
} |
// Gestion de la notion de "contact" |
personne.setContact(false); |
if (personne.get("contact").equals(true)) { |
personne.setContact(true); |
} |
// Gestion du statut |
String statut = personne.get("statut"); |
if (statut != null && !statut.equals("")) { |
Valeur valeurRecherche = comboLiStatut.getStore().findModel("nom", statut); |
if (valeurRecherche != null) { |
personne.setStatut(valeurRecherche.getId()); |
} else { |
personne.setStatut("AUTRE", statut); |
} |
} |
// Gestion du temps de travail |
if (personne.get("travail") != null && !personne.get("travail").equals(0)) { |
personne.setBotaTravailHebdoTps(personne.get("travail").toString()); |
} |
// Gestion du téléphone |
String telephone = personne.get("telephone"); |
if (telephone != null && !telephone.equals("")) { |
personne.setTelephone(telephone); |
} |
// Gestion du fax |
String fax = personne.get("fax"); |
if (fax != null && !fax.equals("")) { |
personne.setFax(fax); |
} |
// Gestion du courriel |
String courriel = personne.get("courriel"); |
if (courriel != null && !courriel.equals("")) { |
personne.setCourriel(courriel); |
} |
// Gestion de la sépcialité |
String specialite = personne.get("specialite"); |
if (specialite != null && !specialite.equals("")) { |
personne.setSpecialite(specialite); |
} |
// Ajout de la personne dans la liste correspondant à son état (ajouté ou modifié) |
if (personne.getIdPersonne().equals("")) {// Une personne ajoutée |
personnelAjoute.put(""+i, personne); |
} else {// Une personne modifiée |
personnelModifie.put(personne.getId(), personne); |
} |
} |
} |
} |
} |
private void peuplerStructurePersonnel() { |
if (personnel != null) { |
ArrayList<StructureAPersonne> personnes = new ArrayList<StructureAPersonne>(); |
for (Iterator<String> it = personnel.keySet().iterator(); it.hasNext();) { |
String index = it.next(); |
// Gestion de la fonction |
if (magazinLiFonction != null && ((String) personnel.get(index).getFonction()).matches("^[0-9]+$")) { |
GWT.log(personnel.get(index).getFonction(), null); |
personnel.get(index).set("fonction", magazinLiFonction.findModel("id_valeur", personnel.get(index).getFonction()).getNom()); |
872,10 → 973,27 |
} else { |
personnel.get(index).set("fonction", personnel.get(index).getFonction().replaceFirst("AUTRE##", "")); |
} |
// Gestion de la notion de "contact" |
personnel.get(index).set("contact", (personnel.get(index).getContact().equals("1") ? true : false)); |
// Gestion du statut |
if (magazinLiStatut != null && ((String) personnel.get(index).getStatut()).matches("^[0-9]+$")) { |
GWT.log(personnel.get(index).getStatut(), null); |
personnel.get(index).set("statut", magazinLiStatut.findModel("id_valeur", personnel.get(index).getStatut()).getNom()); |
} else { |
personnel.get(index).set("statut", personnel.get(index).getStatut().replaceFirst("AUTRE##", "")); |
} |
// Gestion du temps de travail |
String tps = personnel.get(index).getBotaTravailHebdoTps(); |
personnel.get(index).set("travail", (tps.matches("^[0-9]+$") ? Integer.parseInt(tps) : 0)); |
personnes.add(personnel.get(index)); |
} |
personnelGrilleMagazin.removeAll(); |
personnelGrilleMagazin.add(personnes); |
personnelOnglet.layout(); |
// Nous vidons la variable personnel une fois qu'elle a remplie la grille |
personnel = null; |
884,51 → 1002,48 |
private TabItem creerOngletPersonnel() { |
personnelOnglet = new TabItem(); |
personnelOnglet.setText("Personnel"); |
personnelOnglet.setScrollMode(Scroll.AUTO); |
personnelOnglet.setLayout(creerFormLayout(400, LabelAlign.LEFT, null)); |
personnelOnglet.setLayout(creerFormLayout(400, LabelAlign.LEFT, 0)); |
personnelOnglet.setData("acces", false); // Permet de savoir si l'onblet a été accédé par l'utilisateur |
personnelOnglet.addListener(Events.Select, new Listener<ComponentEvent>() { |
public void handleEvent(ComponentEvent be) { |
// Indique que l'onglet a été rempli et a pu être modifié pour la méthode collecter... |
personnelOnglet.setData("acces", true); |
// Création des objets de la grille |
personnelModifie = new StructureAPersonneListe(); |
personnelAjoute = new StructureAPersonneListe(); |
personnelSupprime = new StructureAPersonneListe(); |
// Peuplement du formulaire |
peuplerStructurePersonnel(); |
} |
}); |
nbreTotalPersonneStructureChp = new NumberField(); |
nbreTotalPersonneStructureChp.setFieldLabel("Nombre de personne travaillant dans l'institution"); |
nbreTotalPersonneStructureChp.setFormat(NumberFormat.getFormat("#")); |
nbreTotalPersonneStructureChp.setToolTip("Ce champ doit contenir un nombre"); |
personnelOnglet.add(nbreTotalPersonneStructureChp); |
personnelOnglet.add(this.creerGrillePersonnel()); |
nbreTotalPersonnelChp = new LabelField(); |
nbreTotalPersonnelChp.setFieldLabel("Nombre de personne travaillant sur les collections"); |
nbreTotalPersonnelChp.setLabelSeparator(":"); |
nbreTotalPersonnelChp.setValue(""+grillePersonnel.getStore().getCount()); |
personnelOnglet.add(nbreTotalPersonnelChp); |
return personnelOnglet; |
} |
private ContentPanel creerGrillePersonnel() { |
ContentPanel cp = new ContentPanel(); |
cp.setHeading("Personnes travaillant sur les collections"); |
cp.setIconStyle("icone-table"); |
//cp.setScrollMode(Scroll.AUTO); |
cp.setLayout(new FitLayout()); |
cp.setWidth(1250); |
cp.setHeight("100%"); |
cp.setFrame(true); |
List<StructureAPersonne> personnes = new ArrayList<StructureAPersonne>(); |
personnes.add(new StructureAPersonne(Valeur.FONCTION_DIRECTEUR)); |
personnes.add(new StructureAPersonne(Valeur.FONCTION_CONSERVATEUR)); |
personnes.add(new StructureAPersonne(Valeur.FONCTION_DIRECTEUR, StructureAPersonne.ROLE_EQUIPE)); |
personnes.add(new StructureAPersonne(Valeur.FONCTION_CONSERVATEUR, StructureAPersonne.ROLE_EQUIPE)); |
personnelGrilleMagazin = new ListStore<StructureAPersonne>(); |
personnelGrilleMagazin.add(personnes); |
RowNumberer r = new RowNumberer(); |
List<ColumnConfig> configs = new ArrayList<ColumnConfig>(); |
CheckBoxSelectionModel<StructureAPersonne> sm = new CheckBoxSelectionModel<StructureAPersonne>(); |
configs.add(sm.getColumn()); |
GridSelectionModel<StructureAPersonne> sm = new GridSelectionModel<StructureAPersonne>(); |
configs.add(r); |
ColumnConfig column = new ColumnConfig("fonction", "Fonction", 150); |
modele.obtenirListeValeurs(((Configuration) Registry.get(RegistreId.CONFIG)).getListeId("fonction")); |
945,16 → 1060,16 |
@Override |
public Object preProcessValue(Object valeur) { |
if (valeur == null) { |
//GWT.log("pre null :"+this.getValue()+"-"+this.row, null); |
GWT.log("pre null :"+this.getValue()+"-"+this.row, null); |
return null; |
} |
//GWT.log("pre : "+valeur.toString(), null); |
GWT.log("pre : "+valeur.toString(), null); |
Object retour = null; |
if (((String) valeur).matches("^[0-9]+$")) { |
Valeur valeurRecherche = comboLiFonction.getStore().findModel("id_valeur", (String) valeur); |
if (valeurRecherche != null) { |
retour = valeurRecherche; |
//GWT.log("pre - retour valeur par chiffre : \n"+retour.toString(), null); |
GWT.log("pre - retour valeur par chiffre : \n"+retour.toString(), null); |
} else { |
this.getField().setRawValue((String) valeur); |
retour = null; |
964,7 → 1079,7 |
retour = new Valeur("", (String) valeur, "", ""); |
} else { |
retour = comboLiFonction.getStore().findModel("nom", (String) valeur); |
//GWT.log("pre - retour valeur par chaine : \n"+retour.toString(), null); |
GWT.log("pre - retour valeur par chaine : \n"+retour.toString(), null); |
} |
return retour; |
974,10 → 1089,10 |
public Object postProcessValue(Object valeur) { |
if (valeur == null) { |
// Si la combobox n'a pas été utilisé, nous renvoyons la valeur brute saisie par l'utilisateur |
//GWT.log("post raw : \n"+this.getField().getRawValue(), null); |
GWT.log("post raw : \n"+this.getField().getRawValue(), null); |
String retour = this.getField().getRawValue(); |
if (retour.matches("^[0-9]+$")) { |
//GWT.log("ici", null); |
GWT.log("ici", null); |
Valeur valeurRecherche = comboLiFonction.getStore().findModel("id_valeur", (String) retour); |
if (valeurRecherche != null) { |
retour = valeurRecherche.getNom(); |
985,12 → 1100,13 |
} |
return retour; |
} else { |
//GWT.log("post : \n"+valeur.toString(), null); |
GWT.log("post : \n"+valeur.toString(), null); |
String nom = ""; |
if (valeur instanceof Valeur) { |
nom = (((Valeur) valeur).getNom()); |
//GWT.log("la "+nom, null); |
GWT.log("la "+nom, null); |
} |
return nom; |
} |
} |
1085,14 → 1201,6 |
CheckColumnConfig checkColumn = new CheckColumnConfig("contact", "Contact ?", 60); |
configs.add(checkColumn); |
cp.setHeading("Personnes travaillant sur les collections"); |
cp.setIconStyle("icone-table"); |
cp.setScrollMode(Scroll.AUTO); |
cp.setLayout(new FitLayout()); |
cp.setSize(1250, 200); |
cp.setFrame(true); |
ToolBar toolBar = new ToolBar(); |
TextToolItem ajouterPersonnelBtn = new TextToolItem("Ajouter", "icone-vcard-ajouter"); |
1099,14 → 1207,13 |
ajouterPersonnelBtn.addSelectionListener(new SelectionListener<ToolBarEvent>() { |
@Override |
public void componentSelected(ToolBarEvent ce) { |
StructureAPersonne personne = new StructureAPersonne(); |
StructureAPersonne personne = new StructureAPersonne("", StructureAPersonne.ROLE_EQUIPE); |
grillePersonnel.stopEditing(); |
int numNouveau = grillePersonnel.getData("nouveau"); |
grillePersonnel.setData("nouveau", ++numNouveau); |
personnelGrilleMagazin.insert(personne, 0); |
grillePersonnel.startEditing(0, 0); |
// Mise à jour du nombre de personnel travaillant sur les collections |
nbreTotalPersonnelChp.setValue(""+grillePersonnel.getStore().getCount()); |
// Activation du bouton supprimer si la grille contient un élément |
if (grillePersonnel.getStore().getCount() > 0) { |
ce.component.enable(); |
1119,14 → 1226,22 |
supprimerPersonnelBtn.addSelectionListener(new SelectionListener<ToolBarEvent>() { |
@Override |
public void componentSelected(ToolBarEvent ce) { |
grillePersonnel.getStore().remove(grillePersonnel.getStore().getAt(0)); |
// Mise à jour du nombre de personnel travaillant sur les collections |
nbreTotalPersonnelChp.setValue(""+grillePersonnel.getStore().getCount()); |
StructureAPersonne personne = grillePersonnel.getSelectionModel().getSelectedItem(); |
if (personne != null) { |
// Ajout de la personne supprimée à la liste |
if (personne.getIdPersonne() != null) { |
personnelSupprime.put(personne.getId(), personne); |
} |
// Suppression de l'enregistrement de la grille |
grillePersonnel.getStore().remove(personne); |
// Désactivation du bouton supprimer si la grille contient plus d'élément |
if (grillePersonnel.getStore().getCount() == 0) { |
ce.item.disable(); |
} |
} |
} |
}); |
toolBar.add(supprimerPersonnelBtn); |
cp.setTopComponent(toolBar); |
1137,28 → 1252,26 |
grillePersonnel.setData("nouveau", 0); |
grillePersonnel.setBorders(true); |
grillePersonnel.setSelectionModel(sm); |
grillePersonnel.addPlugin(sm); |
grillePersonnel.addPlugin(checkColumn); |
grillePersonnel.addPlugin(r); |
grillePersonnel.getView().setForceFit(true); |
grillePersonnel.setAutoExpandColumn("specialite"); |
grillePersonnel.setStripeRows(true); |
grillePersonnel.setTrackMouseOver(true); |
grillePersonnel.addListener(Events.ValidateEdit, new Listener<GridEvent>() { |
grillePersonnel.addListener(Events.Change, new Listener<GridEvent>() { |
public void handleEvent(GridEvent ge) { |
GWT.log(ge.property+" : "+ge.value, null); |
List<StructureAPersonne> personnes = personnelGrilleMagazin.getModels(); |
StructureAPersonneListe personnelModifie = new StructureAPersonneListe(); |
for (int i = 0; i < personnes.size(); i++) { |
personnelModifie.put(""+i, personnes.get(i)); |
// CommitChanges évite que la grille perde la valeur des combobox éditables |
personnelGrilleMagazin.commitChanges(); |
} |
personnel = personnelModifie; |
} |
}); |
cp.add(grillePersonnel); |
personnelOnglet.add(cp); |
return cp; |
return personnelOnglet; |
} |
private TabItem creerOngletIdentification() { |
1335,6 → 1448,13 |
dateFondationChp.getMessages().setInvalidText("La valeur saisie n'est pas une date valide. La date doit être au format «jj/mm/aaaa»."); |
fieldSetIdentite.add(dateFondationChp); |
nbreTotalPersonneStructureChp = new NumberField(); |
nbreTotalPersonneStructureChp.setFieldLabel("Nombre de personne travaillant dans l'institution"); |
nbreTotalPersonneStructureChp.setFormat(NumberFormat.getFormat("#")); |
nbreTotalPersonneStructureChp.setToolTip("Ce champ doit contenir un nombre"); |
fieldSetIdentite.add(nbreTotalPersonneStructureChp); |
identificationOnglet.add(fieldSetIdentite); |
//+-----------------------------------------------------------------------------------------------------------+ |
1685,7 → 1805,19 |
if (info.getType().equals("modif_structure")) { |
Info.display("Modification d'une institution", info.toString()); |
} else if (info.getType().equals("ajout_structure")) { |
if (info.toString().matches("^[0-9]+$")) { |
Info.display("Ajout d'une Institution", "L'intitution a bien été ajoutée"); |
// Suite à la récupération de l'id de l'institution nouvellement ajoutée nous ajoutons le personnel |
mediateur.ajouterStructureAPersonne(this, info.toString(), personnelAjoute); |
} else { |
Info.display("Ajout d'une Institution", info.toString()); |
} |
} else if (info.getType().equals("modif_structure_a_personne")) { |
Info.display("Modification du Personnel", info.toString()); |
} else if (info.getType().equals("suppression_structure_a_personne")) { |
Info.display("Suppression du Personnel", info.toString()); |
} else if (info.getType().equals("ajout_structure_a_personne")) { |
Info.display("Ajout du Personnel", info.toString()); |
} else if (info.getType().equals("selection_structure")) { |
Info.display("Modification d'une institution", info.toString()); |
mode = "MODIF"; |
1721,9 → 1853,13 |
//GWT.log(personnel.toString(), null); |
if (onglets.getSelectedItem().equals(personnelOnglet)) { |
peuplerStructurePersonnel(); |
Info.display("Peuplement", "ok"); |
} |
} |
if (info.getDonnee(1) != null) { |
Info.display("Debug", info.getDonnee(1).toString()); |
} |
} |
} else if (nouvelleDonnees instanceof ValeurListe) { |
ValeurListe listeValeurs = (ValeurListe) nouvelleDonnees; |
/trunk/src/org/tela_botanica/client/Modele.java |
---|
9,7 → 9,9 |
import org.tela_botanica.client.modeles.PublicationListe; |
import org.tela_botanica.client.modeles.PublicationListeAsyncDao; |
import org.tela_botanica.client.modeles.Structure; |
import org.tela_botanica.client.modeles.StructureAPersonne; |
import org.tela_botanica.client.modeles.StructureAPersonneAsyncDao; |
import org.tela_botanica.client.modeles.StructureAPersonneListe; |
import org.tela_botanica.client.modeles.StructureAsyncDao; |
import org.tela_botanica.client.modeles.StructureConservation; |
import org.tela_botanica.client.modeles.StructureListe; |
20,6 → 22,7 |
import org.tela_botanica.client.modeles.ValeurListeAsyncDao; |
import com.extjs.gxt.ui.client.Registry; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.user.client.Window; |
// TODO : le transformer en SINGLETON |
45,16 → 48,18 |
} |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION DES VALEURS ET LISTES |
//+----------------------------------------------------------------------------------------------------------------+ |
public void obtenirListeValeurs(Integer id) { |
ValeurListeAsyncDao lsDao = new ValeurListeAsyncDao(this); |
lsDao.obtenirListe(id); |
} |
public void obtenirListePersonnes() { |
// Lance le service JREST associé au personne via la class PersonneListeAsyncDAO |
PersonnesAsyncDao plDao = new PersonnesAsyncDao(this); |
plDao.obtenirListePersonnes(); |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION DES UTILISATEURS |
//+----------------------------------------------------------------------------------------------------------------+ |
public void connecterUtilisateur(String login, String mdp) { |
Utilisateur utilisateur = (Utilisateur) Registry.get(RegistreId.UTILISATEUR); |
69,9 → 74,13 |
uDao.deconnecterUtilisateur(); |
} |
public void obtenirListePublications() { |
PublicationListeAsyncDao lsDao = new PublicationListeAsyncDao(this); |
lsDao.obtenirListePublication(); |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION DES STRUCTURES |
//+----------------------------------------------------------------------------------------------------------------+ |
public void obtenirListeStructures(Rafraichissable r, String utilisateurId) { |
StructureAsyncDao sDao = new StructureAsyncDao(); |
sDao.selectionner(r, utilisateurId, ""); |
} |
public void selectionnerStructure(Rafraichissable r, String idUtilisateur, String idStr, String idRole) { |
111,6 → 120,25 |
structureDao.modifier(vue, utilisateurId, structure, conservation, valorisation); |
} |
public void modifierStructureAPersonne(Rafraichissable vue, String utilisateurId, StructureAPersonne personnel) { |
StructureAPersonneAsyncDao structureAPersonneDao = new StructureAPersonneAsyncDao(); |
structureAPersonneDao.modifier(vue, utilisateurId, personnel); |
} |
public void ajouterStructureAPersonne(Rafraichissable vue, String utilisateurId, String structureId, StructureAPersonne personnel) { |
StructureAPersonneAsyncDao structureAPersonneDao = new StructureAPersonneAsyncDao(); |
structureAPersonneDao.ajouter(vue, utilisateurId, structureId, personnel); |
} |
public void supprimerStructureAPersonne(Rafraichissable vue, String utilisateurId, String personnel) { |
StructureAPersonneAsyncDao structureAPersonneDao = new StructureAPersonneAsyncDao(); |
structureAPersonneDao.supprimer(vue, utilisateurId, personnel); |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION DES PROJETS |
//+----------------------------------------------------------------------------------------------------------------+ |
public void obtenirListeProjets () { |
ProjetsListeAsyncDao projetsDao = new ProjetsListeAsyncDao(this); |
projetsDao.obtenirListeProjets(); |
124,11 → 152,25 |
} |
public void obtenirListeStructures(Rafraichissable r, String utilisateurId) { |
StructureAsyncDao sDao = new StructureAsyncDao(); |
sDao.selectionner(r, utilisateurId, ""); |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION DES PERSONNES |
//+----------------------------------------------------------------------------------------------------------------+ |
public void obtenirListePersonnes() { |
// Lance le service JREST associé au personne via la class PersonneListeAsyncDAO |
PersonnesAsyncDao plDao = new PersonnesAsyncDao(this); |
plDao.obtenirListePersonnes(); |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION DES PUBLICATIONS |
//+----------------------------------------------------------------------------------------------------------------+ |
public void obtenirListePublications() { |
PublicationListeAsyncDao lsDao = new PublicationListeAsyncDao(this); |
lsDao.obtenirListePublication(); |
} |
public void modifierPublication(String utilisateurId, Publication publi) { |
PublicationListeAsyncDao pDao = new PublicationListeAsyncDao(this); |
pDao.modifierPublication(this, utilisateurId, publi); |
138,4 → 180,6 |
PublicationListeAsyncDao pDao = new PublicationListeAsyncDao(this); |
pDao.ajouterPublication(this, utilisateurId, publi); |
} |
} |
/trunk/src/org/tela_botanica/client/modeles/StructureAPersonne.java |
---|
4,6 → 4,8 |
import java.util.List; |
import java.util.Set; |
import org.apache.commons.digester.SetRootRule; |
import com.extjs.gxt.ui.client.widget.form.CheckBox; |
import com.google.gwt.json.client.JSONObject; |
22,6 → 24,7 |
this.set("contact", false); |
this.set("fonction", ""); |
this.set("statut", ""); |
this.set("travail", 0); |
} |
/** |
34,6 → 37,7 |
this.set("contact", false); |
this.set("fonction", ""); |
this.set("statut", ""); |
this.set("travail", 0); |
// L'objet JSON est une table de hachage |
Set<String> im = personnel.keySet(); |
84,14 → 88,18 |
/** |
* Constructeur avec la fonction à passer en paramètre |
* |
* @param image |
* @param fonction fonction de la personne dans la structure. |
* @param role identifiant du rôle de la personne vis à vis de la structure. |
*/ |
public StructureAPersonne(String fonction) { |
public StructureAPersonne(String fonction, String roleId) { |
setFonction(fonction); |
setIdRole(roleId); |
// Définition des valeurs par défaut de variables obligatoires vis à vis de l'utilisation de l'objet |
this.set("contact", false); |
this.set("fonction", ""); |
this.set("statut", ""); |
this.set("travail", 0); |
} |
// ID |
102,8 → 110,15 |
* @return identifiant unique d'une relation "structure à personne". |
*/ |
public String getId() { |
return (renvoyerValeurCorrecte("id_structure")+"-"+renvoyerValeurCorrecte("id_personne")+"-"+renvoyerValeurCorrecte("id_role")); |
String idStructure = renvoyerValeurCorrecte("id_structure"); |
String idPersonne = renvoyerValeurCorrecte("id_personne"); |
String idRole = renvoyerValeurCorrecte("id_role"); |
if (idStructure.equals("") && idPersonne.equals("") && idRole.equals("")) { |
return null; |
} else { |
return (idStructure+"-"+idPersonne+"-"+idRole); |
} |
} |
//+---------------------------------------------------------------------------------------------------------------+ |
// CHAMPS PROVENANT de la TABLE COEL_STRUCTURE_A_PERSONNE |
140,7 → 155,7 |
this.set("ce_truk_fonction", ctf); |
} |
public void setFonction(String type, Object valeur) { |
setChaineDenormalise("ce_truk_fonction", type, valeur); |
setChaineDenormaliseUnique("ce_truk_fonction", type, valeur); |
} |
159,8 → 174,8 |
public void setStatut(String cts) { |
this.set("ce_truk_statut", cts); |
} |
public void setSatut(String type, Object valeur) { |
setChaineDenormalise("ce_truk_statut", type, valeur); |
public void setStatut(String type, Object valeur) { |
setChaineDenormaliseUnique("ce_truk_statut", type, valeur); |
} |
// CONTACT |
168,7 → 183,7 |
return renvoyerValeurCorrecte("mark_contact"); |
} |
public void setContact(String c) { |
this.set("contact", (c.equals("1") ? true : false)); |
//this.set("contact", (c.equals("1") ? true : false)); |
this.set("mark_contact", c); |
} |
public void setContact(Boolean c) { |
207,7 → 222,8 |
return renvoyerValeurCorrecte("telephone"); |
} |
public void setTelephone(String t) { |
this.set("telephone", t); |
// Nous remplaçons le premier numéro de Téléphone FIX de la personne |
this.setChaineDenormaliseParType("telephone", "FIX", t); |
} |
// FAX |
215,7 → 231,8 |
return renvoyerValeurCorrecte("fax"); |
} |
public void setFax(String f) { |
this.set("fax", f); |
// Nous remplaçons le numéro de Fax en position 1 (principal) |
this.setChaineDenormaliseParPosition("fax", 1, f); |
} |
// COURRIEL |
223,7 → 240,8 |
return renvoyerValeurCorrecte("courriel"); |
} |
public void setCourriel(String c) { |
this.set("courriel", c); |
// Nous remplaçons le courriel en position 1 (principal) |
this.setChaineDenormaliseParPosition("courriel", 1, c); |
} |
// SPÉCIALITÉ |
231,6 → 249,7 |
return renvoyerValeurCorrecte("specialite"); |
} |
public void setSpecialite(String s) { |
this.set("specialite", s); |
// Nous remplaçons le premier numéro de Téléphone FIX de la personne |
this.setChaineDenormaliseUnique("specialite", "AUTRE", s); |
} |
} |
/trunk/src/org/tela_botanica/client/modeles/StructureAPersonneAsyncDao.java |
---|
11,17 → 11,18 |
import com.google.gwt.http.client.RequestCallback; |
import com.google.gwt.http.client.RequestException; |
import com.google.gwt.http.client.Response; |
import com.google.gwt.http.client.URL; |
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONObject; |
import com.google.gwt.json.client.JSONParser; |
import com.google.gwt.json.client.JSONValue; |
public class StructureAPersonneAsyncDao { |
private static final String SERVICE_NOM = "CoelStructureAPersonne"; |
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() + |
"CoelStructureAPersonne" + |
SERVICE_NOM + |
(idStructure == null ? "" : "/"+idStructure) + |
(idRole == null ? "" : "/"+idRole) + |
""; |
32,7 → 33,7 |
public void onError(Request request, Throwable exception) { |
// Gestion des exceptions déclenchées par l'exécution de la requête |
GWT.log("Erreur à l'exécution du service CoelStructureAPersonne (selection)", exception); |
GWT.log("Erreur à l'exécution du service "+SERVICE_NOM+" (selection)", exception); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête."); |
} |
83,7 → 84,224 |
} |
}); |
} catch (RequestException e) { |
e.printStackTrace(); |
// Gestion des exceptions déclenchées par la création de la requête (url non-valide ?) |
GWT.log("Erreur à la création du service "+SERVICE_NOM+" (selection)", e); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de la création de la requête."); |
} |
} |
public void ajouter(final Rafraichissable vue, String utilisateurId, String structureId, StructureAPersonne personnel) { |
final String url = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl() + |
SERVICE_NOM + "/"; |
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, url); |
String postDonnees = "cmhl_ce_modifier_par=" + utilisateurId + |
"&csap_id_structure=" + structureId + |
"&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()) + |
"&csap_mark_contact=" + URL.encodeComponent(personnel.getContact()) + |
"&csap_bota_travail_hebdo_tps=" + URL.encodeComponent(personnel.getBotaTravailHebdoTps()) + |
"&cp_prenom=" + URL.encodeComponent(personnel.getPrenom()) + |
"&cp_nom=" + URL.encodeComponent(personnel.getNom()) + |
"&cp_truk_telephone=" + URL.encodeComponent(personnel.getTelephone()) + |
"&cp_truk_fax=" + URL.encodeComponent(personnel.getFax()) + |
"&cp_truk_courriel=" + URL.encodeComponent(personnel.getCourriel()) + |
"&cp_ce_truk_specialite=" + URL.encodeComponent(personnel.getSpecialite()) + |
""; |
try { |
rb.sendRequest(postDonnees, new RequestCallback() { |
public void onError(Request request, Throwable exception) { |
// Gestion des exceptions déclenchées par l'exécution de la requête |
GWT.log("Erreur à l'exécution du service "+SERVICE_NOM+" (ajout)", exception); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête."); |
} |
public void onErrorHTTP(Request request, Response reponse) { |
// Gestion des erreurs HTTP renvoyé par Apache ou JRest |
Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray()); |
GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null); |
Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString()); |
} |
public void onResponseReceived(Request request, Response response) { |
// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanise d'erreur HTTP |
if (response.getStatusCode() != 200) { |
onErrorHTTP(request, response); |
} else { |
if (response.getText().length() != 0 && response.getText() != null) { |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
// Si la requête est un succès, reception d'une chaine |
if (responseValue.isString() != null) { |
Information info = new Information("ajout_structure_a_personne", responseValue.isString().stringValue()); |
vue.rafraichir(info); |
} else { |
GWT.log(url+"\n\tLa réponse n'est pas une chaine JSON.", null); |
} |
} else { |
GWT.log(url, null); |
if (response.getText().length() == 0) { |
GWT.log("\tLa réponse a une taille de 0", null); |
} |
if (response.getText() == null) { |
GWT.log("\tLa réponse vaul null", null); |
} |
} |
} |
} |
}) ; |
} catch (RequestException e) { |
// Gestion des exceptions déclenchées par la création de la requête (url non-valide ?) |
GWT.log("Erreur à la création du service "+SERVICE_NOM+" (ajout)", e); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de la création de la requête."); |
} |
} |
public void modifier(final Rafraichissable vue, String utilisateurId, StructureAPersonne personnel) { |
final String url = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl() + |
SERVICE_NOM + "/" + |
personnel.getIdStructure() + "/" + |
personnel.getIdPersonne() + "/" + |
personnel.getIdRole() |
; |
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()) + |
"&csap_mark_contact=" + URL.encodeComponent(personnel.getContact()) + |
"&csap_bota_travail_hebdo_tps=" + URL.encodeComponent(personnel.getBotaTravailHebdoTps()) + |
"&cp_prenom=" + URL.encodeComponent(personnel.getPrenom()) + |
"&cp_nom=" + URL.encodeComponent(personnel.getNom()) + |
"&cp_truk_telephone=" + URL.encodeComponent(personnel.getTelephone()) + |
"&cp_truk_fax=" + URL.encodeComponent(personnel.getFax()) + |
"&cp_truk_courriel=" + URL.encodeComponent(personnel.getCourriel()) + |
"&cp_ce_truk_specialite=" + URL.encodeComponent(personnel.getSpecialite()) + |
""; |
try { |
rb.sendRequest(postDonnees, new RequestCallback() { |
public void onError(Request request, Throwable exception) { |
// Gestion des exceptions déclenchées par l'exécution de la requête |
GWT.log("Erreur à l'exécution du service "+SERVICE_NOM+" (modif)", exception); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête."); |
} |
public void onErrorHTTP(Request request, Response reponse) { |
// Gestion des erreurs HTTP renvoyé par Apache ou JRest |
Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray()); |
GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null); |
Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString()); |
} |
public void onResponseReceived(Request request, Response response) { |
// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanise d'erreur HTTP |
if (response.getStatusCode() != 200) { |
onErrorHTTP(request, response); |
} else { |
if (response.getText().length() != 0 && response.getText() != null) { |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
// Si la requête est un succès, reception d'une chaine |
if (responseValue.isString() != null) { |
Information info = new Information("modif_structure_a_personne", responseValue.isString().stringValue()); |
vue.rafraichir(info); |
} else { |
GWT.log(url+"\n\tLa réponse n'est pas une chaine JSON.", null); |
} |
} else { |
GWT.log(url, null); |
if (response.getText().length() == 0) { |
GWT.log("\tLa réponse a une taille de 0", null); |
} |
if (response.getText() == null) { |
GWT.log("\tLa réponse vaul null", null); |
} |
} |
} |
} |
}) ; |
} catch (RequestException e) { |
// Gestion des exceptions déclenchées par la création de la requête (url non-valide ?) |
GWT.log("Erreur à la création du service "+SERVICE_NOM+" (modif)", e); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de la création de la requête."); |
} |
} |
public void supprimer(final Rafraichissable vue, String utilisateurId, String idStrAPer) { |
// Ajout des paramètres et données à supprimer dans l'URL |
final String url = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl() + |
SERVICE_NOM + "/" + |
utilisateurId + "/" + |
idStrAPer + |
""; |
// DELETE n'étant pas disponible comme méthode HTTP, nous utilisons POST avec le paramètre action=DELETE |
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, url); |
String postDonnees = "action=DELETE"; |
try { |
rb.sendRequest(postDonnees, new RequestCallback() { |
public void onError(Request request, Throwable exception) { |
// Gestion des exceptions déclenchées par l'exécution de la requête |
GWT.log("Erreur à l'exécution du service "+SERVICE_NOM+" (suppression)", exception); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête."); |
} |
public void onErrorHTTP(Request request, Response reponse) { |
// Gestion des erreurs HTTP renvoyé par Apache ou JRest |
Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray()); |
GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null); |
Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString()); |
} |
public void onResponseReceived(Request request, Response response) { |
// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanise d'erreur HTTP |
if (response.getStatusCode() != 200) { |
onErrorHTTP(request, response); |
} else { |
if (response.getText().length() != 0 && response.getText() != null) { |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
// Si la requête est un succès, reception d'une chaine |
if (responseValue.isString() != null) { |
Information info = new Information("suppression_structure_a_personne", responseValue.isString().stringValue()); |
vue.rafraichir(info); |
} else { |
GWT.log(url+"\n\tLa réponse n'est pas une chaine JSON.", null); |
} |
} else { |
GWT.log(url, null); |
if (response.getText().length() == 0) { |
GWT.log("\tLa réponse a une taille de 0", null); |
} |
if (response.getText() == null) { |
GWT.log("\tLa réponse vaul null", null); |
} |
} |
} |
} |
}) ; |
} catch (RequestException e) { |
// Gestion des exceptions déclenchées par la création de la requête (url non-valide ?) |
GWT.log("Erreur à la création du service "+SERVICE_NOM+" (suppression)", e); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de la création de la requête."); |
} |
} |
} |