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

lgiessmann at common-lisp.net lgiessmann at common-lisp.net
Mon Jun 27 12:20:09 UTC 2011


Author: lgiessmann
Date: Mon Jun 27 05:20:08 2011
New Revision: 512

Log:
gdl-frontend: Topic Maps Engine: added a unit-test for the class Name; modified the referenced file: GDL_TopicMaps_Model.jar

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	Mon Jun 27 04:47:25 2011	(r511)
+++ branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/jtmsBasedEngine/JtmsTmEngine.java	Mon Jun 27 05:20:08 2011	(r512)
@@ -28,9 +28,16 @@
 public class JtmsTmEngine implements TmEngine{
 	private final String xsd = "http://www.w3.org/2001/XMLSchema#";
 	private final String xsdString = "http://www.w3.org/2001/XMLSchema#string";
+	private final String defaultNameTypePsi = "http://psi.topicmaps.org/iso13250/model/topic-name";
 	private ArrayList<TopicMap> tms = new ArrayList<TopicMap>();
 
 
+	public Topic createDefaultNameType(TopicMap tm){
+		Locator psi = tm.createLocator(defaultNameTypePsi);
+		return tm.createTopicBySubjectIdentifier(psi);
+	}
+
+
 	private final native TopicMap jsCreateTopicMap(String tmLocator) /*-{
 		var factory, sys, tmid, tm;
 		factory = $wnd.TopicMapSystemFactory.newInstance();
@@ -50,7 +57,7 @@
 				return tm;
 			}
 		}
-		
+
 		TopicMap tm = jsCreateTopicMap(tmLocator);
 		tms.add(tm);
 		return tm;
@@ -84,86 +91,86 @@
 	public TopicMap importTopicMap(String tmData, TopicMap tm) throws FormatException, MissingReference {
 		return importJTM11TopicMap(tmData, tm);
 	}
-	
-	
+
+
 	@Override
 	public Topic importTopic(String tmData, TopicMap tm) throws FormatException, MissingReference {
 		return importJTM11Topic(tmData, tm);
 	}
-	
-	
+
+
 	@Override
 	public Name importName(String tmData, TopicMap tm) throws FormatException, MissingReference {
 		return importJTM11Name(tmData, tm);
 	}
-	
-	
+
+
 	@Override
 	public Variant importVariant(String tmData, TopicMap tm) throws FormatException, MissingReference {
 		return importJTM11Variant(tmData, tm);
 	}
-	
-	
+
+
 	@Override
 	public Occurrence importOccurrence(String tmData, TopicMap tm) throws FormatException, MissingReference {
 		return importJTM11Occurrence(tmData, tm);
 	}
-	
-	
+
+
 	@Override
 	public Association importAssociation(String tmData, TopicMap tm) throws FormatException, MissingReference {
 		return importJTM11Association(tmData, tm);
 	}
-	
-	
+
+
 	@Override
 	public Role importRole(String tmData, TopicMap tm) throws FormatException, MissingReference {
 		return importJTM11Role(tmData, tm);
 	}
 
-	
+
 	@Override
 	public String exportTm(TopicMap tm) throws ExporterException {
 		return exportJTM11(tm, new Prefixes(tm), true);
 	}
-	
-	
+
+
 	@Override
 	public String exportTm(Topic topic) throws ExporterException {
 		return exportJTM11(topic, new Prefixes(topic), true);
 	}
-	
-	
+
+
 	@Override
 	public String exportTm(Name name) throws ExporterException {
 		return exportJTM11(name, new Prefixes(name), true);
 	}
-	
-	
+
+
 	@Override
 	public String exportTm(Variant variant) throws ExporterException {
 		return exportJTM11(variant, new Prefixes(variant), true);
 	}
-	
-	
+
+
 	@Override
 	public String exportTm(Occurrence occurrence) throws ExporterException {
 		return exportJTM11(occurrence, new Prefixes(occurrence), true);
 	}
-	
-	
+
+
 	@Override
 	public String exportTm(Association association) throws ExporterException {
 		return exportJTM11(association, new Prefixes(association), true);
 	}
-	
-	
+
+
 	@Override
 	public String exportTm(Role role) throws ExporterException {
 		return exportJTM11(role, new Prefixes(role), true);
 	}
-	
-	
+
+
 	private JSONObject checkJTMFormat(String jtm) throws FormatException{
 		// create a JSONObject from the json string
 		JSONValue jsonValue = JSONParser.parseStrict(jtm);
@@ -182,14 +189,14 @@
 		if(!version.equals("1.1")){
 			throw new FormatException("\"version\" field must be set to \"1.1\"");
 		}
-		
+
 		return jsonObject;
 	}
-	
-	
+
+
 	private TopicMap importJTM11TopicMap(String jtm, TopicMap tm) throws FormatException, MissingReference {
 		JSONObject jsonObject = checkJTMFormat(jtm);
-		
+
 		// get the item_type
 		String item_type = null;
 		if(jsonObject.containsKey("item_type")){
@@ -203,18 +210,18 @@
 		} else {
 			prefixes = new Prefixes();
 		}
-		
+
 		if(item_type == null || !item_type.equals("topicmap")){
 			throw new FormatException("expected a topicmap object, but \"item_type\" is not set to \"topicmap\"");
 		}else {
 			return importJTM11TopicMap(jsonObject, tm, prefixes);
 		}
 	}
-	
-	
+
+
 	private Topic importJTM11Topic(String jtm, TopicMap tm) throws FormatException, MissingReference {
 		JSONObject jsonObject = checkJTMFormat(jtm);
-		
+
 		// get the item_type
 		String item_type = null;
 		if(jsonObject.containsKey("item_type")){
@@ -228,7 +235,7 @@
 		} else {
 			prefixes = new Prefixes();
 		}
-		
+
 		if(item_type == null || !item_type.equals("topic")){
 			throw new FormatException("expected a topic object, but \"item_type\" is not set to \"topic\"");
 		}else {
@@ -239,7 +246,7 @@
 
 	private Name importJTM11Name(String jtm, TopicMap tm) throws FormatException, MissingReference {
 		JSONObject jsonObject = checkJTMFormat(jtm);
-		
+
 		// get the item_type
 		String item_type = null;
 		if(jsonObject.containsKey("item_type")){
@@ -253,18 +260,18 @@
 		} else {
 			prefixes = new Prefixes();
 		}
-		
+
 		if(item_type == null || !item_type.equals("name")){
 			throw new FormatException("expected a name object, but \"item_type\" is not set to \"name\"");
 		}else {
 			return importJTM11Name(null, jsonObject, tm, prefixes);
 		}
 	}
-	
-	
+
+
 	private Variant importJTM11Variant(String jtm, TopicMap tm) throws FormatException, MissingReference {
 		JSONObject jsonObject = checkJTMFormat(jtm);
-		
+
 		// get the item_type
 		String item_type = null;
 		if(jsonObject.containsKey("item_type")){
@@ -278,18 +285,18 @@
 		} else {
 			prefixes = new Prefixes();
 		}
-		
+
 		if(item_type == null || !item_type.equals("variant")){
 			throw new FormatException("expected a variant object, but \"item_type\" is not set to \"variant\"");
 		}else {
 			return importJTM11Variant(null, jsonObject, tm, prefixes);
 		}
 	}
-	
-	
+
+
 	private Occurrence importJTM11Occurrence(String jtm, TopicMap tm) throws FormatException, MissingReference {
 		JSONObject jsonObject = checkJTMFormat(jtm);
-		
+
 		// get the item_type
 		String item_type = null;
 		if(jsonObject.containsKey("item_type")){
@@ -303,7 +310,7 @@
 		} else {
 			prefixes = new Prefixes();
 		}
-		
+
 		if(item_type == null || !item_type.equals("occurrence")){
 			throw new FormatException("expected an occurrence object, but \"item_type\" is not set to \"occurrence\"");
 		}else {
@@ -311,10 +318,10 @@
 		}
 	}
 
-	
+
 	private Association importJTM11Association(String jtm, TopicMap tm) throws FormatException, MissingReference {
 		JSONObject jsonObject = checkJTMFormat(jtm);
-		
+
 		// get the item_type
 		String item_type = null;
 		if(jsonObject.containsKey("item_type")){
@@ -328,18 +335,18 @@
 		} else {
 			prefixes = new Prefixes();
 		}
-		
+
 		if(item_type == null || !item_type.equals("association")){
 			throw new FormatException("expected an association object, but \"item_type\" is not set to \"association\"");
 		}else {
 			return importJTM11Association(jsonObject, tm, prefixes);
 		}
 	}
-	
-	
+
+
 	private Role importJTM11Role(String jtm, TopicMap tm) throws FormatException, MissingReference {
 		JSONObject jsonObject = checkJTMFormat(jtm);
-		
+
 		// get the item_type
 		String item_type = null;
 		if(jsonObject.containsKey("item_type")){
@@ -353,7 +360,7 @@
 		} else {
 			prefixes = new Prefixes();
 		}
-		
+
 		if(item_type == null || !item_type.equals("role")){
 			throw new FormatException("expected a role object, but \"item_type\" is not set to \"role\"");
 		}else {
@@ -361,7 +368,7 @@
 		}
 	}
 
-	
+
 	private TopicMap importJTM11TopicMap(JSONObject jtm, TopicMap tm, Prefixes prefixes) throws FormatException, MissingReference{
 		// the received topic map's item identifiers are ignored, the tm's locator is used instead
 
@@ -379,7 +386,7 @@
 						topics.add(importTopicStubFromTm(topicObject, tm, prefixes));
 					}
 				}
-				
+
 				// get all instance_of topics of all topics
 				for(int i = 0; i != topics.size(); ++i){
 					importTopicCharacteristicsFromTm(topics.get(i), jsonTopics.get(i).isObject(), tm, prefixes);
@@ -403,10 +410,10 @@
 			Topic reifier = getReferenced(jtm.get("reifier"), tm, prefixes);
 			tm.setReifier(reifier);
 		}
-		
+
 		return tm;
 	}
-	
+
 
 	private Topic getReferenced(JSONValue reference, TopicMap tm, Prefixes prefixes) throws FormatException, MissingReference{
 		JSONString stringValue = reference.isString();
@@ -443,12 +450,12 @@
 
 	private ArrayList<Topic> getReferenceds(JSONValue references, TopicMap tm, Prefixes prefixes) throws FormatException, MissingReference {
 		ArrayList<String> stringReferences = new ArrayList<String>();
-		
+
 		JSONArray stringValues = references.isArray();
 		if(stringValues == null){
 			throw new FormatException("expected an array of strings as topic references, but found \"" + references.toString() + "\"");
 		}
-		
+
 		for(int i = 0; i != stringValues.size(); ++i){
 			JSONValue stringValue = stringValues.get(i);
 			JSONString string = stringValue.isString();
@@ -458,22 +465,22 @@
 				stringReferences.add(string.stringValue());
 			}
 		}
-		
+
 		return getReferenceds(stringReferences, tm, prefixes);
 	}
-	
-	
+
+
 	private ArrayList<Topic> getReferenceds(ArrayList<String> references, TopicMap tm, Prefixes prefixes) throws FormatException, MissingReference {
 		ArrayList<Topic> values = new ArrayList<Topic>();
-		
+
 		for(String reference : references){
 			values.add(getReferenced(reference, tm, prefixes));
 		}
-		
+
 		return values;
 	}
-	
-	
+
+
 	private String unCurie(String curie, Prefixes prefixes) throws FormatException{
 		if(curie.startsWith("[") && curie.endsWith("]")){
 			String[] strs = curie.substring(1).split(":");
@@ -513,7 +520,7 @@
 			for(int i = 1; i != subjectIdentifiers.size(); ++i){
 				top.addSubjectIdentifier(tm.createLocator(subjectIdentifiers.get(i)));
 			}
-			
+
 			for (String itemIdentifier : itemIdentifiers) {
 				top.addItemIdentifier(tm.createLocator(itemIdentifier));
 			}
@@ -536,7 +543,7 @@
 		} else {
 			throw new FormatException("a topic must have at least one identifier");
 		}
-		
+
 		return top;
 	}
 
@@ -568,7 +575,7 @@
 
 	private ArrayList<JSONObject> getObjectsOfJSONArray(JSONObject object, String key) throws FormatException {
 		ArrayList<JSONObject> values = new ArrayList<JSONObject>();
-		
+
 		if(object.containsKey(key)){
 			JSONValue jsonValues = object.get(key);
 			JSONArray jsonArray = jsonValues.isArray();
@@ -586,22 +593,22 @@
 				}
 			}
 		}
-		
+
 		return values;
 	}
-	
-	
+
+
 	private void importTopicCharacteristicsFromTm(Topic topic, JSONObject jsonTopic, TopicMap tm, Prefixes prefixes) throws FormatException, MissingReference{
 		// set instance_of of this topic
 		for (String instanceOf : getStringsOfJSONArray(jsonTopic, "instance_of")) {
 			topic.addType(getReferenced(instanceOf, tm, prefixes));
 		}
-		
+
 		// set all names of this topic
 		for (JSONObject name : getObjectsOfJSONArray(jsonTopic, "names")) {
 			importJTM11Name(topic, name, tm, prefixes);
 		}
-		
+
 		// set all occurrences of this topic
 		for (JSONObject occurrence : getObjectsOfJSONArray(jsonTopic, "occurrences")) {
 			importJTM11Name(topic, occurrence, tm, prefixes);
@@ -611,24 +618,24 @@
 
 	private Topic importJTM11Topic(JSONObject jtm, TopicMap tm, Prefixes prefixes) throws FormatException, MissingReference{
 		// the parent item is ignored, the passed tm is set as parent item
-		
+
 		Topic topic = importTopicStubFromTm(jtm, tm, prefixes);
 		importTopicCharacteristicsFromTm(topic, jtm, tm, prefixes);
 		return topic;
 	}
-	
-	
+
+
 	private static JsArray<Topic> toJsArray(ArrayList<Topic> topics){
 		JsArray<Topic> tops = null;
-		
+
 		for (Topic topic : topics) {
 			tops = appendToJsArray(tops, topic);
 		}
-		
+
 		return tops;
 	}
-	
-	
+
+
 	private static final native JsArray<Topic> appendToJsArray(JsArray<Topic> topics, Topic topic) /*-{
 		var array;
 		if(topics === null){
@@ -639,11 +646,11 @@
 		array.push(topic);
 		return array;
 	}-*/;
-	
-	
+
+
 	private ArrayList<Construct> getParents(JSONValue parentValue, TopicMap tm, Prefixes prefixes) throws FormatException, MissingReference{
 		ArrayList<Construct> values = new ArrayList<Construct>();
-		
+
 		JSONArray parents = parentValue.isArray();
 		if(parents == null){
 			throw new FormatException("the field \"parent\" must be an array of item identifiers");
@@ -664,10 +671,10 @@
 				}
 			}
 		}
