Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 691 → Rev 692

/branches/cel3/src/log4j.properties
New file
0,0 → 1,24
# A default log4j configuration for log4j users.
#
# To use this configuration, deploy it into your application's WEB-INF/classes
# directory. You are also encouraged to edit it as you like.
 
# Configure the console as our one appender
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p [%c] - %m%n
 
# tighten logging on the DataNucleus Categories
log4j.category.DataNucleus.JDO=WARN, A1
log4j.category.DataNucleus.Persistence=WARN, A1
log4j.category.DataNucleus.Cache=WARN, A1
log4j.category.DataNucleus.MetaData=WARN, A1
log4j.category.DataNucleus.General=WARN, A1
log4j.category.DataNucleus.Utility=WARN, A1
log4j.category.DataNucleus.Transaction=WARN, A1
log4j.category.DataNucleus.Datastore=WARN, A1
log4j.category.DataNucleus.ClassLoading=WARN, A1
log4j.category.DataNucleus.Plugin=WARN, A1
log4j.category.DataNucleus.ValueGeneration=WARN, A1
log4j.category.DataNucleus.Enhancer=WARN, A1
log4j.category.DataNucleus.SchemaTool=WARN, A1
/branches/cel3/src/org/tela_botanica/client/utils/CelUtil.java
New file
0,0 → 1,172
package org.tela_botanica.client.utils;
 
import org.tela_botanica.client.modeles.observation.Observation;
 
 
public class CelUtil {
 
public CelUtil() {
}
 
public static String toCelString(String str) {
return str.substring(1, str.length() - 1);
//
}
public static String formaterLieu(Observation obs, String modeleLieu) {
String lieuModele = modeleLieu;
String commune = obs.getLocalite();
String lieuDit = obs.getLieudit();
String station = obs.getStation();
String lieuCommuneFormate = "";
String lieuDitFormate = "";
String stationFormatee = "";
if(commune != null && !commune.contains("000null") && !commune.trim().equals("")) {
String idLoc =obs.getIdentifiantLocalite().replaceAll(" ","/");
if(idLoc != null && !idLoc.contains("000null") && !idLoc.trim().equals("")) {
 
idLoc = idLoc.replaceAll("%","");
idLoc = idLoc.replaceAll("\"","");
idLoc = idLoc.replace('\\',' ');
idLoc = idLoc.trim();
lieuCommuneFormate += idLoc+" - ";
}
lieuCommuneFormate += commune;
lieuModele = lieuModele.replaceAll("IDLOCCOMMUNE", lieuCommuneFormate);
} else {
lieuModele = lieuModele.replaceAll("IDLOCCOMMUNE,", lieuCommuneFormate);
}
if(lieuDit != null && !lieuDit.contains("000null") && !lieuDit.trim().equals("")) {
lieuDitFormate += lieuDit;
lieuModele = lieuModele.replaceAll("LIEUDIT", lieuDitFormate);
} else {
lieuModele = lieuModele.replaceAll("LIEUDIT,", lieuDitFormate);
}
if(station != null && !station.contains("000null") && !station.trim().equals("")) {
stationFormatee += station;
lieuModele = lieuModele.replaceAll("STATION", stationFormatee);
} else {
lieuModele = lieuModele.replaceAll("STATION", stationFormatee);
}
lieuModele = lieuModele.trim();
lieuModele = lieuModele.replaceAll(",$","");
lieuModele = lieuModele.replaceAll(",^$",", ");
return lieuModele;
}
public static String supprimerNumDepartementChaineLocalite(String chaineLocaliteComplete) {
return chaineLocaliteComplete.replaceAll("\\([0-9][1-9]\\)", "");
}
/***
* Fusionne les éléments d'un tableau en une chaîne
* @param delim : la chaîne de séparation
* @param args : la tableau
* @return la chaîne fusionnée
*/
public static String implode(String delim, String[] args){
StringBuffer sb = new StringBuffer();
int lgArgs = args.length;
for(int i = 0; i < lgArgs; i++){
if (i > 0) {
sb.append(delim);
}
sb.append(args[i]);
}
return sb.toString();
}
public static boolean filtreValide(String[] filtre) {
return (filtre.length == 2 &&
filtre[0] != null &&
!filtre[0].equals("") &&
filtre[1] != null &&
!filtre[1].equals(""));
}
public static String renvoyerMois(int numMois) {
switch (numMois) {
case 1:
return "janvier" ;
case 2:
return "fevrier" ;
case 3:
return "mars" ;
case 4:
return "avril" ;
case 5:
return "mai" ;
case 6:
return "juin" ;
case 7:
return "juillet" ;
case 8:
return "août" ;
case 9:
return "septembre" ;
case 10:
return "octobre" ;
case 11:
return "novembre" ;
case 12:
return "décembre" ;
default:
return "Inconnu" ;
}
}
public static String remplacerSautsDeligneMalEncodes(String chaineAvecSautsDeLignesMalEncodes) {
String chaineAvecSautsDeLignesBienEncodes = chaineAvecSautsDeLignesMalEncodes.replace('\\','%');
chaineAvecSautsDeLignesBienEncodes = chaineAvecSautsDeLignesBienEncodes.replaceAll("%n","%");
chaineAvecSautsDeLignesBienEncodes = chaineAvecSautsDeLignesBienEncodes.replace('%','\n');
return chaineAvecSautsDeLignesBienEncodes;
}
public static boolean verifierDateFormatCel(String dateAVerifier) {
String dateRemplacee = remplacerSeparateursDateFormatCel(dateAVerifier);
String[] tabDate = dateRemplacee.split("/");
boolean retour = false;
if(tabDate.length == 3) {
try {
int jour = Integer.parseInt(tabDate[0]);
int mois = Integer.parseInt(tabDate[1]);
int annee = Integer.parseInt(tabDate[2]);
if(jour < 31 && mois < 12 && tabDate[2].length() == 4) {
retour = true;
}
} catch (Exception e) {
 
}
}
return retour;
}
public static String remplacerSeparateursDateFormatCel(String date) {
String dateRemplacee = date.replaceAll("-", "/");
return dateRemplacee;
}
}
/branches/cel3/src/org/tela_botanica/client/utils/Configuration.java
New file
0,0 → 1,207
package org.tela_botanica.client.utils;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.i18n.client.Dictionary;
 
