[isidorus-cvs] r948 - branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus

lgiessmann at common-lisp.net lgiessmann at common-lisp.net
Wed Sep 21 09:37:02 UTC 2011


Author: lgiessmann
Date: Wed Sep 21 02:37:02 2011
New Revision: 948

Log:
gdl-frontend: Widgets: added a request that gets all psis of hash-object instances for a particular environment topic

Added:
   branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/HashObjectPsiContainer.java
Modified:
   branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/DeleteCallback.java
   branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/GdlWebPage.java
   branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/IsidorusConstants.java

Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/DeleteCallback.java
==============================================================================
--- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/DeleteCallback.java	Wed Sep 21 01:23:59 2011	(r947)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/DeleteCallback.java	Wed Sep 21 02:37:02 2011	(r948)
@@ -26,6 +26,7 @@
 
 public class DeleteCallback implements IDeleteCallback {
 	private final String REUQEST_URL = IsidorusConstants.DELETE_REQUEST_URL;
+	private final String TM_SPARQL_URL = IsidorusConstants.TM_SPARQL_ENDPOINT;
 	private final String TM_SPARQL_QUERY_PART_1 = "PREFIX types:<http://textgrid.org/serviceregistry/model/types/>\n" +
 										   		  "PREFIX model:<http://textgrid.org/serviceregistry/model/>\n" +
 										   		  "PREFIX env:<http://textgrid.org/serviceregistry/environment/>\n" +
@@ -33,6 +34,17 @@
 										   		  "?topics a types:Hash-Object.\n" +
 										   		  "?topics model:environment env:";
 	private final String TM_SPARQL_QUERY_PART_2 = ".\n}";
+	private GdlWebPage gdlWebPage = null;
+	private HashObjectPsiContainer hashObjectPsiContainer = new HashObjectPsiContainer(null);
+	
+	
+	@SuppressWarnings("unused")
+	private DeleteCallback(){}
+	
+	
+	public DeleteCallback(GdlWebPage gdlWebPage){
+		this.gdlWebPage = gdlWebPage;
+	}
 	
 
 	@Override
@@ -55,19 +67,82 @@
 	
 	
 	private String createTmSparqlQuery(Topic environment){
-		String psi = environment.getSubjectLocators().get(0).getReference();
+		String psi = environment.getSubjectIdentifiers().get(0).getReference();
 		String psiSuffix = Utils.splitUriByLastFragment(psi)[1];
 		return this.TM_SPARQL_QUERY_PART_1 + psiSuffix + this.TM_SPARQL_QUERY_PART_2;
 	}
 	
 	
 	private void deleteEnvironmentTopic(Topic env){
-		Window.alert(this.createTmSparqlQuery(env));
-		// TODO: get all associated hash-objects
-		// TODO: create a list for the user
-		// TODO: check the user's input
-		// TODO: delete all hash-objects
-		// TODO: delete the environment
+		String url = URL.encode(this.TM_SPARQL_URL);
+		RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, url);
+		try{
+			DeleteCallback.this.gdlWebPage.createLoadScreenPanel("Wating for Data", "Requesting all PSIs of instances of " + IsidorusConstants.HASH_OBJECT_PSI + " that are associated with " + env.getSubjectIdentifiers().get(0).getReference() + " from " + url);
+			builder.sendRequest(this.createTmSparqlQuery(env), new GetHashObjectPsisRequest());
+		}catch(RequestException e){
+			e.printStackTrace();
+			Window.alert("could not request existing instances of " + IsidorusConstants.HASH_OBJECT_PSI + ", because(" + e.getClass() + "): " + e.getMessage());
+			DeleteCallback.this.gdlWebPage.resetPage();
+		}
+	}
+	
+	
+	private class GetHashObjectPsisRequest implements RequestCallback {
+		public GetHashObjectPsisRequest(){}
+		
+
+		@Override
+		public void onResponseReceived(Request request, Response response) {
+			if (200 == response.getStatusCode()) {
+				JSONValue psiVals = JSONParser.parseStrict(response.getText());
+				JSONObject resultObject = psiVals.isObject();
+				if(resultObject == null) Window.alert("got bad json, a query result object was expected, but got: " + response.getText());
+				
+				JSONValue content = resultObject.get("topics");
+				if(content == null) Window.alert("got bad json, a query result object was expected, but got: " + response.getText());
+				
+				JSONArray psis = null;
+				if(psiVals != null) psis = content.isArray();
+				if(psis != null){
+					for(int psisIdx = 0; psisIdx != psis.size(); ++psisIdx){
+						JSONValue psiVal = psis.get(psisIdx);
+						JSONString psiString = null;
+						if(psiVal != null) psiString = psiVal.isString();
+						String psiValue = null;
+						if(psiString != null){
+							psiValue = psiString.stringValue();
+							if(psiValue.startsWith("<")) psiValue = psiValue.substring(1);
+							if(psiValue.endsWith(">")) psiValue = psiValue.substring(0, psiValue.length() - 1);
+						}
+						DeleteCallback.this.hashObjectPsiContainer.addHashObjectPsi(psiValue);
+					}
+				}
+				
+				DeleteCallback.this.gdlWebPage.setHashObjectPsiContainer(DeleteCallback.this.hashObjectPsiContainer);
+			} else {
+				Window.alert("could not request existing instances of " + IsidorusConstants.HASH_OBJECT_PSI + ", because(" + response.getStatusCode() + "): " + response.getStatusText());
+			}
+			DeleteCallback.this.gdlWebPage.removeLoadScreenPanel();
+			
+			
+			
+			// TODO: check the user's input
+			// TODO: delete all hash-objects
+			// TODO: delete the environment
+		}
+		
+
+		@Override
+		public void onError(Request request, Throwable exception) {
+			String message = null;
+			Class<? extends Throwable> eClass = null;
+			if(exception != null){
+				message = exception.getMessage();
+				eClass = exception.getClass();
+			}
+			Window.alert("could not request existing instances of " + IsidorusConstants.HASH_OBJECT_PSI + ", because(" + eClass + "): " + message);
+			DeleteCallback.this.gdlWebPage.resetPage();
+		}
 	}
 	
 	

Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/GdlWebPage.java
==============================================================================
--- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/GdlWebPage.java	Wed Sep 21 01:23:59 2011	(r947)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/GdlWebPage.java	Wed Sep 21 02:37:02 2011	(r948)
@@ -34,12 +34,14 @@
 	private String topicTypePsi = null;
 	private HorizontalPanel mainPanel = new HorizontalPanel();
 	private VerticalPanel navigationPanel = new VerticalPanel();
