Subversion Repositories eFlore/Archives.cel-v2

Compare Revisions

Ignore whitespace Rev 49 → Rev 48

/trunk/www/org.tela_botanica.cel2/images/vide.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/www/org.tela_botanica.cel2/4D12BCA46FB75F89057C18F600A3EACE.cache.xml
File deleted
\ No newline at end of file
/trunk/www/org.tela_botanica.cel2/5E5FB118688C2B22AE4994F5E4159BCF.cache.js
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/www/org.tela_botanica.cel2/D7BFA3693FABA3E3CDF246E3E031E58B.cache.xml
File deleted
\ No newline at end of file
/trunk/www/org.tela_botanica.cel2/A2E0E0E86C90ABDC6518BFF90B3D8074.cache.xml
File deleted
\ No newline at end of file
/trunk/www/org.tela_botanica.cel2/D7BFA3693FABA3E3CDF246E3E031E58B.cache.html
File deleted
\ No newline at end of file
/trunk/www/org.tela_botanica.cel2/4D12BCA46FB75F89057C18F600A3EACE.cache.html
File deleted
\ No newline at end of file
/trunk/www/org.tela_botanica.cel2/config.js
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/www/org.tela_botanica.cel2/A2E0E0E86C90ABDC6518BFF90B3D8074.cache.html
File deleted
\ No newline at end of file
/trunk/www/org.tela_botanica.cel2/2EA4FFFC1C98D658D7C52877695CC188.cache.xml
File deleted
\ No newline at end of file
/trunk/www/org.tela_botanica.cel2/2EA4FFFC1C98D658D7C52877695CC188.cache.html
File deleted
\ No newline at end of file
/trunk/www/org.tela_botanica.cel2/D7BFA3693FABA3E3CDF246E3E031E58B.cache.js
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/www/org.tela_botanica.cel2/4D12BCA46FB75F89057C18F600A3EACE.cache.js
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/www/org.tela_botanica.cel2/A2E0E0E86C90ABDC6518BFF90B3D8074.cache.js
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/www/org.tela_botanica.cel2/clear.cache.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/www/org.tela_botanica.cel2/2EA4FFFC1C98D658D7C52877695CC188.cache.js
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/www/org.tela_botanica.cel2/5E5FB118688C2B22AE4994F5E4159BCF.cache.xml
File deleted
\ No newline at end of file
/trunk/www/org.tela_botanica.cel2/5E5FB118688C2B22AE4994F5E4159BCF.cache.html
File deleted
\ No newline at end of file
/trunk/www/org.tela_botanica.cel2/cel2.html
1,3 → 1,16
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
 
<!-- The HTML 4.01 Transitional DOCTYPE declaration-->
<!-- above set at the top of the file will set -->
<!-- the browser's rendering engine into -->
<!-- "Standards Mode", which gives better cross -->
<!-- browser compatibility to the application. -->
<!-- Omitting this line leaves most browsers in -->
<!-- "Quirks mode", emulating the bugs in older -->
<!-- browser versions. -->
 
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
11,11 → 24,7
<!-- If you add any GWT meta tags, they must -->
<!-- be added before this line. -->
<!-- -->
<script type="text/javascript" language="javascript" src="config.js"></script>
<script type="text/javascript" language="javascript" src="org.tela_botanica.cel2.nocache.js"></script>
</head>
 
<!-- -->
/trunk/www/org.tela_botanica.cel2/org.tela_botanica.cel2.nocache.js
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/www/org.tela_botanica.cel2/org.tela_botanica.cel2-xs.nocache.js
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/src/org/tela_botanica/client/CarnetEnLigne.java
New file
0,0 → 1,51
/**
Auteurs :
- David Delon david.delon@clapas.net 2007
 
Licence Cecill/GPL
*/
 
/*
* CarnetEnLigne.java (Point d'entree de l'application carnet en ligne)
*
*
*/
 
package org.tela_botanica.client;
 
 
import com.google.gwt.core.client.EntryPoint;
 
 
 
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
 
public class CarnetEnLigne implements EntryPoint {
 
public void onModuleLoad() {
 
// new Mediator();
new CarnetEnLigneMediateur();
 
}
 
}
 
/* +--Fin du code ---------------------------------------------------------------------------------------+
* $Log$
* Revision 1.1 2008-06-04 16:47:56 ddelon
* modele mvc+mediateur
*
* Revision 1.11 2008-01-02 21:26:04 ddelon
* mise en place mygwt
*
* Revision 1.10 2007-09-17 19:25:34 ddelon
* Documentation
*
*
*/
/trunk/src/org/tela_botanica/client/CarnetEnLigneMediateur.java
1,187 → 1,97
package org.tela_botanica.client;
 
import org.tela_botanica.client.image.ImageMediateur;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.interfaces.iMediateur;
import org.tela_botanica.client.interfaces.iRetourUtilisateur;
import org.tela_botanica.client.modeles.Utilisateur;
 
import org.tela_botanica.client.observation.ObservationMediateur;
import org.tela_botanica.client.vues.EtatConnexionVue;
import org.tela_botanica.client.vues.FormulaireDeConnexionVue;
 
import com.google.gwt.user.client.Window;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.layout.VerticalLayout;
 
/**
* Mediateur gérant les interactions entre vues et les echanges de données
* C'est un singleton.
* @author david delon
*
*/
 