-		
+
 		return values;
 	}
-	
+
 
 	private Name importJTM11Name(Topic parent, JSONObject jtm, TopicMap tm, Prefixes prefixes) throws FormatException, MissingReference{
 		Topic topic = null;
@@ -685,7 +692,7 @@
 				throw new FormatException("a name must contain the field \"parent\" with an array of string values");
 			}
 		}
-		
+
 		// get name value
 		String value = "";
 		if(jtm.containsKey("value")){
@@ -693,47 +700,47 @@
 		} else {
 			throw new FormatException("a name must contain the field \"value\" with a string value");
 		}
-		
+
 		// get type
 		Topic type = null;
 		if(jtm.containsKey("type")){
 			type = getReferenced(jtm.get("type"), tm, prefixes);
 		}
-		
+
 		// get scope
 		ArrayList<Topic> scope = new ArrayList<Topic>();
 		if(jtm.containsKey("scope")){
 			scope = getReferenceds(jtm.get("scope"), tm, prefixes);
 		}
 		JsArray<Topic> jsScope = toJsArray(scope);
-		
+
 		Name name = null;
 		if(type != null){
 			name = topic.createName(value, type, jsScope);
 		} else {
 			name = topic.createName(value, jsScope);
 		}
-		
+
 		// get item_identifiers
 		for (String ii : getStringsOfJSONArray(jtm, "item_identifiers")) {
 			name.addItemIdentifier(tm.createLocator(unCurie(ii, prefixes)));
 		}
