[isidorus-cvs] r521 - in branches/gdl-frontend/src/anaToMia/GDL_TmEngine: lib src/us/isidor/gdl/anaToMia/TmEngine/jtmsBasedEngine test/us/isidor/gdl/anaToMia/TmEngine/jtmsBasedEngine

Author: lgiessmann Date: Tue Jun 28 05:24:36 2011 New Revision: 521 Log: gdl-frontend: Topic Maps Engine: added a unit-test for the JTM 1.1 export Modified: branches/gdl-frontend/src/anaToMia/GDL_TmEngine/lib/GDL_TopicMaps_Model.jar branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/jtmsBasedEngine/JtmsTmEngine.java branches/gdl-frontend/src/anaToMia/GDL_TmEngine/test/us/isidor/gdl/anaToMia/TmEngine/jtmsBasedEngine/JtmsTmEngineTest.java Modified: branches/gdl-frontend/src/anaToMia/GDL_TmEngine/lib/GDL_TopicMaps_Model.jar ============================================================================== Binary file (source and/or target). No diff available. 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 28 03:29:56 2011 (r520) +++ branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/jtmsBasedEngine/JtmsTmEngine.java Tue Jun 28 05:24:36 2011 (r521) @@ -1280,7 +1280,16 @@ // scope ArrayList<Topic> scopeTopics = new ArrayList<Topic>(); for(int i = 0; i != variant.getScope().length(); ++i){ - scopeTopics.add(variant.getScope().get(i)); + int j = 0; + for( ; j != variant.getParent().getScope().length(); ++j){ + if(variant.getParent().getScope().get(j).equals(variant.getScope().get(i))){ + break; + } + } + + if(j == variant.getParent().getScope().length()){ + scopeTopics.add(variant.getScope().get(i)); + } } json += exportReferences(scopeTopics, "scope", prefixes) + ","; @@ -1335,6 +1344,23 @@ } + private String exportParent(TopicMap parent, Prefixes prefixes) throws ExporterException { + Locator parentIdentifier = null; + + if(parent.getItemIdentifiers().length() != 0){ + parentIdentifier = parent.getItemIdentifiers().get(0); + } else { + parentIdentifier = parent.getLocator(); + } + + if(parentIdentifier == null){ + throw new ExporterException("a parent must have at least one identifier to be serailised"); + } else { + return "\"parent\":[\"ii:" + curie(parentIdentifier, prefixes) + "\"]"; + } + } + + private String exportParent(Topic parent, Prefixes prefixes) throws ExporterException { Locator parentIdentifier = null; String idType = "ii:"; @@ -1350,7 +1376,7 @@ } if(parentIdentifier == null){ - throw new ExporterException("a parent must have at least one identifeir to be serailised"); + throw new ExporterException("a parent must have at least one identifier to be serailised"); } else { return "\"parent\":[\"" + idType + curie(parentIdentifier, prefixes) + "\"]"; } @@ -1367,7 +1393,7 @@ } if(parentIdentifier == null){ - throw new ExporterException("a parent must have at least one identifeir to be serailised"); + throw new ExporterException("a parent must have at least one identifier to be serailised"); } else { return "\"parent\":[\"ii:" + curie(parentIdentifier, prefixes) + "\"]"; } @@ -1560,7 +1586,7 @@ private void initPrefixes(ArrayList<String[]> prefixes, Topic topic) throws ExporterException{ // parent - addPrefixOfReifiableReference(prefixes, topic.getTopicMap()); + addPrefixOfTopicMapReference(prefixes, topic.getTopicMap()); // subject_identifiers addPrefixesOfIdentifiers(prefixes, topic.getSubjectIdentifiers()); @@ -1658,7 +1684,7 @@ } // parent - addPrefixOfReifiableReference(prefixes, association.getParent()); + addPrefixOfTopicMapReference(prefixes, association.getParent()); // item_idenifiers addPrefixesOfIdentifiers(prefixes, association.getItemIdentifiers()); @@ -1711,6 +1737,19 @@ } } } + + + private void addPrefixOfTopicMapReference(ArrayList<String[]> prefixes, TopicMap tm){ + if(tm != null){ + Locator loc = null; + if(tm.getItemIdentifiers().length() != 0) { + loc = tm.getItemIdentifiers().get(0); + } else { + loc = tm.getLocator(); + } + addPrefixOfIdentifier(prefixes, loc); + } + } private void addPrefixOfTopicReference(ArrayList<String[]> prefixes, Topic topic) throws ExporterException{ @@ -1783,7 +1822,7 @@ int idxSlash = uri.lastIndexOf("/"); int idxSharp = uri.lastIndexOf("#"); int lastPos = idxSlash < idxSharp ? idxSharp : idxSlash; - String prefix = uri.substring(0, lastPos); + String prefix = uri.substring(0, lastPos + 1); String suffix = uri.substring(lastPos); suffix = suffix == null ? "" : suffix; @@ -1801,7 +1840,7 @@ } // no match => throw an exception - throw new ExporterException("could not found a qualifier for the name space \"" + uri + "\""); + throw new ExporterException("could not find a qualifier for the name space \"" + uri + "\""); } Modified: branches/gdl-frontend/src/anaToMia/GDL_TmEngine/test/us/isidor/gdl/anaToMia/TmEngine/jtmsBasedEngine/JtmsTmEngineTest.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_TmEngine/test/us/isidor/gdl/anaToMia/TmEngine/jtmsBasedEngine/JtmsTmEngineTest.java Tue Jun 28 03:29:56 2011 (r520) +++ branches/gdl-frontend/src/anaToMia/GDL_TmEngine/test/us/isidor/gdl/anaToMia/TmEngine/jtmsBasedEngine/JtmsTmEngineTest.java Tue Jun 28 05:24:36 2011 (r521) @@ -475,7 +475,137 @@ public void testJTM11export(){ - // TODO: JTM 1.1 export + try { + jtme = new JtmsTmEngine(); + TopicMap tm1 = jtme.createTopicMap(tmLocator1); + tm1.createTopicBySubjectIdentifier(tm1.createLocator("http://psi.topincs.com/person")); + jtme.createDefaultNameType(tm1); + Topic thomasVinterberg = jtme.importTopic(jtmTop, tm1); + tm1.createTopicBySubjectIdentifier(tm1.createLocator("http://psi.topincs.com/date-of-birth")); + Occurrence occ = jtme.importOccurrence(jtmOccurrence, tm1); + Topic movie = tm1.createTopicBySubjectIdentifier(tm1.createLocator("http://psi.topincs.com/movie")); + tm1.createTopicBySubjectIdentifier(tm1.createLocator("http://psi.topincs.com/director")); + tm1.createTopicBySubjectIdentifier(tm1.createLocator("http://psi.topincs.com/author")); + tm1.createTopicBySubjectIdentifier(tm1.createLocator("http://psi.topincs.com/work")); + tm1.createTopicBySubjectIdentifier(tm1.createLocator("http://psi.topincs.com/title")); + jtme.importTopicMap(jtmTm, tm1); + tm1.getTopicBySubjectLocator(tm1.createLocator("http://psi.topincs.com/movies/slDearWendy")); + Association assoc = tm1.getAssociations().get(0); + assoc.addItemIdentifier(tm1.createLocator("http://psi.topincs.com/association-ii")); + + String jtmMovie = jtme.exportTm(movie); + String jtmThomasVinterberg = jtme.exportTm(thomasVinterberg); + String jtmVinterbergOccurrence = jtme.exportTm(occ); + String jtmVinterbergRole = jtme.exportTm(thomasVinterberg.getRolesPlayed().get(0)); + String jtmTm = jtme.exportTm(tm1); + + String jtmMovieExpected = "{\"version\":\"1.1\"," + + "\"prefixes\":{" + + "\"xsd\":\"http://www.w3.org/2001/XMLSchema#\"," + + "\"pref_1\":\"http://us.isidor.gdl.anaToMia/\"," + + "\"pref_2\":\"http://psi.topincs.com/\"" + + "}," + + "\"item_type\":\"topic\"," + + "\"parent\":[" + + "\"ii:[pref_1:tm-1]\"" + + "]," + + "\"subject_identifiers\":[" + + "\"[pref_2:movie]\"" + + "]," + + "\"subject_locators\":null," + + "\"item_identifiers\":null," + + "\"names\":null," + + "\"occurrences\":null," + + "\"instance_of\":null" + + "}"; + assertEquals(jtmMovieExpected, jtmMovie); + + String jtmVinterbergOccurrenceExpected = "{\"version\":\"1.1\"," + + "\"prefixes\":{" + + "\"xsd\":\"http://www.w3.org/2001/XMLSchema#\"," + + "\"pref_1\":\"http://psi.topincs.com/people/\"," + + "\"pref_2\":\"http://psi.topincs.com/\"" + + "}," + + "\"item_type\":\"occurrence\"," + + "\"parent\":[" + + "\"si:[pref_1:thomas-vinterberg]\"" + + "]," + + "\"item_identifiers\":null," + + "\"reifier\":null," + + "\"type\":\"si:[pref_2:date-of-birth]\"," + + "\"scope\":null," + + "\"datatype\":\"[xsd:date]\"," + + "\"value\":\"1969-05-19\"" + + "}"; + assertEquals(jtmVinterbergOccurrenceExpected, jtmVinterbergOccurrence); + + String jtmThomasVinterbergExpected = "{\"version\":\"1.1\"," + + "\"prefixes\":{" + + "\"xsd\":\"http://www.w3.org/2001/XMLSchema#\"," + + "\"pref_1\":\"http://us.isidor.gdl.anaToMia/\"," + + "\"pref_2\":\"http://psi.topincs.com/people/\"," + + "\"pref_3\":\"http://psi.topicmaps.org/iso13250/model/\"," + + "\"pref_4\":\"http://psi.topincs.com/\"" + + "}," + + "\"item_type\":\"topic\"," + + "\"parent\":[" + + "\"ii:[pref_1:tm-1]\"" + + "]," + + "\"subject_identifiers\":[" + + "\"[pref_2:thomas-vinterberg]\"" + + "]," + + "\"subject_locators\":null," + + "\"item_identifiers\":null," + + "\"names\":[" + + "{" + + "\"item_identifiers\":null," + + "\"reifier\":null," + + "\"scope\":null," + + "\"variants\":null," + + "\"value\":\"Thomas Vinterberg\"," + + "\"type\":\"si:[pref_3:topic-name]\"" + + "}" + + "]," + + "\"occurrences\":[" + + "{" + + "\"item_identifiers\":null," + + "\"reifier\":null," + + "\"type\":\"si:[pref_4:date-of-birth]\"," + + "\"scope\":null," + + "\"datatype\":\"[xsd:date]\"," + + "\"value\":\"1969-05-19\"" + + "}" + + "]," + + "\"instance_of\":[" + + "\"si:[pref_4:person]\"" + + "]" + + "}"; + assertEquals(jtmThomasVinterbergExpected, jtmThomasVinterberg); + + String jtmVinterbergRoleExpected = "{\"version\":\"1.1\"," + + "\"prefixes\":{" + + "\"xsd\":\"http://www.w3.org/2001/XMLSchema#\"," + + "\"pref_1\":\"http://psi.topincs.com/people/\"," + + "\"pref_2\":\"http://psi.topincs.com/\"" + + "}," + + "\"item_type\":\"role\"," + + "\"parent\":[" + + "\"ii:[pref_2:association-ii]\"" + + "]," + + "\"item_identifiers\":null," + + "\"reifier\":null," + + "\"player\":\"si:[pref_1:thomas-vinterberg]\"," + + "\"type\":\"si:[pref_2:author]\"" + + "}"; + + assertEquals(jtmVinterbergRoleExpected, jtmVinterbergRole); + + String jtmTmExpected = "{\"version\":\"1.1\",\"prefixes\":{\"xsd\":\"http://www.w3.org/2001/XMLSchema#\",\"pref_1\":\"http://us.isidor.gdl.anaToMia/\",\"pref_2\":\"http://psi.topincs.com/\",\"pref_3\":\"http://psi.topicmaps.org/iso13250/model/\",\"pref_4\":\"http://psi.topincs.com/people/\",\"pref_5\":\"http://psi.topincs.com/movies/\",\"pref_6\":\"http://www.topicmaps.org/xtm/1.0/country.xtm#\"},\"item_type\":\"topicmap\",\"item_identifiers\":null,\"reifier\":null,\"topics\":[{\"subject_identifiers\":[\"[pref_2:person]\"],\"subject_locators\":null,\"item_identifiers\":null,\"names\":null,\"occurrences\":null,\"instance_of\":null},{\"subject_identifiers\":[\"[pref_3:topic-name]\"],\"subject_locators\":null,\"item_identifiers\":null,\"names\":null,\"occurrences\":null,\"instance_of\":null},{\"subject_identifiers\":[\"[pref_4:thomas-vinterberg]\"],\"subject_locators\":null,\"item_identifiers\":null,\"names\":[{\"item_identifiers\":null,\"reifier\":null,\"scope\":null,\"variants\":null,\"value\":\"Thomas Vinterberg\",\"type\":\"si:[pref_3:topic-name]\"}],\"occurrences\":[{\"item_identifiers\":null,\"reifier\":null,\"type\":\"si:[pref_2:date-of-birth]\",\"scope\":null,\"datatype\":\"[xsd:date]\",\"value\":\"1969-05-19\"}],\"instance_of\":[\"si:[pref_2:person]\"]},{\"subject_identifiers\":[\"[pref_2:date-of-birth]\"],\"subject_locators\":null,\"item_identifiers\":null,\"names\":null,\"occurrences\":null,\"instance_of\":null},{\"subject_identifiers\":[\"[pref_2:movie]\"],\"subject_locators\":null,\"item_identifiers\":null,\"names\":null,\"occurrences\":null,\"instance_of\":null},{\"subject_identifiers\":[\"[pref_2:director]\"],\"subject_locators\":null,\"item_identifiers\":null,\"names\":null,\"occurrences\":null,\"instance_of\":null},{\"subject_identifiers\":[\"[pref_2:author]\"],\"subject_locators\":null,\"item_identifiers\":null,\"names\":null,\"occurrences\":null,\"instance_of\":null},{\"subject_identifiers\":[\"[pref_2:work]\"],\"subject_locators\":null,\"item_identifiers\":null,\"names\":null,\"occurrences\":null,\"instance_of\":null},{\"subject_identifiers\":[\"[pref_2:title]\"],\"subject_locators\":null,\"item_identifiers\":null,\"names\":null,\"occurrences\":null,\"instance_of\":null},{\"subject_identifiers\":null,\"subject_locators\":null,\"item_identifiers\":[\"[pref_5:reifier-1]\"],\"names\":null,\"occurrences\":null,\"instance_of\":null},{\"subject_identifiers\":[\"[pref_5:dear-wendy]\"],\"subject_locators\":[\"[pref_5:sl-dear-wendy]\",\"[pref_5:slDearWendy]\"],\"item_identifiers\":null,\"names\":[{\"item_identifiers\":[\"[pref_5:ii-1]\",\"[pref_5:ii-2]\"],\"reifier\":null,\"scope\":[\"si:[pref_6:US]\",\"si:[pref_6:DE]\"],\"variants\":[{\"item_identifiers\":[\"[pref_5:variant-ii]\"],\"reifier\":null,\"scope\":[\"si:[pref_6:PL]\"],\"datatype\":\"[xsd:string]\",\"value\":\"Dear Wendy (PL)\"}],\"value\":\"Dear Wendy\",\"type\":\"si:[pref_2:title]\"}],\"occurrences\":[{\"item_identifiers\":null,\"reifier\":\"ii: [pref_5:reifier-1]\",\"type\":\"si:[pref_2:publication-year]\",\"scope\":null,\"datatype\":\"[xsd:gYear]\",\"value\":\"2005\"}],\"instance_of\":[\"si:[pref_2:movie]\"]},{\"subject_identifiers\":[\"[pref_6:US]\"],\"subject_locators\":null,\"item_identifiers\":null,\"names\":null,\"occurrences\":null,\"instance_of\":null},{\"subject_identifiers\":[\"[pref_6:PL]\"],\"subject_locators\":null,\"item_identifiers\":null,\"names\":null,\"occurrences\":null,\"instance_of\":null},{\"subject_identifiers\":[\"[pref_2:publication-year]\"],\"subject_locators\":null,\"item_identifiers\":null,\"names\":null,\"occurrences\":null,\"instance_of\":null},{\"subject_identifiers\":[\"[pref_6:DE]\"],\"subject_locators\":null,\"item_identifiers\":null,\"names\":null,\"occurrences\":null,\"instance_of\":null}],\"associations\":[{\"item_identifiers\":[\"[pref_2:association-ii]\"],\"reifier\":null,\"scope\":null,\"roles\":[{\"item_identifiers\":null,\"reifier\":null,\"player\":\"si:[pref_5:dear-wendy]\",\"type\":\"si:[pref_2:work]\"},{\"item_identifiers\":null,\"reifier\":null,\"player\":\"si:[pref_4:thomas-vinterberg]\",\"type\":\"si:[pref_2:author]\"}],\"type\":\"si:[pref_2:director]\"}]}"; + assertEquals(jtmTmExpected, jtmTm); + }catch(Exception e){ + System.err.println("caught error in testJtm11export(): " + e.getLocalizedMessage()); + assertNull(e.getLocalizedMessage()); + } }
participants (1)
-
lgiessmann@common-lisp.net