Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 2 → Rev 5

/trunk/src/org/tela_botanica/client/modeles/NombreImageAsynchroneDAO.java
12,9 → 12,11
import com.google.gwt.json.client.JSONValue;
 
/**
* DAO qui renvoie le nombre d'image associées à différents critères donnés (utile pour la pagination)
* DAO qui renvoie le nombre d'image associées à différents critères donnés
* (utile pour la pagination)
*
* @author aurelien
*
*
*/
public class NombreImageAsynchroneDAO {
 
21,82 → 23,91
/**
* Le modèle associé au DAO
*/
private ImageModele iModele = null ;
public NombreImageAsynchroneDAO(ImageModele im)
{
iModele = im ;
private ImageModele iModele = null;
 
public NombreImageAsynchroneDAO(ImageModele im) {
iModele = im;
}
 
/**
* Setteur pour le modèle
* @param im le modèlme à associer
*
* @param im
* le modèlme à associer
*/
public void setIModele(ImageModele im)
{
iModele = im ;
public void setIModele(ImageModele im) {
iModele = im;
}
 
/**
* Envoie une requete au serveur jrest pour obtenir le nombre d'images 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 images
* Envoie une requete au serveur jrest pour obtenir le nombre d'images
* 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 images
*/
public void obtenirNombreImages(final Rafraichissable r, String[][] criteres)
{
String requete = "" ;
if(criteres != null)
{
// on construit les paramètres du get avec les critères (&critere1=valeur1&critere2=valeur2 etc...)
public void obtenirNombreImages(final Rafraichissable r, String[][] criteres) {
String requete = "";
 
if (criteres != null) {
// on construit les paramètres du get avec les critères
// (&critere1=valeur1&critere2=valeur2 etc...)
for (int i = 0; i < criteres.length; i++) {
if(!criteres[i][1].equals(""))
{
if(i!= 0)
{
 
if (!criteres[i][1].equals("")) {
if (i != 0) {
requete += "&";
}
requete += criteres[i][0]+"="+criteres[i][1] ;
requete += criteres[i][0] + "=" + criteres[i][1];
}
}
}
 
// on fait un get asynchrone
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, iModele.getConfig().getServiceBaseUrl()+"/InventoryImageCount/"+iModele.getIdentifiant()+"/"+requete) ;
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, iModele
.getConfig().getServiceBaseUrl()
+ "/InventoryImageCount/"
+ iModele.getIdentifiant()
+ "/"
+ requete);
try {
rb.sendRequest(null, new RequestCallback() {
 
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
 
}
 
public void onResponseReceived(Request request, Response response) {
final JSONValue responseValue = JSONParser.parse(response.getText());
public void onResponseReceived(Request request,
Response response) {
 
final JSONValue responseValue = JSONParser.parse(response
.getText());
 
// si la requete se passe bien on reçoit un tableau JSON
if(responseValue.isArray() != null)
{
// qui contient une valeur : le nombre d'images correspondant au critères
JSONValue res = responseValue.isArray().get(0) ;
JSONString reponseNombre = res.isString() ;
int maxImages = Integer.parseInt(reponseNombre.stringValue()) ;
int[] nbImages = {maxImages} ;
// on le met dans un tableau d'entiers qu'on transmet au demandeur de la mise à jour
r.rafraichir(nbImages, true) ;
if (responseValue.isArray() != null) {
// qui contient une valeur : le nombre d'images
// correspondant au critères
JSONValue res = responseValue.isArray().get(0);
JSONString reponseNombre = res.isString();
int maxImages = Integer.parseInt(reponseNombre
.stringValue());
int[] nbImages = { maxImages };
// on le met dans un tableau d'entiers qu'on transmet au
// demandeur de la mise à jour
r.rafraichir(nbImages, true);
}
 
}
}) ;
 
});
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
 
}
 
}
/trunk/src/org/tela_botanica/client/modeles/Configuration.java
3,33 → 3,38
import com.google.gwt.i18n.client.Dictionary;
 
/**
* Classe chargeant certains paramètres de configuration à partir d'un fichier javascript (config.js)
* 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 String serviceBaseUrl ;
private String serviceBaseUrl;
 
private String imageBaseUrl;
 
/**
* Constructeur sans argument
*/
public Configuration()
{
// on utilise le dictionnaire d'internationalisation pour lire les variables du fichier javascript
serviceBaseUrl = Dictionary.getDictionary("configuration").get("serviceBaseUrl") ;
public Configuration() {
// on utilise le dictionnaire d'internationalisation pour lire les
// variables du fichier javascript
serviceBaseUrl = Dictionary.getDictionary("configuration").get(
"serviceBaseUrl");
}
 
/**
* Accesseur pour l'url de base du serveur jrest
*
* @return une url de la forme http://emplacement_serveur/jrest
*/
public String getServiceBaseUrl()
{
return serviceBaseUrl ;
public String getServiceBaseUrl() {
return serviceBaseUrl;
}
 
}
/trunk/src/org/tela_botanica/client/modeles/MotsClesAsynchroneDAO.java
1,6 → 1,5
package org.tela_botanica.client.modeles;
 
 
import org.tela_botanica.client.image.ImageModele;
import org.tela_botanica.client.interfaces.Rafraichissable;
import com.google.gwt.http.client.Request;
15,171 → 14,189
 
/**
* DAO d'accès à l'arbre de mots clés
*
* @author aurelien
*
*
*/
public class MotsClesAsynchroneDAO {
 
/**
* Le modele associé au DAO
*/
private ImageModele iModele = null ;
public MotsClesAsynchroneDAO(ImageModele im)
{
iModele = im ;
private ImageModele iModele = null;
 
public MotsClesAsynchroneDAO(ImageModele im) {
iModele = im;
}
 
/**
* Setteur pour le modèle
* @param im le modèle à associer
* Setteur pour le modèle
*
* @param im
* le modèle à associer
*/
public void setIModele(ImageModele im)
{
iModele = im ;
public void setIModele(ImageModele im) {
iModele = im;
}
 
/**
* Envoie une requete au serveur jrest pour obtenir l'arbre des mots clés
* @param r le rafraichissable qui demande les données
*
* @param r
* le rafraichissable qui demande les données
*/
public void obtenirListeMotsCles(final Rafraichissable r)
{
public void obtenirListeMotsCles(final Rafraichissable r) {
// on demande tous les mots clés associés à l'utilisateur
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET,iModele.getConfig().getServiceBaseUrl()+"/InventoryKeyWordList/"+iModele.getIdentifiant()) ;
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, iModele
.getConfig().getServiceBaseUrl()
+ "/InventoryKeyWordList/" + iModele.getIdentifiant());
 
try {
rb.sendRequest(null, new RequestCallback() {
 
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
 
}
 
public void onResponseReceived(Request request, Response response) {
final JSONValue responseValue = JSONParser.parse(response.getText());
public void onResponseReceived(Request request,
Response response) {
 
final JSONValue responseValue = JSONParser.parse(response
.getText());
// si la requête est un succès on reçoit un tableau
if (responseValue.isArray() != null) {
 
final JSONArray reponse = responseValue.isArray();
// et on met à jour le demandeur des données
r.rafraichir(reponse, true) ;
}
// et on met à jour le demandeur des données
r.rafraichir(reponse, true);
}
 
}
}) ;
 
});
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
 
/**
* Envoie requete au serveur jrest pour ajouter un mot clé
* @param motcle le mots clés à ajouter avec son parent et son identifiant
*
* @param motcle
* le mots clés à ajouter avec son parent et son identifiant
*/
public void ajouterBaseDeDonnees(String motcle)
{
if(!motcle.equals(""))
{
String postData = motcle ;
public void ajouterBaseDeDonnees(String motcle) {
if (!motcle.equals("")) {
String postData = motcle;
 
// on fait un post asynchrone
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST,iModele.getConfig().getServiceBaseUrl()+"/InventoryKeyWordList/") ;
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, iModele
.getConfig().getServiceBaseUrl()
+ "/InventoryKeyWordList/");
try {
rb.sendRequest(postData, new RequestCallback() {
 
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
 
}
 
public void onResponseReceived(Request request,
Response response) {
// si on reçoit une erreur d'ajout, on affiche un message d'erreur
if(response.getText().equals("ERROR"))
{
Window.alert("Attention, la base de données des mots clés n'est plus synchronisée avec l'application," +
"nous vous invitons à recharger la page. ") ;
 
// si on reçoit une erreur d'ajout, on affiche un
// message d'erreur
if (response.getText().equals("ERROR")) {
Window
.alert("Attention, la base de données des mots clés n'est plus synchronisée avec l'application,"
+ "nous vous invitons à recharger la page. ");
}
 
}
}) ;
 
});
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
 
/**
* Envoie requete au serveur jrest pour supprimer un mot clé
* @param motcle le mots clés à supprimer
*
* @param motcle
* le mots clés à supprimer
*/
public void supprimerBaseDeDonnees(String motcle)
{
if(!motcle.equals(""))
{
String postData = "" ;
postData += "&action=DELETE" ;
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST,iModele.getConfig().getServiceBaseUrl()+"/InventoryKeyWordList/"+iModele.getIdentifiant()+"/"+motcle) ;
try {
rb.sendRequest(postData, new RequestCallback() {
public void supprimerBaseDeDonnees(String motcle) {
if (!motcle.equals("")) {
String postData = "";
postData += "&action=DELETE";
 
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, iModele
.getConfig().getServiceBaseUrl()
+ "/InventoryKeyWordList/"
+ iModele.getIdentifiant()
+ "/"
+ motcle);
 
try {
rb.sendRequest(postData, new RequestCallback() {
 
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
 
}
 
public void onResponseReceived(Request request,
Response response) {
if (response.equals("ERROR")) {
Window
.alert("Attention, la base de données des mots clés n'est plus synchronisée avec l'application,"
+ "nous vous invitons à recharger la page. ");
}
}
});
 
public void onResponseReceived(Request request,
Response response) {
if(response.equals("ERROR"))
{
Window.alert("Attention, la base de données des mots clés n'est plus synchronisée avec l'application," +
"nous vous invitons à recharger la page. ") ;
}
}
});
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
 
/**
* Envoie requete au serveur jrest pour modifier un mot clé
* @param motcle le mots clés à modifier avec son parent et son identifiant
*
* @param motcle
* le mots clés à modifier avec son parent et son identifiant
*/
public void modifierBaseDeDonnees(String motcle) {
if(!motcle.equals(""))
{
 
String postData = "" ;
postData += "&action=modification"+motcle ;
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST,iModele.getConfig().getServiceBaseUrl()+"/InventoryKeyWordList/"+iModele.getIdentifiant()) ;
if (!motcle.equals("")) {
 
String postData = "";
postData += "&action=modification" + motcle;
 
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, iModele
.getConfig().getServiceBaseUrl()
+ "/InventoryKeyWordList/" + iModele.getIdentifiant());
try {
rb.sendRequest(postData, new RequestCallback() {
 
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
 
}
public void onResponseReceived(Request request, Response response) {
 
public void onResponseReceived(Request request,
Response response) {
// TODO Auto-generated method stub
 
}
 
});
} catch (RequestException e) {
// TODO Auto-generated catch block
187,33 → 204,38
}
}
}
 
/**
* Envoie requete au serveur jrest pour modifier un mot clé
* @param motcle le mots clés à ajouter avec son ancien parent, son nouveau et son identifiant
*
* @param motcle
* le mots clés à ajouter avec son ancien parent, son nouveau et
* son identifiant
*/
public void deplacerBaseDeDonnees(String motcle) {
if(!motcle.equals(""))
{
 
String postData = "" ;
postData += "&action=deplacement"+motcle ;
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST,iModele.getConfig().getServiceBaseUrl()+"/InventoryKeyWordList/"+iModele.getIdentifiant()) ;
if (!motcle.equals("")) {
 
String postData = "";
postData += "&action=deplacement" + motcle;
 
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, iModele
.getConfig().getServiceBaseUrl()
+ "/InventoryKeyWordList/" + iModele.getIdentifiant());
try {
rb.sendRequest(postData, new RequestCallback() {
 
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
 
}
public void onResponseReceived(Request request, Response response) {
 
public void onResponseReceived(Request request,
Response response) {
// TODO Auto-generated method stub
 
}
 
});
} catch (RequestException e) {
// TODO Auto-generated catch block
220,7 → 242,7
e.printStackTrace();
}
}
}
 
}
 
}
/trunk/src/org/tela_botanica/client/modeles/LienImageAsynchroneDAO.java
New file
0,0 → 1,99
package org.tela_botanica.client.modeles;
 
import org.tela_botanica.client.image.ImageModele;
import org.tela_botanica.client.interfaces.Rafraichissable;
 
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.user.client.Window;
 
public class LienImageAsynchroneDAO {
 
private ImageModele iModele = null ;
public LienImageAsynchroneDAO(ImageModele im) {
iModele = im;
}
 
/**
* Setteur pour le modèle
*
* @param im
* le modèle à associer
*/
public void setIModele(ImageModele im) {
iModele = im;
}
public void obtenirLiaisonsImagesObservations(Rafraichissable r,String id)
{
String paramGet = "&coi_ce_image="+id ;
 
// et on envoie ça au serveur
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, iModele
.getConfig().getServiceBaseUrl()
+ "/inventoryImageLink/" + iModele.getIdentifiant() + "/" + paramGet);
try {
rb.sendRequest(null, new RequestCallback() {
 
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
 
}
 
public void onResponseReceived(Request request,
Response response) {
 
Window.alert(response.toString()) ;
 
}
});
 
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void lierImageBaseDeDonnees(String idsImages, String idsObs) {
String postData = "";
postData += "&coi_ce_image="+idsImages ;
postData += "&coi_ce_observation="+idsObs ;
postData += "&identifiant="+iModele.getIdentifiant() ;
 
Window.alert("data postée : "+postData) ;
// et on envoie ça au serveur
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, iModele
.getConfig().getServiceBaseUrl()
+ "/inventoryImageLink/");
try {
rb.sendRequest(postData, new RequestCallback() {
 
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
 
}
 
public void onResponseReceived(Request request,
Response response) {
 
// quand la requête est éxecutée on le signale au modèle
// poru qu'il mette à jour les données
// et en notifie le médiateur
// iModele.requeteTerminee();
 
}
});
 
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/trunk/src/org/tela_botanica/client/modeles/UtilisateurAsynchroneDAO.java
17,23 → 17,22
 
public class UtilisateurAsynchroneDAO {
 
/**
* Constructeur
* Constructeur
*/
public UtilisateurAsynchroneDAO() {
 
public UtilisateurAsynchroneDAO() {
}
 
/**
* Methode de classe d'appel du service gestion identification
* @param baseURL : URL du service
* @param retour : methode appelle en retour d'appel
* Methode de classe d'appel du service gestion identification
*
* @param baseURL :
* URL du service
* @param retour :
* methode appelle en retour d'appel
*/
 
public void getUtilisateur(String baseURL, final iRetourUtilisateur retour) {
 
// Recherche identifiant utilisateur identifie
46,11 → 45,11
if ((jsonArray = jsonValue.isArray()) != null) {
String identifiant = ((JSONString) jsonArray.get(0))
.stringValue(); // Identifiant utilisateur ou
// identifiant de session si non
// identifie
// identifiant de session si non
// identifie
boolean identifie = ((JSONBoolean) jsonArray.get(1))
.booleanValue(); // Drapeau leve si utilisateur
// deja identifie
// deja identifie
retour.onRetour(new Utilisateur(identifiant, identifie));
}
}
58,56 → 57,58
 
}
 
public void deconnecterUtilisateur(String baseURL,
final iRetourUtilisateur retour, String user) {
 
 
public void deconnecterUtilisateur(String baseURL, final iRetourUtilisateur retour, String user) {
 
HTTPRequest.asyncGet(baseURL + "/User/" + user ,
HTTPRequest.asyncGet(baseURL + "/User/" + user,
new ResponseTextHandler() {
 
public void onCompletion(String str) {
JSONValue jsonValue = JSONParser.parse(str);
JSONArray jsonArray;
if ((jsonArray = jsonValue.isArray()) != null) {
String identifiant = ((JSONString) jsonArray.get(0))
.stringValue(); // Identifiant utilisateur ou
// identifiant de session si non
// identifie
boolean identifie = ((JSONBoolean) jsonArray.get(1))
.booleanValue(); // Drapeau leve si utilisateur
// deja identifie
 
retour.onRetour(new Utilisateur(identifiant, identifie));
}
JSONValue jsonValue = JSONParser.parse(str);
JSONArray jsonArray;
if ((jsonArray = jsonValue.isArray()) != null) {
String identifiant = ((JSONString) jsonArray.get(0))
.stringValue(); // Identifiant utilisateur
// ou
// identifiant de session si non
// identifie
boolean identifie = ((JSONBoolean) jsonArray.get(1))
.booleanValue(); // Drapeau leve si
// utilisateur
// deja identifie
 
retour.onRetour(new Utilisateur(identifiant,
identifie));
}
}
});
});
}
 
public void connecteUtilisateur(String baseURL,
final iRetourUtilisateur retour, String login, String password) {
 
 
public void connecteUtilisateur(String baseURL,final iRetourUtilisateur retour, String login, String password) {
 
HTTPRequest.asyncGet(baseURL + "/User/" + login + "/" + password ,
HTTPRequest.asyncGet(baseURL + "/User/" + login + "/" + password,
new ResponseTextHandler() {
 
public void onCompletion(String str) {
 
JSONValue jsonValue = JSONParser.parse(str);
JSONArray jsonArray;
 
if ((jsonArray = jsonValue.isArray()) != null) {
String identifiant = ((JSONString) jsonArray.get(0))
.stringValue(); // Identifiant utilisateur ou
// identifiant de session si non
// identifie
.stringValue(); // Identifiant utilisateur
// ou
// identifiant de session si non
// identifie
boolean identifie = ((JSONBoolean) jsonArray.get(1))
.booleanValue(); // Drapeau leve si utilisateur
// deja identifie
.booleanValue(); // Drapeau leve si
// utilisateur
// deja identifie
 
retour.onRetour(new Utilisateur(identifiant, identifie));
retour.onRetour(new Utilisateur(identifiant,
identifie));
}
}
});
/trunk/src/org/tela_botanica/client/modeles/ObservationAsynchroneDAO.java
19,94 → 19,122
 
public class ObservationAsynchroneDAO {
 
/**
* Constructeur
* Constructeur
*/
public ObservationAsynchroneDAO() {
 
public ObservationAsynchroneDAO() {
 
}
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 getNombreObservation(String baseURL,
final iRetourObservation retour, String identifiant,
String identifiantLocalite, String localite, String annee,
String mois, String jour, String lieudit, String rechercheLibre) {
 
public void onCompletion(String str) {
HTTPRequest.asyncGet(baseURL + "/InventoryItemList/" + identifiant
+ "/" + identifiantLocalite + "/"
+ URL.encodeComponent(localite) + "/" + annee + "/" + mois
+ "/" + jour + "/" + URL.encodeComponent(rechercheLibre) + "/"
+ URL.encodeComponent(lieudit), new ResponseTextHandler() {
 
JSONValue jsonValue = JSONParser.parse(str);
JSONNumber jsonNumber;
if ((jsonNumber = jsonValue.isNumber()) != null) {
retour.onRetour(new Observation((int) jsonNumber.getValue()));
}
}
});
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) {
 
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,
 
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) {
new ResponseTextHandler() {
 
JSONValue jsonValue = JSONParser.parse(str);
JSONArray jsonArray;
JSONArray jsonArrayNested;
public void onCompletion(String str) {
 
JSONValue jsonValue = JSONParser.parse(str);
JSONArray jsonArray;
JSONArray jsonArrayNested;
 
if ((jsonArray = jsonValue.isArray()) != null) {
 
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));
 
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/Utilisateur.java
2,21 → 2,21
 
public class Utilisateur {
 
private String identifiant=null;
private boolean identifie=false;
private String identifiant = null;
private boolean identifie = false;
 
public Utilisateur(String identifiant, boolean identifie) {
this.identifiant=identifiant;
this.identifie=identifie;
this.identifiant = identifiant;
this.identifie = identifie;
}
 
/**
* Retourne l'identifiant de l'utilisateur identifie ou un identifiant de session
* Retourne l'identifiant de l'utilisateur identifie ou un identifiant de
* session
*
* @return String identifiant
*/
 
public String getIdentifiant() {
return identifiant;
}
23,11 → 23,12
 
/**
* Retourne vrai si utilisateur identifie
*
* @return boolean
*/
 
public boolean isIdentifie() {
return identifie;
}
 
}
/trunk/src/org/tela_botanica/client/modeles/Observation.java
1,48 → 1,41
package org.tela_botanica.client.modeles;
 
 
public class Observation {
 
private int nombreObservations = 0;
private Observation[] listeObservation = null;
 
private int nombreObservations=0;
private Observation [] listeObservation=null;
private String transmis = null;
private String nomSaisi = null;
private String nomRetenu = null;
private String numeroNomenclatural = null;
private String numeroTaxonomique = null;
private String famille = null;
private String localite = 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 transmis=null;
private String nomSaisi=null;
private String nomRetenu=null;
private String numeroNomenclatural=null;
private String numeroTaxonomique=null;
private String famille=null;
private String localite=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;
 
 
public Observation() {
}
 
/**
* Constructeur nombre total d'observations
*
* @param i
*/
 
public Observation(int i) {
nombreObservations=i;
nombreObservations = i;
}
 
public int getNombreObservations() {
return nombreObservations;
}
 
 
/**
* @param transmis
* @param nomSaisi
58,8 → 51,11
* @param date
* @param numeroOrdre
*/
public Observation(String transmis, String nomSaisi, String nomRetenu, String numeroNomenclatural, String numeroTaxonomique, String famille, String localite, String lieudit, String station, String milieu, String commentaire, String date, String numeroOrdre) {
public Observation(String transmis, String nomSaisi, String nomRetenu,
String numeroNomenclatural, String numeroTaxonomique,
String famille, String localite, String lieudit, String station,
String milieu, String commentaire, String date, String numeroOrdre) {
 
this.transmis = transmis;
this.nomSaisi = nomSaisi;
this.nomRetenu = nomRetenu;
73,12 → 69,11
this.commentaire = commentaire;
this.date = date;
this.numeroOrdre = numeroOrdre;
 
}
 
 
public Observation(Observation[] listeObservation) {
this.listeObservation=listeObservation;
this.listeObservation = listeObservation;
}
 
public Observation[] getListeObservation() {
85,11 → 80,8
return listeObservation;
}
 
 
public String getNomSaisi() {
return nomSaisi;
}
 
}
/trunk/src/org/tela_botanica/client/modeles/ImageUploaderAsynchroneDAO.java
9,83 → 9,83
import com.gwtextux.client.widgets.upload.UploadDialog;
import com.gwtextux.client.widgets.upload.UploadDialogListenerAdapter;
 
 
/**
* DAO un peu particulier car il crée une fenetre d'upload différente
* suivant que le plugin Java est détecté ou non
* DAO un peu particulier car il crée une fenetre d'upload différente suivant
* que le plugin Java est détecté ou non
*
*
*/
public class ImageUploaderAsynchroneDAO {
 
/**
* Modele associé au DAO
*/
private static ImageModele iModele ;
public ImageUploaderAsynchroneDAO(ImageModele im)
{
iModele = im ;
private static ImageModele iModele;
 
public ImageUploaderAsynchroneDAO(ImageModele im) {
iModele = im;
}
 
/**
* Setteur pour le modele
* @param im le modèle à associer au DAO
* Setteur pour le modele
*
* @param im
* le modèle à associer au DAO
*/
public void setIModele(ImageModele im)
{
iModele = im ;
public void setIModele(ImageModele im) {
iModele = im;
}
 
/**
* Crée un panel d'upload simple aux fonctions réduites mais utilisant uniquement javascript
* (pour les utilisateurs qui n'ont pas java)
* Crée un panel d'upload simple aux fonctions réduites mais utilisant
* uniquement javascript (pour les utilisateurs qui n'ont pas java)
*/
@SuppressWarnings("unused")
private static void appelerUploadSimple()
{
UploadDialog up = new UploadDialog("Upload simple de fichiers") ;
up.setUrl(iModele.getConfig().getServiceBaseUrl()+"/InventoryImage");
UrlParam id = new UrlParam("identifiant",iModele.getIdentifiant()) ;
UrlParam[] params = {id} ;
up.setBaseParams(params);
up.setModal(true) ;
up.addListener(new UploadDialogListenerAdapter() {
private static void appelerUploadSimple() {
 
UploadDialog up = new UploadDialog("Upload simple de fichiers");
up.setUrl(iModele.getConfig().getServiceBaseUrl() + "/InventoryImage");
UrlParam id = new UrlParam("identifiant", iModele.getIdentifiant());
UrlParam[] params = { id };
up.setBaseParams(params);
up.setModal(true);
 
up.addListener(new UploadDialogListenerAdapter() {
 
public void onClose(Panel panel) {
iModele.requeteTerminee() ;
 
iModele.requeteTerminee();
}
 
public void onUploadComplete(UploadDialog source) {
iModele.requeteTerminee() ;
 
iModele.requeteTerminee();
 
}
 
});
up.show();
});
 
up.show();
 
}
 
/**
* Crée une fenêtre contenant une applet java pour uploader plusieurs fichiers à la fois avec quelques
* fonctions avancées (nécessite le plugin java pour le navigateur)
* Crée une fenêtre contenant une applet java pour uploader plusieurs
* fichiers à la fois avec quelques fonctions avancées (nécessite le plugin
* java pour le navigateur)
*/
@SuppressWarnings("unused")
private static void appelerUploadMultiple()
{
private static void appelerUploadMultiple() {
 
final Window nPan = new Window("Upload multiple");
nPan.setWidth(640) ;
nPan.setWidth(640);
 
final String warning = "<p class=\"warning_upload\"> A la fin de l'envoi, veuillez fermer la fenêtre pour accéder aux images. </p>" ;
final String warning = "<p class=\"warning_upload\"> A la fin de l'envoi, veuillez fermer la fenêtre pour accéder aux images. </p>";
 
final String applet = "<applet code=\"wjhk.jupload2.JUploadApplet\" archive=\"wjhk.jupload.jar\" alt=\"\" mayscript=\"\" height=\"350\" width=\"625\">";
final String paramPostTarget = "<param name=\"postURL\" value=\""+iModele.getConfig().getServiceBaseUrl()+"/InventoryImage/\">";
final String paramPostTarget = "<param name=\"postURL\" value=\""
+ iModele.getConfig().getServiceBaseUrl()
+ "/InventoryImage/\">";
final String paramUploadPolicy = "<param name=\"uploadPolicy\" value=\"PictureUploadPolicy\">";
final String paramMaxChunkSize = "<param name=\"maxChunkSize\" value=\"0\">";
final String paramMaxFileSize = "<param name=\"maxFileSize\" value=\"10000000\">";
92,52 → 92,42
final String paramTransmitMetaData = "<param name=\"pictureTransmitMetadata\" value=\"true\">";
final String paramFilesPerRequest = "<param name=\"nbFilesPerRequest\" value=\"1\">";
final String paramAllowedExtensions = "<param name=\"allowedFileExtensions\" value=\"jpg/jpeg/\">";
final String paramUploadSuccess = "<param name=\"stringUploadSuccess\" value=\"OK\">" ;
final String paramUploadSuccess = "<param name=\"stringUploadSuccess\" value=\"OK\">";
final String paramShowLogWindow = "<param name=\"showLogWindow\" value=\"false\">";
final String paramFormdata = "<param name=\"formData\" value=\"postid\">" ;
final String paramFormdata = "<param name=\"formData\" value=\"postid\">";
final String finApplet = "</applet>";
 
final String appelApplet = applet
+ paramPostTarget
+ paramUploadPolicy
+ paramMaxChunkSize
+ paramMaxFileSize
+ paramTransmitMetaData
+ paramFilesPerRequest
+ paramAllowedExtensions
+ paramUploadSuccess
+ paramShowLogWindow
+paramFormdata
final String appelApplet = applet + paramPostTarget + paramUploadPolicy
+ paramMaxChunkSize + paramMaxFileSize + paramTransmitMetaData
+ paramFilesPerRequest + paramAllowedExtensions
+ paramUploadSuccess + paramShowLogWindow + paramFormdata
+ finApplet;
final String htmlForm =
"<form method=\"post\" name=\"postid\">"
+"<input type=\"hidden\" name=\"identifiant\" value=\""+iModele.getIdentifiant()+"\">"
+"</form>" ;
 
nPan.setHtml(warning+appelApplet+htmlForm);
nPan.setModal(true) ;
final String htmlForm = "<form method=\"post\" name=\"postid\">"
+ "<input type=\"hidden\" name=\"identifiant\" value=\""
+ iModele.getIdentifiant() + "\">" + "</form>";
 
nPan.setHtml(warning + appelApplet + htmlForm);
 
nPan.setModal(true);
 
nPan.addListener(new WindowListenerAdapter() {
 
public void onClose(Panel panel) {
 
public void onClose(Panel panel) {
iModele.requeteTerminee() ;
iModele.requeteTerminee();
 
}
 
});
 
nPan.show();
}
 
/**
* Fonction javascript native qui détecte la présence du plugin java pour le navigateur
* et appelle la méthode d'upload adaptée (appelerUploadSimple ou appelerUploadMultiple)
* Fonction javascript native qui détecte la présence du plugin java pour le
* navigateur et appelle la méthode d'upload adaptée (appelerUploadSimple ou
* appelerUploadMultiple)
*/
public static native void choisirMethodeUpload() /*-{
/trunk/src/org/tela_botanica/client/modeles/ImageCarnet.java
5,16 → 5,15
import java.util.Set;
 
import com.google.gwt.json.client.JSONObject;
 
/**
*
* Classe representant une image du carnet,
* elle ne contient pas d'image à proprement parler mais
* plutôt les informations associées ainsi que l'url distante.
* C'est une table de hachage qui contient des paires propriété/valeur
* Classe representant une image du carnet, elle ne contient pas d'image à
* proprement parler mais plutôt les informations associées ainsi que l'url
* distante. C'est une table de hachage qui contient des paires propriété/valeur
*
*/
public class ImageCarnet extends HashMap<String, String> {
 
/**
*
23,345 → 22,347
 
/**
* Constructeur avec un objet JSON
*
* @param image
*/
public ImageCarnet(JSONObject image)
{
public ImageCarnet(JSONObject image) {
// l'objet JSON est une table de hachage
Set<String> im = image.keySet() ;
Set<String> im = image.keySet();
 
// on la parcourt pour chaque clé
for (Iterator<String> iterator = im.iterator(); iterator.hasNext();) {
 
// si elle est associée à une valeur, on l'ajoute
String key = iterator.next();
if(image.get(key).isString() != null)
{
String valeur = image.get(key).isString().stringValue() ;
this.put(key, valeur) ;
}
else
{
if (image.get(key).isString() != null) {
String valeur = image.get(key).isString().stringValue();
this.put(key, valeur);
} else {
// sinon on ajoute la clé avec une valeur vide
String valeur = " " ;
this.put(key, valeur) ;
String valeur = " ";
this.put(key, valeur);
}
 
}
 
}
 
/**
* Surcharge de toString qui affiche toutes les propriétés de l'image
*/
public String toString()
{
 
public String toString() {
String valeur = " ";
for (Iterator<String> iterator = this.keySet().iterator(); iterator.hasNext();) {
 
for (Iterator<String> iterator = this.keySet().iterator(); iterator
.hasNext();) {
 
String key = iterator.next();
if(this.get(key) != null)
{
valeur += "cle : "+key+" valeur :"+this.get(key)+"\n" ;
if (this.get(key) != null) {
valeur += "cle : " + key + " valeur :" + this.get(key) + "\n";
}
 
}
return valeur ;
 
return valeur;
}
 
/**
* Pour éviter que l'on traite des valeurs nulles à l'affichage
* on passe par cette fonction qui retire les charactères nuls qui font planter
* l'affichage, il ne faut pas utiliser get directement
* Pour éviter que l'on traite des valeurs nulles à l'affichage on passe par
* cette fonction qui retire les charactères nuls qui font planter
* l'affichage, il ne faut pas utiliser get directement
*
* @param cle
* @return la valeur associée à la clé
*/
public String renvoyerValeurCorrecte(String cle)
{
if(this.containsKey((cle)))
{
String valeur = this.get(cle) ;
if(valeur.equals("null") || valeur == null)
{
return " " ;
}
else
{
char nullChar = '\u0000' ;
String sNull = ""+nullChar ;
valeur = valeur.replaceAll(sNull, "") ;
return valeur ;
public String renvoyerValeurCorrecte(String cle) {
if (this.containsKey((cle))) {
String valeur = this.get(cle);
if (valeur.equals("null") || valeur == null) {
return " ";
} else {
char nullChar = '\u0000';
String sNull = "" + nullChar;
valeur = valeur.replaceAll(sNull, "");
return valeur;
}
} else {
return " ";
}
else
{
return " " ;
}
}
 
/**
* Acesseur pour l'id de l'image
*
* @return l'id de l'image
*/
public String getId() {
return renvoyerValeurCorrecte("ci_id_image") ;
 
return renvoyerValeurCorrecte("ci_id_image");
}
 
/**
* Acesseur pour le numero d'ordre de l'image
*
* @return l'ordre de l'image
*/
public String getOrdre() {
return renvoyerValeurCorrecte("ci_ordre") ;
 
return renvoyerValeurCorrecte("ci_ordre");
}
 
/**
* Base de l'url serveur pour les images
*
* @return url racine pour les images
*/
public String getBaseUrl()
{
return "http://162.38.234.9/Documents/images_serveur/" ;
public String getBaseUrl() {
return "http://162.38.234.9/Documents/images_serveur/";
}
 
/**
* Renvoie le nom de base du fichier image et ses sous dossier
* @return le nom de base du fichier de type (XXX_XXX_XXX), et ses sous dossier
*
* @return le nom de base du fichier de type (XXX_XXX_XXX), et ses sous
* dossier
*/
public String[] getBaseFileName()
{
String id = getId() ;
int maxZeros = 9 - id.length() ;
for(int i = 0 ; i < maxZeros ; i++)
{
id = "0"+id ;
public String[] getBaseFileName() {
String id = getId();
 
int maxZeros = 9 - id.length();
 
for (int i = 0; i < maxZeros; i++) {
id = "0" + id;
}
String dossierNv1 = id.substring(0, 3) ;
String dossierNv2 = id.substring(3, 6) ;
String fichierNv = id.substring(6, 9) ;
String nomFichier = dossierNv1+"_"+dossierNv2+"_"+fichierNv ;
String[] infosFichier = {nomFichier , dossierNv1 , dossierNv2} ;
return infosFichier ;
 
String dossierNv1 = id.substring(0, 3);
String dossierNv2 = id.substring(3, 6);
String fichierNv = id.substring(6, 9);
 
String nomFichier = dossierNv1 + "_" + dossierNv2 + "_" + fichierNv;
 
String[] infosFichier = { nomFichier, dossierNv1, dossierNv2 };
 
return infosFichier;
}
 
/**
* Renvoie le chemin et nom du fichier grand format
*
* @return le chemin du fichier grand format
*/
public String getLUrl() {
String[] infosFichier = getBaseFileName() ;
return getBaseUrl()+infosFichier[1]+"/"+infosFichier[2]+"/L/"+infosFichier[0]+"_L.jpg" ;
 
String[] infosFichier = getBaseFileName();
 
return getBaseUrl() + infosFichier[1] + "/" + infosFichier[2] + "/L/"
+ infosFichier[0] + "_L.jpg";
}
 
/**
* Renvoie le chemin et nom du fichier petit format
*
* @return le chemin du fichier petit format
*/
public String getSUrl() {
String[] infosFichier = getBaseFileName() ;
return getBaseUrl()+infosFichier[1]+"/"+infosFichier[2]+"/S/"+infosFichier[0]+"_S.jpg" ;
 
String[] infosFichier = getBaseFileName();
 
return getBaseUrl() + infosFichier[1] + "/" + infosFichier[2] + "/S/"
+ infosFichier[0] + "_S.jpg";
}
 
/**
* Renvoie le chemin et nom du fichier moyen format
*
* @return le chemin du fichier moyen format
*/
public String getMUrl() {
String[] infosFichier = getBaseFileName() ;
return getBaseUrl()+infosFichier[1]+"/"+infosFichier[2]+"/M/"+infosFichier[0]+"_M.jpg" ;
 
String[] infosFichier = getBaseFileName();
 
return getBaseUrl() + infosFichier[1] + "/" + infosFichier[2] + "/M/"
+ infosFichier[0] + "_M.jpg";
}
 
/**
* Renvoie la taille de l'image
* @return un tableau de deux string contenant la hauteur puis la largeur
*
* @return un tableau de deux string contenant la hauteur puis la largeur
*/
public String[] getTailleImage()
{
String[] XY = { renvoyerValeurCorrecte("ci_meta_height") , renvoyerValeurCorrecte("ci_meta_width") } ;
return XY ;
public String[] getTailleImage() {
String[] XY = { renvoyerValeurCorrecte("ci_meta_height"),
renvoyerValeurCorrecte("ci_meta_width") };
return XY;
}
public String[] getNote()
{
String[] note = {renvoyerValeurCorrecte("ci_note_image") } ;
return note ;
 
public String[] getNote() {
String[] note = { renvoyerValeurCorrecte("ci_note_image") };
return note;
}
/**
 
/**
* Renvoie la date exif associée à l'image
*
* @return la date associée à l'image
*/
public String getDate() {
return renvoyerValeurCorrecte("ci_meta_date") ;
 
return renvoyerValeurCorrecte("ci_meta_date");
}
 
/**
* Renvoie la ville associée à l'image
*
* @return la ville iptc
*/
public Object getIptcCity() {
return renvoyerValeurCorrecte("ci_meta_iptc_city") ;
 
return renvoyerValeurCorrecte("ci_meta_iptc_city");
}
 
/**
* Renvoie le fabricant de l'appareil
*
* @return le fabricant
*/
public String getMake() {
return renvoyerValeurCorrecte("ci_meta_make") ;
 
return renvoyerValeurCorrecte("ci_meta_make");
}
 
/**
* Renvoie le modele de l'appareil
*
* @return le modele
*/
public String getModel() {
return renvoyerValeurCorrecte("ci_meta_model") ;
 
return renvoyerValeurCorrecte("ci_meta_model");
}
 
/**
* Renvoie un tableau nom / valeur de toutes les metadonnées Iptc
*
* @return les métadonnées iptc
*/
public String[][] getMetadonnesIptc() {
String[][] metaIptc = new String[14][2] ;
int elem = 0 ;
for (Iterator<String> it = this.keySet().iterator(); it.hasNext();)
{
 
String[][] metaIptc = new String[14][2];
int elem = 0;
 
for (Iterator<String> it = this.keySet().iterator(); it.hasNext();) {
 
String key = it.next();
// on filtre le "ci"
String type[] = key.split("_",3) ;
// si c'est une metadonnee exif ou iptc
if(type[1].equals("meta"))
{
String[] genre = type[2].split("_",2) ;
if(genre[0].equals("iptc"))
{
String nom = genre[1] ;
metaIptc[elem][0] = nom ;
metaIptc[elem][1] = renvoyerValeurCorrecte(key) ;
elem++ ;
}
}
 
// on filtre le "ci"
String type[] = key.split("_", 3);
 
// si c'est une metadonnee exif ou iptc
if (type[1].equals("meta")) {
String[] genre = type[2].split("_", 2);
if (genre[0].equals("iptc")) {
String nom = genre[1];
metaIptc[elem][0] = nom;
metaIptc[elem][1] = renvoyerValeurCorrecte(key);
elem++;
}
 
}
 
}
return metaIptc ;
 
return metaIptc;
}
 
/**
* Renvoie un tableau nom / valeur de toutes les metadonnées Exif
*
* @return les métadonnées Exif
*/
public String[][] getMetadonnesExif() {
String[][] metaExif = new String[31][2] ;
int elem = 0 ;
for (Iterator<String> it = this.keySet().iterator(); it.hasNext();)
{
 
String[][] metaExif = new String[31][2];
int elem = 0;
 
for (Iterator<String> it = this.keySet().iterator(); it.hasNext();) {
 
String key = it.next();
// on filtre le "ci"
String type[] = key.split("_",3) ;
// si c'est une metadonnee exif ou iptc
if(type[1].equals("meta"))
{
String[] genre = type[2].split("_",2) ;
if(genre[0].equals("exif"))
{
String nom = genre[1] ;
metaExif[elem][0] = nom ;
metaExif[elem][1] = renvoyerValeurCorrecte(key) ;
elem++ ;
}
}
 
// on filtre le "ci"
String type[] = key.split("_", 3);
 
// si c'est une metadonnee exif ou iptc
if (type[1].equals("meta")) {
String[] genre = type[2].split("_", 2);
if (genre[0].equals("exif")) {
String nom = genre[1];
metaExif[elem][0] = nom;
metaExif[elem][1] = renvoyerValeurCorrecte(key);
elem++;
}
 
}
 
}
return metaExif ;
 
return metaExif;
 
}
 
/**
* Renvoie un tableau nom / valeur contenant les infos générales
*
* @return les infos générales
*/
public String[][] getInfoGenerales() {
String[][] metaGen = new String[2][2] ;
metaGen[0][0] = "ci_meta_comment" ;
metaGen[0][1] = this.renvoyerValeurCorrecte("ci_meta_comment") ;
metaGen[1][0] = "ci_meta_date" ;
metaGen[1][1] = this.renvoyerValeurCorrecte("ci_meta_date") ;
return metaGen ;
 
String[][] metaGen = new String[2][2];
 
metaGen[0][0] = "ci_meta_comment";
metaGen[0][1] = this.renvoyerValeurCorrecte("ci_meta_comment");
 
metaGen[1][0] = "ci_meta_date";
metaGen[1][1] = this.renvoyerValeurCorrecte("ci_meta_date");
 
return metaGen;
}
 
/**
* Renvoie une string contenant les mots clés séparés par des ','
*
* @return les mots clés
*/
public String getMotsCles() {
return renvoyerValeurCorrecte("ci_meta_mots_cles") ;
 
return renvoyerValeurCorrecte("ci_meta_mots_cles");
}
 
/**
* Met à jour le commenentaire et la date
* @param commentaires le nouveau commentaire
* @param date la nouvelle date
*
* @param commentaires
* le nouveau commentaire
* @param date
* la nouvelle date
*/
public void miseAJourInfoGenerales(String commentaires, String date, String note)
{
put("ci_meta_comment",commentaires) ;
put("ci_note_image",note) ;
put("ci_meta_date",date) ;
public void miseAJourInfoGenerales(String commentaires, String date,
String note) {
put("ci_meta_comment", commentaires);
put("ci_note_image", note);
put("ci_meta_date", date);
}
 
/**
* Met à jour les mots clés
* @param motsClesEnCours la liste de mots clés séparés par des ','
*
* @param motsClesEnCours
* la liste de mots clés séparés par des ','
*/
public void mettreAjourMotsCles(String motsClesEnCours) {
put("ci_meta_mots_cles",motsClesEnCours) ;
 
put("ci_meta_mots_cles", motsClesEnCours);
 
}
 
}
/trunk/src/org/tela_botanica/client/modeles/ImageAsynchroneDAO.java
10,153 → 10,161
import com.google.gwt.http.client.Response;
 
/**
* DAO d'accès à une image, n'est utilisé que pour l'écriture et pas pour la lecture des images
* qui se fait par paquet
* DAO d'accès à une image, n'est utilisé que pour l'écriture et pas pour la
* lecture des images qui se fait par paquet
*
* @author aurelien
*
*
*/
public class ImageAsynchroneDAO {
 
ImageModele iModele = null ;
public ImageAsynchroneDAO(ImageModele im)
{
iModele = im ;
ImageModele iModele = null;
 
public ImageAsynchroneDAO(ImageModele im) {
iModele = im;
}
public void setIModele(ImageModele im)
{
iModele = im ;
 
public void setIModele(ImageModele im) {
iModele = im;
}
 
/**
* Met à jour la base de données avec toutes les données d'une image
* @param ic l'image à mettre à jour
*
* @param ic
* l'image à mettre à jour
*/
public void SynchroniserBaseDeDonnees(final ImageCarnet ic)
{
String postData = "" ;
public void SynchroniserBaseDeDonnees(final ImageCarnet ic) {
String postData = "";
 
// on construit le post avec toutes les valeur de l'image
for(Iterator<String> imgIt = ic.keySet().iterator();imgIt.hasNext();)
{
String key = imgIt.next() ;
String valeur = ic.renvoyerValeurCorrecte(key) ;
postData += "&"+key+"="+valeur ;
for (Iterator<String> imgIt = ic.keySet().iterator(); imgIt.hasNext();) {
 
String key = imgIt.next();
String valeur = ic.renvoyerValeurCorrecte(key);
postData += "&" + key + "=" + valeur;
 
}
 
// et on envoie une requête asynchrone
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, iModele.getConfig().getServiceBaseUrl()+"/inventoryImage/"+iModele.getIdentifiant()+"/") ;
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, iModele
.getConfig().getServiceBaseUrl()
+ "/inventoryImage/" + iModele.getIdentifiant() + "/");
 
try {
rb.sendRequest(postData, new RequestCallback() {
 
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
 
}
 
public void onResponseReceived(Request request, Response response) {
if(response.getText().equals("OK"))
{
return ;
public void onResponseReceived(Request request,
Response response) {
 
if (response.getText().equals("OK")) {
return;
} else {
com.google.gwt.user.client.Window
.alert("Problème lors de la mise à jour des données");
}
else
{
com.google.gwt.user.client.Window.alert("Problème lors de la mise à jour des données") ;
}
}
}) ;
 
});
 
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
 
/**
* Met à jour la base de données avec les mots clés associés à l'image
* @param ic l'image à mettre à jour
*
* @param ic
* l'image à mettre à jour
*/
public void SynchroniserMotsClesImageBaseDeDonnees(final ImageCarnet ic)
{
String postData = "" ;
// on récupère les mots clés de l'image et on fabrique le post
String motsCles = ic.getMotsCles() ;
String id = ic.getId() ;
postData += "&ci_id_image="+id+"&ci_meta_mots_cles="+motsCles ;
public void SynchroniserMotsClesImageBaseDeDonnees(final ImageCarnet ic) {
String postData = "";
 
// on envoie une requête asynchrone
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, iModele.getConfig().getServiceBaseUrl()+"/inventoryImage/"+iModele.getIdentifiant()+"/") ;
try {
rb.sendRequest(postData, new RequestCallback() {
// on récupère les mots clés de l'image et on fabrique le post
String motsCles = ic.getMotsCles();
String id = ic.getId();
postData += "&ci_id_image=" + id + "&ci_meta_mots_cles=" + motsCles;
 
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
// on envoie une requête asynchrone
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, iModele
.getConfig().getServiceBaseUrl()
+ "/inventoryImage/" + iModele.getIdentifiant() + "/");
 
public void onResponseReceived(Request request, Response response) {
if(response.getText().equals("OK"))
{
return ;
}
else
{
com.google.gwt.user.client.Window.alert("Problème lors de la mise à jour des données") ;
}
}
}) ;
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
rb.sendRequest(postData, new RequestCallback() {
 
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
 
}
 
public void onResponseReceived(Request request,
Response response) {
 
if (response.getText().equals("OK")) {
return;
} else {
com.google.gwt.user.client.Window
.alert("Problème lors de la mise à jour des données");
}
}
 
});
 
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
 
/**
* Supprime une image de la base de données
* @param ic l'image à supprimer
*
* @param ic
* l'image à supprimer
*/
public void supprimerBaseDeDonnees(final ImageCarnet ic)
{
// le post contient l'action delete pour JREST (qui ne gère pas DELETE comme une requête à part entière)
String postData = "" ;
postData += "&action=DELETE" ;
public void supprimerBaseDeDonnees(final ImageCarnet ic) {
// le post contient l'action delete pour JREST (qui ne gère pas DELETE
// comme une requête à part entière)
String postData = "";
postData += "&action=DELETE";
 
// on envoie un post avec l'id de l'image à supprimer
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, iModele.getConfig().getServiceBaseUrl()+"/inventoryImage/"+iModele.getIdentifiant()+"/"+ic.getId()) ;
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, iModele
.getConfig().getServiceBaseUrl()
+ "/inventoryImage/"
+ iModele.getIdentifiant()
+ "/"
+ ic.getId());
 
try {
rb.sendRequest(postData, new RequestCallback() {
 
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
 
}
public void onResponseReceived(Request request, Response response) {
if(response.getText().equals("OK"))
{
return ;
 
public void onResponseReceived(Request request,
Response response) {
 
if (response.getText().equals("OK")) {
return;
} else {
com.google.gwt.user.client.Window
.alert("Problème lors de la mise à jour des données");
}
else
{
com.google.gwt.user.client.Window.alert("Problème lors de la mise à jour des données") ;
}
}
}) ;
 
});
 
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
/trunk/src/org/tela_botanica/client/modeles/ListeImageCarnet.java
4,16 → 4,16
 
/**
* table de hachage composée d'ImageCarnet, renvoyé par les objets de type DAO
* pour les images.
* La clé est l'identifiant de l'image dans la base de données, et la valeur un objet
* de type ImageCarnet.
* GWT ne supporte pas encore les type paramètres mais quand il le fera il faudra créer la HashMap
* avec <String,ImageCarnet>
* pour les images. La clé est l'identifiant de l'image dans la base de données,
* et la valeur un objet de type ImageCarnet. GWT ne supporte pas encore les
* type paramètres mais quand il le fera il faudra créer la HashMap avec
* <String,ImageCarnet>
*
* @author aurelien
*
*/
public class ListeImageCarnet extends HashMap<String, ImageCarnet> {
 
/**
*
*/
20,34 → 20,33
private static final long serialVersionUID = 2715320270773281540L;
 
/**
* Constructeur sans paramètres
* Constructeur sans paramètres
*/
public ListeImageCarnet()
{
public ListeImageCarnet() {
super();
}
 
/**
* Constructeur avec paramètre
* @param taille la taille de la table de hachage
*
* @param taille
* la taille de la table de hachage
*/
public ListeImageCarnet(int taille)
{
public ListeImageCarnet(int taille) {
super(taille);
}
 
/**
* Constructeur avec paramètre
* @param ic un tableau d'ImageCarnet
*
* @param ic
* un tableau d'ImageCarnet
*/
public ListeImageCarnet(ImageCarnet[] ic)
{
super() ;
for (int i = 0; i < ic.length; i++)
{
if(ic[i] != null && ic[i] instanceof ImageCarnet)
{
this.put(ic[i].getOrdre(),ic[i]);
public ListeImageCarnet(ImageCarnet[] ic) {
super();
for (int i = 0; i < ic.length; i++) {
if (ic[i] != null && ic[i] instanceof ImageCarnet) {
this.put(ic[i].getOrdre(), ic[i]);
}
}
}
/trunk/src/org/tela_botanica/client/modeles/ListeImageAsynchroneDAO.java
16,172 → 16,181
import com.google.gwt.json.client.JSONValue;
 
/**
* Data Object Access communiquant avec le serveur jrest fournissant la liste des images
* répondant à des critères donné
* Data Object Access communiquant avec le serveur jrest fournissant la liste
* des images répondant à des critères donné
*
* @author aurelien
*
*
*/
public class ListeImageAsynchroneDAO {
 
/**
* Le modèle associé au DAO
*/
ImageModele iModele = null ;
public ListeImageAsynchroneDAO(ImageModele im)
{
iModele = im ;
ImageModele iModele = null;
 
public ListeImageAsynchroneDAO(ImageModele im) {
iModele = im;
}
 
/**
* Setteur pour le modèle
* @param im le modèle à associer
*
* @param im
* le modèle à associer
*/
public void setIModele(ImageModele im)
{
iModele = im ;
public void setIModele(ImageModele im) {
iModele = im;
}
 
/**
* Envoie une requete au serveur jrest pour obtenir une liste d'images correspondant à des critères demandés
* @param r le rafraichissable qui a demandé les données
* @param criteres un tableau contenant les critères de selections
* Envoie une requete au serveur jrest pour obtenir une liste d'images
* correspondant à des critères demandés
*
* @param r
* le rafraichissable qui a demandé les données
* @param criteres
* un tableau contenant les critères de selections
*/
public void ObtenirListeImages(final Rafraichissable r, String[][] criteres)
{
String requete = "" ;
public void ObtenirListeImages(final Rafraichissable r, String[][] criteres) {
 
String requete = "";
 
// on construit les paramètres du get
if(criteres != null)
{
if (criteres != null) {
for (int i = 0; i < criteres.length; i++) {
if(!criteres[i][1].equals(""))
{
if(i!= 0)
{
 
if (!criteres[i][1].equals("")) {
if (i != 0) {
requete += "&";
}
requete += criteres[i][0]+"="+criteres[i][1] ;
requete += criteres[i][0] + "=" + criteres[i][1];
 
}
}
}
 
// on envoie le get asynchrone
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET,iModele.getConfig().getServiceBaseUrl()+"/InventoryImageList/"+iModele.getIdentifiant()+"/"+requete) ;
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, iModele
.getConfig().getServiceBaseUrl()
+ "/InventoryImageList/"
+ iModele.getIdentifiant()
+ "/"
+ requete);
try {
rb.sendRequest(null , new RequestCallback() {
rb.sendRequest(null, new RequestCallback() {
 
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
 
}
 
public void onResponseReceived(Request request, Response response) {
final ListeImageCarnet photoData ;
public void onResponseReceived(Request request,
Response response) {
 
final JSONValue responseValue = JSONParser.parse(response.getText());
final ListeImageCarnet photoData;
 
final JSONValue responseValue = JSONParser.parse(response
.getText());
// si c'est un tableau
if (responseValue.isArray() != null) {
 
final JSONArray reponse = responseValue.isArray();
 
final int taillemax = reponse.size();
photoData = new ListeImageCarnet(taillemax);
 
// on le parcourt
for (int j = 0; j < taillemax ; j++) {
JSONObject image = (JSONObject)reponse.get(j) ;
ImageCarnet im = new ImageCarnet(image) ;
// et on en extrait les données pour construire la liste d'image
photoData.put(im.getOrdre(),im) ;
for (int j = 0; j < taillemax; j++) {
 
JSONObject image = (JSONObject) reponse.get(j);
 
ImageCarnet im = new ImageCarnet(image);
 
// et on en extrait les données pour construire la
// liste d'image
photoData.put(im.getOrdre(), im);
 
}
}
else
{
} else {
// si c'est un objet alors il n'y a qu'une réponse
if(responseValue.isObject() != null)
{
if (responseValue.isObject() != null) {
photoData = new ListeImageCarnet(1);
ImageCarnet im = new ImageCarnet(responseValue.isObject()) ;
// on crée une liste de 1 élement auquel on ajoute ce qui a été reçu
photoData.put(im.getOrdre(),im) ;
}
else
{
ImageCarnet im = new ImageCarnet(responseValue
.isObject());
// on crée une liste de 1 élement auquel on ajoute
// ce qui a été reçu
photoData.put(im.getOrdre(), im);
} else {
// sinon on crée une liste vide
photoData = new ListeImageCarnet(0) ;
photoData = new ListeImageCarnet(0);
}
}
// dans tous les cas on transmet la liste crée au rafraichissable en lui demandant de répandre les données car il est
 
// dans tous les cas on transmet la liste crée au
// rafraichissable en lui demandant de répandre les données
// car il est
// le premier à les recevoir
r.rafraichir(photoData,true);
r.rafraichir(photoData, true);
}
}) ;
});
 
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
 
/**
* Met à jour les valeurs d'une liste d'image donnée dans la base de données
* @param li la liste d'image à synchroniser avec la base
*
* @param li
* la liste d'image à synchroniser avec la base
*/
public void SynchroniserBaseDeDonnees(ListeImageCarnet li)
{
public void SynchroniserBaseDeDonnees(ListeImageCarnet li) {
// on parcourt toute la liste d'image
for(Iterator<String> listIt = li.keySet().iterator() ; listIt.hasNext() ;)
{
String postData = "" ;
ImageCarnet enCours = li.get(listIt.next()) ;
for (Iterator<String> listIt = li.keySet().iterator(); listIt.hasNext();) {
String postData = "";
 
ImageCarnet enCours = li.get(listIt.next());
 
// pour chaque image on extrait les informations
for(Iterator<String> imgIt = enCours.keySet().iterator();imgIt.hasNext();)
{
for (Iterator<String> imgIt = enCours.keySet().iterator(); imgIt
.hasNext();) {
// qu'on place dans le poste
String key = imgIt.next() ;
String valeur = enCours.renvoyerValeurCorrecte(key) ;
valeur.replaceAll("'", "\'") ;
postData += "&"+key+"="+enCours.renvoyerValeurCorrecte(key) ;
String key = imgIt.next();
String valeur = enCours.renvoyerValeurCorrecte(key);
valeur.replaceAll("'", "\'");
postData += "&" + key + "="
+ enCours.renvoyerValeurCorrecte(key);
 
}
// on fait un post asynchrone et on les envoie à jrest
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST,iModele.getConfig().getServiceBaseUrl()+"/inventoryImage/"+iModele.getIdentifiant()+"/") ;
 
// on fait un post asynchrone et on les envoie à jrest
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, iModele
.getConfig().getServiceBaseUrl()
+ "/inventoryImage/" + iModele.getIdentifiant() + "/");
 
try {
rb.sendRequest(postData, new RequestCallback() {
 
public void onError(Request request, Throwable exception) {
 
}
 
public void onResponseReceived(Request request,
Response response) {
if(response.getText().equals("OK"))
{
return ;
 
if (response.getText().equals("OK")) {
return;
} else {
com.google.gwt.user.client.Window
.alert("Problème lors de la mise à jour des données");
}
else
{
com.google.gwt.user.client.Window.alert("Problème lors de la mise à jour des données") ;
}
 
}
}) ;
 
});
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
188,50 → 197,54
}
}
}
 
/**
* Supprime des image sur le serveur par rapport à leur identifant
* @param ids un tableau d'identifiants d'images à supprimer
* Supprime des image sur le serveur par rapport à leur identifant
*
* @param ids
* un tableau d'identifiants d'images à supprimer
*/
public void supprimerBaseDeDonnees(String[] ids)
{
String postData = "" ;
// on fait un delete dans le post (jrest ne gère pas delete comme une action à part entière)
postData += "&action=DELETE" ;
String uid = "" ;
public void supprimerBaseDeDonnees(String[] ids) {
String postData = "";
// on fait un delete dans le post (jrest ne gère pas delete comme une
// action à part entière)
postData += "&action=DELETE";
 
String uid = "";
 
// on concatène les ids
for (int i = 0; i < ids.length; i++) {
uid += ids[i]+"," ;
 
uid += ids[i] + ",";
}
 
// et on envoie ça au serveur
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST,iModele.getConfig().getServiceBaseUrl()+"/inventoryImageList/"+iModele.getIdentifiant()+"/"+uid) ;
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, iModele
.getConfig().getServiceBaseUrl()
+ "/inventoryImageList/" + iModele.getIdentifiant() + "/" + uid);
try {
rb.sendRequest(postData, new RequestCallback() {
 
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
 
}
 
public void onResponseReceived(Request request, Response response) {
// quand la requête est éxecutée on le signale au modèle poru qu'il mette à jour les données
public void onResponseReceived(Request request,
Response response) {
 
// quand la requête est éxecutée on le signale au modèle
// poru qu'il mette à jour les données
// et en notifie le médiateur
iModele.requeteTerminee() ;
}
}) ;
iModele.requeteTerminee();
 
}
});
 
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
 
}