-		
+
 		// set reifier
 		if(jtm.containsKey("reifier")){
 			Topic reifier = getReferenced(jtm.get("reifier"), tm, prefixes);
 			name.setReifier(reifier);
 		}
-		
+
 		// get variants
 		for (JSONObject variant : getObjectsOfJSONArray(jtm, "variants")) {
 			importJTM11Variant(name, variant, tm, prefixes);
 		}
-		
+
 		return name;
 	}
-	
-	
+
+
 	private String getStringValue(JSONObject jtm, String key) throws FormatException{
 		if(jtm.containsKey(key)){
 			JSONValue stringValue = jtm.get(key);
@@ -747,7 +754,7 @@
 			return null;
 		}
 	}
-	
+
 
 	private Variant importJTM11Variant(Name parent, JSONObject jtm, TopicMap tm, Prefixes prefixes) throws FormatException, MissingReference{
 		// set the variant parent
@@ -766,7 +773,7 @@
 				throw new FormatException("a name must contain the field \"parent\" with an array of string values");
 			}
 		}
-		
+
 		// get variant value
 		String value = null;
 		if(jtm.containsKey("value")){
@@ -774,13 +781,13 @@
 		} else {
 			throw new FormatException("a name must contain the field \"value\" with a string value");
 		}
-		
+
 		// get variant datatype
 		String datatype = xsdString;
 		if(jtm.containsKey("value")){
 			datatype = unCurie(getStringValue(jtm, "datatype"), prefixes);
 		}
-		
+
 		// get scope
 		ArrayList<Topic> scope = new ArrayList<Topic>();
 		if(jtm.containsKey("scope")){
@@ -790,24 +797,24 @@
 			throw new FormatException("a variant must have at least on scope topic set");
 		}
 		JsArray<Topic> jsScope = toJsArray(scope);
-		
+
 		Variant variant = name.createVariant(value, tm.createLocator(datatype), jsScope);
-		
+
 		// get item_identifiers
 		for (String ii : getStringsOfJSONArray(jtm, "item_identifiers")) {
 			variant.addItemIdentifier(tm.createLocator(unCurie(ii, prefixes)));
 		}
-		
+
 		// set reifier
 		if(jtm.containsKey("reifier")){
 			Topic reifier = getReferenced(jtm.get("reifier"), tm, prefixes);
 			variant.setReifier(reifier);
 		}
-		
+
 		return variant;
 	}
 
-	
+
 	private Occurrence importJTM11Occurrence(Topic parent, JSONObject jtm, TopicMap tm, Prefixes prefixes) throws FormatException, MissingReference{
 		// set occurrence parent
 		Topic topic = null;
@@ -825,7 +832,7 @@
 				throw new FormatException("a name must contain the field \"parent\" with an array of string values");
 			}
 		}
-		
+
 		// get occurrence value
 		String value = "";
 		if(jtm.containsKey("value")){
@@ -833,91 +840,91 @@
 		} else {
 			throw new FormatException("a name must contain the field \"value\" with a string value");
 		}
-		
+
 		// get occurrence datatype
 		String datatype = xsdString;
 		if(jtm.containsKey("value")){
 			datatype = unCurie(getStringValue(jtm, "datatype"), prefixes);
 		}
-		
+
 		// get occurrence type
 		Topic type = null;
 		if(jtm.containsKey("type")){
 			type = getReferenced(jtm.get("type"), tm, prefixes);
 		}