/**
* Classe chargeant certains paramètres de configuration à partir d'un fichier
* javascript (config.js)
*
* @author aurelien
*
*/
public class Configuration {
 
/**
* L'url de base du serveur jrest
*/
private static String serviceBaseUrl;
 
private static String imageBaseUrl;
private static String suiviBugUrl ;
private static String aideBaseUrl ;
private static String emailContact;
private static String referentielGeo ;
private static String cleGoogleMaps ;
 
private static String lienEfloreBaseUrl;
private static String refTax;
private static String refTaxVersion;
private static String licence ="";
private static String formatOriginal = "";
private static String formatZoom = "";
private static String formatGalerie = "";
private static String formatListe = "";
 
/**
* Constructeur sans argument
*/
public Configuration() {
// on utilise le dictionnaire d'internationalisation pour lire les
// variables du fichier javascript
//if(GWT.isScript()) {
serviceBaseUrl = Dictionary.getDictionary("configuration").get(
"serviceBaseUrl");
emailContact = Dictionary.getDictionary("configuration").get(
"emailContact");
suiviBugUrl = Dictionary.getDictionary("configuration").get(
"suiviBugUrl");
imageBaseUrl = Dictionary.getDictionary("configuration").get(
"imageBaseUrl");
aideBaseUrl = Dictionary.getDictionary("configuration").get(
"aideBaseUrl");
referentielGeo = Dictionary.getDictionary("configuration").get(
"referentielGeo");
cleGoogleMaps = Dictionary.getDictionary("configuration").get(
"cleGoogleMaps");
lienEfloreBaseUrl = Dictionary.getDictionary("configuration").get(
"lienEfloreBaseUrl");
refTax = Dictionary.getDictionary("configuration").get(
"refTax");
refTaxVersion = Dictionary.getDictionary("configuration").get(
"refTaxVersion");
formatOriginal = Dictionary.getDictionary("configuration").get(
"formatOriginal");
formatZoom = Dictionary.getDictionary("configuration").get(
"formatZoom");
formatGalerie = Dictionary.getDictionary("configuration").get(
"formatGalerie");
formatListe = Dictionary.getDictionary("configuration").get(
"formatListe");
//licence = Dictionary.getDictionary("configuration").get("licence");
}
 
/**
* Accesseur pour l'url de base du serveur jrest
*
* @return une url de la forme http://emplacement_serveur/jrest
*/
public static String getServiceBaseUrl() {
/*if(!GWT.isScript()) {
serviceBaseUrl = "http://localhost:8888/jrest";
}*/
return serviceBaseUrl;
}
/**
* Accesseur pour l'url de base du suivi de bug
*
* @return une url pointant vers le suivi des bugs
*/
public static String getSuiviBugUrl() {
return suiviBugUrl;
}
/**
* Accesseur pour l'url de base des images
*
* @return une url pointant vers la racine du dossier contenant les images
*/
public static String getImageBaseUrl() {
return imageBaseUrl ;
}
/**
* Accesseur pour l'url de base de l'aide
*
* @return une url pointant vers la racine de l'aide
*/
public static String getAideBaseUrl() {
return aideBaseUrl ;
}
/**
* Accesseur pour l'email de contact du carnet en ligne
*
* @return une chaine contenant l'email de contact
*/
public static String getEmailContact() {
return emailContact;
}
/**
* Accesseur pour le référentiel geo
*
* @return le référentiel geo
*/
public static String getReferentielGeo() {
return referentielGeo ;
}
/**
* Accesseur pour la clé google maps
*
* @return la clé google maps
*/
public static String getCleGoogleMaps() {
return cleGoogleMaps ;
}
 
public static String getLienEfloreBaseUrl() {
return lienEfloreBaseUrl;
}
public static String getRefTax() {
return refTax;
}
public static String getRefTaxVersion() {
return refTaxVersion;
}
public static String getLicence() {
return licence;
}
public static String getFormatOriginal() {
 
return formatOriginal;
}
public static String getFormatZoom() {
 
return formatZoom;
}
public static String getFormatGalerie() {
 
return formatGalerie;
}
public static String getFormatListe() {
 
return formatListe;
}
}
/branches/cel3/src/org/tela_botanica/client/vues/PanneauGestionUtilisateur.java
New file
0,0 → 1,20
package org.tela_botanica.client.vues;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Widget;
 
