/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(); |
} |
} |
} |