public class CarnetEnLigneMediateur implements Rafraichissable {
public class CarnetEnLigneMediateur {
// Evenenements
final static public int ETAT_CONNEXION=1;
final static public int DECONNEXION=2;
final static public int CONNEXION = 3;
/**
* booleen qui verifie l'unicite de l'instance
*/
private static boolean estInstancie = false ;
private final CarnetEnLigneModele carnetEnLigneModele;
private Utilisateur utilisateur=null;
/**
* modele de données
*/
private CarnetEnLigneModele carnetEnLigneModele=null;
// Fonctionnement servicecs
private boolean async=true;
 
/**
* panneau principal de l'application "Carnet en ligne"
*/
 
private Panel panneauPrincipalCarnetEnLigne=new Panel("Carnet en ligne");
public CarnetEnLigneMediateur() {
carnetEnLigneModele=new CarnetEnLigneModele();
//addListener(ETAT_CONNEXION,this);
getEtatUtilisateur(); // Alimente Objet Utilisateur
}
/**
* panneau a onglet pour les observation et les images
*/
private Panel ongletsObservationsImages=null;
/**
* Indicateur d'etat de la connexion utilisateur
* Fin construction (est appelle sur reception evenement Applicatif ETAT_CONNEXION)
*
*/
private EtatConnexionVue etatConnexionVue=null;
 
/**
* Texte d'invite connexion
*/
private final String texteDeconnexion="Utilisez ce carnet en ligne pour saisir vos observations, <u>identifiez-vous</u> pour les transmettre à Tela Botanica";
 
/**
* Boolean indiquant un essai de connexion
*/
private boolean tentativeConnection=false;
 
/**
* Formulaire de connexion (lazy instantiation)
*
*/
private FormulaireDeConnexionVue formulaireDeConnexionVue=null;
 
/**
* Mediateur Gestion des images
*/
private ImageMediateur imageMediateur=null;
/**
* Mediateur Gestion des observations
*/
private ObservationMediateur observationMediateur=null;
 
 
/**
* Utilisateur en cours
*/
 
private void _CarnetEnLigneMediateur() {
private Utilisateur utilisateur=null;
ImageMediateur.Instance() ;
new ObservationMediateur(this);
 
public static CarnetEnLigneMediateur Instance()
{
if(!estInstancie)
{
estInstancie = true ;
return new CarnetEnLigneMediateur() ;
}
else
{
return null ;
}
}
/**
* constructeur privé (on accède a la classe par la méthode getInstance
*/
private void getEtatUtilisateur() { // Pourrait devenir publique ...
// TODO : utiliser une factory ici : Avec Modele synchrone ou non, ou au niveau methode comme dans cette exemple
private CarnetEnLigneMediateur() {
// Disposition
// Pas possible de traiter dans Modele car retour asynchrone devant etre traité ici.
panneauPrincipalCarnetEnLigne.setLayout(new VerticalLayout());
 
// if asynchrone
// On crée un modèle d'acces aux donnnes
carnetEnLigneModele=CarnetEnLigneModele.Instance();
// La vue affichant le statut de la connexion
if (async) {
carnetEnLigneModele.getUtilisateurAsynchroneDAO(
new iRetourUtilisateur() {
public void onRetour(Utilisateur uti) {
utilisateur=uti;
// fireEvent(ETAT_CONNEXION);
}
 
etatConnexionVue=new EtatConnexionVue(this);
}
);
}
// else if synchrone
else {
 
// Le panneau à onglet qui contient les 2 applications Observation et Images
utilisateur= carnetEnLigneModele.getUtilisateurSynchroneDAO();
_CarnetEnLigneMediateur();
 
}
 
ongletsObservationsImages = new Panel();
panneauPrincipalCarnetEnLigne.add(etatConnexionVue);
 
// on ajoute le panneau a onglet au panneau principal
panneauPrincipalCarnetEnLigne.add(ongletsObservationsImages);
}
 
// On ajoute les applications
observationMediateur = ObservationMediateur.Instance(this);
// imageMediateur= ImageMediateur.Instance();
 
// on ajoute les panneaux principaux des applications au panneau à onglets
// ongletsObservationsImages.add(imageMediateur.getPanneauPrincipalImage());
ongletsObservationsImages.add(observationMediateur.getPanneauPrincipalObservation());
// Evenenements Applicatifs
/*
public void handleEvent(BaseEvent be) {
if (be.type==CarnetEnLigneMediateur.ETAT_CONNEXION) {
_CarnetEnLigneMediateur(); // Fin initialisation
}
}
*/
public void getEtatUtilisateur() {
carnetEnLigneModele.getEtatUtilisateur(this);
}
 
 
// Methode publiques
/**
* Recherche Identifiant utilisateur en cours et etat de connection
* @return Utilisateur
198,8 → 108,18
public void deconnecterUtilisateur() {
 
carnetEnLigneModele.deconnecterUtilisateur(this, utilisateur.getIdentifiant());
carnetEnLigneModele.deconnecterUtilisateur(
new iRetourUtilisateur() {
public void onRetour(Utilisateur uti) {
utilisateur=uti;
//fireEvent(DECONNEXION);
}
 
}, utilisateur.getIdentifiant()
);
 
}
206,94 → 126,21
 
public void connecterUtilisateur(String login, String password) {
tentativeConnection=true;
carnetEnLigneModele.connecterUtilisateur(this, login, password);
carnetEnLigneModele.connecterUtilisateur(
new iRetourUtilisateur() {
public void onRetour(Utilisateur uti) {
utilisateur=uti;
//fireEvent(CONNEXION);
}
 
}, login, password
);
 
}
 
 
/**
* Affichage etat de la connexion
*/
private void afficheEtatConnexion() {
if (!utilisateur.isIdentifie()) {
etatConnexionVue.setEtat(texteDeconnexion,false);
}
else {
etatConnexionVue.setEtat(utilisateur.getIdentifiant()+ " (deconnexion)",true);
}
}
}
 
/**
*
* Affichage boite de connexion
*
*/
public void afficherDialogueConnexion() {
if (formulaireDeConnexionVue==null) {
formulaireDeConnexionVue= new FormulaireDeConnexionVue(this);
}
// Position it roughly in the middle of the screen.
int left = (Window.getClientWidth() - 512) / 2;
int top = (Window.getClientHeight() - 256) / 2;
formulaireDeConnexionVue.setPopupPosition(left, top);
formulaireDeConnexionVue.show();
}
 
 
 
public Panel getPanneauPrincipalCarnetEnLigne() {
return panneauPrincipalCarnetEnLigne;
}
 
// TODO : repandre rafraichissement
 
public void rafraichir(Object nouvelleDonnees, boolean repandreRaffraichissement) {
 
if (nouvelleDonnees instanceof Utilisateur) {
utilisateur = (Utilisateur) nouvelleDonnees;
afficheEtatConnexion();
if ((tentativeConnection) && !utilisateur.isIdentifie()) {
formulaireDeConnexionVue.afficherMessageAlerte();
}
else {
if ((tentativeConnection) && utilisateur.isIdentifie()) {
formulaireDeConnexionVue.hide();
}
}
 
// On lance l'affichage des observations
observationMediateur.obtenirNombreObservation();
 
}
 
}
 
 
}
/trunk/src/org/tela_botanica/client/image/ImageMediateur.java
205,7 → 205,9
panneauPrincipalImage.add(panneauMenuEtOngletsImage,regionCentre);
// et le panneau de métadonnées et d'info sur le coté droit
panneauPrincipalImage.add(detailsEtMotsCles,regionEst);
}
/**
* Change la valeur du booleen de selection
* @param selection la nouvelle valeur du booléen
412,14 → 414,6
}
public void afficherMenuId()
{
IdVue i = new IdVue(this) ;
i.show() ;
}
/**
* Renvoie l'identifiant de la vue en cours
* @return l'identifiant de la vue en cours de visualisation
1048,10 → 1042,12
}
public void afficherMenuId()
{
IdVue i = new IdVue(this) ;
i.show() ;
}
// Lancement identification
/**
* C'est dans cette fonction que doivent être renvoyé les valeurs des filtres
* sous forme de tableau [nom, valeur]
/trunk/src/org/tela_botanica/client/vues/BarrePaginationObservationVue.java
File deleted
/trunk/src/org/tela_botanica/client/vues/ListeObservationVue.java
File deleted
/trunk/src/org/tela_botanica/client/vues/AutoCompleteAsyncTextBox.java
File deleted
\ No newline at end of file
/trunk/src/org/tela_botanica/client/vues/FormulaireDeConnexionVue.java
File deleted
/trunk/src/org/tela_botanica/client/vues/LocationAssistantVue.java
File deleted
\ No newline at end of file
/trunk/src/org/tela_botanica/client/vues/EtatConnexionVue.java
File deleted
/trunk/src/org/tela_botanica/client/vues/FormulaireSaisieObservationVue.java
File deleted
/trunk/src/org/tela_botanica/client/interfaces/FournisseurListe.java
File deleted
/trunk/src/org/tela_botanica/client/CarnetEnLigneModele.java
6,87 → 6,60
*/
 
 
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Configuration;
import org.tela_botanica.client.interfaces.iRetourUtilisateur;
import org.tela_botanica.client.modeles.Utilisateur;
import org.tela_botanica.client.modeles.UtilisateurAsynchroneDAO;
 
import com.google.gwt.i18n.client.Dictionary;
 
 
public class CarnetEnLigneModele {
 
private final String baseURL; // Url d'appel aux services
/**
* booleen qui verifie l'unicite de l'instance
*/
private static boolean estInstancie = false ;
/**
* La configuration en cours
*/
private Configuration config = null;
 
/**
* Constructeur
*/
public static CarnetEnLigneModele Instance()
{
if(!estInstancie)
{
estInstancie = true ;
return new CarnetEnLigneModele() ;
}
else
{
return null ;
}
}
private CarnetEnLigneModele() {
public CarnetEnLigneModele() {
config = new Configuration();
baseURL=Dictionary.getDictionary("Parameters").get("serviceBaseUrl");
}
 
/**
*
*
*/
public void getUtilisateurAsynchroneDAO(final iRetourUtilisateur retour) {
 
public void deconnecterUtilisateur(Rafraichissable r, String user) {
new UtilisateurAsynchroneDAO().getUtilisateur(baseURL,retour );
 
new UtilisateurAsynchroneDAO(this).deconnecterUtilisateur(r,user );
 
 
}
 
public void connecterUtilisateur(Rafraichissable r, String login , String password) {
new UtilisateurAsynchroneDAO(this).connecteUtilisateur(r,login, password );
}
/**
*
*
*/
public Utilisateur getUtilisateurSynchroneDAO() {
 
return new Utilisateur("David Delon synchrone",true);
 
 
public void getEtatUtilisateur(Rafraichissable r) {
new UtilisateurAsynchroneDAO(this).getEtatUtilisateur(r);
}
 
public void deconnecterUtilisateur(final iRetourUtilisateur retour, String user) {
 
new UtilisateurAsynchroneDAO().deconnecterUtilisateur(baseURL,retour,user );
 
/**
* Accesseur pour la configuration en cours d'utilisation
*
* @return la configuration
*/
public Configuration getConfig() {
 
return config;
}
 
public void connecterUtilisateur(final iRetourUtilisateur retour, String login , String password) {
new UtilisateurAsynchroneDAO().connecteUtilisateur(baseURL,retour,login, password );
}
 
}
/trunk/src/org/tela_botanica/client/cel2.java
1,12 → 1,20
package org.tela_botanica.client;
 
import org.tela_botanica.client.image.ImageMediateur;
 
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.gwtext.client.widgets.Viewport;
 
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
 
public class cel2 implements EntryPoint {
 
/**
13,16 → 21,9
* This is the entry point method.
*/
public void onModuleLoad() {
 
CarnetEnLigneMediateur carnetEnLigneMediateur= CarnetEnLigneMediateur.Instance();
ImageMediateur im = ImageMediateur.Instance() ;
new Viewport(carnetEnLigneMediateur.getPanneauPrincipalCarnetEnLigne());
// On appelle la gestion de l'identification
// Veillez d'ailleurs a ne pas appeller de services dans les constructeurs
carnetEnLigneMediateur.getEtatUtilisateur();
 
new Viewport(im.getPanneauPrincipalImage());
}
}
/trunk/src/org/tela_botanica/client/modeles/ReferentielCommune.java
File deleted
/trunk/src/org/tela_botanica/client/modeles/ListeReferentielCommune.java
File deleted
/trunk/src/org/tela_botanica/client/modeles/ListeObservation.java
File deleted
/trunk/src/org/tela_botanica/client/modeles/Configuration.java
File deleted
/trunk/src/org/tela_botanica/client/modeles/ListeReferentielCommuneAsynchroneDAO.java
File deleted
/trunk/src/org/tela_botanica/client/modeles/ListeObservationAsynchroneDAO.java
File deleted
/trunk/src/org/tela_botanica/client/modeles/NombreObservationAsynchroneDAO.java
File deleted
/trunk/src/org/tela_botanica/client/modeles/UtilisateurAsynchroneDAO.java
5,8 → 5,7
*
*/
 
import org.tela_botanica.client.CarnetEnLigneModele;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.interfaces.iRetourUtilisateur;
 
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONBoolean;
20,25 → 19,15
 
/**
* Le modèle associé au DAO
*/
private CarnetEnLigneModele carnetEnLigneModele = null ;
/**
* Constructeur
*/
public UtilisateurAsynchroneDAO(CarnetEnLigneModele carnetEnLigneModele) {
this.carnetEnLigneModele=carnetEnLigneModele;
public UtilisateurAsynchroneDAO() {
}
/**
* Methode de classe d'appel du service gestion identification
* @param baseURL : URL du service
45,11 → 34,11
* @param retour : methode appelle en retour d'appel
*/
public void getEtatUtilisateur(final Rafraichissable r) {
public void getUtilisateur(String baseURL, final iRetourUtilisateur retour) {
 
// Recherche identifiant utilisateur identifie
 
HTTPRequest.asyncGet(carnetEnLigneModele.getConfig().getServiceBaseUrl() + "/User/", new ResponseTextHandler() {
HTTPRequest.asyncGet(baseURL + "/User/", new ResponseTextHandler() {
 
public void onCompletion(String str) {
JSONValue jsonValue = JSONParser.parse(str);
62,7 → 51,7
boolean identifie = ((JSONBoolean) jsonArray.get(1))
.booleanValue(); // Drapeau leve si utilisateur
// deja identifie
r.rafraichir(new Utilisateur(identifiant, identifie),true);
retour.onRetour(new Utilisateur(identifiant, identifie));
}
}
});
71,9 → 60,9
 
 
 
public void deconnecterUtilisateur(final Rafraichissable r, String user) {
public void deconnecterUtilisateur(String baseURL, final iRetourUtilisateur retour, String user) {
 
HTTPRequest.asyncGet(carnetEnLigneModele.getConfig().getServiceBaseUrl()+ "/User/" + user ,
HTTPRequest.asyncGet(baseURL + "/User/" + user ,
new ResponseTextHandler() {
 
public void onCompletion(String str) {
89,7 → 78,8
.booleanValue(); // Drapeau leve si utilisateur
// deja identifie
r.rafraichir(new Utilisateur(identifiant, identifie),true);
 
retour.onRetour(new Utilisateur(identifiant, identifie));
}
}
});
97,9 → 87,9
 
 
 
public void connecteUtilisateur (final Rafraichissable r, String login, String password) {
public void connecteUtilisateur(String baseURL,final iRetourUtilisateur retour, String login, String password) {
 
HTTPRequest.asyncGet(carnetEnLigneModele.getConfig().getServiceBaseUrl() + "/User/" + login + "/" + password ,
HTTPRequest.asyncGet(baseURL + "/User/" + login + "/" + password ,
new ResponseTextHandler() {
 
public void onCompletion(String str) {
117,7 → 107,7
// deja identifie
 
r.rafraichir(new Utilisateur(identifiant, identifie),true);
retour.onRetour(new Utilisateur(identifiant, identifie));
}
}
});
124,7 → 114,4
 
}
 
 
 
 
}
/trunk/src/org/tela_botanica/client/modeles/ObservationAsynchroneDAO.java
New file
0,0 → 1,115
package org.tela_botanica.client.modeles;
 
/**
* Modele DAO, specifique, permettant la validation, l'acces aux donnees distantes et la présentation des donnees en retour
*
*/
 
import org.tela_botanica.client.Util;
import org.tela_botanica.client.interfaces.iRetourObservation;
 
import com.google.gwt.http.client.URL;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONNumber;
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.HTTPRequest;
import com.google.gwt.user.client.ResponseTextHandler;
 
public class ObservationAsynchroneDAO {
 
/**
* Constructeur
*/
public ObservationAsynchroneDAO() {
}
// TODO Classe Filtre pour les parametres ?
public void getNombreObservation(String baseURL, final iRetourObservation retour, String identifiant, String identifiantLocalite, String localite, String annee, String mois, String jour, String lieudit, String rechercheLibre) {
 
HTTPRequest.asyncGet(baseURL + "/InventoryItemList/" + identifiant + "/" + identifiantLocalite + "/" + URL.encodeComponent(localite) + "/" + annee + "/" + mois + "/" + jour + "/" + URL.encodeComponent(rechercheLibre) + "/" + URL.encodeComponent(lieudit),
new ResponseTextHandler() {
 
public void onCompletion(String str) {
 
JSONValue jsonValue = JSONParser.parse(str);
JSONNumber jsonNumber;
if ((jsonNumber = jsonValue.isNumber()) != null) {
retour.onRetour(new Observation((int) jsonNumber.getValue()));
}
}
});
 
}
 
 
 
public void getListeObservation(String baseURL,final iRetourObservation retour, String identifiant, String identifiantLocalite, String localite, String annee, String mois, String jour, String lieudit, String rechercheLibre, int debut, int longueur)
{
 
HTTPRequest.asyncGet(baseURL + "/InventoryItemList/" + identifiant + "/" + identifiantLocalite + "/" + URL.encodeComponent(localite) +"/" + annee + "/" + mois + "/" + jour + "/" + URL.encodeComponent(rechercheLibre) + "/" + URL.encodeComponent(lieudit) + "/"
+ debut + "/" + longueur ,
new ResponseTextHandler() {
public void onCompletion(String str) {
 
JSONValue jsonValue = JSONParser.parse(str);
JSONArray jsonArray;
JSONArray jsonArrayNested;
if ((jsonArray = jsonValue.isArray()) != null) {
if ((jsonArray = jsonValue.isArray()) != null) {
int arraySize = jsonArray.size();
Observation[] listeObservation=new Observation[arraySize];
for (int i = 0; i < arraySize; i++) {
if ((jsonArrayNested = jsonArray.get(i).isArray()) != null) {
String transmis=((JSONString) jsonArrayNested.get(13)).stringValue();
String nomSaisi=Util.toCelString(((JSONString) jsonArrayNested.get(0)).toString());
String nomRetenu=Util.toCelString(((JSONString) jsonArrayNested.get(2)).toString());
String numeroNomenclatural=((JSONString) jsonArrayNested.get(3)).stringValue();
String numeroTaxonomique=((JSONString) jsonArrayNested.get(4)).stringValue();
String famille=Util.toCelString(((JSONString) jsonArrayNested .get(5)).toString());
String localite=Util.toCelString(((JSONString) jsonArrayNested .get(6)).toString());
String lieudit=Util.toCelString(((JSONString) jsonArrayNested .get(9)).toString());
String station=Util.toCelString(((JSONString) jsonArrayNested .get(10)).toString());
String milieu=Util.toCelString(((JSONString) jsonArrayNested .get(11)).toString());
String commentaire=Util.toCelString(((JSONString) jsonArrayNested .get(12)).toString());
String date=((JSONString) jsonArrayNested .get(8)).stringValue();
String numeroOrdre=((JSONString) jsonArrayNested.get(7)).stringValue();
listeObservation[i]=new Observation(transmis, nomSaisi, nomRetenu, numeroNomenclatural, numeroTaxonomique, famille, localite, lieudit, station, milieu, commentaire, date, numeroOrdre);
}
}
retour.onRetour(new Observation(listeObservation));
}
}
}
});
}
 
 
 
 
}
/trunk/src/org/tela_botanica/client/modeles/Observation.java
4,6 → 4,9
public class Observation {
 
 
private int nombreObservations=0;
private Observation [] listeObservation=null;
 
private String transmis=null;
private String nomSaisi=null;
private String nomRetenu=null;
25,6 → 28,22
 
/**
* Constructeur nombre total d'observations
* @param i
*/
public Observation(int i) {
nombreObservations=i;
}
 
public int getNombreObservations() {
return nombreObservations;
}
 
 
/**
* @param transmis
* @param nomSaisi
* @param nomRetenu
58,70 → 77,19
}
 
 
 
public String getNomSaisi() {
return nomSaisi;
public Observation(Observation[] listeObservation) {
this.listeObservation=listeObservation;
}
 
 
public String getNumeroOrdre() {
return numeroOrdre;
public Observation[] getListeObservation() {
return listeObservation;
}
 
 
public String getCommentaire() {
return commentaire;
public String getNomSaisi() {
return nomSaisi;
}
 
 
public String getDate() {
return date;
}
 
 
public String getFamille() {
return famille;
}
 
 
public String getLieudit() {
return lieudit;
}
 
 
public String getLocalite() {
return localite;
}
 
 
public String getMilieu() {
return milieu;
}
 
 
public String getNomRetenu() {
return nomRetenu;
}
 
 
public String getNumeroNomenclatural() {
return numeroNomenclatural;
}
 
 
public String getNumeroTaxonomique() {
return numeroTaxonomique;
}
 
 
public String getStation() {
return station;
}
 
 
public String getTransmis() {
return transmis;
}
 
}
/trunk/src/org/tela_botanica/client/observation/EtatConnexionVue.java
New file
0,0 → 1,103
/**
David Delon david.delon@clapas.net 2007
*/
 
/*
* EtatConnexionVue.java : affichage information portant sur le statut de la connexion utilisateur
*
*
* 1: Le programme affiche le statut connecte si l'utilisateur s'est connecte precedemment, sinon s'affiche le statut deconnecte
* 2: Le programme arme les actions liees a la connection ou a la deconnection
* - Connection : affichage de la boite de connexion
* - Deconnexion : appel du service de deconnexion, et appel de la re-initialisation de l'affichage pour le nouvel identifiant utilisateur obtenu (identifiant de session)
*/
package org.tela_botanica.client.observation;
 
 
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Widget;
 
 
public class EtatConnexionVue extends Composite {
 
 
private ObservationMediateur observationMediateur=null;
private HTML signLabel = new HTML() ;
private boolean connecte = false ;
public EtatConnexionVue(final ObservationMediateur med) {
 
observationMediateur=med;
 
HorizontalPanel outer = new HorizontalPanel();
HorizontalPanel inner = new HorizontalPanel();
outer.setHorizontalAlignment(HorizontalPanel.ALIGN_RIGHT);
 
inner.add(signLabel);
inner.setSpacing(3);
outer.add(inner);
 
initWidget(outer);
 
signLabel.addClickListener(
new ClickListener() {
public void onClick(Widget sender) {
// Non connecte ? Lien vers boite de connection
if (!connecte) {
observationMediateur.afficherDialogueConnexion();
}
else {
observationMediateur.deconnecterUtilisateur();
 
}
}
}
);
 
}
 
 
public void setEtat(String text, boolean connecte) {
signLabel.setHTML(text);
this.connecte=connecte;
}
 
}
 
 
/* +--Fin du code ---------------------------------------------------------------------------------------+
* $Log$
* Revision 1.2 2008-04-28 13:10:44 ddelon
* Integration MyGwt
*
* Revision 1.1 2008-01-02 21:26:04 ddelon
* mise en place mygwt
*
* Revision 1.6 2007-12-22 14:48:53 ddelon
* Documentation et refactorisation
*
* Revision 1.5 2007-09-17 19:25:34 ddelon
* Documentation
*
*
*/
/trunk/src/org/tela_botanica/client/observation/FormulaireDeConnexionVue.java
New file
0,0 → 1,204
/**
David Delon david.delon@clapas.net 2007
*/
 
/*
* LoginDialog.java (DialogBox)
*
* Cas d'utilisation :
* Dialogue de validation de l'identification utilisateur
*
* 1 : L'utilisateur saisit son identifiant (e-mail) et son mot de passe
* 2 : Le dialogue controle aupres du systeme distant la validite des informations saisies
* 3 : Le dialogue transmet au systeme local les informations d'identification
* 3a : Le dialogue informe l'utilisateur que les elements d'identification ne sont pas valide : retour au point 1, ou passe au point 4.
* 4 : Cloture du dialogue
* 5 : Appel du dialogue d'importation
*/
 
package org.tela_botanica.client.observation;
 
// TODO : utiliser classe formulaire
 
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.KeyboardListener;
import com.google.gwt.user.client.ui.PasswordTextBox;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
 
public class FormulaireDeConnexionVue extends DialogBox {
 
 
private ObservationMediateur observationMediateur=null;
private TextBox login = new TextBox();
private PasswordTextBox password = new PasswordTextBox();
private Grid inner = new Grid(4,2);
public FormulaireDeConnexionVue(final ObservationMediateur carnetEnLigneMediateur) {
setText("Connexion");
 
this.observationMediateur=carnetEnLigneMediateur;
 
VerticalPanel outer = new VerticalPanel();
 
/*
* E-Mail : Zone_saisie_email
* Mot-de-passe : Zone_saisie_mot_de_passe
* Message d'information
* Bouton_Ok Bouton_Annuler
*/
// Validation bouton
HTML okButton=new HTML("Ok");
okButton.setStyleName("html_button");
okButton.addClickListener(
new ClickListener() {
public void onClick(Widget sender) {
connecteUtilisateur();
}
}
);
 
// Annulation
HTML cancelButton=new HTML("Annuler");
cancelButton.setStyleName("html_button");
cancelButton.addClickListener(
new ClickListener() {
public void onClick(Widget sender) {
hide();
}
}
);
 
//Validation utilisateur sans utilisation des boutons :
 
login.addKeyboardListener( new KeyboardListener() {
 
public void onKeyDown(Widget arg0, char arg1, int arg2) {
if(arg1 == KEY_ENTER)
{
connecteUtilisateur();
}
}
public void onKeyUp(Widget arg0, char arg1, int arg2) { }
public void onKeyPress(Widget arg0, char arg1, int arg2) { }
}
);
 
// Validation utilisateur sans utilisation des boutons :
password.addKeyboardListener( new KeyboardListener() {
 
public void onKeyDown(Widget arg0, char arg1, int arg2) {
if(arg1 == KEY_ENTER)
{
connecteUtilisateur();
}
}
public void onKeyUp(Widget arg0, char arg1, int arg2) { }
public void onKeyPress(Widget arg0, char arg1, int arg2) { }
}
);
 
inner.setHTML(0,0,"E-mail:");
inner.setWidget(0,1,login);
inner.setHTML(1,0,"Mot de passe:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
inner.setWidget(1,1,password);
inner.setWidget(3,0,okButton);
inner.setWidget(3,1,cancelButton);
inner.setCellPadding(10);
outer.add(inner);
setWidget(outer);
}
 
/**
* Appel du service d'identification et positionnement de l'etat de connection en fonction du resultat.
*
* @param login : identifiant saisi
* @param password : mot de passe saisi
*
*/
private void connecteUtilisateur() {
final String login=this.login.getText();
String password=this.password.getText();
 
observationMediateur.connecterUtilisateur(login,password);
 
}
public boolean onKeyDownPreview(char key, int modifiers) {
// Use the popup's key preview hooks to close the dialog when either
// escape is pressed.
switch (key) {
case KeyboardListener.KEY_ESCAPE:
hide();
break;
}
 
return true;
}
 
public void afficherMessageAlerte() {
inner.setHTML(2,0,"Identification incorrecte !");
}
 
}
 
/* +--Fin du code ---------------------------------------------------------------------------------------+
* $Log$
* Revision 1.10 2007-09-17 19:25:34 ddelon
* Documentation
*
* Revision 1.9 2007-05-21 21:03:44 ddelon
* nettoyage de code
*
* Revision 1.8 2007-05-21 18:14:06 ddelon
* Gestion importation releve locaux
*
* Revision 1.7 2007-05-21 11:47:30 ddelon
* meta cvs
*
* Revision 1.6 2007-05-21 11:39:48 ddelon
* meta cvs
*
* Revision 1.5 2007-05-21 11:39:12 ddelon
* meta cvs
*
* Revision 1.4 2007-05-21 11:37:35 ddelon
* meta cvs
*
* Revision 1.3 2007-05-21 11:36:51 ddelon
* meta cvs
*
*/
/trunk/src/org/tela_botanica/client/observation/ListeObservationsVue.java
183,7 → 183,7
// TODO : renderer date, alignement etc
/*
columns[0] = new TableColumn("etat","Transmis", 50);
columns[0] = new TableColumn("etat","Aransmis", 50);
 
columns[1] = new TableColumn("nom","Nom saisi", 250);
323,7 → 323,7
setStatusDisabled();
 
// observationMediateur.addListener(ObservationMediateur.NOMBRE_OBSERVATION,this);
// observationMediateur.getNombreObservation(identifiantLocalite,localite,annee, mois, jour ,lieudit,rechercheLibre); // Retour dans handlevent() NOMBRE_OBSERVATION
observationMediateur.getNombreObservation(identifiantLocalite,localite,annee, mois, jour ,lieudit,rechercheLibre); // Retour dans handlevent() NOMBRE_OBSERVATION
 
}
338,14 → 338,14
public void getListeObservation() {
 
// observationMediateur.addListener(ObservationMediateur.LISTE_OBSERVATION,this);
// observationMediateur.getListeObservation(identifiantLocalite,localite,annee, mois, jour ,lieudit,rechercheLibre, startIndex, VISIBLE_TAXON_COUNT); // Retour dans handlevent() LISTE_OBSERVATION
observationMediateur.getListeObservation(identifiantLocalite,localite,annee, mois, jour ,lieudit,rechercheLibre, startIndex, VISIBLE_TAXON_COUNT); // Retour dans handlevent() LISTE_OBSERVATION
}
public void afficherListeObservation() {
 
// Observation[] listeObservation =observationMediateur.getObservation().getListeObservation();
/*
Observation[] listeObservation =observationMediateur.getObservation().getListeObservation();
for (int i=0;i<listeObservation.length;i++) {
Object[] values = new Object[6];
355,7 → 355,7
values[4]="4";
values[5]="5";
values[1]=listeObservation[i].getNomSaisi();
*/
// table.add(new TableItem(values));
}
592,7 → 592,7
*/
 
// }
}
 
 
/**
891,9 → 891,6
 
/* +--Fin du code ---------------------------------------------------------------------------------------+
* $Log$
* Revision 1.3 2008-06-17 14:16:16 aperonnet
* *** empty log message ***
*
* Revision 1.2 2008-06-09 16:29:01 ddelon
* import branche observation
*
/trunk/src/org/tela_botanica/client/observation/ObservationModele.java
1,137 → 1,37
package org.tela_botanica.client.observation;
 
 
import org.tela_botanica.client.interfaces.iRetourObservation;
import org.tela_botanica.client.modeles.ObservationAsynchroneDAO;
 
import org.tela_botanica.client.interfaces.FournisseurListe;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Configuration;
import org.tela_botanica.client.modeles.ListeObservationAsynchroneDAO;
import org.tela_botanica.client.modeles.ListeReferentielCommuneAsynchroneDAO;
import org.tela_botanica.client.modeles.NombreObservationAsynchroneDAO;
import com.google.gwt.i18n.client.Dictionary;
 
public class ObservationModele {
 
public class ObservationModele {
 
private final String baseURL;
/**
* Booleen indiquant si le médiateur est instancié (l'instance doit être unique donc le booleen est static)
*/
private static boolean estInstancie = false ;
/**
* La configuration en cours
*/
private Configuration config = null;
 
/**
* Le médiateur associé au modèle
*/
private ObservationMediateur observationMediateur = null ;
 
/**
* Retourne une instance de manière unique
* @param im le médiateur à associer
* @return l'instance du modèle
*/
static ObservationModele Instance(ObservationMediateur observationMediateur)
{
// si le modèle n'est pas encore instancié
if(!estInstancie)
{
// on en crée un nouveau
estInstancie = true ;
return new ObservationModele(observationMediateur);
}
else
{
// sinon on renvoit null, interdisant explicitement la création d'un autre exemplaire
return null ;
}
}
 
private ObservationModele(ObservationMediateur observationMediateur) {
public ObservationModele() {
this.observationMediateur=observationMediateur;
baseURL=Dictionary.getDictionary("Parameters").get("serviceBaseUrl");
config = new Configuration();
 
}
 
 
/**
* Appelle le DAO asynchrone pour obtenir le nombre d'observation
* @param r le rafraichissable auxquel on enverra les données
* @param taillePage
*/
public void obtenirNombreObservation(Rafraichissable r) {
public void getNombreObservation(final iRetourObservation retour, String identifiant, String identifiantLocalite, String localite, String annee, String mois, String jour, String lieudit, String rechercheLibre) {
 
new ObservationAsynchroneDAO().getNombreObservation(baseURL, retour, identifiant, identifiantLocalite, localite, annee, mois, jour, lieudit, rechercheLibre );
String motsClesFiltres[][] = observationMediateur.renvoyerFiltres() ;
// on rassemble les critères
String[][] criteres = {{motsClesFiltres[0][0], motsClesFiltres[0][1]} } ;
// on les crée un DAO auquel on les transmet et qui demande le nombre d'images correspondantes (pour les pages)
NombreObservationAsynchroneDAO noaDAO = new NombreObservationAsynchroneDAO(this) ;
noaDAO.obtenirNombreObservation(r, observationMediateur.getIdentifiant(), criteres) ;
}
/**
* Appelle le DAO asynchrone pour obtenir la liste des images
* @param r le rafraichissable auxquel on enverra les données
* @param taillePage
*/
public void obtenirListeObservation(Rafraichissable r, int taillePage, int pageEncours) {
String motsClesFiltres[][] = observationMediateur.renvoyerFiltres() ;
// ensuite on demande la page correspondante avec les mêmes critères
String[][] criteres2 = { {"limite" ,""+taillePage },{"numero_page",""+pageEncours}, {motsClesFiltres[0][0], motsClesFiltres[0][1]}} ;
// et on crée un DAO auquel on les transmet et qui envoie une requete pour recevoir les images
ListeObservationAsynchroneDAO loaDAO = new ListeObservationAsynchroneDAO(this);
loaDAO.obtenirListeObservation(r, observationMediateur.getIdentifiant(), criteres2);
}
 
public FournisseurListe obtenirFournisseurReferentielCommune() {
 
public void getListeObservation(iRetourObservation retour, String identifiant, String identifiantLocalite, String localite, String annee, String mois, String jour, String lieudit, String rechercheLibre, int debut, int longueur) {
return new ListeReferentielCommuneAsynchroneDAO(this);
new ObservationAsynchroneDAO().getListeObservation(baseURL, retour, identifiant, identifiantLocalite, localite, annee, mois, jour, lieudit, rechercheLibre, debut, longueur );
}
 
 
/**
* Accesseur pour la configuration en cours d'utilisation
*
* @return la configuration
*/
public Configuration getConfig() {
 
return config;
}
 
 
 
 
}
/trunk/src/org/tela_botanica/client/observation/ObservationMediateur.java
1,473 → 1,256
package org.tela_botanica.client.observation;
 
 
import java.util.Iterator;
 
 
import org.tela_botanica.client.CarnetEnLigneMediateur;
import org.tela_botanica.client.interfaces.FournisseurListe;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.ListeObservation;
import org.tela_botanica.client.interfaces.iMediateur;
import org.tela_botanica.client.interfaces.iRetourObservation;
import org.tela_botanica.client.modeles.Observation;
import org.tela_botanica.client.vues.FormulaireSaisieObservationVue;
import org.tela_botanica.client.vues.ListeObservationVue;
 
import com.gwtext.client.data.ArrayReader;
import com.gwtext.client.data.FieldDef;
import com.gwtext.client.data.MemoryProxy;
import com.gwtext.client.data.RecordDef;
import com.gwtext.client.data.Store;
import com.gwtext.client.data.StringFieldDef;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.TabPanel;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
 
/**
* Mediateur gérant les interactions entre vues et les echanges de données
* C'est un singleton.
* @author aurelien
*
*/
public class ObservationMediateur implements Rafraichissable {
public class ObservationMediateur implements iMediateur{
 
 
// Evenenements
final static public int NOMBRE_OBSERVATION=1;
 
final static public int LISTE_OBSERVATION=2;
/**
* booleen qui verifie l'unicite de l'instance (donc static)
*/
private static boolean estInstancie = false ;
/** Mediateur general de l'application carnet en ligne
*
*
*/
private CarnetEnLigneMediateur carnetEnLigneMediateur = null ;
/**
* modele de données
*/
private ObservationModele observationModele = null ;
/**
* panneau principal des Observation (onglet "observation")
*/
private final Panel panneauPrincipalObservation = new Panel("Observation");
/**
* panneau a onglet pour la liste
*/
private TabPanel ongletsObservation = null ;
/**
* conteneur du panneau a onglets
*/
private Panel panneauMenuEtOngletsObservation = null ;
/**
* liste détaillée des Observations
*/
private ListeObservationVue listeObservation = null ;
/**
* Saisie des Observations
*/
private FormulaireSaisieObservationVue formulaireSaisieObservationVue=null;
/**
* l'indice du dernier onglet sélectionné
*/
private int dernierIndexOnglet = 0 ;
/**
* booleen explicitant s'il y a une selection en cours
*/
private boolean selection = false ;
private CarnetEnLigneMediateur carnetEnLigneMediateur=null; // Mediateur General
private final ObservationModele observationModele=new ObservationModele();
 
/**
*
* Numéro de page en cours
*/
private int pageEncours = 0 ;
/**
* Nombre de pages totales
*/
private int pageMax = 1 ;
/**
* Taille de page (par défaut 20)
*/
private int taillePage = 20 ;
/**
* Nombre d'éléments total correspondant à la requete
*/
private int nbElements = 0 ;
private Observation observation=null;
 
// Variable interne
private final String texteDeconnexion="Utilisez ce carnet en ligne pour saisir vos observations, <u>identifiez-vous</u> pour les transmettre à Tela Botanica";
 
// Composants graphiques
/**
* Le store contenant les données à afficher, que le modèle transmet au médiateur quand il le demande
*/
private Store st = null ;
/**
* La liste des observations affichées en cours (verifier utilité)
*/
private ListeObservation cacheObservation = new ListeObservation(0) ;
/**
/**
* constructeur privé (on accède a la classe par la méthode getInstance
*/
private ObservationMediateur(CarnetEnLigneMediateur carnetEnLigneMediateur )
{
this.carnetEnLigneMediateur=carnetEnLigneMediateur;
// Demande d'identification
// afficherMenuId() ;
private EtatConnexionVue etatConnexionVue=null; // Vue Etat de la connexion utilisateur
private FormulaireDeConnexionVue formulaireDeConnexionVue=null; // Formulaire de connexion utilisateur
private ListeObservationsVue listeObservationsVue = null; // Liste de releves
 
//
// on crée un modèle
observationModele = ObservationModele.Instance(this);
public ObservationMediateur(CarnetEnLigneMediateur carnetEnLigneMediateur) {
// on gère la mise en page du panneau principal
//panneauPrincipalObservation.setLayout(new BorderLayout());
// on crée le panneau qui contient les differentes onglets ainsi que le menu supérieur
// panneauMenuEtOngletsObservation = new Panel("gg") ;
// panneauMenuEtOngletsObservation.setLayout(new BorderLayout()) ;
// le panneau à onglet qui contient la vue
//ongletsObservation = new TabPanel();
// la liste des observations
//Panel panneauListeObservation = new Panel("Liste");
listeObservation = new ListeObservationVue(this);
// Le formulaire de saisie / modification d'observation
formulaireSaisieObservationVue = new FormulaireSaisieObservationVue(this);
 
this.carnetEnLigneMediateur=carnetEnLigneMediateur;
//panneauListeObservation.setLayout(new FitLayout());
//panneauListeObservation.setSize(600,600);
//panneauListeObservation.add(listeObservation);
etatConnexionVue=new EtatConnexionVue(this);
listeObservationsVue=new ListeObservationsVue(this);
VerticalPanel panel=new VerticalPanel();
// on ajoute les panneaux au panneau à onglets
//ongletsObservation.add(panneauListeObservation);
// les onglets au centre
// panneauMenuEtOngletsObservation.add(ongletsObservation,regionCentre);
// on ajoute le panneau qui contient le menu et les onglets d'images au centre
//panneauPrincipalObservation.add(panneauMenuEtOngletsObservation,regionCentre);
panneauPrincipalObservation.add(formulaireSaisieObservationVue);
panel.add(etatConnexionVue);
panneauPrincipalObservation.add(listeObservation);
panel.add(listeObservationsVue);
 
RootPanel.get().add(panel);
onInitialisation();
}
 
/// Methodes privees
 
/**
* Retourne une instance de manière unique
* @return l'instance unique du médiateur
*
* Initialisations
*
*/
public static ObservationMediateur Instance(CarnetEnLigneMediateur carnetEnLigneMediateur)
{
if(!estInstancie)
{
estInstancie = true ;
return new ObservationMediateur(carnetEnLigneMediateur) ;
}
else
{
return null ;
}
}
private void onInitialisation() {
/**
* envoie au modèle une demande de mise a jour
*/
 
 
public void obtenirNombreObservation() {
afficheEtatConnexion();
onFiltrageListeObservation("all","all","all");
listeObservation.masquerChargement();
observationModele.obtenirNombreObservation(this) ;
}
// Filtre selection lieu
/**
* envoie au modèle une demande de mise a jour
* Action sur selection d'un lieu : affichage de la liste des taxons correspondants au filtrage
*/
public void onFiltrageListeObservation(String id_loc, String loc,String lieu) {
 
// Positionnement Filtre affichage
listeObservationsVue.setIdLocation(id_loc);
listeObservationsVue.setLocalite(loc);
listeObservationsVue.setLieudit(lieu);
listeObservationsVue.initialiser();
 
public void obtenirListeObservation() {
// Affichage des filtres
listeObservationsVue.displayFilter();
 
observationModele.obtenirListeObservation(this, taillePage, pageEncours) ;
}
 
 
 
/// UTILISATEUR
 
/**
* C'est dans cette fonction que doivent être renvoyé les valeurs des filtres
* sous forme de tableau [nom, valeur]
* @return Les noms et valeurs des filtres
* Affichage etat de la connexion
*/
public String[][] renvoyerFiltres()
{
String[][] valeursFiltres = { {"location","Saint-Martin-de-Londres"} } ;
return valeursFiltres ;
}
 
 
public String getIdentifiant() {
return carnetEnLigneMediateur.getUtilisateur().getIdentifiant();
}
 
 
public Panel getPanneauPrincipalObservation() {
return panneauPrincipalObservation;
}
// TODO : plutot dans la listevu non ?
 
public void rafraichir(Object nouvelleDonnees, boolean repandreRafraichissement) {
private void afficheEtatConnexion() {
if (!carnetEnLigneMediateur.getUtilisateur().isIdentifie()) {
etatConnexionVue.setEtat(texteDeconnexion,false);
}
else {
etatConnexionVue.setEtat(carnetEnLigneMediateur.getUtilisateur().getIdentifiant()+ " (deconnexion)",true);
}
// si l'on a reçu une liste d'observation
if(nouvelleDonnees instanceof ListeObservation)
{
ListeObservation data = (ListeObservation) nouvelleDonnees ;
Object[][] observationData = new Object[data.size()][8];
int i = 0 ;
if(data.size() == 0)
{
pageEncours = 0 ;
}
// on la parse et on récupère les informations quiç nous interessent
for (Iterator it = data.keySet().iterator(); it.hasNext();)
{
Observation obs=(Observation) data.get(it.next());
observationData[i][0]= obs.getTransmis();
observationData[i][1]= obs.getNomSaisi();
observationData[i][2]= obs.getNomRetenu();
observationData[i][3]= obs.getLieudit();
observationData[i][4]= obs.getDate();
observationData[i][5]= obs.getNumeroOrdre();
}
 
i++ ;
}
// creation du store qui les contient
FieldDef defEtatObservation = new StringFieldDef("etat_observation");
FieldDef defNomSaisiObservation = new StringFieldDef("nomSaisi_observation");
FieldDef defNomRetenuObservation = new StringFieldDef("nomRetenu_observation");
FieldDef defLieuObservation = new StringFieldDef("lieu_observation");
FieldDef defDateObservation = new StringFieldDef("date_observation");
FieldDef defOrdreObservation = new StringFieldDef("ordre_observation");
// on associe le store
 
FieldDef[] defTab = { defEtatObservation, defNomSaisiObservation, defNomRetenuObservation,
defLieuObservation, defDateObservation, defOrdreObservation };
RecordDef rd = new RecordDef(defTab);
final MemoryProxy dataProxy = new MemoryProxy(observationData);
final ArrayReader reader = new ArrayReader(rd);
final Store observationStore = new Store(dataProxy, reader);
st = observationStore ;
st.load() ;
// par défaut le store est trié sur l'ordre d'observations
st.sort("ordre_observation") ;
 
// si on doit répandre les données, on notifie le médiateur qui les distribuera à son tour
if(repandreRafraichissement)
{
listeObservation.rafraichir(st, false) ;
}
}
// Si on reçoit un tableau d'entiers
// c'est un tableau d'un seul entier qui est le nombre d'observation correspondant aux critères
if(nouvelleDonnees instanceof int[])
{
int[] pages = (int[])nouvelleDonnees ;
// on calcule le nombre de pages nécessaires et on les met à jour dans le modèle
pageMax = calculerNbPages(pages[0]) ;
nbElements = pages[0] ;
// et on notifie de le mediateur du changement des valeurs
changerPageMaxEtCourante(pageMax,pageEncours,taillePage,pages[0]) ;
obtenirListeObservation();
}
}
/**
* Met à jour les barre d'outils avec des nouvelles valeurs
* @param pageMax le nombre de pages
* @param pageEncours la page en cours
* @param taillePage la taille de page
* @param nbElement le nombre d'élements par page
*
* Affichage boite de connexion
*
*/
public void changerPageMaxEtCourante(int pageMax, int pageEncours, int taillePage, int nbElement)
{
int[] pages = {pageMax,pageEncours, taillePage, nbElement} ;
listeObservation.getToolBarVue().rafraichir(pages, false) ;
}
/**
* Calcule le nombre de pages nécessaires pour afficher un nombre d'élements donnés en fonction de la taille de page
* en cours
* @param nbElements le nombre d'élements total
* @return le nombre de pages
*/
public int calculerNbPages(int nbElements)
{
// A cause de la betise 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 superieur
public void afficherDialogueConnexion() {
double nPage = (1.0*nbElements)/(1.0*taillePage) ;
double nPageRound = Math.ceil(nPage) ;
Double nPageInt = new Double(nPageRound) ;
// TODO : singleton ?
formulaireDeConnexionVue = new FormulaireDeConnexionVue(this);
 
// Position it roughly in the middle of the screen.
int left = (Window.getClientWidth() - 512) / 2;
int top = (Window.getClientHeight() - 256) / 2;
formulaireDeConnexionVue.setPopupPosition(left, top);
formulaireDeConnexionVue.show();
// on convertit en entier
return nPageInt.intValue() ;
}
 
/**
* Recalcule la page en cours lors du changement du nombre d'élements
* @param nbElements le nombre d'élements total
* @return la nouvelle page encours
* Deconnexion de l'utilisateur en cours
*/
public int calculerPageCourante(int nbElements)
{
// on calcule le nombre de page
int nouvelNbPages = calculerNbPages(nbElements) ;
// la nouvelle page en cours
double nPageCourante = (1.0*pageEncours)/(1.0*pageMax) * (1.0*nouvelNbPages) ;
public void deconnecterUtilisateur() {
// on arrondit au supérieur
double nPageRound = Math.ceil(nPageCourante) ;
Double nPageInt = new Double(nPageRound) ;
// on convertit en entier
return Math.abs(nPageInt.intValue()) ;
// carnetEnLigneMediateur.addListener(CarnetEnLigneMediateur.DECONNEXION,this);
carnetEnLigneMediateur.deconnecterUtilisateur();
}
 
 
/**
* Appelle le modèle pour lui demander les données d'une page à afficher
* @param pageCourante le numéro de page à affciher
* Tentative de connexion utilisateur
* @param login
* @param password
*/
public void changerNumeroPage(int pageCourante) {
public void connecterUtilisateur(String login, String password) {
pageEncours = pageCourante ;
// On lance le chargerment des observations
obtenirNombreObservation();
listeObservation.getToolBarVue().changerPageCourante(pageCourante);
// carnetEnLigneMediateur.addListener(CarnetEnLigneMediateur.CONNEXION,this);
carnetEnLigneMediateur.connecterUtilisateur(login, password);
 
}
 
 
/// OBSERVATION
/**
* Appelle le modèle pour qu'il change la taille de page utilisée
* @param nouvelleTaillePage la nouvelle taille de page
* Recherche nombre d'enregistrement pour l'utilisateur et la localite en cours
*
*/
public void changerTaillePage(int nouvelleTaillePage)
{
taillePage = nouvelleTaillePage ;
pageEncours = calculerPageCourante(nbElements) ;
public void getNombreObservation (String identifiantLocalite, String localite, String annee, String mois, String jour, String lieudit, String rechercheLibre ) {
 
// On lance le chargerment des observations
obtenirNombreObservation();
observationModele.getNombreObservation(
new iRetourObservation() {
public void onRetour(Observation obs) {
observation=obs;
//fireEvent(NOMBRE_OBSERVATION);
}
 
}, carnetEnLigneMediateur.getUtilisateur().getIdentifiant(), identifiantLocalite, localite , annee, mois, jour, lieudit ,rechercheLibre
);
// et on met à jour la taille de page dans les barres d'outils
listeObservation.getToolBarVue().selectionnerTaillePage(nouvelleTaillePage);
}
 
public void getListeObservation (String identifiantLocalite, String localite, String annee, String mois, String jour, String lieudit, String rechercheLibre, int debut, int longueur) {
 
// Retourne le fournisseur de donnee en referentiel Commune. doit posseder la methode obtenirListeDonnees()
public FournisseurListe obtenirFournisseurReferentielCommune() {
return observationModele.obtenirFournisseurReferentielCommune() ;
observationModele.getListeObservation(
new iRetourObservation() {
public void onRetour(Observation obs) {
observation=obs;
//fireEvent(LISTE_OBSERVATION);
}
 
}, carnetEnLigneMediateur.getUtilisateur().getIdentifiant(), identifiantLocalite, localite , annee, mois, jour, lieudit ,rechercheLibre, debut, longueur
);
 
}
 
 
public Observation getObservation() {
return observation;
}
 
 
 
/// EVENEMENTS
/**
* Evenements
*
*/
/*
public void handleEvent(BaseEvent be) {
switch (be.type) {
case CarnetEnLigneMediateur.DECONNEXION:
afficheEtatConnexion();
break;
case CarnetEnLigneMediateur.CONNEXION:
if (carnetEnLigneMediateur.getUtilisateur().isIdentifie()) {
formulaireDeConnexionVue.hide();
afficheEtatConnexion();
}
else {
formulaireDeConnexionVue.afficherMessageAlerte(); // Erreur identification
}
break;
}
}
 
*/
 
 
 
 
 
 
}
/trunk/src/org/tela_botanica/public/config.js
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/src/org/tela_botanica/public/cel2.html
1,3 → 1,16
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
 
<!-- The HTML 4.01 Transitional DOCTYPE declaration-->
<!-- above set at the top of the file will set -->
<!-- the browser's rendering engine into -->
<!-- "Standards Mode", which gives better cross -->
<!-- browser compatibility to the application. -->
<!-- Omitting this line leaves most browsers in -->
<!-- "Quirks mode", emulating the bugs in older -->
<!-- browser versions. -->
 
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
11,11 → 24,7
<!-- If you add any GWT meta tags, they must -->
<!-- be added before this line. -->
<!-- -->
<script type="text/javascript" language="javascript" src="config.js"></script>
<script type="text/javascript" language="javascript" src="org.tela_botanica.cel2.nocache.js"></script>
</head>
 
<!-- -->
/trunk/src/org/tela_botanica/cel2.gwt.xml
2,15 → 2,14
 
<!-- Inherit the core Web Toolkit stuff. -->
<inherits name='com.google.gwt.user.User'/>
 
<!-- Other module inherits -->
<!-- Inherit the core Web Toolkit stuff. -->
<inherits name='com.gwtext.GwtExt' />
<!-- Parsing JSON -->
<inherits name='com.google.gwt.json.JSON' />
<!-- Encore des trucs pour les user extensions -->
<inherits name='com.gwtextux.GwtExtUx'/>
<!-- Passage de parametres -->
<inherits name="com.google.gwt.i18n.I18N"/>
<inherits name='com.gwtext.GwtExt' />
<!-- Parsing JSON -->
<inherits name='com.google.gwt.json.JSON' />
<!-- Encore des trucs pour les user extensions -->
<inherits name='com.gwtextux.GwtExtUx'/>
<stylesheet src="js/ext/resources/css/ext-all.css" />