public class PanneauGestionUtilisateur extends Composite implements IsWidget {
 
private static PanneauGestionUtilisateurUiBinder uiBinder = GWT.create(PanneauGestionUtilisateurUiBinder.class);
 
interface PanneauGestionUtilisateurUiBinder extends UiBinder<Widget, PanneauGestionUtilisateur>
{
}
public PanneauGestionUtilisateur() {
initWidget(uiBinder.createAndBindUi(this));
}
}
/branches/cel3/src/org/tela_botanica/client/vues/observation/ListeObservation.java
New file
0,0 → 1,168
package org.tela_botanica.client.vues.observation;
 
import java.util.List;
 
import org.tela_botanica.client.evenements.observation.ListeObservationRecueEvenement;
import org.tela_botanica.client.evenements.observation.ListeObservationRecueEvenementHandler;
import org.tela_botanica.client.evenements.observation.ObservationBusEvenement;
import org.tela_botanica.client.modeles.observation.Observation;
 
import com.google.gwt.cell.client.Cell;
import com.google.gwt.cell.client.ImageCell;
import com.google.gwt.cell.client.ImageResourceCell;
import com.google.gwt.cell.client.TextCell;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.shared.SimpleEventBus;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.view.client.DefaultSelectionEventManager;
import com.google.gwt.view.client.ListDataProvider;
import com.google.gwt.view.client.MultiSelectionModel;
import com.google.gwt.view.client.ProvidesKey;
import com.google.gwt.view.client.SelectionModel;
 
public class ListeObservation extends CellTable<Observation> {
/**
* Keyprovider pour l'id d'un observation
*/
public static final ProvidesKey<Observation> KEY_PROVIDER = new ProvidesKey<Observation>() {
public Object getKey(Observation item) {
return item == null ? null : item.getNumeroOrdre();
}
};
/**
* Structure contenant la liste des observation
*/
private ListDataProvider<Observation> dataProvider = new ListDataProvider<Observation>();
 
public ListeObservation() {
super(KEY_PROVIDER);
ObservationBusEvenement.get().addHandler(ListeObservationRecueEvenement.TYPE,
new ListeObservationRecueEvenementHandler() {
 
@Override
public void onReceptionListeObservation(
ListeObservationRecueEvenement listeObservationRecueEvenement) {
 
remplirListeObservation(listeObservationRecueEvenement.getListeObservationRecue());
}
});
setWidth("100%", true);
 
// gestion du tri
ListHandler<Observation> sortHandler = new ListHandler<Observation>(
dataProvider.getList());
addColumnSortHandler(sortHandler);
final SelectionModel<Observation> selectionModel = new MultiSelectionModel<Observation>(
KEY_PROVIDER);
setSelectionModel(selectionModel,
DefaultSelectionEventManager.<Observation> createCheckboxManager());
dataProvider.addDataDisplay(this);
initTableColumns(selectionModel, sortHandler);
}
/**
* Add the columns to the table.
*/
private void initTableColumns( final SelectionModel<Observation> selectionModel,
ListHandler<Observation> sortHandler) {
Column<Observation, String> transmis = new Column<Observation, String>(new ImageCell()) {
@Override
public String getValue(Observation obs) {
String affichage = "vide.png";
 
if(obs.getTransmis().equals("true")) {
return "tela.png";
}
return affichage;
}
};
addColumn(transmis, "Transmis");
setColumnWidth(transmis, 25, Unit.PCT);
Column<Observation, String> nomSaisi = new Column<Observation, String>(
new TextCell()) {
 
public String getValue(Observation obs) {
return obs.getNomSaisi();
}
};
addColumn(nomSaisi, "Nom saisi");
setColumnWidth(nomSaisi, 80, Unit.PCT);
Column<Observation, String> nomRetenu = new Column<Observation, String>(
new TextCell()) {
 
public String getValue(Observation obs) {
return obs.getNomRetenu();
}
};
addColumn(nomRetenu, "Nom retenu");
setColumnWidth(nomRetenu, 80, Unit.PCT);
 
Column<Observation, String> lieu = new Column<Observation, String>(
new TextCell()) {
 
public String getValue(Observation obs) {
return obs.getLocalite();
}
};
addColumn(lieu, "Lieu");
setColumnWidth(lieu, 60, Unit.PCT);
 
Column<Observation, String> date = new Column<Observation, String>(
new TextCell()) {
 
public String getValue(Observation obs) {
return obs.getDate();
}
};
addColumn(date, "Date");
setColumnWidth(date, 60, Unit.PCT);
// First name.
Column<Observation, String> ordre = new Column<Observation, String>(
new TextCell()) {
 
public String getValue(Observation obs) {
return obs.getNumeroOrdre();
}
};
addColumn(ordre, "Ordre");
setColumnWidth(ordre, 20, Unit.PCT);
}
private void remplirListeObservation(Observation[] observationsRecues) {
int tailleListeObsRecue = observationsRecues.length;
dataProvider.getList().clear();
for(int i = 0; i < tailleListeObsRecue; i++) {
dataProvider.getList().add(observationsRecues[i]);
}
dataProvider.refresh();
}
}
/branches/cel3/src/org/tela_botanica/client/vues/observation/PanneauPrincipalObservation.ui.xml
New file
0,0 → 1,32
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder
xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'
xmlns:vues="urn:import:org.tela_botanica.client.vues.observation">
<ui:style>
.panneau-cel
{
border: 3px solid green;
}
</ui:style>
 