-		
+
 		// get occurrence scope
 		ArrayList<Topic> scope = new ArrayList<Topic>();
 		if(jtm.containsKey("scope")){
 			scope = getReferenceds(jtm.get("scope"), tm, prefixes);
 		}
 		JsArray<Topic> jsScope = toJsArray(scope);
-		
+
 		Occurrence occurrence = null;
 		if(type == null){
 			throw new FormatException("an occurrence must contain the field \"type\" with a topic reference");
 		} else {
 			occurrence = topic.createOccurrence(type, value, tm.createLocator(datatype), jsScope);
 		}
-		
+
 		// get item_identifiers
 		for (String ii : getStringsOfJSONArray(jtm, "item_identifiers")) {
 			occurrence.addItemIdentifier(tm.createLocator(unCurie(ii, prefixes)));
 		}
-		
+
 		// set reifier
 		if(jtm.containsKey("reifier")){
 			Topic reifier = getReferenced(jtm.get("reifier"), tm, prefixes);
 			occurrence.setReifier(reifier);
 		}
-		
+
 		return occurrence;
 	}
 
-	
+
 	private Association importJTM11Association(JSONObject jtm, TopicMap tm, Prefixes prefixes) throws FormatException, MissingReference{
 		// the parent is ignored, instead the passed tm is used as parent item
-		
+
 		// get association type
 		Topic type = null;
 		if(jtm.containsKey("type")){
 			type = getReferenced(jtm.get("type"), tm, prefixes);
 		}
-		
+
 		// get association scope
 		ArrayList<Topic> scope = new ArrayList<Topic>();
 		if(jtm.containsKey("scope")){
 			scope = getReferenceds(jtm.get("scope"), tm, prefixes);
 		}
 		JsArray<Topic> jsScope = toJsArray(scope);
-		
+
 		Association association = null;
 		if(type == null){
 			throw new FormatException("an occurrence must contain the field \"type\" with a topic reference");
 		} else {
 			association = tm.createAssociation(type, jsScope);
 		}
-		
+
 		// get association roles
 		for (JSONObject role : getObjectsOfJSONArray(jtm, "roles")) {
 			importJTM11Role(association, role, tm, prefixes);
 		}
-		
+
 		// get item_identifiers
 		for (String ii : getStringsOfJSONArray(jtm, "item_identifiers")) {
 			association.addItemIdentifier(tm.createLocator(unCurie(ii, prefixes)));
 		}
-		
+
 		// set reifier
 		if(jtm.containsKey("reifier")){
 			Topic reifier = getReferenced(jtm.get("reifier"), tm, prefixes);
 			association.setReifier(reifier);
 		}
-		
+
 		return association;
 	}
-	
-	
+
+
 	private Role importJTM11Role(Association parent, JSONObject jtm, TopicMap tm, Prefixes prefixes) throws FormatException, MissingReference{
 		// set the variant parent
 		Association association = null;
@@ -935,86 +942,86 @@
 				throw new FormatException("a role must contain the field \"parent\" with an array of string values");
 			}
 		}
-		
+
 		// get role player
 		Topic player = null;
 		if(jtm.containsKey("player")){
 			player = getReferenced(jtm.get("player"), tm, prefixes);
 		}
-		
+
 		// get role type
 		Topic type = null;
 		if(jtm.containsKey("type")){
 			type = getReferenced(jtm.get("type"), tm, prefixes);
 		}
-		
+
 		Role role = association.createRole(type, player);
-		
+
 		// get item_identifiers
 		for (String ii : getStringsOfJSONArray(jtm, "item_identifiers")) {
 			role.addItemIdentifier(tm.createLocator(unCurie(ii, prefixes)));
 		}
-		
+
 		// set reifier
 		if(jtm.containsKey("reifier")){
 			Topic reifier = getReferenced(jtm.get("reifier"), tm, prefixes);
 			role.setReifier(reifier);
 		}
-		
+
 		return role;
 	}
 
-	
+
 	private String exportItemType(TopicMap tm) throws ExporterException{
 		return exportValue("topicmap", "item_type");
 	}
-	
-	
+
+
 	private String exportItemType(Topic topic) throws ExporterException{
 		return exportValue("topic", "item_type");
 	}
-	
-	
+
+
 	private String exportItemType(Name name) throws ExporterException{
 		return exportValue("name", "item_type");
 	}
-	
-	
+
+
 	private String exportItemType(Variant varian) throws ExporterException{
 		return exportValue("variant", "item_type");
 	}
-	
-	
+
+
 	private String exportItemType(Occurrence occurrence) throws ExporterException{
 		return exportValue("occurrence", "item_type");
 	}
-	
-	
+
+
 	private String exportItemType(Association association) throws ExporterException{
 		return exportValue("association", "item_type");
 	}
-	
-	
+
+
 	private String exportItemType(Role role) throws ExporterException{
 		return exportValue("role", "item_type");
 	}
-	
-	
+
+
 	private String exportVersion11(){
 		return "\"version\":\"1.1\"";
 	}
-	
-		
+
+
 	private String exportValue(String value, String key){
 		return "\"" + key + "\":" + escapeJSON(value);
 	}
-	
-	
+
+
 	private String exportJsonValue(String jsonValue, String key){
 		return "\"" + key + "\":" + jsonValue;
 	}
-	
-	
+
+
 	private String exportArrayValues(ArrayList<String> values, String key){
 		if(values == null || values.size() == 0){
 			return "\"" + key + "\":" + "null";
@@ -1029,8 +1036,8 @@
 			return localValues + "]";
 		}
 	}
-	
-	
+
+
 	private String exportJsonArrayValues(ArrayList<String> jsonValues, String key){
 		if(jsonValues == null || jsonValues.size() == 0){
 			return "\"" + key + "\":" + "null";
@@ -1045,30 +1052,30 @@
 			return localValues + "]";
 		}
 	}
-	
-	
+
+
 	private String curie(Locator uri, Prefixes prefixes) throws ExporterException{
 		return curie(uri.getReference(), prefixes);
 	}
-	
-	
+
+
 	private String curie(String uri, Prefixes prefixes) throws ExporterException {
 		String qualifier = prefixes.getQualifier(uri);
 		String suffix = uri.substring(prefixes.getNs(qualifier).length());
 		return "[" + qualifier + ":" + suffix + "]";
 	}
-	
-	
+
+
 	private String exportReference(Topic topic, String key, Prefixes prefixes) throws ExporterException {
 		return "\"" + key + "\":" + exportReference(topic, prefixes);
 	}
-	
-	
+
+
 	private String exportReferences(ArrayList<Topic> topics, String key, Prefixes prefixes) throws ExporterException {
 		return "\"" + key + "\":" + exportReferences(topics, prefixes);
 	}
