Author: lgiessmann Date: Wed Jul 13 11:02:47 2011 New Revision: 611
Log: gdl-frontend: Widgets: implemted the loading of Gdl Default Views
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/TmHelper.java branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/environment/GdlInstantiator.java branches/gdl-frontend/src/anaToMia/GDL_Widgets/war/gdl_widgets/test.gdl.jtm
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/TmHelper.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/TmHelper.java Wed Jul 13 08:18:43 2011 (r610) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/TmHelper.java Wed Jul 13 11:02:47 2011 (r611) @@ -15,9 +15,9 @@ import us.isidor.gdl.anaToMia.Widgets.base.GdlPsis.TopicType; import us.isidor.gdl.anaToMia.Widgets.environment.Pair; import us.isidor.gdl.anaToMia.Widgets.environment.TopicIdentifierTypes; - import com.google.gwt.core.client.JsArray;
+ public class TmHelper { @@ -132,10 +132,17 @@ for (Topic topic : localCollectedSuperTypes) direcSupertypes.remove(topic); //avoid duplicates for (Topic topic : direcSupertypes)localCollectedSuperTypes.add(topic); - for (Topic topic : direcSupertypes){ - ArrayList<Topic> tmp = getAllSuperTypes(topic, localCollectedSuperTypes); - for (Topic tmpTopic : tmp) localCollectedSuperTypes.add(tmpTopic); + ArrayList<Topic> collectedIndirectSupertypes = new ArrayList<Topic>(); + for (Topic directSuperType : direcSupertypes) { + ArrayList<Topic> indirectSuperTypes = getAllSuperTypes(directSuperType, localCollectedSuperTypes); + for (Topic indirectSupertype : indirectSuperTypes) + if(!collectedIndirectSupertypes.contains(indirectSupertype)) collectedIndirectSupertypes.add(indirectSupertype); } + + for (Topic collectedIndirectSupertype : collectedIndirectSupertypes) + if(!localCollectedSuperTypes.contains(collectedIndirectSupertype)) localCollectedSuperTypes.add(collectedIndirectSupertype); + + return localCollectedSuperTypes; } @@ -154,7 +161,7 @@ JsArray<Role> validRoles = top.getRolesPlayed(subtype, supertypeSubtype); for(int i = 0; i != validRoles.length(); ++i){ Association parent = validRoles.get(i).getParent(); - if(parent.getRoles().length() == 2 && parent.getRoles(supertype).length() == 1)result.add(parent.getRoles(supertypeSubtype).get(0).getPlayer()); + if(parent.getRoles().length() == 2 && parent.getRoles(supertype).length() == 1)result.add(parent.getRoles(supertype).get(0).getPlayer()); } return result; }
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/environment/GdlInstantiator.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/environment/GdlInstantiator.java Wed Jul 13 08:18:43 2011 (r610) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/environment/GdlInstantiator.java Wed Jul 13 11:02:47 2011 (r611) @@ -2,6 +2,9 @@
import java.util.ArrayList; + +import com.google.gwt.user.client.Window; + import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Topic; import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.TopicMap; import us.isidor.gdl.anaToMia.Widgets.base.GdlLineBreak; @@ -109,7 +112,7 @@ }
- // returns a GdlDefaultCreatorTopicView tha corresponds to the passed arguements + // returns a GdlDefaultCreatorTopicView that corresponds to the passed arguments public static GdlDefaultCreatorTopicView instantiateDefaultCreatorTopicView(ArrayList<Pair<String, TopicIdentifierTypes>> requestedTopics, TopicMap schemaTm) throws InvalidGdlSchemaException, ExecutionException{ ArrayList<Topic> views = getViewTopics(requestedTopics, TmHelper.getTopicByPsi(GdlPsis.TopicType.gdlDefaultCreatorTopicView, schemaTm), schemaTm); @@ -117,11 +120,12 @@ String values = ""; for (Pair<String, TopicIdentifierTypes> pair : requestedTopics) values += ", " + pair.getFirst(); - values = values.substring(2); + if(values.length() >= 2 )values = values.substring(2); String bindings = ""; for (Topic top : views) bindings += ", " + TmHelper.getAnyIdOfTopic(top); - bindings = bindings.substring(2); + if(bindings.length() >= 2)bindings = bindings.substring(2); + else bindings = "[]"; throw new InvalidGdlSchemaException("the combination of topics requested (" + values + ") must be bound exactly once to a " + GdlPsis.TopicType.gdlDefaultCreatorTopicView + " but is bound to " + bindings); } @@ -142,7 +146,7 @@ if(top == null) throw new InvalidGdlSchemaException("the topic " + topId.getFirst() + " was not found!"); if(!requestedTops.contains(top)) requestedTops.add(top); } - + // get all TM-Values, i.e. TM-Multiple-Type-Value and TM-Single-Type-Value (only if requstedTops.sie() == 1) ArrayList<Topic> tmValues = new ArrayList<Topic>(); Topic tmConstruct = TmHelper.getTopicByPsi(GdlPsis.RoleType.gdlTmConstruct, schemaTm); @@ -159,32 +163,35 @@ // if exactly those topics are associated to it through a tm-binding association, which are // requested by the user ArrayList<Topic> allInstanceValues = TmHelper.getOtherPlayerOfBinaryAssociation(tmValue, descriptor, tmBinding, null, tmConstruct); + Window.alert("allTmValues >> " + tmValue.getSubjectIdentifiers().get(0).getReference() + " >> " + allInstanceValues.size()); // TODO: remove if(Utils.compareLists(allInstanceValues, requestedTops) && !tmValues.contains(tmValue)) tmValues.add(tmValue); } } } + for (Topic topic : tmValues) { // TODO: remove + Window.alert("tmValue >> " + topic.getSubjectIdentifiers().get(0).getReference()); + } + // get all views that are bound to the found tm-values ArrayList<Topic> views = new ArrayList<Topic>(); Topic tmValueRoleType = TmHelper.getTopicByPsi(GdlPsis.RoleType.gdlTmValue, schemaTm); Topic topicViewBinding = TmHelper.getTopicByPsi(GdlPsis.AssociationType.gdlTopicViewBinding, schemaTm); for (Topic tmValue : tmValues) { - ArrayList<Topic> allViews = TmHelper.getOtherPlayerOfBinaryAssociation(tmValue, tmValueRoleType, topicViewBinding, null, descriptor); - // filter for allViews - if(viewSupertype == null){ - for (Topic view : allViews) - if(!views.contains(view))views.add(view); - } else { - for (Topic view : allViews) - if(!views.contains(view) && TmHelper.isInstanceOf(view, viewSupertype)) views.add(view); - } + ArrayList<Topic> allViews = TmHelper.getOtherPlayerOfBinaryAssociation(tmValue, tmValueRoleType, topicViewBinding, null, viewSupertype, descriptor); + for (Topic view : allViews) + if(!views.contains(view) && TmHelper.isInstanceOf(view, viewSupertype)) views.add(view); + } + + for (Topic topic : views) { // TODO: remove + Window.alert("view >> " + topic.getSubjectIdentifiers().get(0).getReference()); } return views; } - + // returns a GdlDefaultEditorTopicView that corresponds to the passed arguments public static GdlDefaultEditorTopicView instantiateDefaultEditorTopicView(Pair<String, TopicIdentifierTypes> requestedTopic, TopicMap schemaTm) throws InvalidGdlSchemaException, ExecutionException{ if(requestedTopic == null || schemaTm == null) return null; @@ -215,7 +222,7 @@ String bindings = ""; for (Topic top : views) bindings += ", " + TmHelper.getAnyIdOfTopic(top); - bindings = bindings.substring(2); + if(bindings.length() >= 2)bindings = bindings.substring(2); throw new InvalidGdlSchemaException("the topic " + requestedTopic.getFirst() + " requested for editing must be bound to exaclty one " + GdlPsis.TopicType.gdlDefaultEditorTopicView + ", but is bound to " + bindings); }else { @@ -229,11 +236,11 @@ String values = ""; for (Pair<String, TopicIdentifierTypes> pair : typesOfRequestedTopic) values += ", " + pair.getFirst(); - values = values.substring(2); + if(values.length() >= 2)values = values.substring(2); String bindings = ""; for (Topic top : views) bindings += ", " + TmHelper.getAnyIdOfTopic(top); - bindings = bindings.substring(2); + if(bindings.length() >= 2)bindings = bindings.substring(2); throw new InvalidGdlSchemaException("the combination of topic types (" + values + ") for the requested topic " + requestedTopic.getFirst() + " must be bound exactly once to a " + GdlPsis.TopicType.gdlDefaultEditorTopicView + " but is bound to " + bindings); }
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/war/gdl_widgets/test.gdl.jtm ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/war/gdl_widgets/test.gdl.jtm Wed Jul 13 08:18:43 2011 (r610) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/war/gdl_widgets/test.gdl.jtm Wed Jul 13 11:02:47 2011 (r611) @@ -9,6 +9,7 @@ {"subject_identifiers":["[tmcl:role-type]"], "instance_of":["si:[tmcl:topic-type]"]}, {"subject_identifiers":["[tmcl:association-type]"], "instance_of":["si:[tmcl:topic-type]"]}, {"subject_identifiers":["[tmcl:name-type]"], "instance_of":["si:[tmcl:topic-type]"]}, + {"subject_identifiers":["[tmcl:occurrence-type]"], "instance_of":["si:[tmcl:topic-type]"]}, {"subject_identifiers":["[tmdm:supertype]"], "instance_of":["si:[tmcl:role-type]"]}, {"subject_identifiers":["[tmdm:subtype]"], "instance_of":["si:[tmcl:role-type]"]}, {"subject_identifiers":["[tmdm:supertype-subtype]"], "instance_of":["si:[tmcl:association-type]"]}, @@ -27,6 +28,7 @@ {"subject_identifiers":["[gdl:TM-Instance-Value]"]}, {"subject_identifiers":["[gdl:TM-Multiple-Type-Value]"]}, {"subject_identifiers":["[gdl:tm-binding]"], "instance_of":["si:[tmcl:association-type]"]}, + {"subject_identifiers":["[gdl:id]"], "instance_of":["si:[tmcl:occurrence-type]"]}, {"subject_identifiers":["[gdl:topic-view-binding]"], "instance_of":["si:[tmcl:association-type]"]}, {"subject_identifiers":["[gdl:tm-construct]"], "instance_of":["si:[tmcl:role-type]"]}, {"subject_identifiers":["[gdl:descriptor]"], "instance_of":["si:[tmcl:role-type]"]}, @@ -42,10 +44,12 @@ {"subject_identifiers":["[gdl:Default-Creator-Topic-View]"]}, {"subject_identifiers":["[gdl:Default-Editor-Topic-View]"]}, {"subject_identifiers":["[gdl:Special-Creator-Topic-View]"]}, - {"subject_identifiers":["[doc:default-creator-topic-view-1]"], "instance_of":["si:[gdl:Default-Creator-Topic-View]"], "names":[{"value": "Def. Creator View 1", "type":"si:[gdl:view-name]"}]}, - {"subject_identifiers":["[doc:default-creator-topic-view-2]"], "instance_of":["si:[gdl:Default-Creator-Topic-View]"], "names":[{"value": "Def. Creator View 2", "type":"si:[gdl:view-name]"}]}, - {"subject_identifiers":["[doc:default-editor-topic-view]"], "instance_of":["si:[gdl:Default-Editor-Topic-View]"], "names":[{"value": "Def. Editor View", "type":"si:[gdl:view-name]"}]}, - {"subject_identifiers":["[doc:special-creator-topic-view]"], "instance_of":["si:[gdl:Special-Creator-Topic-View]"], "names":[{"value": "Spec. Creator View", "type":"si:[gdl:view-name]"}]}, + + {"subject_identifiers":["[doc:default-creator-topic-view-1]"], "instance_of":["si:[gdl:Default-Creator-Topic-View]"], "names":[{"value": "Def. Creator View 1", "type":"si:[gdl:view-name]"}], "occurrences":[{"type":"si:[gdl:id]", "value":"default_creator_topic_view_1_id", "datatype":"[xsd:ID]"}]}, + {"subject_identifiers":["[doc:default-creator-topic-view-2]"], "instance_of":["si:[gdl:Default-Creator-Topic-View]"], "names":[{"value": "Def. Creator View 2", "type":"si:[gdl:view-name]"}], "occurrences":[{"type":"si:[gdl:id]", "value":"default_creator_topic_view_2_id", "datatype":"[xsd:ID]"}]}, + {"subject_identifiers":["[doc:default-editor-topic-view]"], "instance_of":["si:[gdl:Default-Editor-Topic-View]"], "names":[{"value": "Def. Editor View", "type":"si:[gdl:view-name]"}], "occurrences":[{"type":"si:[gdl:id]", "value":"default_editor_topic_view_id", "datatype":"[xsd:ID]"}]}, + {"subject_identifiers":["[doc:special-creator-topic-view]"], "instance_of":["si:[gdl:Special-Creator-Topic-View]"], "names":[{"value": "Spec. Creator View", "type":"si:[gdl:view-name]"}], "occurrences":[{"type":"si:[gdl:id]", "value":"special_creator_topic_view_id", "datatype":"[xsd:ID]"}]}, + {"subject_identifiers":["[doc:Poet]"], "instance_of":["si:[tmcl:topic-type]"]}, {"subject_identifiers":["[doc:Musician]"], "instance_of":["si:[tmcl:topic-type]"]}, {"subject_identifiers":["[doc:Director]"], "instance_of":["si:[tmcl:topic-type]"]}