Subversion Repositories eFlore/Applications.coel

Compare Revisions

No changes between revisions

Ignore whitespace Rev 1710 → Rev 1739

/tags/v1.2-mourvedre/src/org/tela_botanica/client/modeles/projet/Projet.java
New file
0,0 → 1,149
package org.tela_botanica.client.modeles.projet;
 
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
 
import org.tela_botanica.client.modeles.aDonnee;
import org.tela_botanica.client.util.Debug;
 
import com.extjs.gxt.ui.client.data.ModelData;
import com.google.gwt.json.client.JSONObject;
 
public class Projet extends aDonnee {
private static final long serialVersionUID = 6733053168274995082L;
 
private static final String PREFIXE = "cpr";
public static String[] champsObligatoires = {"cpr_id_projet"};
public Projet() {}
public Projet(JSONObject liste) {
initialiserModele(liste);
}
public Projet(ModelData model)
{
Map<String, Object> a = model.getProperties();
 
Set<String> cles = a.keySet();
Iterator<String> it = cles.iterator();
while (it.hasNext()) {
String cle = it.next();
if (a.get(cle) != null) {
String cleObjet = cle.replaceFirst("^"+getPrefixe()+"_", "");
this.set(cleObjet, a.get(cle));
}
}
}
@Override
protected String getPrefixe() {
return PREFIXE;
}
protected String[] getChampsObligatoires() {
return champsObligatoires;
}
public String getId() {
return renvoyerValeurCorrecte("id_projet");
}
public void setId(String projetId) {
set("id_projet", projetId);
}
public String getNom() {
return renvoyerValeurCorrecte("nom");
}
public void setNom(String nom) {
set("nom", nom);
}
public String getAbreviation() {
return renvoyerValeurCorrecte("abreviation");
}
public void setAbreviation(String abrev) {
set("abreviation", abrev);
}
public String getResume() {
return renvoyerValeurCorrecte("resume");
}
public void setResume(String valeur) {
set("resume", valeur);
}
public String getDescription() {
return renvoyerValeurCorrecte("description");
}
public void setDescription(String valeur) {
set("description", valeur);
}
public String getUrl() {
return renvoyerValeurCorrecte("url");
}
public void setUrl(String valeur) {
set("url", valeur);
}
public String getMotsCles() {
return renvoyerValeurCorrecte("mot_cles");
}
public void setMotsCles(String valeur) {
set("mot_cles", valeur);
}
public String getCitation() {
return renvoyerValeurCorrecte("citation");
}
public void setCitation(String valeur) {
set("citation", valeur);
}
public String getLicence() {
return renvoyerValeurCorrecte("licence");
}
public void setLicence(String valeur) {
set("licence", valeur);
}
 
public String getLangueId() {
return renvoyerValeurCorrecte("ce_langue");
}
public void setLangue(String valeur) {
set("ce_langue", valeur);
}
public String getIndexationHeure() {
return renvoyerValeurCorrecte("indexation_heure");
}
public void setIndexationHeure(String valeur) {
set("indexation_heure", valeur);
}
public String getIndexationDuree() {
return renvoyerValeurCorrecte("ce_indexation_duree");
}
public void setIndexationDuree(String valeur) {
set("ce_indexation_duree", valeur);
}
public String getIndexationFreq() {
return renvoyerValeurCorrecte("ce_indexation_freq");
}
public void setIndexationFreq(String valeur) {
set("ce_indexation_freq", valeur);
}
public String getMarkPublic() {
return renvoyerValeurCorrecte("mark_public");
}
public void setMarkPublic(String valeur) {
set("mark_public", valeur);
}
}
Property changes:
Added: svn:mergeinfo
Merged /trunk/src/org/tela_botanica/client/modeles/projet/Projet.java:r11-934,1209-1382
Merged /branches/v1.1-aramon/src/org/tela_botanica/client/modeles/projet/Projet.java:r1383-1511
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/modeles/projet/Projet.java:r1136-1368
/tags/v1.2-mourvedre/src/org/tela_botanica/client/modeles/projet/ProjetListe.java
New file
0,0 → 1,136
package org.tela_botanica.client.modeles.projet;
 
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.interfaces.ListePaginable;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.aDonneeListe;
 
import com.extjs.gxt.ui.client.Registry;
import com.google.gwt.i18n.client.Dictionary;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONNumber;
import com.google.gwt.json.client.JSONObject;
 