-	
-	
+
+
 	private String exportReference(Topic topic, Prefixes prefixes) throws ExporterException{
 		if(topic != null){
 			JsArray<Locator> sis = topic.getSubjectIdentifiers();
@@ -1087,8 +1094,8 @@
 			return "null";
 		}
 	}
-	
-	
+
+
 	private String exportReferences(ArrayList<Topic> topics, Prefixes prefixes) throws ExporterException{
 		if(topics == null || topics.size() == 0){
 			return "null";
@@ -1105,49 +1112,49 @@
 		}
 	}
 
-	
+
 	private String exportJTM11(TopicMap tm, Prefixes prefixes, boolean standalone) throws ExporterException{
 		// standalone is ignored, i.e. a TopicMap object mustis always exported as a
 		// stand alone item.
-		
+
 		String json = "{";
 
 		// version
 		json += exportVersion11() + ",";
-		
+
 		// prefixes
 		json += exportJsonValue(prefixes.toJSON(), "prefixes") + ",";
-		
+
 		// item_type
 		json += exportItemType(tm) + ",";
-		
+
 		// item_identifiers
 		json += exportIdentifiers(tm.getItemIdentifiers(), "item_identifiers", prefixes) + ",";
-		
+
 		// reifier
 		json += exportReference(tm.getReifier(), "reifier", prefixes) + ",";
-		
+
 		// topics
 		ArrayList<String> topicStrings = new ArrayList<String>();
 		for(int i = 0; i != tm.getTopics().length(); ++i){
 			topicStrings.add(exportJTM11(tm.getTopics().get(i), prefixes, false));
 		}
 		json += exportJsonArrayValues(topicStrings, "topics") + ",";
-		
+
 		// associations
 		ArrayList<String> associationStrings = new ArrayList<String>();
 		for(int i = 0; i != tm.getAssociations().length(); ++i){
 			associationStrings.add(exportJTM11(tm.getAssociations().get(i), prefixes, false));
 		}
 		json += exportJsonArrayValues(associationStrings, "associations") + "}";
-		
+
 		return json;
 	}
-	
-	
+
+
 	private String exportJTM11(Topic topic, Prefixes prefixes, boolean standalone) throws ExporterException{
 		String json = "{";
-		
+
 		// the fields version, item_type, parent and prefixes are exported only if this
 		// construct is exported as a standalone construct
 		if(standalone){
@@ -1156,43 +1163,43 @@
 			json += exportItemType(topic) + ",";
 			json += exportParent(topic.getParent(), prefixes) + ",";
 		}
-		
+
 		// the fields subject_identifiers, subject_locators, item_identifiers, names, occurrences
 		// and instance_of are always exported
-		
+
 		// identifiers
 		json += exportIdentifiers(topic.getSubjectIdentifiers(), "subject_identifiers", prefixes) + ",";
 		json += exportIdentifiers(topic.getSubjectLocators(), "subject_locators", prefixes) + ",";
 		json += exportIdentifiers(topic.getItemIdentifiers(), "item_identifiers", prefixes) + ",";
-		
+
 		// names
 		ArrayList<String> nameStrings = new ArrayList<String>();
 		for(int i = 0; i != topic.getNames().length(); ++i){
 			nameStrings.add(exportJTM11(topic.getNames().get(i), prefixes, false));
 		}
 		json += exportJsonArrayValues(nameStrings, "names") + ",";
-		
+
 		// occurrences
 		ArrayList<String> occurrenceStrings = new ArrayList<String>();
 		for(int i = 0; i != topic.getOccurrences().length(); ++i){
 			occurrenceStrings.add(exportJTM11(topic.getOccurrences().get(i), prefixes, false));
 		}
 		json += exportJsonArrayValues(occurrenceStrings, "occurrences") + ",";
-		
+
 		// instance_of
 		ArrayList<Topic> instanceOfs = new ArrayList<Topic>();
 		for(int i = 0; i != topic.getTypes().length(); ++i){
 			instanceOfs.add(topic.getTypes().get(i));
 		}
 		json += exportReferences(instanceOfs, "instance_of", prefixes) + "}";
-		
+
 		return json;
 	}
 
-	
+
 	private String exportJTM11(Name name, Prefixes prefixes, boolean standalone) throws ExporterException{
 		String json = "{";
-		
+
 		// the fields version, item_type, parent and prefixes are exported only if this
 		// construct is exported as a standalone construct
 		if(standalone){
@@ -1201,40 +1208,40 @@
 			json += exportItemType(name) + ",";
 			json += exportParent(name.getParent(), prefixes) + ",";
 		}
-		
+
 		// the fields item_identifiers, reifier, scope, variants, value and type are always exported
 		json += exportIdentifiers(name.getItemIdentifiers(), "item_identifiers", prefixes) + ",";
-		
+
 		// reifier
 		json += exportReference(name.getReifier(), "reifier", prefixes) + ",";
-		
+
 		// scope
 		ArrayList<Topic> scopeTopics = new ArrayList<Topic>();
 		for(int i = 0; i != name.getScope().length(); ++i){
 			scopeTopics.add(name.getScope().get(i));
 		}
 		json += exportReferences(scopeTopics, "scope", prefixes) + ",";
-		
+
 		// variants
 		ArrayList<String> variantStrings = new ArrayList<String>();
 		for(int i = 0; i != name.getVariants().length(); ++i){
 			variantStrings.add(exportJTM11(name.getVariants().get(i), prefixes, false));
 		}
 		json += exportJsonArrayValues(variantStrings, "variants") + ",";
-		
+
 		// value
 		json += exportValue(name.getValue(), "value") + ",";
-		
+
 		// type - a name my have null as a type
 		json += exportReference(name.getType(), "type", prefixes) + "}";
-		
+
 		return json;
 	}
-	
-	
+
+
 	private String exportJTM11(Variant variant, Prefixes prefixes, boolean standalone) throws ExporterException{
 		String json = "{";
-		
+
 		// the fields version, item_type, parent and prefixes are exported only if this
 		// construct is exported as a standalone construct
 		if(standalone){
@@ -1243,33 +1250,33 @@
 			json += exportItemType(variant) + ",";
 			json += exportParent(variant.getParent(), prefixes) + ",";
 		}
-		
+
 		// the fields item_identifiers, reifier, scope, datatype, value are always exported
 		json += exportIdentifiers(variant.getItemIdentifiers(), "item_identifiers", prefixes) + ",";
-		
+
 		// reifier
 		json += exportReference(variant.getReifier(), "reifier", prefixes) + ",";
-		
+
 		// scope
 		ArrayList<Topic> scopeTopics = new ArrayList<Topic>();
 		for(int i = 0; i != variant.getScope().length(); ++i){
 			scopeTopics.add(variant.getScope().get(i));
 		}
 		json += exportReferences(scopeTopics, "scope", prefixes) + ",";
-		
+
 		// datatype
 		json += exportValue(curie(variant.getDatatype(), prefixes), "datatype") + ",";
-		
+
 		// value
 		json += exportValue(variant.getValue(), "value") + "}";
-		
+
 		return json;
 	}
