Subversion Repositories eFlore/Applications.coel

Compare Revisions

Ignore whitespace Rev 230 → Rev 231

/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.");
}
}
}
/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,7 → 110,14
* @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);
}
}
//+---------------------------------------------------------------------------------------------------------------+
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/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 {
362,7 → 364,39
public void modifierStructure(Rafraichissable vue, Structure structure, StructureConservation conservation, StructureValorisation valorisation) {
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;
134,11 → 141,13
private ComboBox<Valeur> comboPays;
 
// Onglet PERSONNEL
private StructureAPersonneListe 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);
// 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 (identification != null) {
// NBRE PERSONNE
nbreTotalPersonneStructureChp.setValue(identification.getNbrePersonne());
}
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 = 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,13 → 1226,21
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());
// Désactivation du bouton supprimer si la grille contient plus d'élément
if (grillePersonnel.getStore().getCount() == 0) {
ce.item.disable();
}
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);
1137,29 → 1252,27
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));
}
personnel = personnelModifie;
// CommitChanges évite que la grille perde la valeur des combobox éditables
personnelGrilleMagazin.commitChanges();
}
});
cp.add(grillePersonnel);
return cp;
}
personnelOnglet.add(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")) {
Info.display("Ajout d'une Institution", info.toString());
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,8 → 1853,12
//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);
68,12 → 73,16
UtilisateurAsyncDao uDao = new UtilisateurAsyncDao(this);
uDao.deconnecterUtilisateur();
}
//+----------------------------------------------------------------------------------------------------------------+
// GESTION DES STRUCTURES
//+----------------------------------------------------------------------------------------------------------------+
 
public void obtenirListePublications() {
PublicationListeAsyncDao lsDao = new PublicationListeAsyncDao(this);
lsDao.obtenirListePublication();
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) {
// Gestion des données des tables coel_structure, coel_structure_conservation et coel_structure_valorisation
StructureAsyncDao sDao = new StructureAsyncDao();
110,7 → 119,26
StructureAsyncDao structureDao = new StructureAsyncDao();
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);
}
 
 
}