Author: lgiessmann Date: Tue Jun 21 08:10:09 2011 New Revision: 493
Log: gdl-frontend: TmEngine: added a method for dynamical type-checking, since the GWT JavascriptObject, which is the base type of all TopicMap classes prevents virtual methods etc.; started to implement the ectual Topic Maps engine
Added: branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/TopicMapsTypes.java Modified: branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/Base/TmEngine.java branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Association.java branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/DatatypeAware.java branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Locator.java branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Name.java branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Occurrence.java branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Role.java branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Topic.java branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/TopicMap.java branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Variant.java branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/jtmsBasedEngine/JtmsTmEngine.java branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/jtmsBasedEngine/TestClass.java
Modified: branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/Base/TmEngine.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/Base/TmEngine.java Tue Jun 21 06:10:50 2011 (r492) +++ branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/Base/TmEngine.java Tue Jun 21 08:10:09 2011 (r493) @@ -1,10 +1,11 @@ package us.isidor.gdl.anaToMia.TmEngine.Base;
-import us.isidor.gdl.anaToMia.TmEngine.TopicMaps.Locator; import us.isidor.gdl.anaToMia.TmEngine.TopicMaps.TopicMap;
-public interface TmEngine { - public TopicMap read(String jtm_1_0, TopicMap tm); +public interface TmEngine{ + public TopicMap read(String tmData, TopicMap tm); public String write(TopicMap tm); - public TopicMap createTopicMap(Locator locator); + public TopicMap createTopicMap(String tmLocator); + public TopicMap getTopicMap(String tmLocator); + public TopicMap[] getTopicMaps(); }
Modified: branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Association.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Association.java Tue Jun 21 06:10:50 2011 (r492) +++ branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Association.java Tue Jun 21 08:10:09 2011 (r493) @@ -81,4 +81,9 @@ public final native void setType(Topic type) /*-{ this.setType(type); }-*/; + + + public final TopicMapsTypes classType(){ + return TopicMapsTypes.Association; + } }
Modified: branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/DatatypeAware.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/DatatypeAware.java Tue Jun 21 06:10:50 2011 (r492) +++ branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/DatatypeAware.java Tue Jun 21 08:10:09 2011 (r493) @@ -17,13 +17,13 @@ public BigInteger integerValue(); public int intValue(); public Locator locatorValue(); - //public long longValue(); //long is not supported by JSNI + public Long longValue(); //long is not supported by JSNI public void setValue(BigDecimal value); public void setValue(BigInteger value); public void setValue(float value); public void setValue(int value); public void setValue(Locator value); - //public void setValue(long value); //long is not supported by JSNI + public void setValue(Long value); //long is not supported by JSNI public void setValue(String value); public void setValue(String value, Locator datatype); */
Modified: branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Locator.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Locator.java Tue Jun 21 06:10:50 2011 (r492) +++ branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Locator.java Tue Jun 21 08:10:09 2011 (r493) @@ -4,23 +4,23 @@
public class Locator extends JavaScriptObject{ protected Locator() {}; - + public final native boolean equal(Object other) /*-{ return this.equals(other); }-*/; - - + + public final native String getReference() /*-{ return this.getReference(); }-*/; - - + + public final native Locator resolve(String reference) /*-{ return this.resolve(reference); }-*/; - static public final native Locator create(Construct parent, String reference) /*-{ - return new Locator(parent, reference); - }-*/; + public final TopicMapsTypes classType(){ + return TopicMapsTypes.Locator; + } }
Modified: branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Name.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Name.java Tue Jun 21 06:10:50 2011 (r492) +++ branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Name.java Tue Jun 21 08:10:09 2011 (r493) @@ -107,4 +107,8 @@ return this.getScope(); }-*/;
+ + public final TopicMapsTypes classType(){ + return TopicMapsTypes.Name; + } }
Modified: branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Occurrence.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Occurrence.java Tue Jun 21 06:10:50 2011 (r492) +++ branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Occurrence.java Tue Jun 21 08:10:09 2011 (r493) @@ -113,6 +113,11 @@ public final native Locator locatorValue() /*-{ return this.locatorValue(); }-*/; + + + public final native Long longValue() /*-{ + this.longValue(); + }-*/;
public final native void setValue(BigDecimal value) /*-{ @@ -138,6 +143,11 @@ public final native void setValue(Locator value) /*-{ this.setValue(value); }-*/; + + + public final native Long setValue(Long value) /*-{ + this.setValue(value); + }-*/;
public final native void setValue(String value) /*-{ @@ -148,4 +158,9 @@ public final native void setValue(String value, Locator datatype) /*-{ this.setValue(value); }-*/; + + + public final TopicMapsTypes classType(){ + return TopicMapsTypes.Occurrence; + } }
Modified: branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Role.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Role.java Tue Jun 21 06:10:50 2011 (r492) +++ branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Role.java Tue Jun 21 08:10:09 2011 (r493) @@ -52,19 +52,28 @@ this.removeItemIdentifier(itemIdentifier); }-*/;
+ public final native Topic getType() /*-{ return this.getType(); }-*/; +
public final native void setType(Topic type) /*-{ this.setType(type); }-*/; +
public final native Topic getReifier() /*-{ return this.getReifier(); }-*/; +
public final native void setReifier(Topic reifier) /*-{ this.setReifier(reifier); }-*/; + + + public final TopicMapsTypes classType(){ + return TopicMapsTypes.Role; + } }
Modified: branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Topic.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Topic.java Tue Jun 21 06:10:50 2011 (r492) +++ branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Topic.java Tue Jun 21 08:10:09 2011 (r493) @@ -156,4 +156,9 @@ public final native void removeItemIdentifier(Locator itemIdentifier) /*-{ this.removeItemIdentifier(itemIdentifier); }-*/; + + + public final TopicMapsTypes classType(){ + return TopicMapsTypes.Topic; + } }
Modified: branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/TopicMap.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/TopicMap.java Tue Jun 21 06:10:50 2011 (r492) +++ branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/TopicMap.java Tue Jun 21 08:10:09 2011 (r493) @@ -122,4 +122,14 @@ public final native void setReifier(Topic reifier) /*-{ this.setReifier(reifier); }-*/; + + + public final native Locator createLocator(String reference) /*-{ + return this.createLocator(reference); + }-*/; + + + public final TopicMapsTypes classType(){ + return TopicMapsTypes.TopicMap; + } }
Added: branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/TopicMapsTypes.java ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/TopicMapsTypes.java Tue Jun 21 08:10:09 2011 (r493) @@ -0,0 +1,17 @@ +package us.isidor.gdl.anaToMia.TmEngine.TopicMaps; + +public enum TopicMapsTypes { + TopicMap, + Association, + Role, + Topic, + Name, + Variant, + Occurrence, + Reifiable, + Scoped, + Typed, + Locator, + DatatypeAware, + Construct +}
Modified: branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Variant.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Variant.java Tue Jun 21 06:10:50 2011 (r492) +++ branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/TopicMaps/Variant.java Tue Jun 21 08:10:09 2011 (r493) @@ -103,6 +103,11 @@ return this.locatorValue(); }-*/; + + public final native Long longValue() /*-{ + return this.longValue(); + }-*/; +
public final native void setValue(BigDecimal value) /*-{ this.setValue(value); @@ -127,6 +132,11 @@ public final native void setValue(Locator value) /*-{ this.setValue(value); }-*/; + + + public final native Long setValue(Long value) /*-{ + this.setValue(value); + }-*/;
public final native void setValue(String value) /*-{ @@ -138,4 +148,8 @@ this.setValue(value); }-*/;
+ + public final TopicMapsTypes classType(){ + return TopicMapsTypes.Variant; + } }
Modified: branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/jtmsBasedEngine/JtmsTmEngine.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/jtmsBasedEngine/JtmsTmEngine.java Tue Jun 21 06:10:50 2011 (r492) +++ branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/jtmsBasedEngine/JtmsTmEngine.java Tue Jun 21 08:10:09 2011 (r493) @@ -1,28 +1,76 @@ package us.isidor.gdl.anaToMia.TmEngine.jtmsBasedEngine;
+import java.util.ArrayList; import us.isidor.gdl.anaToMia.TmEngine.Base.TmEngine; -import us.isidor.gdl.anaToMia.TmEngine.TopicMaps.Locator; import us.isidor.gdl.anaToMia.TmEngine.TopicMaps.TopicMap;
public class JtmsTmEngine implements TmEngine{ + private ArrayList<TopicMap> tms = new ArrayList<TopicMap>(); + + + private final native TopicMap jsCreateTopicMap(String tmLocator) /*-{ + var factory, sys, tmid, tm; + factory = $wnd.TopicMapSystemFactory.newInstance(); + factory.setProperty('com.semanticheadache.tmjs.backend', 'memory'); + sys = factory.newTopicMapSystem(); + tmid = sys.createLocator("http://example.org/mytm"); + tm = sys.createTopicMap(tmid); + + return tm; + }-*/;
+ @Override - public TopicMap read(String jtm_1_0, TopicMap tm) { - // TODO Auto-generated method stub - return null; + public TopicMap createTopicMap(String tmLocator){ + TopicMap tm = jsCreateTopicMap(tmLocator); + tms.add(tm); + return tm; }
@Override - public String write(TopicMap tm) { - // TODO Auto-generated method stub - return null; + public TopicMap getTopicMap(String tmLocator) { + TopicMap match = null; + + for (TopicMap tm : tms) { + if(tm.getLocator().getReference().equals(tmLocator)){ + match = tm; + break; + } + } + + return match; + } + + + @Override + public TopicMap[] getTopicMaps() { + TopicMap[] tmsArray = new TopicMap[tms.size()]; + tms.toArray(tmsArray); + return tmsArray; + } + + + @Override + public TopicMap read(String tmData, TopicMap tm) { + return readJtm10(tmData, tm); }
@Override - public TopicMap createTopicMap(Locator locator) { - // TODO Auto-generated method stub + public String write(TopicMap tm) { + return writeJtm10(tm); + } + + + private TopicMap readJtm10(String jtm, TopicMap tm){ + // TODO: implement + return null; + } + + + private String writeJtm10(TopicMap tm){ + // TODO: implement return null; } }
Modified: branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/jtmsBasedEngine/TestClass.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/jtmsBasedEngine/TestClass.java Tue Jun 21 06:10:50 2011 (r492) +++ branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/jtmsBasedEngine/TestClass.java Tue Jun 21 08:10:09 2011 (r493) @@ -2,6 +2,8 @@
import com.google.gwt.core.client.EntryPoint; import com.google.gwt.user.client.Window; +import us.isidor.gdl.anaToMia.TmEngine.TopicMaps.Locator; +import us.isidor.gdl.anaToMia.TmEngine.TopicMaps.Topic; import us.isidor.gdl.anaToMia.TmEngine.TopicMaps.TopicMap;
@@ -9,20 +11,15 @@
@Override public void onModuleLoad() { - Window.alert("TEST !!!"); - Window.alert(">> " + createTM().getLocator().getReference()); + Window.alert(">> TEST !!!"); + + JtmsTmEngine tme = new JtmsTmEngine(); + TopicMap tm = tme.createTopicMap("http://my.tm/tm-1"); + + Window.alert(">> tm reference: " + tm.getLocator().getReference()); + + Locator psi = tm.createLocator("http://this.is.topic.top"); + Topic top = tm.createTopicBySubjectIdentifier(psi); + Window.alert(">> top: " + top.classType()); } - - - - public static native TopicMap createTM()/*-{ - var factory, sys, tmid, tm; - factory = $wnd.TopicMapSystemFactory.newInstance(); - factory.setProperty('com.semanticheadache.tmjs.backend', 'memory'); - sys = factory.newTopicMapSystem(); - tmid = sys.createLocator("http://example.org/mytm"); - tm = sys.createTopicMap(tmid); - return tm; - }-*/; - }