-	
-	
+
+
 	private String exportJTM11(Occurrence occurrence, Prefixes prefixes, boolean standalone) throws ExporterException{
 		String json = "{";
-		
+
 		// the fields version, item_type, parent and prefixes are exported only if this
 		// construct is exported as a standalone construct
 		if(standalone){
@@ -1278,40 +1285,40 @@
 			json += exportItemType(occurrence) + ",";
 			json += exportParent(occurrence.getParent(), prefixes) + ",";
 		}
-		
+
 		// the fields item_identifiers, reifier, type, scope, datatype, value are always exported
 		json += exportIdentifiers(occurrence.getItemIdentifiers(), "item_identifiers", prefixes) + ",";
-		
+
 		// reifier
 		json += exportReference(occurrence.getReifier(), "reifier", prefixes) + ",";
-		
+
 		// type
 		if(occurrence.getType() == null){
 			throw new ExporterException("a role must have a player set");
 		}
 		json += exportReference(occurrence.getType(), "type", prefixes) + ",";
-		
+
 		// scope
 		ArrayList<Topic> scopeTopics = new ArrayList<Topic>();
 		for(int i = 0; i != occurrence.getScope().length(); ++i){
 			scopeTopics.add(occurrence.getScope().get(i));
 		}
 		json += exportReferences(scopeTopics, "scope", prefixes) + ",";
-		
+
 		// datatype
 		json += exportValue(curie(occurrence.getDatatype(), prefixes), "datatype") + ",";
-		
+
 		// value
 		json += exportValue(occurrence.getValue(), "value") + "}";
-		
+
 		return json;
 	}
-	
-	
+
+
 	private String exportParent(Topic parent, Prefixes prefixes) throws ExporterException {
 		Locator parentIdentifier = null;
 		String idType = "ii:";
-		
+
 		if(parent.getSubjectIdentifiers().length() != 0){
 			parentIdentifier = parent.getSubjectIdentifiers().get(0);
 			idType = "si:";
@@ -1321,35 +1328,35 @@
 		} else if(parent.getItemIdentifiers().length() != 0){
 			parentIdentifier = parent.getItemIdentifiers().get(0);
 		}
-		
+
 		if(parentIdentifier == null){
 			throw new ExporterException("a parent must have at least one identifeir to be serailised");
 		} else {
 			return "\"parent\":[\"" + idType + curie(parentIdentifier, prefixes) + "\"]";
 		}
 	}
-	
-	
+
+
 	private String exportParent(Reifiable parent, Prefixes prefixes) throws ExporterException {
 		Locator parentIdentifier = null;
-		
+
 		ReifiableStub parentStub = (ReifiableStub)parent;
-		
+
 		if(parentStub.getItemIdentifiers().length() != 0){
 			parentIdentifier = parentStub.getItemIdentifiers().get(0);
 		}
-		
+
 		if(parentIdentifier == null){
 			throw new ExporterException("a parent must have at least one identifeir to be serailised");
 		} else {
 			return "\"parent\":[\"ii:"  + curie(parentIdentifier, prefixes) + "\"]";
 		}
 	}
-	
-	
+
+
 	private String exportJTM11(Association association, Prefixes prefixes, boolean standalone) throws ExporterException{
 		String json = "{";
-		
+
 		// the fields version, item_type, parent and prefixes are exported only if this
 		// construct is exported as a standalone construct
 		if(standalone){
@@ -1358,50 +1365,50 @@
 			json += exportItemType(association) + ",";
 			json += exportParent(association.getParent(), prefixes) + ",";
 		}
-		
+
 		// the fields item_identifiers, reifier, scope, roles and type are always exported
 		json += exportIdentifiers(association.getItemIdentifiers(), "item_identifiers", prefixes) + ",";
-		
+
 		// reifier
 		json += exportReference(association.getReifier(), "reifier", prefixes) + ",";
-		
+
 		// scope
 		ArrayList<Topic> scopeTopics = new ArrayList<Topic>();
 		for(int i = 0; i != association.getScope().length(); ++i){
 			scopeTopics.add(association.getScope().get(i));
 		}
 		json += exportReferences(scopeTopics, "scope", prefixes) + ",";
-		
+
 		// roles
 		ArrayList<String> roleStrings = new ArrayList<String>();
 		for(int i = 0; i != association.getRoles().length(); ++i){
 			roleStrings.add(exportJTM11(association.getRoles().get(i), prefixes, false));
 		}
 		json += exportJsonArrayValues(roleStrings, "roles") + ",";
-		
+
 		// type
 		if(association.getType() == null){
 			throw new ExporterException("an association must have a player set");
 		}
 		json += exportReference(association.getType(), "type", prefixes) + "}";
-		
+
 		return json;
 	}
-	
-	
+
+
 	private String exportIdentifiers(JsArray<Locator> identifiers, String key, Prefixes prefixes) throws ExporterException{
 		ArrayList<String> curies = new ArrayList<String>();
 		for(int i = 0; i != identifiers.length(); ++i){
 			curies.add(escapeJSON(curie(identifiers.get(i), prefixes)));
 		}
-		
+
 		return exportJsonArrayValues(curies, key);
 	}
-	
-	
+
+
 	private String exportJTM11(Role role, Prefixes prefixes, boolean standalone) throws ExporterException{
 		String json = "{";
-		
+
 		// the fields version, item_type, parent and prefixes are exported only if this
 		// construct is exported as a standalone construct
 		if(standalone){
@@ -1410,34 +1417,34 @@
 			json += exportItemType(role) + ",";
 			json += exportParent(role.getParent(), prefixes) + ",";
 		}
-		
+
 		// the fields item_identifiers, reifier, player and type are always exported
 		json += exportIdentifiers(role.getItemIdentifiers(), "item_identifiers", prefixes) + ",";
-		
+
 		// reifier
 		json += exportReference(role.getReifier(), "reifier", prefixes) + ",";
-		
+
 		// player
 		if(role.getPlayer() == null){
 			throw new ExporterException("a role must have a player set");
 		}
 		json += exportReference(role.getPlayer(), "player", prefixes) + ",";
-		
+
 		// type
 		if(role.getType() == null){
 			throw new ExporterException("a role must have a player set");
 		}
 		json += exportReference(role.getType(), "type", prefixes) + "}";
-		
+
 		return json;
 	}