/**
* Classe contenant les informations sur les Structures renvoyées par un objet de type DAO.
*
* @author Grégoire DUCHÉ
*
*/
public class ProjetListe extends aDonneeListe<Projet> implements ListePaginable {
private static final long serialVersionUID = -9030260944108896455L;
private int currentPage = 0;
private int nbElementsPage = Integer.valueOf(((Dictionary) Dictionary.getDictionary("configuration")).get("nbElementsPage"));
private int nbElementsTotal;
private Rafraichissable vueARafraichir;
 
public ProjetListe() {
super();
}
/**
* Constructeur avec paramètre
* @param taille la taille de la table de hachage
*/
public ProjetListe(int taille) {
super(taille);
}
/**
* Constructeur pour une liste de projets
* @param dates
*/
public ProjetListe(JSONArray ListeDeProjets) {
super(ListeDeProjets.size());
initialiserProjetListe(ListeDeProjets);
}
public ProjetListe(JSONArray ListeDeProjets, JSONNumber nbElements, Rafraichissable vueARafraichir) {
super(ListeDeProjets.size());
this.nbElementsTotal = Integer.valueOf(nbElements.toString());
this.vueARafraichir = vueARafraichir;
initialiserProjetListe(ListeDeProjets);
}
private void initialiserProjetListe(JSONArray ListeDeProjets) {
final int taillemax = ListeDeProjets.size();
for (int i = 0; i < taillemax; i++) {
JSONObject projetCourant = ListeDeProjets.get(i).isObject();
if (projetCourant != null) {
Projet projet = new Projet(projetCourant);
this.put(projet.getId(), projet);
}
}
}
public void changerNumeroPage(int pageCourante) {
currentPage = pageCourante;
selectionnerStructure();
}
 
public void changerTaillePage(int nouvelleTaillePage) {
nbElementsPage = nouvelleTaillePage;
selectionnerStructure();
}
public void recharger() {
selectionnerStructure();
}
public void setPageCourante(int pageCourante) {
this.currentPage = pageCourante;
}
 
public void setTaillePage(int taillePage) {
this.nbElementsPage = taillePage;
}
public int[] getPageTable() {
int[] page = new int[4];
// nombre de pages au total
page[0] = calculerNbPages();
// Page En Cours
page[1] = currentPage;
// nbElementsParPage
page[2] = nbElementsPage;
// et le dernier le nombre total d'éléments
page[3] = nbElementsTotal;
return page;
}
/**
* Calcule le nombre de pages nécessaires pour afficher un nombre d'élements
* donnés en fonction de la taille de page en cours
*
* @return le nombre de pages
*/
public int calculerNbPages() {
// À cause de la bétise de java pour les conversion implicite, on fait quelques conversions manuellement
// pour eviter qu'il arrondisse mal la division nombre de pages = (nombre d'element / taille de la page)
// arrondie à l'entier supérieur.
double nPage = (1.0 * nbElementsTotal) / (1.0 * nbElementsPage);
double nPageRound = Math.ceil(nPage);
Double nPageInt = new Double(nPageRound);
 
// Convertion en entier
return nPageInt.intValue();
}
public void selectionnerStructure() {
Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
mediateur.selectionnerProjet(vueARafraichir, mediateur.getProjetId(), null, currentPage, nbElementsPage, null, false, null);
}
public void filtrerParNom(String nom) {
Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
mediateur.selectionnerProjet(vueARafraichir, mediateur.getProjetId(), "%" + nom + "%", 0, nbElementsPage, null, false, null);
}
 
public void filtrerParNomEtPage(String nom, int pageCourante) {
currentPage = pageCourante;
Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
mediateur.selectionnerProjet(vueARafraichir, mediateur.getProjetId(), "%" + nom + "%", currentPage, nbElementsPage, null, false, null);
}
}
Property changes:
Added: svn:mergeinfo
Merged /trunk/src/org/tela_botanica/client/modeles/projet/ProjetListe.java:r11-934,1209-1382
Merged /branches/v1.1-aramon/src/org/tela_botanica/client/modeles/projet/ProjetListe.java:r1383-1511
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/modeles/projet/ProjetListe.java:r1136-1368
/tags/v1.2-mourvedre/src/org/tela_botanica/client/modeles/projet/ProjetAsyncDao.java
New file
0,0 → 1,223
package org.tela_botanica.client.modeles.projet;
 
import java.util.HashMap;
 
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.http.JsonRestRequestBuilder;
import org.tela_botanica.client.http.JsonRestRequestCallback;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Information;
import org.tela_botanica.client.modeles.structure.StructureListe;
import org.tela_botanica.client.synchronisation.Reponse;
import org.tela_botanica.client.util.Debug;
import org.tela_botanica.client.util.UtilDAO;
 
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.widget.Info;
import com.google.gwt.core.client.GWT;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONValue;
 
public class ProjetAsyncDao {
private static final String SERVICE_NOM = "CoelProjet";
String utilisateurId = null;
private Rafraichissable vueARafraichir = null;
public ProjetAsyncDao(Rafraichissable vueARafraichirCourrante) {
if (Mediateur.DEBUG) System.out.println("|| ProjetAsyncDao > vueARafraichir = "+vueARafraichirCourrante.getClass().toString());
vueARafraichir = vueARafraichirCourrante;
utilisateurId = ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).getUtilisateurId();
}
 