+	private VerticalPanel contentPanel = new VerticalPanel();
 	private Button createNewButton = new Button("create new");
 	private PsiContainer psiContainer = null;
 	private GdlPanel gdlPanel = null;
 	private LoadScreenPanel loadScreenPanel = null;
 	private final String GDL_PANEL_STYLE_NAME = "gdl_panel";
 	private final String CREATE_NEW_BUTTON_STYLE_NAME = "create_new_button";
+	private HashObjectPsiContainer hashObjectPsicontainer = null;
 	
 	
 	public GdlWebPage(String topicTypePsi) throws ExecutionException{
@@ -62,6 +64,7 @@
 		
 		RootPanel.get("GWT_Content").add(this.mainPanel);
 		this.mainPanel.add(this.navigationPanel);
+		this.mainPanel.add(this.contentPanel);
 		this.mainPanel.setPixelSize(1024, 700);
 		this.navigationPanel.add(this.createNewButton);
 		try{
@@ -89,6 +92,20 @@
 	}
 	
 	
+	public void setHashObjectPsiContainer(HashObjectPsiContainer psiContainer){
+		if(this.hashObjectPsicontainer != null) this.hashObjectPsicontainer.removeFromParent();
+		this.hashObjectPsicontainer = psiContainer;
+		if(this.hashObjectPsicontainer != null) this.contentPanel.insert(this.hashObjectPsicontainer, this.contentPanel.getWidgetCount());
+	}
+	
+	
+	public void setGdlPanel(GdlPanel gdlPanel){
+		if(this.gdlPanel != null) this.gdlPanel.removeFromParent();
+		this.gdlPanel = gdlPanel;
+		if(this.gdlPanel != null) this.contentPanel.add(this.gdlPanel);
+	}
+	
+	
 	public void removeLoadScreenPanel(){
 		if(this.loadScreenPanel != null) this.loadScreenPanel.removeFromParent();
 	}
@@ -138,16 +155,15 @@
 		@Override
 		public void onClick(ClickEvent event) {
 			try{
-				if(GdlWebPage.this.gdlPanel != null) GdlWebPage.this.gdlPanel.removeFromParent();
 				ArrayList<Pair<String, TopicIdentifierTypes>> topicsToCreate = new ArrayList<Pair<String, TopicIdentifierTypes>>();
 				topicsToCreate.add(new Pair<String, TopicIdentifierTypes>(GdlWebPage.this.topicTypePsi, TopicIdentifierTypes.SubjectIdentifier));
-				GdlWebPage.this.gdlPanel = new GdlPanel(null, topicsToCreate, 362, 160);
-				GdlWebPage.this.mainPanel.add(gdlPanel);
+				GdlPanel gdlPanel = new GdlPanel(null, topicsToCreate, 362, 160);
 				gdlPanel.setTmEngine(new JtmsTmEngine());
 				gdlPanel.setLoadSchemaCallback(new LoadSchemaCallback(GdlWebPage.this));
 				gdlPanel.setCommitCallback(new CommitCallback());
-				gdlPanel.setDeleteCallback(new DeleteCallback());
+				gdlPanel.setDeleteCallback(new DeleteCallback(GdlWebPage.this));
 				gdlPanel.addStyleName(GdlWebPage.this.GDL_PANEL_STYLE_NAME);
+				GdlWebPage.this.setGdlPanel(gdlPanel);
 				gdlPanel.loadSchema();
 			}catch(Exception e){
 				e.printStackTrace();
@@ -165,13 +181,12 @@
 			if(obj instanceof Label){
 				Label source = (Label)obj;				
 				try{
-					if(GdlWebPage.this.gdlPanel != null) GdlWebPage.this.gdlPanel.removeFromParent();
-					GdlWebPage.this.gdlPanel = new GdlPanel(new Pair<String, TopicIdentifierTypes>(source.getText(), TopicIdentifierTypes.SubjectIdentifier), null, 362, 160);
-					GdlWebPage.this.mainPanel.add(gdlPanel);
+					GdlPanel gdlPanel = new GdlPanel(new Pair<String, TopicIdentifierTypes>(source.getText(), TopicIdentifierTypes.SubjectIdentifier), null, 362, 160);
 					gdlPanel.setTmEngine(new JtmsTmEngine());
 					gdlPanel.setLoadSchemaCallback(new LoadSchemaCallback(GdlWebPage.this));
 					gdlPanel.setCommitCallback(new CommitCallback());
-					gdlPanel.setDeleteCallback(new DeleteCallback());
+					gdlPanel.setDeleteCallback(new DeleteCallback(GdlWebPage.this));
+					GdlWebPage.this.setGdlPanel(gdlPanel);
 					gdlPanel.loadSchema();
 					gdlPanel.addStyleName(GdlWebPage.this.GDL_PANEL_STYLE_NAME);
 					Window.scrollTo(0, 0);

Added: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/HashObjectPsiContainer.java
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/HashObjectPsiContainer.java	Wed Sep 21 02:37:02 2011	(r948)
@@ -0,0 +1,53 @@
+package us.isidor.gdl.anaToMia.Widgets.isidorus;
+
+
+
+import java.util.ArrayList;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.CheckBox;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
+
+
+public class HashObjectPsiContainer extends Composite {
+	private ArrayList<CheckBox> psiCheckBoxes = new ArrayList<CheckBox>();
+	private VerticalPanel containerPanel = new VerticalPanel();
+	private Button commitButton = new Button("delete");
+	
+	
+	private HashObjectPsiContainer(){
+		this.initWidget(this.containerPanel);
+		this.containerPanel.add(this.commitButton);
+	}
+	
+	
+	public HashObjectPsiContainer(ClickHandler buttonClikcHandler){
+		this();
+		
+		if(buttonClikcHandler != null) this.commitButton.addClickHandler(buttonClikcHandler);
+	}
+	
+	
+	public void addHashObjectPsi(String psi){
+		if(psi == null) return;
+		
+		this.commitButton.removeFromParent();
+		CheckBox cbx = new CheckBox(psi);
+		this.psiCheckBoxes.add(cbx);
+		
+		int widgetIdx = 0;
+		for( ; widgetIdx != this.containerPanel.getWidgetCount(); ++widgetIdx){
+			Widget wdgt = this.containerPanel.getWidget(widgetIdx);
+			if((wdgt instanceof Label) && ((Label)wdgt).getText().compareTo(psi) >= 0){
+				this.containerPanel.insert(cbx, widgetIdx);
+				break;
+			}
+		}
+		
+		if(widgetIdx == this.containerPanel.getWidgetCount()) this.containerPanel.add(cbx);
+		this.containerPanel.insert(this.commitButton, this.containerPanel.getWidgetCount());
+	}
+}

Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/IsidorusConstants.java
==============================================================================
--- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/IsidorusConstants.java	Wed Sep 21 01:23:59 2011	(r947)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/isidorus/IsidorusConstants.java	Wed Sep 21 02:37:02 2011	(r948)
@@ -10,13 +10,14 @@
 	public final static String HASH_OBJECT_PSI = "http://textgrid.org/serviceregistry/model/types/Hash-Object";
 	public final static String ENVIRONMENT_PSI = "http://textgrid.org/serviceregistry/model/types/Environment";
 	public final static String HASH_VALUE_OCCURRENCE_TYPE = "http://textgrid.org/serviceregistry/model/value";
+	public final static String TM_SPARQL_ENDPOINT = Window.Location.getProtocol() + "//" + Window.Location.getHost() + "/gdl/tm-sparql";
 	public final static String DELETE_REQUEST_URL = Window.Location.getProtocol() + "//" + Window.Location.getHost() + "/gdl/delete";
 	public final static String COMMIT_REQUEST_URL = Window.Location.getProtocol() + "//" + Window.Location.getHost() + "/gdl/commit";
 	public final static String GET_FRAGMENT_REQUEST_URL = Window.Location.getProtocol() + "//" + Window.Location.getHost() + "/gdl/fragment/";
 	public final static String GET_SCHEMA_REQUEST_URL = Window.Location.getProtocol() + "//" + Window.Location.getHost() + "/gdl/schema";
 	//public final static String GET_SCHEMA_REQUEST_URL = GWT.getModuleBaseURL() + "TextGrid_ServiceRegistry_full_TMCL_and_GDL_Schema.jtm";
-	public final static String GET_HASH_OBJECT_PSIS_URL = Window.Location.getProtocol() + "//" + Window.Location.getHost() + "/gdl/tm-sparql";
+	public final static String GET_HASH_OBJECT_PSIS_URL = IsidorusConstants.TM_SPARQL_ENDPOINT;
 	//public final static String GET_HASH_OBJECT_PSIS_URL = GWT.getModuleBaseURL() + "HashObjectPsis.json";
-	public final static String GET_ENVIRONMENT_PSIS_URL = Window.Location.getProtocol() + "//" + Window.Location.getHost() + "/gdl/tm-sparql";
+	public final static String GET_ENVIRONMENT_PSIS_URL = IsidorusConstants.TM_SPARQL_ENDPOINT;
 	//public final static String GET_ENVIRONMENT_PSIS_URL = GWT.getModuleBaseURL() + "EnvironmentPsis.json";
 }




More information about the Isidorus-cvs mailing list