-	
-	
+
+
 	private static String escapeJSON(String json){
 		return JsonUtils.escapeValue(json).replaceAll("/", "\\/");
 	}
 
-	
+
 	private class Prefixes {
 		private ArrayList<String[]> prefixes = new ArrayList<String[]>();
 
@@ -1468,211 +1475,211 @@
 			}
 		}
 
-		
+
 		public Prefixes (Role role) throws ExporterException {
 			this();
 			initPrefixes(prefixes, role);
 		}
-		
-		
+
+
 		public Prefixes (Association association) throws ExporterException {
 			this();
 			initPrefixes(prefixes, association);
 		}
-		
-		
+
+
 		public Prefixes (Occurrence occurrence) throws ExporterException {
 			this();
 			initPrefixes(prefixes, occurrence);
 		}
-		
-		
+
+
 		public Prefixes (Variant variant) throws ExporterException {
 			this();
 			initPrefixes(prefixes, variant);
 		}
-		
-		
+
+
 		public Prefixes (Name name) throws ExporterException {
 			this();
 			initPrefixes(prefixes, name);
 		}
-		
-		
+
+
 		public Prefixes (Topic topic) throws ExporterException {
 			this();
 			initPrefixes(prefixes, topic);
 		}
-		
-		
+
+
 		public Prefixes (TopicMap tm) throws ExporterException {
 			this();
 			initPrefixes(prefixes, tm);
 		}
-		
-		
+
+
 		private void initPrefixes(ArrayList<String[]> prefixes, TopicMap tm) throws ExporterException{
 			// item_identifiers
 			addPrefixesOfIdentifiers(prefixes, tm.getItemIdentifiers());
-			
+
 			// reifier
 			addPrefixOfTopicReference(prefixes, tm.getReifier());
-			
+
 			// topics
 			for(int i = 0; i != tm.getTopics().length(); ++i){
 				initPrefixes(prefixes, tm.getTopics().get(i));
 			}
-			
+
 			// associations
 			for(int i = 0; i != tm.getAssociations().length(); ++i){
 				initPrefixes(prefixes, tm.getAssociations().get(i));
 			}
 		}
-		
-		
+
+
 		private void initPrefixes(ArrayList<String[]> prefixes, Topic topic) throws ExporterException{
 			// parent
 			addPrefixOfReifiableReference(prefixes, topic.getTopicMap());
-			
+
 			// subject_identifiers
 			addPrefixesOfIdentifiers(prefixes, topic.getSubjectIdentifiers());
-			
+
 			// subject_locators 
 			addPrefixesOfIdentifiers(prefixes, topic.getSubjectLocators());
-			
+
 			// item_identifeirs
 			addPrefixesOfIdentifiers(prefixes, topic.getItemIdentifiers());
-			
+
 			// names
 			for(int i = 0; i != topic.getNames().length(); ++i){
 				initPrefixes(prefixes, topic.getNames().get(i));
 			}
-			
+
 			// occurrences
 			for(int i = 0; i != topic.getOccurrences().length(); ++i){
 				initPrefixes(prefixes, topic.getOccurrences().get(i));
 			}
 		}
-		
-		
+
+
 		private void initPrefixes(ArrayList<String[]> prefixes, Name name) throws ExporterException{
 			if(null == name.getParent()){
 				throw new ExporterException("a name must have a parent set"); 
 			}
-			
+
 			// parent
 			addPrefixOfTopicReference(prefixes, name.getParent());
-			
+
 			// item_idenifiers
 			addPrefixesOfIdentifiers(prefixes, name.getItemIdentifiers());
-			
+
 			// reifier
 			addPrefixOfTopicReference(prefixes, name.getReifier());
-			
+
 			// scope
 			addPrefixesOfTopicReferences(prefixes, name.getScope());
-			
+
 			// type
 			addPrefixOfTopicReference(prefixes, name.getType());
-			
+
 			// variants
 			for(int i = 0; i != name.getVariants().length(); ++i){
 				initPrefixes(prefixes, name.getVariants().get(i));
 			}
 		}
-		
-		
+
+
 		private void initPrefixes(ArrayList<String[]> prefixes, Variant variant) throws ExporterException{
 			if(null == variant.getParent() || null == variant.getScope() || variant.getScope().length() == 0){
 				throw new ExporterException("a variant must have a parent and at least one scope set"); 
 			}
-			
+
 			// parent
 			addPrefixOfReifiableReference(prefixes, variant.getParent());
-			
+
 			// item_idenifiers
 			addPrefixesOfIdentifiers(prefixes, variant.getItemIdentifiers());
-			
+
 			// reifier
 			addPrefixOfTopicReference(prefixes, variant.getReifier());
-			
+
 			// scope
 			addPrefixesOfTopicReferences(prefixes, variant.getScope());
 		}
-		
-		
+
+
 		private void initPrefixes(ArrayList<String[]> prefixes, Occurrence occurrence) throws ExporterException{
 			if(null == occurrence.getParent() || null == occurrence.getType()){
 				throw new ExporterException("an occurrence must have a parent and type set"); 
 			}
-			
+
 			// parent
 			addPrefixOfTopicReference(prefixes, occurrence.getParent());
-			
+
 			// item_idenifiers
 			addPrefixesOfIdentifiers(prefixes, occurrence.getItemIdentifiers());
-			
+
 			// reifier
 			addPrefixOfTopicReference(prefixes, occurrence.getReifier());
-			
+
 			// scope
 			addPrefixesOfTopicReferences(prefixes, occurrence.getScope());
-			
+
 			// type
 			addPrefixOfTopicReference(prefixes, occurrence.getType());
 		}
-		
-		
+
+
 		private void initPrefixes(ArrayList<String[]> prefixes, Association association) throws ExporterException{
 			if(null == association.getParent() || null == association.getType() ||
 					null == association.getRoles() || association.getRoles().length() == 0){
 				throw new ExporterException("an association must have a parent, type and role set"); 
 			}
-			
+
 			// parent
 			addPrefixOfReifiableReference(prefixes, association.getParent());
-			
+
 			// item_idenifiers
 			addPrefixesOfIdentifiers(prefixes, association.getItemIdentifiers());
-			
+
 			// reifier
 			addPrefixOfTopicReference(prefixes, association.getReifier());
-			
+
 			// scope
 			addPrefixesOfTopicReferences(prefixes, association.getScope());
-			
+
 			// type
 			addPrefixOfTopicReference(prefixes, association.getType());
-			
+
 			// roles
 			for(int i = 0; i != association.getRoles().length(); ++i){
 				initPrefixes(prefixes, association.getRoles().get(i));
 			}
 		}