/**
* @param paginationProgressive : définit le mode de consultation de la base de données
* - True : la consultation des données est progressive, ce qui signifie que la liste est chargée (paginée) au
* fur et à mesure de la consultation des données par l'utilisateur.
* - False : la consultation des données est classique : un seul appel à la base de données est effectué, le retour
* est renvoyé à l'appelant
* // FIXME : si la taille de la liste est supérieure à la limite du JREST (150), ce deuxieme mode ne fonctionne pas
*/
public void selectionner(final boolean paginationProgressive, final String projetId, final String nomProjet, final int start, final int nbElements, final String formatRetour, final Integer seqId) {
String nom = (nomProjet == null) ? "%" : nomProjet+"%";
String[] param = {projetId, nom};
HashMap<String, String> restrictions = new HashMap<String, String>();
 
/* ne jamais effectuer de limitation du nombre de projet car, lorsqu'on édite une institution, le "projet"
est obligatoire, cependant, si l'ID du projet de cette institution n'est pas présent dans la première page
de la liste dynamique téléchargée initialement (offset 0 -> 10), le champ reste invalide / rouge,
rendant impossible la modification rapide de la structure.
 
Pour cette raison, la liste des projets est toujours récupérée en intégralité. */
if (false && nbElements != -1) {
restrictions.put("limit", String.valueOf(nbElements));
}
 
if ((formatRetour != null) && (formatRetour != "")) {
restrictions.put("formatRetour", formatRetour);
}
/** GESTION DE LA REQUETE dans le cas d'une liste paginée progressive **/
if (paginationProgressive) {
 
/** DEFINITION DU TUPLE DE DEPART **/
restrictions.put("start", String.valueOf(start));
/** CONSTRUCTION DE LA REQUETE **/
final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, param, restrictions);
 
/** ENVOI DE LA REQUETE **/
rb.envoyerRequete(null, new JsonRestRequestCallback()
{
/** RECEPTION DE LA REPONSE **/
public void surReponse(JSONValue responseValue)
{
/** Dans le cas d'une liste paginée, vueARafraichir est un objet Proxy.
* On retourne l'objet JSON au proxy afin que ce soit lui qui le traite **/
if (seqId != null) {
Reponse reponseRequete = new Reponse(responseValue, seqId);
vueARafraichir.rafraichir(reponseRequete);
}
else {
vueARafraichir.rafraichir(responseValue);
}
}
});
}
/** GESTION DE LA REQUETE dans le cas d'une liste NON paginée progressive **/
else {
/** DEFINITION DU TUPLE DE DEPART **/
restrictions.put("start", String.valueOf(start*nbElements));
final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, param, restrictions);
rb.envoyerRequete(null, new JsonRestRequestCallback() {
public void surReponse(JSONValue responseValue) {
if (responseValue != null) {
JSONObject responseObject = responseValue.isObject();
if (responseObject != null) {
// Si la réponse est un tableau, alors c'est une liste de projets qui a été retournée
if (responseObject.get("projets").isArray() != null) {
JSONArray reponse = responseObject.get("projets").isArray();
ProjetListe projets;
projets = new ProjetListe(reponse, responseObject.get("nbElements").isNumber(), vueARafraichir);
projets.setTaillePage(nbElements);
projets.setPageCourante(start);
 
if (seqId != null) {
Reponse retourRequete = new Reponse(projets, seqId);
vueARafraichir.rafraichir(retourRequete);
} else {
vueARafraichir.rafraichir(projets);
}
// Si la réponse est un objet, alors c'est un unique projet qui a été retourné
} else if (responseObject.get("projets").isObject() != null) {
JSONObject reponse = responseObject.get("projets").isObject();
Projet projet = new Projet(reponse);
Information info = new Information("selection_projet");
info.setDonnee(0, projet);
 
if (seqId != null) {
Reponse reponseRequete = new Reponse(info, seqId);
vueARafraichir.rafraichir(reponseRequete);
}
else {
vueARafraichir.rafraichir(info);
}
}
} else {
GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas un objet ou un tableau JSON et vaut : "+responseValue.toString(), null);
}
} else {
// Dans le cas, où nous demandons tous les projets et qu'il n'y en a pas, nous retournons un objet vide
if (projetId == null) {
ProjetListe projets = new ProjetListe(0);
if (seqId != null) {
Reponse reponseRequete = new Reponse(projets, seqId);
vueARafraichir.rafraichir(reponseRequete);
}
else {
vueARafraichir.rafraichir(projets);
}
}
}
}
});
}
}
public void ajouter(Projet projet) {
String postDonneesEncodees = projet.obtenirChainePOST()+"&cmhl_ce_modifier_par="+utilisateurId;
final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM);
rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() {
@Override
public void surReponse(JSONValue reponseValeur) {
traiterReponse(reponseValeur, "ajout_projet");
}
}) ;
}
public void modifier(Projet projet) {
String[] parametres = {projet.getId()};
final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM, parametres);
String postDonneesEncodees = projet.obtenirChainePOST()+"&cmhl_ce_modifier_par="+utilisateurId;
rb.envoyerRequete(postDonneesEncodees, new JsonRestRequestCallback() {
@Override
public void surReponse(JSONValue reponseValeur) {
traiterReponse(reponseValeur, "modif_projet");
}
});
}
 