<g:SplitLayoutPanel>
<g:west size='250'>
<g:HTML addStyleNames="{style.panneau-cel}">Ici il y aura les filtres !</g:HTML>
</g:west>
 
<g:center>
<g:VerticalSplitPanel addStyleNames="{style.panneau-cel}">
<vues:FormulaireAutocompletion></vues:FormulaireAutocompletion>
<vues:ListeObservation></vues:ListeObservation>
</g:VerticalSplitPanel>
</g:center>
<g:east size='250'>
<g:HTML addStyleNames="{style.panneau-cel}">Ici il y aura les infos supplémentaires !</g:HTML>
</g:east>
</g:SplitLayoutPanel>
 
</ui:UiBinder>
/branches/cel3/src/org/tela_botanica/client/vues/observation/PanneauPrincipalObservation.java
New file
0,0 → 1,23
package org.tela_botanica.client.vues.observation;
 
 
import org.tela_botanica.client.vues.PanneauGestionUtilisateur;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Widget;
 
public class PanneauPrincipalObservation extends Composite implements IsWidget {
 
private static PanneauPrincipalObservationUiBinder uiBinder = GWT.create(PanneauPrincipalObservationUiBinder.class);
 
interface PanneauPrincipalObservationUiBinder extends UiBinder<Widget, PanneauPrincipalObservation>
{
}
public PanneauPrincipalObservation() {
initWidget(uiBinder.createAndBindUi(this));
}
}
/branches/cel3/src/org/tela_botanica/client/vues/observation/FormulaireAutocompletion.java
New file
0,0 → 1,132
package org.tela_botanica.client.vues.observation;
 
import java.util.Vector;
 
import org.tela_botanica.client.utils.Configuration;
 
import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.event.dom.client.KeyPressHandler;
import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestBuilder;
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.json.client.JSONArray;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.MultiWordSuggestOracle;
import com.google.gwt.user.client.ui.SuggestBox;
import com.google.gwt.user.client.ui.SuggestOracle;
 
