Rev 29 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client;import com.google.gwt.http.client.URL;import com.google.gwt.json.client.JSONArray;import com.google.gwt.json.client.JSONParser;import com.google.gwt.json.client.JSONString;import com.google.gwt.json.client.JSONValue;import com.google.gwt.user.client.HTTPRequest;import com.google.gwt.user.client.ResponseTextHandler;public class InventoryItem {// TODO : Singleton ?private String name=null;private String nomenclaturalNumber=null;private String location=null;private String location_id=null;private String date=null;private String lieudit=null;private String station=null;private String milieu=null;private String comment=null;private String ordre=null;private Mediator mediator = null;private String serviceBaseUrl = null;// Constructeur// Constructeur sur saisiepublic InventoryItem(Mediator med) {mediator=med;serviceBaseUrl = mediator.getServiceBaseUrl();}// Alimentation contenu depuis saisiepublic void setContent(String name,String nomenclaturalNumber, String location, String location_id, String date, String lieudit, String station, String milieu, String comment,String ordre) {this.name=name;this.nomenclaturalNumber=nomenclaturalNumber;// Suppresion indication departementale (on pourrait faire mieux !!)int pos=location.indexOf(" (" );if (pos>=0) {this.location=location.substring(0,pos);}else {this.location=location;}this.location_id=location_id;if (location.compareTo("")==0) this.location_id="";if (location_id==null) this.location_id="";this.date=date;this.lieudit=lieudit;this.station=station;this.milieu=milieu;this.comment=comment;this.ordre=ordre;}public boolean isValid() {// TODO : controle dateif (name.compareTo("")==0) {return false;}else {return true;}}/*** Lancement de la creation d'une ligne d'inventaire (appele par Mediator.onAddInventoryItem())**/public void addelement() {if (isValid()) {// Creation d'un nom faisant parti du referentiel : recherche du nom valide correspondantif (nomenclaturalNumber !=null) {HTTPRequest.asyncGet(serviceBaseUrl + "/NameValid/" + nomenclaturalNumber,new ResponseTextHandler() {public void onCompletion(String strcomplete) {JSONValue jsonValue = JSONParser.parse(strcomplete);JSONArray jsonArray;if ((jsonArray = jsonValue.isArray()) != null) {// Nom retenu, Num Nomen nom retenu, Num Taxon,// FamilleaddElement(name, nomenclaturalNumber,Util.toCelString(((JSONString) jsonArray.get(0)).toString()),((JSONString) jsonArray.get(1)).stringValue(),((JSONString) jsonArray.get(2)).stringValue(),Util.toCelString(((JSONString) jsonArray.get(3)).toString()),location,location_id,date,lieudit,station,milieu,comment);}}});}// Saisie libreelse {addElement(name, " ", " ", " ", " ", " ",location,location_id,date,lieudit,station,milieu,comment);}}else {// TODO : message d'erreurreturn;}}/*** Ajoute effectif d'un element a l'inventaire (appel interne)** @param nom_sel :* nom selectionne* @param num_nom_sel :* numero nomenclatural nom selectionne* @param nom_ret :* nom retenu* @param num_nom_ret :* numero nomenclaturel nom retenu* @param num_taxon :* numero taxonomique* @param famille :* famille*/private void addElement(String nom_sel, String num_nom_sel, String nom_ret,String num_nom_ret, String num_taxon, String famille,final String loc, String id_location,String dat, String lieu, String sta, String mil, String comment) {HTTPRequest.asyncPost(serviceBaseUrl + "/Inventory/", "identifiant="+ mediator.getUser() + "&nom_sel=" + URL.encodeComponent(nom_sel) + "&num_nom_sel=" + num_nom_sel+ "&nom_ret=" + URL.encodeComponent(nom_ret) + "&num_nom_ret=" + num_nom_ret+ "&num_taxon=" + num_taxon + "&famille=" + URL.encodeComponent(famille) + "&location=" + URL.encodeComponent(loc) + "&id_location=" + id_location + "&date_observation=" + dat+ "&lieudit="+ URL.encodeComponent(lieu) + "&station="+ URL.encodeComponent(sta) +"&milieu="+ URL.encodeComponent(mil) + "&commentaire="+ URL.encodeComponent(comment),new ResponseTextHandler() {public void onCompletion(String str) {mediator.onInventoryUpdated(location_id,location,"all");}});}/*** Lancement de la mise a jour d'une ligne d'inventaire (appele par Mediator.onModifyInventoryItem())**/public void updateElement() {if (isValid()) {// Modification d'un nom faisant parti du referentiel : recherche du nom valide correspondantif (nomenclaturalNumber !=null) {HTTPRequest.asyncGet(serviceBaseUrl + "/NameValid/" + nomenclaturalNumber,new ResponseTextHandler() {public void onCompletion(String strcomplete) {JSONValue jsonValue = JSONParser.parse(strcomplete);JSONArray jsonArray;if ((jsonArray = jsonValue.isArray()) != null) {// Nom retenu, Num Nomen nom retenu, Num Taxon, FamilleupdateElement(ordre,name, nomenclaturalNumber,Util.toCelString(((JSONString) jsonArray.get(0)).toString()),((JSONString) jsonArray.get(1)).stringValue(),((JSONString) jsonArray.get(2)).stringValue(),Util.toCelString(((JSONString) jsonArray.get(3)).toString()),location,location_id,date,lieudit,station, milieu,comment);}}});}// Modification d'un nom ne faisant pas parti du referentiel (saisie libre)else {updateElement(ordre,name, " ", " ", " ", " ", " ",location,location_id,date,lieudit,station, milieu, comment);}}else {// TODO : message d'erreurreturn;}}/*** Modification effective d'un element de l'inventaire (appel interne)** @param ordre : numero d'ordre* @param nom_sel :* nom selectionne* @param num_nom_sel :* numero nomenclatural nom selectionne* @param nom_ret :* nom retenu* @param num_nom_ret :* numero nomenclaturel nom retenu* @param num_taxon :* numero taxonomique* @param famille :* famille*/private void updateElement(String ordre, String nom_sel, String num_nom_sel, String nom_ret,String num_nom_ret, String num_taxon, String famille,final String loc, String id_location,String dat, String lieu, String sta, String mil, String comment) {HTTPRequest.asyncPost(serviceBaseUrl + "/Inventory/" + mediator.getUser() + "/" +ordre + "/","&nom_sel=" + URL.encodeComponent(nom_sel) + "&num_nom_sel=" + num_nom_sel+ "&nom_ret=" + URL.encodeComponent(nom_ret) + "&num_nom_ret=" + num_nom_ret+ "&num_taxon=" + num_taxon + "&famille=" + URL.encodeComponent(famille) + "&location=" + URL.encodeComponent(loc) + "&id_location=" + id_location + "&date_observation=" + dat+ "&lieudit="+ URL.encodeComponent(lieu) + "&station="+ URL.encodeComponent(sta) + "&milieu="+ URL.encodeComponent(mil) + "&commentaire="+ URL.encodeComponent(comment),new ResponseTextHandler() {public void onCompletion(String str) {mediator.onInventoryUpdated(location_id,location,"all");}});}}