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

Author: lgiessmann Date: Thu Aug 25 14:25:06 2011 New Revision: 788 Log: gdl-frontend: Widgets: added some methods to get the raw string of gdlt:Literal-Value instances Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlVisibleObject.java branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/TmHelper.java Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlVisibleObject.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlVisibleObject.java Thu Aug 25 07:41:29 2011 (r787) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlVisibleObject.java Thu Aug 25 14:25:06 2011 (r788) @@ -100,6 +100,8 @@ protected boolean prefferedScopesSet = false; protected Topic displayByConstraint = null; protected boolean displayByConstraintSet = false; + protected ArrayList<String> literals = new ArrayList<String>(); + protected boolean literalsSet = false; // some constructors @@ -2059,6 +2061,18 @@ } } + + // returns an ArrayList of strings that are set to a value group as literal values + public ArrayList<String> getLiterals() throws InvalidGdlSchemaException { + if(this.literalsSet){ + return this.literals; + } else { + this.literalsSet = true; + this.literals = TmHelper.getLiterals(this.getValueGroup()); + return this.literals; + } + } + // returns the set literal value or null public String getSetLiteralValue() throws InvalidGdlSchemaException { @@ -2074,7 +2088,7 @@ } - // returns the valid topic maps value for the constraint that is bound + // returns the valid topic maps value for the constraint bound // to the value-group that is bound to this element - or an empty ArrayList public ArrayList<Topic> getTmValuesForConstraint() throws InvalidGdlSchemaException, ExecutionException { return TmHelper.getTmValuesForConstraint(this.getConstraint(), this.getValueGroup()); 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 Thu Aug 25 07:41:29 2011 (r787) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/TmHelper.java Thu Aug 25 14:25:06 2011 (r788) @@ -846,7 +846,7 @@ } - // returns the topics that represent the literal value for the passed value group + // returns the topics that represent the literal values for the passed value group public static ArrayList<Topic> getLiteralValues(Topic valueGroup){ ArrayList<Topic> result = new ArrayList<Topic>(); if(valueGroup == null) return result; @@ -861,6 +861,26 @@ } + // returns a string that is the literal value of the literal-value-topic + public static String getLiteral (Topic literalValue) throws InvalidGdlSchemaException { + if(literalValue == null) return null; + + Occurrence occ = getSingleOccurrence(literalValue, getTopicByPsi(PSIs.GDL.OccurrenceType.gdlLiteralValue, literalValue.getTopicMap())); + if(occ == null) throw new InvalidGdlSchemaException("the topic " + getAnyIdOfTopic(literalValue) + " must be bound exactly once to an occurrence of the type " + PSIs.GDL.OccurrenceType.gdlLiteralValue + ", but is: 0"); + else return occ.getValue(); + } + + + // returns an ArrayList of strings that are set to a value group as literal values + public static ArrayList<String> getLiterals(Topic valueGroup) throws InvalidGdlSchemaException { + ArrayList<Topic> literalTopics = getLiteralValues(valueGroup); + + ArrayList<String> result = new ArrayList<String>(); + for (Topic topic : literalTopics) result.add(getLiteral(topic)); + + return result; + } + // returns the topic that can be used to satisfy the passed constraint. public static ArrayList<Topic> getTmValuesForConstraint(Topic constraint, Topic valueGroup) throws InvalidGdlSchemaException, ExecutionException { ArrayList<Topic> result = new ArrayList<Topic>(); @@ -873,7 +893,7 @@ } else if(isInstanceOf(constraint, PSIs.GDL.TopicType.gdlVariantNameScope)){ return getTmValuesForVariantNameScopeConstraint(constraint); } else if(isInstanceOf(constraint, PSIs.GDL.TopicType.gdlRolePlayer)){ - return getTmValuesForRolePlayerConstraint(constraint); + return getTmValuesForRolePlayerConstraint(constraint, valueGroup); } else if(isInstanceOf(constraint, PSIs.TMCL.tmclReifierConstraint)){ return getTmValuesForReifierConstraint(constraint); } else if(isInstanceOf(constraint, PSIs.TMCL.tmclScopeConstraint)){ @@ -928,8 +948,20 @@ // returns the topic that can be used to satisfy the passed role-player-constraint. - public static ArrayList<Topic> getTmValuesForRolePlayerConstraint(Topic rolePlayerConstraint) throws ExecutionException{ - throw new ExecutionException("this method is currently not implemented"); + public static ArrayList<Topic> getTmValuesForRolePlayerConstraint(Topic rolePlayerConstraint, Topic valueGroup) throws ExecutionException, InvalidGdlSchemaException { + ArrayList<Topic> result = new ArrayList<Topic>(); + if(rolePlayerConstraint == null || valueGroup == null) return result; + + Topic topicRoleConstraint = getRootConstraintOfValueGroup(valueGroup, rolePlayerConstraint); + if(!isInstanceOf(topicRoleConstraint, PSIs.TMCL.tmclTopicRoleConstraint)) throw new InvalidGdlSchemaException("the root constraint of the topic " + getAnyIdOfTopic(rolePlayerConstraint) + " must be an instance of " + PSIs.TMCL.tmclTopicRoleConstraint + ", but is: " + getAnyIdOfTopic(topicRoleConstraint)); + + Pair<Topic, Topic> roleAndPlayerType = getConstrainedRoleAndPlayerTypeOfConstraint(topicRoleConstraint); + Topic playerType = roleAndPlayerType.getSecond(); + JsArray<Topic> allTopics = rolePlayerConstraint.getTopicMap().getTopics(); + for(int i = 0; i != allTopics.length(); ++i) + if(isInstanceOf(allTopics.get(i), playerType)) result.add(allTopics.get(i)); + + return result; } @@ -963,8 +995,10 @@ for(int i = 0; i != allTopics.length(); ++i) if(isSupertypeOf(allTopics.get(i), typeTopics.get(0))) result.add(allTopics.get(i)); } } else if(isInstanceOf(rootConstraint, PSIs.TMCL.tmclAssociationRoleConstraint)){ + // TODO: implement throw new ExecutionException(PSIs.TMCL.tmclAssociationRoleConstraint + " is not implemented yet"); } else if(isInstanceOf(rootConstraint, PSIs.TMCL.tmclTopicRoleConstraint)){ + // TODO: implement throw new ExecutionException(PSIs.TMCL.tmclTopicRoleConstraint + " is not implemented yet"); } @@ -974,12 +1008,14 @@ // returns the topic that can be used to satisfy the passed variant-name-reifier-constraint. public static ArrayList<Topic> getTmValuesForVariantNameReifierConstraint(Topic variantNameReifierConstraint) throws ExecutionException { + // TODO: implement throw new ExecutionException("this mehtod is currently not implemented"); } // returns the topic that can be used to satisfy the passed variant-name-scope-constraint. public static ArrayList<Topic> getTmValuesForVariantNameScopeConstraint(Topic variantNameScopeConstraint) throws ExecutionException{ + // TODO: implement throw new ExecutionException("this method is currently not implemented"); }
participants (1)
-
lgiessmann@common-lisp.net