public void supprimer(String projetsId) {
String[] parametres = {utilisateurId, projetsId};
final JsonRestRequestBuilder rb = UtilDAO.construireRequetePost(SERVICE_NOM, parametres);
rb.envoyerRequeteSuppression(new JsonRestRequestCallback() {
@Override
public void surReponse(JSONValue reponseValeur) {
traiterReponse(reponseValeur, "suppression_projet");
}
});
}
private void traiterReponse(JSONValue reponseValeur, String type) {
Information info = new Information(type);
String idsNonSuppr = "";
// Si la requête est un succès, réception d'une chaîne
if (type.equals("suppression_projet") && reponseValeur.isArray() != null) {
JSONArray tableauInfo = reponseValeur.isArray();
idsNonSuppr = tableauInfo.get(0).isString().stringValue();
} else if (reponseValeur.isString() != null) {
String idOuMessage = reponseValeur.isString().stringValue();
if (idOuMessage.matches("^[0-9]+$")) {
info.setDonnee(idOuMessage);
} else {
info.setDonnee("");
info.setMessage(idOuMessage);
}
} else {
info.setDeboguage("La réponse n'est pas une chaine JSON.");
}
info.setDonnee(1, idsNonSuppr);
vueARafraichir.rafraichir(info);
}
}
Property changes:
Added: svn:mergeinfo
Merged /trunk/src/org/tela_botanica/client/modeles/projet/ProjetAsyncDao.java:r11-934,1209-1382
Merged /branches/v1.1-aramon/src/org/tela_botanica/client/modeles/projet/ProjetAsyncDao.java:r1383-1511
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/modeles/projet/ProjetAsyncDao.java:r1136-1368
/tags/v1.2-mourvedre/src/org/tela_botanica/client/modeles/projet/ProjetVersion.java
New file
0,0 → 1,84
package org.tela_botanica.client.modeles.projet;
 
import java.util.Iterator;
import java.util.Set;
 
import org.tela_botanica.client.modeles.aDonnee;
 
import com.google.gwt.json.client.JSONObject;
 
public class ProjetVersion extends aDonnee {
 
/**
*
*/
private static final long serialVersionUID = 1L;
 
private static final String PREFIXE = "cprv";
public static String[] champsObligatoires = {"cpr_id_projet"};
public ProjetVersion() {
//this.set("mark_contact", false);
super();
}
public ProjetVersion(JSONObject liste) {
// l'objet JSON est une table de hachage
Set<String> im = liste.keySet();
 
// Parcourt pour chaque clé
for (Iterator<String> it = im.iterator(); it.hasNext();) {
// Si elle est associée à une valeur, nous l'ajoutons
String cle = it.next();
// Suppression de l'abréviation du champ. Inutile dans le contexte d'un objet
String cleObjet = cle.replaceFirst("^"+PREFIXE+"_", "");
if (liste.get(cle).isString() != null) {
String valeur = liste.get(cle).isString().stringValue();
this.set(cleObjet, valeur);
} else {
// Sinon, nous ajoutons la clé avec une valeur vide
String valeur = " ";
this.set(cleObjet, valeur);
}
}
}
@Override
protected String getPrefixe() {
return PREFIXE;
}
protected String[] getChampsObligatoires() {
return champsObligatoires;
}
public String getIdVersion() {
return renvoyerValeurCorrecte("id_version");
}
public String getIdProjet() {
return renvoyerValeurCorrecte("id_projet");
}
public String getNom() {
return renvoyerValeurCorrecte("nom");
}
public String getCode() {
return renvoyerValeurCorrecte("code");
}
public String getDateDebut() {
return renvoyerValeurCorrecte("date_debut");
}
public String getDateFin() {
return renvoyerValeurCorrecte("date_fin");
}
public String getMeta() {
return renvoyerValeurCorrecte("ce_meta ");
}
 
 
}
Property changes:
Added: svn:mergeinfo
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/modeles/projet/ProjetVersion.java:r1136-1368
Merged /trunk/src/org/tela_botanica/client/modeles/projet/ProjetVersion.java:r11-934,1209-1382
Merged /branches/v1.1-aramon/src/org/tela_botanica/client/modeles/projet/ProjetVersion.java:r1383-1511