[isidorus-cvs] r882 - branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus
lgiessmann at common-lisp.net
lgiessmann at common-lisp.net
Tue Sep 13 09:07:40 UTC 2011
Author: lgiessmann
Date: Tue Sep 13 02:07:39 2011
New Revision: 882
Log:
gdl-frontend: Widgets: added a check for existing instances of http://textgrid.org/serviceregistry/model/types/Hash-Object instances, so a commit will succeed only of there is no duplicate topic existent
Modified:
branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/CommitCallback.java
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/CommitCallback.java
==============================================================================
--- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/CommitCallback.java Tue Sep 13 01:35:44 2011 (r881)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/CommitCallback.java Tue Sep 13 02:07:39 2011 (r882)
@@ -11,11 +11,6 @@
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.http.client.URL;
-import com.google.gwt.json.client.JSONArray;
-import com.google.gwt.json.client.JSONObject;
-import com.google.gwt.json.client.JSONParser;
-import com.google.gwt.json.client.JSONString;
-import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.Window;
import us.isidor.gdl.anaToMia.TopicMaps.TmEngineModel.ExporterException;
import us.isidor.gdl.anaToMia.TopicMaps.TmEngineModel.TmEngine;
@@ -160,7 +155,8 @@
Name env = assoc.getRoles(TmHelper.getTopicByPsi("http://textgrid.org/serviceregistry/model/environment", tm)).get(0).getPlayer().getNames().get(0);
Occurrence key = top.getOccurrences(TmHelper.getTopicByPsi("http://textgrid.org/serviceregistry/model/key", tm)).get(0);
- Locator psi = tm.createLocator("http://textgrid.org/serviceregistry/hash-object/" + env.getValue() + "/" + key.getValue());
+ String psiValue = "http://textgrid.org/serviceregistry/hash-object/" + env.getValue() + "/" + key.getValue();
+ Locator psi = tm.createLocator(psiValue);
this.removeSubjectIdentifiers(top);
top.addSubjectIdentifier(psi);
@@ -171,14 +167,10 @@
jtm = tmEngine.exportTm(topics, associations);
}
- String commitUrl = URL.encode(this.COMMIT_REQUEST_URL);
- String getUrl = URL.encode(this.GET_REQUEST_URL);
- RequestBuilder commitBuilder = new RequestBuilder(RequestBuilder.POST, commitUrl);
- commitBuilder.setHeader("Content-type", "application/json");
+ String getUrl = URL.encode(this.GET_REQUEST_URL + psiValue);
RequestBuilder getBuilder = new RequestBuilder(RequestBuilder.GET, getUrl);
- try{
- if(edited)getBuilder.sendRequest(null, new EditedHashObjectCommitRequest(null, jtm, false));
- else commitBuilder.sendRequest(jtm, new HashObjectCommitRequest(jtm));
+ try{
+ getBuilder.sendRequest(null, new HashObjectCheckRequest(jtm, psiValue, edited));
}catch(RequestException e){
Window.alert("could not commit the topic: " + jtm + ", because(" + e.getClass() + "): " + e.getMessage());
}
@@ -217,27 +209,41 @@
}
- private class HashObjectCommitRequest implements RequestCallback {
+ private class HashObjectCheckRequest implements RequestCallback {
private String objectToBeSend = null;
+ private String psi = null;
+ private boolean edited = false;
- @SuppressWarnings("unused")
- private HashObjectCommitRequest(){}
-
-
- public HashObjectCommitRequest(String objectToBeCommitted){
- this.objectToBeSend = objectToBeCommitted;
- Window.alert("test"); //TODO: remove
+ public HashObjectCheckRequest(String objectToBeSend, String psi, boolean edited){
+ this.objectToBeSend = objectToBeSend;
+ this.psi = psi;
+ this.edited = edited;
}
-
+
@Override
public void onResponseReceived(Request request, Response response) {
if (200 == response.getStatusCode()) {
- Window.alert("commit operation of the object " + this.objectToBeSend + " succeeded");
- // TODO: reset the web page
+ if(edited){
+ //TODO: implement
+ } else {
+ Window.alert("could not commit the topic with the psi " + psi + " since it already exists");
+ //TODO: reset page
+ }
+ } else if(404 == response.getStatusCode() && !edited) {
+ try{
+ String commitUrl = URL.encode(CommitCallback.this.COMMIT_REQUEST_URL);
+ RequestBuilder commitBuilder = new RequestBuilder(RequestBuilder.POST, commitUrl);
+ commitBuilder.setHeader("Content-type", "application/json");
+ commitBuilder.sendRequest(this.objectToBeSend, new HashObjectCommitRequest(this.objectToBeSend));
+ }catch(RequestException e){
+ Window.alert("could not commit the topic: " + this.objectToBeSend + ", because(" + e.getClass() + "): " + e.getMessage());
+ // TODO: reset page
+ }
} else {
- Window.alert("commit operation of the object " + this.objectToBeSend + " failed: " + response.getStatusCode() + "(" + response.getStatusText() + ")\n" + response.getText());
+ Window.alert("could not commit the topic with the psi " + psi + ", because: " + response.getStatusCode() + ": " + response.getStatusText());
+ // TODO: reset page
}
}
@@ -245,97 +251,39 @@
@Override
public void onError(Request request, Throwable exception) {
Window.alert("could not commit the data: " + this.objectToBeSend);
+ // TODO: reset page
}
}
- private class EditedHashObjectCommitRequest implements RequestCallback{
- private JSONValue requestedData = null;
+ private class HashObjectCommitRequest implements RequestCallback {
private String objectToBeSend = null;
- private boolean deletedOldOccurrence = false;
- private final String deleteUrl = URL.encode(CommitCallback.this.DELETE_REUQEST_URL);
- private final String commitUrl = URL.encode(CommitCallback.this.COMMIT_REQUEST_URL);
@SuppressWarnings("unused")
- private EditedHashObjectCommitRequest(){}
+ private HashObjectCommitRequest(){}
- public EditedHashObjectCommitRequest(JSONValue requestedData, String objectToBeSend, boolean deletedOldOccurrence){
- this.requestedData = requestedData;
- this.objectToBeSend = objectToBeSend;
- this.deletedOldOccurrence = deletedOldOccurrence;
+ public HashObjectCommitRequest(String objectToBeCommitted){
+ this.objectToBeSend = objectToBeCommitted;
}
@Override
public void onResponseReceived(Request request, Response response) {
if (200 == response.getStatusCode()) {
- if(this.requestedData == null){
- JSONObject occurrenceToBeDeleted = this.getOccurrenceTobeDeleted(response.getText());
- if(occurrenceToBeDeleted != null){
- RequestBuilder deleteBuilder = new RequestBuilder(RequestBuilder.DELETE, this.deleteUrl);
- deleteBuilder.setHeader("Content-type", "application/json");
- try{
- deleteBuilder.sendRequest(occurrenceToBeDeleted.toString(), new EditedHashObjectCommitRequest(occurrenceToBeDeleted, this.objectToBeSend, true));
- }catch(RequestException e){
- Window.alert("could not commit the topic: " + this.objectToBeSend + ", because(" + e.getClass() + "): " + e.getMessage());
- }
- } else {
- Window.alert("commit operation of the object " + this.objectToBeSend + " failed, because: the occurrence http://textgrid.org/serviceregistry/model/hash-type could not be updated");
- }
- } else if(deletedOldOccurrence){
- RequestBuilder commitBuilder = new RequestBuilder(RequestBuilder.POST, this.commitUrl);
- commitBuilder.setHeader("Content-type", "application/json");
- try{
- commitBuilder.sendRequest(this.objectToBeSend, new HashObjectCommitRequest(this.objectToBeSend));
- }catch(RequestException e){
- Window.alert("could not commit the topic: " + this.objectToBeSend + ", because(" + e.getClass() + "): " + e.getMessage());
- }
- } else {
- Window.alert("commit operation of the object " + this.objectToBeSend + " succeeded");
- // TODO: reset the web page
- }
+ Window.alert("commit operation of the object " + this.objectToBeSend + " succeeded");
+ // TODO: reset the web page
} else {
Window.alert("commit operation of the object " + this.objectToBeSend + " failed: " + response.getStatusCode() + "(" + response.getStatusText() + ")\n" + response.getText());
}
}
-
+
@Override
public void onError(Request request, Throwable exception) {
Window.alert("could not commit the data: " + this.objectToBeSend);
- }
-
-
- private JSONObject getOccurrenceTobeDeleted(String json){
- if(json == null) return null;
-
- JSONValue jsonValue = JSONParser.parseStrict(json);
- JSONObject fragment = jsonValue.isObject();
- JSONObject topic = null;
- if(fragment != null){
- JSONValue val = fragment.get("topic");
- if(val != null) topic = val.isObject();
- }
- if(topic != null){
- JSONValue occs = topic.get("occurrences");
- JSONArray occsArray = null;
- if(occs != null) occsArray = occs.isArray();
- if(occsArray != null) {
- for(int i = 0; i != occsArray.size(); ++i){
- JSONValue val = occsArray.get(i);
- JSONObject occ = val.isObject();
- if(occ == null) continue;
-
- JSONValue type = occ.get("type");
- JSONString typeStr = type.isString();
- if(typeStr.stringValue().endsWith("hash-type")) return occ; // fr our purpose this soft check is sufficient enough, so the prefix need not to be varified
- }
- }
- }
-
- return null;
+ // TODO: reset page
}
}
}
More information about the Isidorus-cvs
mailing list