-		
-		
+
+
 		private void initPrefixes(ArrayList<String[]> prefixes, Role role) throws ExporterException{
 			if(null == role.getParent() || null == role.getType() || null == role.getPlayer()){
 				throw new ExporterException("a role must have a parent, type and player set"); 
 			}
-			
+
 			// item_identifiers
 			addPrefixesOfIdentifiers(prefixes, role.getItemIdentifiers());
-			
+
 			// reifier
 			addPrefixOfTopicReference(prefixes, role.getReifier());
-			
+
 			// player
 			addPrefixOfTopicReference(prefixes, role.getPlayer());
-			
+
 			// parent
 			addPrefixOfReifiableReference(prefixes, role.getParent());
-			
+
 			// type
 			addPrefixOfTopicReference(prefixes, role.getType());
 		}
-		
-		
+
+
 		private void addPrefixOfReifiableReference(ArrayList<String[]> prefixes, Reifiable reifiable){
 			if(reifiable != null){
 				ReifiableStub reifiableStub = (ReifiableStub)reifiable;
@@ -1684,7 +1691,7 @@
 			}
 		}
 
-		
+
 		private void addPrefixOfTopicReference(ArrayList<String[]> prefixes, Topic topic) throws ExporterException{
 			if(topic != null){
 				Locator loc = null;
@@ -1702,8 +1709,8 @@
 				addPrefixOfIdentifier(prefixes, loc);
 			}
 		}
-		
-		
+
+
 		private void addPrefixesOfTopicReferences(ArrayList<String[]> prefixes, JsArray<Topic> topics) throws ExporterException {
 			if(topics != null) {
 				for(int i = 0; i != topics.length(); ++i){
@@ -1711,8 +1718,8 @@
 				}
 			}
 		}
-		
-		
+
+
 		private void addIfNew(ArrayList<String[]> prefixes, String uriPrefix){
 			if(prefixes != null){
 				for (String[] item : prefixes) {
@@ -1723,14 +1730,14 @@
 				prefixes.add(new String[]{"pref_" + prefixes.size(), uriPrefix});
 			}
 		}
-		
-		
+
+
 		private void addPrefixOfIdentifier(ArrayList<String[]> prefixes, Locator loc){
 			String uriPrefix = splitUriByLastFragment(loc.getReference())[0];
 			addIfNew(prefixes, uriPrefix);
 		}
-		
-		
+
+
 		private void addPrefixesOfIdentifiers(ArrayList<String[]> prefixes, JsArray<Locator> locs){
 			if(locs != null){
 				for(int i = 0; i != locs.length(); ++i) {
@@ -1750,7 +1757,7 @@
 			return null;
 		}
 
-		
+
 		private String[] splitUriByLastFragment(String uri) {
 			int idxSlash = uri.lastIndexOf("/");
 			int idxSharp = uri.lastIndexOf("#");
@@ -1758,25 +1765,25 @@
 			String prefix = uri.substring(0, lastPos);
 			String suffix = uri.substring(lastPos);
 			suffix = suffix == null ? "" : suffix;
-			
+
 			return new String[]{prefix, suffix};
 		}
-		
-		
+
+
 		public String getQualifier(String uri) throws ExporterException{
 			String prefix = splitUriByLastFragment(uri)[0];
-			
+
 			for (String[] item : prefixes) {
 				if(item[1].equals(prefix)){
 					return item[0];
 				}
 			}
-			
+
 			// no match => throw an exception
 			throw new ExporterException("could not found a qualifier for the name space \"" + uri + "\"");
 		}
-		
-		
+
+
 		public String getFullUri(String qualifier, String suffix){
 			String ns = getNs(qualifier);
 			if(ns != null){
@@ -1785,8 +1792,8 @@
 				return null;
 			}
 		}
-	
-	
+
+
 		public String toJSON(){
 			String value = "{";
 			for(int i = 0; i != prefixes.size(); ++i){
@@ -1797,7 +1804,7 @@
 					value += ",";
 				}
 			}
-			
+
 			return value;
 		}
 	}

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	Mon Jun 27 04:47:25 2011	(r511)
+++ branches/gdl-frontend/src/anaToMia/GDL_TmEngine/test/us/isidor/gdl/anaToMia/TmEngine/jtmsBasedEngine/JtmsTmEngineTest.java	Mon Jun 27 05:20:08 2011	(r512)
@@ -3,6 +3,7 @@
 import java.util.ArrayList;
 
 import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Association;
+import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Name;
 import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Topic;
 import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.TopicMap;
 
@@ -114,6 +115,50 @@
 		assertEquals(0, assoc1.getScope().length());
 		assertEquals(2, assoc2.getScope().length());
 	}
+	
+	
+	public void testName(){
+		jtme = new JtmsTmEngine();
+
+		TopicMap tm = jtme.createTopicMap(tmLocator1);
+		
+		Topic top1 = tm.createTopicBySubjectLocator(tm.createLocator(slLocator1));
+		Topic theme1 = tm.createTopic();
+		Topic theme2 = tm.createTopic();
+		Topic theme3 = tm.createTopic(); 
+		Topic type = tm.createTopic();
+		ArrayList<Topic> scope = new ArrayList<Topic>();
+		scope.add(theme1);
+		scope.add(theme2);
+		
+		Topic defaultNameType = jtme.createDefaultNameType(tm);
+		assertNotNull(defaultNameType);
+		Name name1 = top1.createName("name 1", appendToJsArray(null, null));//appendToJsArray(null, null));
+		Name name2 = top1.createName("name 2", createJsArray(scope));
+		Name name3 = top1.createName("name 3", type, appendToJsArray(null, null));
+		Name name4 = top1.createName("name 4", type, createJsArray(scope));
+		name4.addItemIdentifier(tm.createLocator(iiLocator1));
+		name4.addTheme(theme3);
+		
+		assertEquals(4, top1.getNames().length());
+		assertEquals(2, top1.getNames(type).length());
+		assertEquals(top1, name1.getParent());
+		assertEquals(top1, name4.getParent());
+		assertEquals(tm, name2.getTopicMap());
+		assertEquals(tm, name3.getTopicMap());
+		assertEquals("name 1", name1.getValue());
+		assertEquals(1, name4.getItemIdentifiers().length());
+		assertEquals(iiLocator1, name4.getItemIdentifiers().get(0).getReference());
+		assertEquals(3, name4.getScope().length());
+	}
+
+	// TODO: Name
+	// TODO: Variant
+	// TODO: Occurrence
+	// TODO: Association
+	// TODO: Role
+	// TODO: JTM 1.1 import
+	// TODO: JTM 1.1 export 
 
 
 	private JsArray<Topic> createJsArray(ArrayList<Topic> topics){




More information about the Isidorus-cvs mailing list