public class FormulaireAutocompletion extends Composite implements IsWidget {
 
MultiWordSuggestOracle msu = new MultiWordSuggestOracle();
SuggestBox suggestions = null;
Timer suggestionTimer = null;
SuggestOracle.Request requeteOracle;
SuggestOracle.Callback callBackOracle;
int tempsAvantRequete = 500;
public FormulaireAutocompletion() {
suggestions = new SuggestBox(msu);
suggestions.setWidth(300+"px");
suggestions.addKeyPressHandler(new KeyPressHandler() {
public void onKeyPress(KeyPressEvent event) {
if(event.getUnicodeCharCode() != 0) {
if(suggestionTimer == null) {
suggestionTimer = new Timer() {
public void run() {
requeteSuggestions(suggestions.getValue());
}
};
suggestionTimer.schedule(tempsAvantRequete);
} else {
suggestionTimer.schedule(tempsAvantRequete);
}
}
}
});
requeteOracle = new SuggestOracle.Request();
callBackOracle = new SuggestOracle.Callback() {
 
public void onSuggestionsReady(
com.google.gwt.user.client.ui.SuggestOracle.Request request,
com.google.gwt.user.client.ui.SuggestOracle.Response response) {
suggestions.showSuggestionList();
}
};
this.setWidget(suggestions);
}
public void setTempsAvantRequete(int temps) {
tempsAvantRequete = temps;
}
public int getTempsAvantRequete(int temps) {
return tempsAvantRequete;
}
private void requeteSuggestions(final String requete) {
String requeteAjax = requete;
String[] parties = requete.split(" ", 2);
if(parties.length == 2) {
if(parties[1].trim().isEmpty()) {
parties[1] = "*";
}
requeteAjax = parties[0]+"/"+parties[1];
}
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET,Configuration.getServiceBaseUrl()
+"/NameSearch/"+requeteAjax) ;
try {
rb.sendRequest(null, new RequestCallback() {
 
public void onError(final Request request, final Throwable exception) {
// TODO Auto-generated method stub
}
 
public void onResponseReceived(final Request request,
final Response response) {
final JSONValue responseValue = JSONParser.parseStrict(response.getText());
JSONArray noms;
if ((noms=responseValue.isArray()) != null) {
msu.clear();
final int taillemax = noms.size();
for (int i = 0; i < taillemax; i++) {
msu.add(noms.get(i).isArray().get(0).isString().stringValue());
}
msu.requestSuggestions(requeteOracle, callBackOracle);
}
}
}) ;
 
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/branches/cel3/src/org/tela_botanica/client/vues/CelPanneauPrincipal.java
New file
0,0 → 1,15
package org.tela_botanica.client.vues;
 
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.user.client.ui.DockLayoutPanel;
 
public class CelPanneauPrincipal extends DockLayoutPanel {
public CelPanneauPrincipal() {
super(Unit.PCT);
 
addNorth(new PanneauGestionUtilisateur(), 10);
add(new PanneauObservationImage());
}
}
/branches/cel3/src/org/tela_botanica/client/vues/PanneauObservationImage.ui.xml
New file
0,0 → 1,25
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui"
xmlns:vues="urn:import:org.tela_botanica.client.vues.observation">
<ui:style>
.tabPanelExample1
{
border: 3px solid green;
}
</ui:style>
<g:TabLayoutPanel addStyleNames="{style.tabPanelExample1}" ui:field="tabPanel" barUnit="PX" barHeight="20">
<g:tab>
<g:header>
Observations
</g:header>
<vues:PanneauPrincipalObservation></vues:PanneauPrincipalObservation>
</g:tab>
<g:tab>
<g:header>
Images
</g:header>
<g:HTML><h2>Hello tab 2</h2></g:HTML>
</g:tab>
</g:TabLayoutPanel>
</ui:UiBinder>
/branches/cel3/src/org/tela_botanica/client/vues/PanneauGestionUtilisateur.ui.xml
New file
0,0 → 1,10
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder
xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
 
<g:HTMLPanel>
<div style="border:3px solid green;width:100%;height:100%"> Carnet en ligne panneau nord </div>
</g:HTMLPanel>
 
</ui:UiBinder>
/branches/cel3/src/org/tela_botanica/client/vues/PanneauObservationImage.java
New file
0,0 → 1,20
package org.tela_botanica.client.vues;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Widget;
 
public class PanneauObservationImage extends Composite implements IsWidget {
 
private static PanneauObservationImageUiBinder uiBinder = GWT.create(PanneauObservationImageUiBinder.class);
 
interface PanneauObservationImageUiBinder extends UiBinder<Widget, PanneauObservationImage>
{
}
public PanneauObservationImage() {
initWidget(uiBinder.createAndBindUi(this));
}
}
/branches/cel3/src/org/tela_botanica/client/dao/ListeObservationDao.java
New file
0,0 → 1,132
package org.tela_botanica.client.dao;
 
import org.tela_botanica.client.evenements.observation.ListeObservationRecueEvenement;
import org.tela_botanica.client.modeles.observation.Observation;
import org.tela_botanica.client.utils.CelUtil;
import org.tela_botanica.client.utils.Configuration;
 
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestBuilder;
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.JSONParser;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.Window;
 
public class ListeObservationDao {
EventBus busEvenement = null;
public ListeObservationDao(EventBus busEvenement) {
this.busEvenement = busEvenement;
}
/**
* Envoie une requete au serveur jrest pour obtenir le nombre d'observation correspondant
* à des critères données en paramètres
* @param r le rafraichissable qui demande la mise à jour
* @param criteres un tableau nom/valeur des critères pour les observations
*/
public final void obtenirListeObservation(final String utilisateur, final String[][] criteres)
{
String requete = "" ;
if(criteres != null)
{
// on construit les paramètres du get avec les critères (&critere1=valeur1&critere2=valeur2 etc...)
// ils contiennent limite et taille page et autres filtres (communes , lieu dit etc ...)S
for (int i = 0; i < criteres.length; i++) {
if(criteres[i][1] != null && !criteres[i][1].equals(""))
{
if(i!= 0)
{
requete += "&";
}
requete += criteres[i][0]+"="+URL.encodeComponent(criteres[i][1]) ;
}
}
}
// on envoie le get asynchrone
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET,Configuration.getServiceBaseUrl()
+"/InventoryObservationList/"+utilisateur+"/"+requete) ;
try {
rb.sendRequest(null, new RequestCallback() {
 
public void onError(final Request request, final Throwable exception) {
// TODO Auto-generated method stub
}
 
public void onResponseReceived(final Request request,
final Response response) {
final JSONValue responseValue = JSONParser.parseStrict(response.getText());
JSONArray reponse=null;
Observation[] observationData;
// si c'est un tableau
if ((reponse=responseValue.isArray()) != null) {
JSONArray observation;
final int taillemax = reponse.size();
observationData = new Observation[taillemax];
for (int i = 0; i < taillemax; i++) {
if ((observation=reponse.get(i).isArray()) != null) {
String transmis=((JSONString) observation.get(13)).stringValue();
String identifiantLocalite=((JSONString) observation.get(14)).toString();
String nomSaisi=CelUtil.toCelString(((JSONString) observation.get(0)).toString());
String nomRetenu=CelUtil.toCelString(((JSONString) observation.get(2)).toString());
String numeroNomenclaturalSaisi=((JSONString) observation.get(1)).stringValue();
String numeroNomenclaturalRetenu=((JSONString) observation.get(3)).stringValue();
String numeroTaxonomique=((JSONString) observation.get(4)).stringValue();
String famille=CelUtil.toCelString(((JSONString) observation .get(5)).toString());
String localite=CelUtil.toCelString(((JSONString) observation .get(6)).toString());
String lieudit=CelUtil.toCelString(((JSONString) observation .get(9)).toString());
String station=CelUtil.toCelString(((JSONString) observation .get(10)).toString());
String milieu=CelUtil.toCelString(((JSONString) observation .get(11)).toString());
String commentaire=CelUtil.toCelString(((JSONString) observation .get(12)).toString());
String date=((JSONString) observation .get(8)).stringValue();
String numeroOrdre=((JSONString) observation.get(7)).stringValue();
String coordX=((JSONString) observation.get(15)).stringValue();
String coordY=((JSONString) observation.get(16)).stringValue();
String motsCles=((JSONString) observation.get(17)).stringValue();
Observation obs=new Observation(transmis, nomSaisi, nomRetenu, numeroNomenclaturalSaisi, numeroNomenclaturalRetenu ,numeroTaxonomique, famille, localite, identifiantLocalite, lieudit, station, milieu, commentaire, date, numeroOrdre/*, motsCles*/);
obs.setCoordonneeX(coordX);
obs.setCoordonneeY(coordY);
obs.setMotsCles(motsCles);
observationData[i] = obs;
}
}
} else {
observationData = new Observation[0] ;
}
busEvenement.fireEvent(new ListeObservationRecueEvenement(observationData));
}
}) ;
 
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/branches/cel3/src/org/tela_botanica/client/Cel3.java
New file
0,0 → 1,28
package org.tela_botanica.client;
 
import org.tela_botanica.client.dao.ListeObservationDao;
import org.tela_botanica.client.evenements.observation.ObservationBusEvenement;
import org.tela_botanica.client.utils.Configuration;
import org.tela_botanica.client.vues.CelPanneauPrincipal;
 
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.event.shared.SimpleEventBus;
import com.google.gwt.user.client.ui.RootLayoutPanel;
import com.google.gwt.user.client.ui.SuggestBox;
 
public class Cel3 implements EntryPoint {
 
@Override
public void onModuleLoad() {
CelPanneauPrincipal panneauPrincipal = new CelPanneauPrincipal();
RootLayoutPanel rp = RootLayoutPanel.get();
Configuration config = new Configuration();
ListeObservationDao liDao = new ListeObservationDao(ObservationBusEvenement.get());
liDao.obtenirListeObservation("aurelien@tela-botanica.org", new String[0][0]);
rp.add(panneauPrincipal);
}
 
}
/branches/cel3/src/org/tela_botanica/client/modeles/observation/Observation.java
New file
0,0 → 1,264
package org.tela_botanica.client.modeles.observation;
 
import com.google.gwt.user.client.Random;
 
 
public class Observation {
 
 
private String transmis=null;
private String nomSaisi=null;
private String nomRetenu=null;
private String numeroNomenclaturalSaisi=null;
private String numeroNomenclaturalRetenu=null;
private String numeroTaxonomique=null;
private String famille=null;
private String localite=null;
private String identifiantLocalite=null;
private String lieudit=null;
private String station=null;
private String milieu=null;
private String commentaire=null;
private String date=null;
private String numeroOrdre=null;
private String motsCles=null;
private String coordonneeX=null;
private String coordonneeY=null;
private String referentielGeo=null;
 
public Observation() {
}
 
/**
* Une observation telle que stockee dans la base de donnee
*
* @param transmis
* @param nomSaisi
* @param nomRetenu
* @param numeroNomenclaturalSaisi
* @param numeroNomenclaturalRetenu
* @param numeroTaxonomique
* @param famille
* @param localite
* @param IdentifiantLocalite
* @param lieudit
* @param station
* @param milieu
* @param commentaire
* @param date
* @param numeroOrdre
*/
public Observation(String transmis, String nomSaisi, String nomRetenu, String numeroNomenclaturalSaisi, String numeroNomenclaturalRetenu, String numeroTaxonomique, String famille, String localite, String identifiantLocalite, String lieudit, String station, String milieu, String commentaire, String date, String numeroOrdre) {
this.transmis = transmis;
this.nomSaisi = nomSaisi;
this.nomRetenu = nomRetenu;
this.numeroNomenclaturalSaisi = numeroNomenclaturalSaisi;
this.numeroNomenclaturalRetenu = numeroNomenclaturalRetenu;
this.numeroTaxonomique = numeroTaxonomique;
this.famille = famille;
this.identifiantLocalite = identifiantLocalite;
this.lieudit = lieudit;
this.station = station;
this.milieu = milieu;
this.commentaire = commentaire;
this.date = date;
this.numeroOrdre = numeroOrdre;
// Suppresion indication departementale (on pourrait faire mieux !!)
if(localite != null) {
int pos=localite.indexOf(" (" );
if (pos>=0) {
this.localite=localite.substring(0,pos);
}
else {
this.localite=localite;
}
}
this.motsCles = "";
}
 
/**
* Une observation saisie ou modifiee
*
* @param nomSaisi
* @param numeroNomenclaturalSaisi
* @param localite
* @param IdentifiantLocalite
* @param lieudit
* @param station
* @param milieu
* @param commentaire
* @param date
*
*/
public Observation(String nomSaisi, String numeroNomenclaturalSaisi, String localite, String identifiantLocalite, String lieudit, String station, String milieu, String commentaire, String date) {
this.nomSaisi = nomSaisi;
this.numeroNomenclaturalSaisi = numeroNomenclaturalSaisi;
this.identifiantLocalite = identifiantLocalite;
this.lieudit = lieudit;
this.station = station;
this.milieu = milieu;
this.commentaire = commentaire;
this.date = date;
// Suppresion indication departementale (on pourrait faire mieux !!)
if(localite != null) {
int pos=localite.indexOf(" (" );
if (pos>=0) {
this.localite=localite.substring(0,pos);
}
else {
this.localite=localite;
}
}
this.motsCles = "" ;
}
 
public String getNomSaisi() {
return nomSaisi;
}
 
 
public String getNumeroOrdre() {
return numeroOrdre;
}
 
 
public String getCommentaire() {
return commentaire;
}
 
 
public String getDate() {
return date;
}
 
 
public String getFamille() {
return famille;
}
 
 
public String getLieudit() {
return lieudit;
}
 
 
public String getLocalite() {
return localite;
}
 
 
public String getIdentifiantLocalite() {
if(identifiantLocalite != null) {
identifiantLocalite = identifiantLocalite.replaceAll("\"", "");
}
return identifiantLocalite;
}
 
public String getMilieu() {
return milieu;
}
 
 
public String getNomRetenu() {
return nomRetenu;
}
 
 
public String getNumeroNomenclaturalSaisi() {
return numeroNomenclaturalSaisi;
}
 
 
public String getNumeroNomenclaturalRetenu() {
return numeroNomenclaturalRetenu;
}
 
 
public String getNumeroTaxonomique() {
return numeroTaxonomique;
}
 
 
public String getStation() {
return station;
}
 
 
public String getTransmis() {
return transmis;
}
public String getMotsCles() {
return motsCles;
}
public String getCoordonneeX() {
return this.coordonneeX ;
}
public String getCoordonneeY() {
return this.coordonneeY ;
}
public String getReferentielGeo() {
return this.referentielGeo ;
}
public void setMotsCles(String motsCles) {
this.motsCles = motsCles;
}
public void setNumeroOrdre(String numeroOrdre) {
this.numeroOrdre = numeroOrdre;
}
public void setCoordonneeX(String x) {
this.coordonneeX = x;
}
public void setCoordonneeY(String y) {
this.coordonneeY = y;
}
public void setReferentielGeo(String refGeo) {
this.referentielGeo = refGeo;
}
 
 
public static Observation creerObservationDummy() {
String transmis = Random.nextBoolean()+"";
String nomSaisi = "nom saisi "+Random.nextInt();
String nomRetenu = "nom retenu "+Random.nextInt();
String numeroNomenclaturalSaisi = Random.nextInt()+"";
String numeroNomenclaturalRetenu = Random.nextInt()+"";
String numeroTaxonomique = Random.nextInt()+"";
String famille = "famille "+Random.nextInt();
String localite = "localite "+Random.nextInt();
String identifiantLocalite = Random.nextInt()+"";
String lieudit = "lieu dit "+Random.nextInt();
String station = "station "+Random.nextInt();
String milieu = "milieu "+Random.nextInt();
String commentaire = "commentaire "+Random.nextInt();
String date = Random.nextInt(30)+"/"+Random.nextInt(30)+"/"+Random.nextInt(2011);
String numeroOrdre = ""+Random.nextInt(100);
return new Observation(transmis, nomSaisi, nomRetenu, numeroNomenclaturalSaisi, numeroNomenclaturalRetenu, numeroTaxonomique, famille, localite, identifiantLocalite, lieudit, station, milieu, commentaire, date, numeroOrdre);
}
 
 
}
/branches/cel3/src/org/tela_botanica/client/evenements/observation/ListeObservationRecueEvenementHandler.java
New file
0,0 → 1,7
package org.tela_botanica.client.evenements.observation;
 
import com.google.gwt.event.shared.EventHandler;
 
public interface ListeObservationRecueEvenementHandler extends EventHandler {
public void onReceptionListeObservation(ListeObservationRecueEvenement listeObservationRecueEvenement);
}
/branches/cel3/src/org/tela_botanica/client/evenements/observation/ListeObservationRecueEvenement.java
New file
0,0 → 1,30
package org.tela_botanica.client.evenements.observation;
import org.tela_botanica.client.modeles.observation.Observation;
 
import com.google.gwt.event.shared.GwtEvent;
 
public class ListeObservationRecueEvenement extends GwtEvent<ListeObservationRecueEvenementHandler> {
private Observation[] observationsRecues = null;
public static Type<ListeObservationRecueEvenementHandler> TYPE = new Type<ListeObservationRecueEvenementHandler>();
public ListeObservationRecueEvenement(Observation[] obs) {
observationsRecues = obs;
}
public Observation[] getListeObservationRecue() {
return observationsRecues;
}
@Override
public Type<ListeObservationRecueEvenementHandler> getAssociatedType() {
return TYPE;
}
 
@Override
protected void dispatch(ListeObservationRecueEvenementHandler handler) {
handler.onReceptionListeObservation(this);
}
 
}
/branches/cel3/src/org/tela_botanica/client/evenements/observation/ObservationBusEvenement.java
New file
0,0 → 1,29
package org.tela_botanica.client.evenements.observation;
 
import java.util.HashSet;
import java.util.List;
import java.util.ListIterator;
import java.util.Set;
 
import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.SimpleEventBus;
import com.google.gwt.event.shared.UmbrellaException;
 
public class ObservationBusEvenement extends SimpleEventBus {
 
private static ObservationBusEvenement observationBusEvenement = null;
public static ObservationBusEvenement get() {
if(observationBusEvenement == null) {
observationBusEvenement = new ObservationBusEvenement();
}
return observationBusEvenement;
}
private ObservationBusEvenement() {
super();
}
}
/branches/cel3/src/org/tela_botanica/client/presenters/ListeObservationPresenter.java
New file
0,0 → 1,7
package org.tela_botanica.client.presenters;
 
public class ListeObservationPresenter {
 
}
/branches/cel3/src/org/tela_botanica/cel3.gwt.xml
New file
0,0 → 1,27
<?xml version="1.0" encoding="UTF-8"?>
<module rename-to="cel3">
<!-- Inherit the core Web Toolkit stuff. -->
<inherits name='com.google.gwt.user.User'/>
 
<!-- Inherit the default GWT style sheet. You can change -->
<!-- the theme of your GWT application by uncommenting -->
<!-- any one of the following lines. -->
<inherits name='com.google.gwt.user.theme.standard.Standard'/>
<!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
<!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/> -->
 
<!-- Other module inherits -->
<inherits name="com.google.gwt.activity.Activity"/>
<inherits name="com.google.gwt.place.Place"/>
<!-- Parsing JSON -->
<inherits name='com.google.gwt.json.JSON' />
 
<!-- Specify the app entry point class. -->
<entry-point class='org.tela_botanica.client.Cel3'/>
 
<!-- Specify the paths for translatable code -->
<source path='client'/>
<source path='shared'/>
 
</module>