[isidorus-cvs] r693 - in branches/gdl-frontend/src/anaToMia/GDL_Widgets: src/us/isidor/gdl/anaToMia/Widgets src/us/isidor/gdl/anaToMia/Widgets/base src/us/isidor/gdl/anaToMia/Widgets/text war/gdl_widgets
lgiessmann at common-lisp.net
lgiessmann at common-lisp.net
Sun Jul 31 09:09:49 UTC 2011
Author: lgiessmann
Date: Sun Jul 31 02:09:48 2011
New Revision: 693
Log:
gdl-frontend: Widgets: implemented the method TmHelper.getDefaultLiteralValue(), TmHelper.getTmValues(), TmHelper.getLiteralValues()
Modified:
branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/TODO.txt
branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlPsis.java
branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/IGdlHasValueGroup.java
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/Utils.java
branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlText.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/TODO.txt
==============================================================================
--- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/TODO.txt Thu Jul 28 10:18:30 2011 (r692)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/TODO.txt Sun Jul 31 02:09:48 2011 (r693)
@@ -8,4 +8,5 @@
* GdlListBox
* Implement TopicMaps data consumption
* Implement TopicMaps data generation
+* Implement HiddenValue
* Fix css-pseudo-class-handlers (=> Buttons)
\ No newline at end of file
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlPsis.java
==============================================================================
--- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlPsis.java Thu Jul 28 10:18:30 2011 (r692)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlPsis.java Sun Jul 31 02:09:48 2011 (r693)
@@ -7,17 +7,31 @@
// some psis of the TMDM
public class TMDM{
- public final static String supertype = "http://psi.topicmaps.org/iso13250/model/supertype";
- public final static String subtype = "http://psi.topicmaps.org/iso13250/model/subtype";
- public final static String supertypeSubtype = "http://psi.topicmaps.org/iso13250/model/supertype-subtype";
+ public final static String tmdm = "http://psi.topicmaps.org/iso13250/model/";
+ public final static String supertype = tmdm + "supertype";
+ public final static String subtype = tmdm + "subtype";
+ public final static String supertypeSubtype = tmdm + "supertype-subtype";
}
// some psis of the TMCL
public class TMCL {
- public final static String topictype = "http://psi.topicmaps.org/tmcl/topic-type";
- public final static String constraint = "http://psi.topicmaps.org/tmcl/constraint";
+ public final static String tmcl = "http://psi.topicmaps.org/tmcl/";
+ public final static String tmclTopictype = tmcl + "topic-type";
+ public final static String tmclNameType = tmcl + "name-type";
+ public final static String tmclOccurrenceType = tmcl + "occurrence-type";
+ public final static String tmclConstraint = tmcl + "constraint";
+ public final static String tmclConstrained = tmcl + "constrained";
+ public final static String tmclConstrainedStatement = tmcl + "constrained-statement";
+ public final static String tmclRegularExpressionConstraint = tmcl + "regular-expression-constraint";
+ public final static String tmclRegexp = tmcl + "regexp";
+ public final static String tmclCardMin = tmcl + "card-min";
+ public final static String tmclCardMax = tmcl + "card-max";
+ public final static String tmclReifierConstraint = tmcl + "reifier-constraint";
+ public final static String tmclScopeConstraint = tmcl + "scope-constraint";
+ public final static String tmclTopicNameConstraint = tmcl + "topic-name-constraint";
+ public final static String tmclTopicOccurrenceConstraint = tmcl + "topic-occurrence-constraint";
}
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/IGdlHasValueGroup.java
==============================================================================
--- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/IGdlHasValueGroup.java Thu Jul 28 10:18:30 2011 (r692)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/IGdlHasValueGroup.java Sun Jul 31 02:09:48 2011 (r693)
@@ -31,12 +31,13 @@
// i.e. is is one value of getDefaultTmValue(), getDefaultLiteralValue()
public Topic getDefaultValue() throws InvalidGdlSchemaException;
- // returns all possible topics that can be used as values for this value group,
- // i.e. if no tm-values are bound to this value-group, all possible values are
- // generated by examining the tmcl:constraint
+ // returns all possible topics that can be used as values for this value group.
+ // Note, since gdl:Default-TM-Value is treated as a usual value,
+ // default vaues are also returned by this function
public ArrayList<Topic> getTmValues() throws InvalidGdlSchemaException;
- // returns all possible literals that can be used as values for this value group
+ // returns all possible literals that can be used as values for this value group.
+ // Note, default literal values are also returned by this function
public ArrayList<Topic> getLiteralValues() throws InvalidGdlSchemaException;
// returns the literal value that is set on an item
@@ -44,4 +45,13 @@
// returns the topic map construct that is set on an item
public Construct getSetTmValue() throws InvalidGdlSchemaException;
+
+ // returns the topic that can be used to satisfy the constraint, that is
+ // bound to the element's value group instance. Note, this method
+ // returns all topics of a topic map that can be used for a defined constraint
+ public ArrayList<Topic> getTmValuesForConstraint() throws InvalidGdlSchemaException;
+
+ // returns a regular expression that must be satisfied to satisfy the
+ // constraint, that is bound to the element's value group instance
+ public String getLiteralValueForConstraint() throws InvalidGdlSchemaException;
}
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 Jul 28 10:18:30 2011 (r692)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/TmHelper.java Sun Jul 31 02:09:48 2011 (r693)
@@ -10,10 +10,7 @@
import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.ScopedStub;
import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Topic;
import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.TopicMap;
-import us.isidor.gdl.anaToMia.Widgets.base.GdlPsis.AssociationType;
-import us.isidor.gdl.anaToMia.Widgets.base.GdlPsis.RoleType;
import us.isidor.gdl.anaToMia.Widgets.base.GdlPsis.TMDM;
-import us.isidor.gdl.anaToMia.Widgets.base.GdlPsis.TopicType;
import us.isidor.gdl.anaToMia.Widgets.environment.InvalidGdlSchemaException;
import us.isidor.gdl.anaToMia.Widgets.environment.Pair;
import us.isidor.gdl.anaToMia.Widgets.environment.TopicIdentifierTypes;
@@ -272,27 +269,6 @@
}
- // returns all topics that are instances of tm-value, which are also bound to this
- // topic via a gdl:tm-binding association
- public static ArrayList<Topic> getTmValues(Topic top){
- ArrayList<Topic> result = new ArrayList<Topic>();
- if(top == null) return result;
- TopicMap tm = top.getTopicMap();
- Topic descriptor = getTopicByPsi(RoleType.gdlDescriptor, tm);
- Topic tmBinding = getTopicByPsi(AssociationType.gdlTmBinding, tm);
- Topic tmValue = getTopicByPsi(TopicType.gdlTmValue, tm);
-
- JsArray<Role> roles = top.getRolesPlayed(descriptor, tmBinding);
- for(int i = 0; i != roles.length(); ++i){
- Association parent = roles.get(i).getParent();
- if(parent.getRoles().length() == 2 && parent.getRoles(descriptor).length() == 1 &&
- isInstanceOf(parent.getRoles(descriptor).get(0).getPlayer(), tmValue))
- result.add(parent.getRoles(descriptor).get(0).getPlayer());
- }
- return result;
- }
-
-
// returns the associations that are bound to the topic "topic" and have the passed scope and roles
public static ArrayList<Association> getAssociationsOfTopic(Topic topic, Topic roleType, Topic assocType, ArrayList<Topic> scope, ArrayList<Pair<Topic, Topic>> rolePlayertypesAndTypes){
ArrayList<Association> result = new ArrayList<Association>();
@@ -620,7 +596,7 @@
Topic valueGroupRoleType = getTopicByPsi(GdlPsis.RoleType.gdlValueGroup, tm);
Topic descriptorType = getTopicByPsi(GdlPsis.TopicType.gdlDescriptor, tm);
Topic tmBindingAssocType = getTopicByPsi(GdlPsis.AssociationType.gdlTmBinding, tm);
- Topic tmclConstraintType = getTopicByPsi(GdlPsis.TMCL.constraint, tm);
+ Topic tmclConstraintType = getTopicByPsi(GdlPsis.TMCL.tmclConstraint, tm);
Topic tmConstructRoleType = getTopicByPsi(GdlPsis.RoleType.gdlTmConstruct, tm);
ArrayList<Topic> tmclConstraints = getOtherPlayerOfBinaryAssociation(valueGroup, valueGroupRoleType, tmBindingAssocType, null, tmclConstraintType, tmConstructRoleType);
@@ -643,15 +619,14 @@
Topic localCurrentConstraint = currentConstraint == null ? getConstraintOfValueGroup(valueGroup) : currentConstraint;
TopicMap tm = valueGroup.getTopicMap();
- Topic tmclConstraint = getTopicByPsi(GdlPsis.TMCL.constraint, tm);
+ Topic tmclConstraintType = getTopicByPsi(GdlPsis.TMCL.tmclConstraint, tm);
- if(isInstanceOf(localCurrentConstraint, tmclConstraint)) return tmclConstraint;
+ if(isInstanceOf(localCurrentConstraint, tmclConstraintType)) return localCurrentConstraint;
else {
// get next constraint and invoke this method recursively
Topic descriptorRoleType = getTopicByPsi(GdlPsis.RoleType.gdlDescriptor, tm);
Topic tmBindingAssocType = getTopicByPsi(GdlPsis.AssociationType.gdlTmBinding, tm);
Topic tmConstructRoleType = getTopicByPsi(GdlPsis.RoleType.gdlTmConstruct, tm);
- Topic tmclConstraintType = getTopicByPsi(GdlPsis.TMCL.constraint, tm);
Topic gdlDescriptor = getTopicByPsi(GdlPsis.TopicType.gdlDescriptor, tm);
ArrayList<Topic> nextTmclConstraints = getOtherPlayerOfBinaryAssociation(localCurrentConstraint, descriptorRoleType, tmBindingAssocType, null, tmclConstraintType, tmConstructRoleType);
@@ -662,12 +637,12 @@
if(nextTmclConstraints.size() == 1) return nextTmclConstraints.get(0);
else if(nextGdlConstraints.size() == 1) return getRootConstraintOfValueGroup(valueGroup, nextGdlConstraints.get(0));
- else throw new InvalidGdlSchemaException("the value group " + getAnyIdOfTopic(valueGroup) + " must be bound to exaclty on root constraint of the type " + GdlPsis.TMCL.constraint + " but is unbound");
+ else throw new InvalidGdlSchemaException("the value group " + getAnyIdOfTopic(valueGroup) + " must be bound to exaclty on root constraint of the type " + GdlPsis.TMCL.tmclConstraint + " but is unbound");
}
}
- // returns the topic that represent the default tm value for the passed value group
+ // returns the topic that represents the default tm value for the passed value group
public static Topic getDefaultTmValue(Topic valueGroup) throws InvalidGdlSchemaException {
if(valueGroup == null) return null;
@@ -681,19 +656,196 @@
if(defaultTmValues.size() == 1) return defaultTmValues.get(0);
else if(defaultTmValues.size() == 0) return null;
- else throw new InvalidGdlSchemaException("the topic " + getAnyIdOfTopic(valueGroup) + " must be bound none or once to a DefaultTmValue, but is: " + defaultTmValues.size());
+ else throw new InvalidGdlSchemaException("the topic " + getAnyIdOfTopic(valueGroup) + " must be bound none or once to a " + GdlPsis.TopicType.gdlDefaultTmValue + ", but is: " + defaultTmValues.size());
}
+ // returns the topic that represents the default literal value for the passed value group
public static Topic getDefaultLiteralValue(Topic valueGroup) throws InvalidGdlSchemaException{
+ if(valueGroup == null) return null;
+
+ TopicMap tm = valueGroup.getTopicMap();
+ Topic valueBindingAssocTopic = getTopicByPsi(GdlPsis.AssociationType.gdlValueBinding, tm);
+ Topic valueGroupRoleType = getTopicByPsi(GdlPsis.RoleType.gdlValueGroup, tm);
+ Topic valueRoleType = getTopicByPsi(GdlPsis.RoleType.gdlValue, tm);
+ Topic defaultLiteralValueType = getTopicByPsi(GdlPsis.TopicType.gdlDefaultLiteralValue, tm);
+
+ ArrayList<Topic> defaultTmValues = getOtherPlayerOfBinaryAssociation(valueGroup, valueGroupRoleType, valueBindingAssocTopic, null, defaultLiteralValueType, valueRoleType);
+
+ if(defaultTmValues.size() == 1) return defaultTmValues.get(0);
+ else if(defaultTmValues.size() == 0) return null;
+ else throw new InvalidGdlSchemaException("the topic " + getAnyIdOfTopic(valueGroup) + " must be bound none or once to a " + GdlPsis.TopicType.gdlDefaultLiteralValue + ", but is: " + defaultTmValues.size());
+ }
+
+
+ // returns the topics that represent the tm values for the passed value group
+ public static ArrayList<Topic> getTmValues(Topic valueGroup) throws InvalidGdlSchemaException {
+ ArrayList<Topic> result = new ArrayList<Topic>();
+ if(valueGroup == null) return result;
+
+ TopicMap tm = valueGroup.getTopicMap();
+ Topic valueBindingAssocTopic = getTopicByPsi(GdlPsis.AssociationType.gdlValueBinding, tm);
+ Topic valueGroupRoleType = getTopicByPsi(GdlPsis.RoleType.gdlValueGroup, tm);
+ Topic valueRoleType = getTopicByPsi(GdlPsis.RoleType.gdlValue, tm);
+ Topic tmValueType = getTopicByPsi(GdlPsis.TopicType.gdlTmValue, tm);
+
+ return getOtherPlayerOfBinaryAssociation(valueGroup, valueGroupRoleType, valueBindingAssocTopic, null, tmValueType, valueRoleType);
+ }
+
+
+ // returns the topics that represent the literal value for the passed value group
+ public static ArrayList<Topic> getLiteralValues(Topic valueGroup){
+ ArrayList<Topic> result = new ArrayList<Topic>();
+ if(valueGroup == null) return result;
+
+ TopicMap tm = valueGroup.getTopicMap();
+ Topic valueBindingAssocTopic = getTopicByPsi(GdlPsis.AssociationType.gdlValueBinding, tm);
+ Topic valueGroupRoleType = getTopicByPsi(GdlPsis.RoleType.gdlValueGroup, tm);
+ Topic valueRoleType = getTopicByPsi(GdlPsis.RoleType.gdlValue, tm);
+ Topic literalValueType = getTopicByPsi(GdlPsis.TopicType.gdlLiteralValue, tm);
+
+ return getOtherPlayerOfBinaryAssociation(valueGroup, valueGroupRoleType, valueBindingAssocTopic, null, literalValueType, valueRoleType);
+ }
+
+
+ // returns the topic that can be used to satisfy the passed constraint.
+ public static ArrayList<Topic> getTmValuesForConstraint(Topic constraint, Topic valueGroup) throws InvalidGdlSchemaException {
+ ArrayList<Topic> result = new ArrayList<Topic>();
+ if(constraint == null || valueGroup == null) return result;
+
+ if(isInstanceOf(constraint, GdlPsis.TopicType.gdlType)){
+ return getTmValuesForTypeConstraint(constraint, valueGroup);
+ } else if(isInstanceOf(constraint, GdlPsis.TopicType.gdlVariantNameReifier)){
+ return getTmValuesForVariantNameReifierConstraint(constraint);
+ } else if(isInstanceOf(constraint, GdlPsis.TopicType.gdlVariantNameScope)){
+ return getTmValuesForVariantNameScopeConstraint(constraint);
+ } else if(isInstanceOf(constraint, GdlPsis.TopicType.gdlRolePlayer)){
+ return getTmValuesForRolePlayerConstraint(constraint);
+ } else if(isInstanceOf(constraint, GdlPsis.TMCL.tmclReifierConstraint)){
+ return getTmValuesForReifierConstraint(constraint);
+ } else if(isInstanceOf(constraint, GdlPsis.TMCL.tmclScopeConstraint)){
+ return getTmValuesForScopeConstraint(constraint);
+ }
+
+ return result;
+ }
+
+
+ // returns the topic that can be used to satisfy the passed role-player-constraint.
+ public static ArrayList<Topic> getTmValuesForScopeConstraint(Topic scopeConstraint){
+ ArrayList<Topic> result = new ArrayList<Topic>();
+ if(scopeConstraint == null) return result;
// TODO: implement
- return null;
+
+ return result;
}
- public static ArrayList<Topic> getTmValue(Topic valueGroup) throws InvalidGdlSchemaException {
+ // returns the topic that can be used to satisfy the passed role-player-constraint.
+ public static ArrayList<Topic> getTmValuesForReifierConstraint(Topic reifierConstraint){
+ ArrayList<Topic> result = new ArrayList<Topic>();
+ if(reifierConstraint == null) return result;
// TODO: implement
- // TODO: if no tm-values are set, examine the tmcl constraint
- return null;
+
+ return result;
+ }
+
+
+ // returns the topic that can be used to satisfy the passed role-player-constraint.
+ public static ArrayList<Topic> getTmValuesForRolePlayerConstraint(Topic rolePlayerConstraint){
+ ArrayList<Topic> result = new ArrayList<Topic>();
+ if(rolePlayerConstraint == null) return result;
+ // TODO: implement
+
+ return result;
+ }
+
+
+ // returns the topic that can be used to satisfy the passed type-constraint.
+ public static ArrayList<Topic> getTmValuesForTypeConstraint(Topic typeConstraint, Topic valueGroup) throws InvalidGdlSchemaException {
+ ArrayList<Topic> result = new ArrayList<Topic>();
+ if(typeConstraint == null || valueGroup == null) return result;
+
+ Topic rootConstraint = getRootConstraintOfValueGroup(valueGroup, typeConstraint);
+ if(rootConstraint == null) return result;
+
+ if(isInstanceOf(rootConstraint, GdlPsis.TMCL.tmclTopicNameConstraint) || isInstanceOf(rootConstraint, GdlPsis.TMCL.tmclTopicOccurrenceConstraint)){
+
+ } else if(true /* TODO: association */){
+
+ } else if(true /* TODO: role */){
+
+ }
+
+ return result;
+ }
+
+
+ // returns the topic that can be used to satisfy the passed variant-name-reifier-constraint.
+ public static ArrayList<Topic> getTmValuesForVariantNameReifierConstraint(Topic variantNameReifierConstraint){
+ ArrayList<Topic> result = new ArrayList<Topic>();
+ if(variantNameReifierConstraint == null) return result;
+ // TODO: implement
+
+ return result;
+ }
+
+
+ // returns the topic that can be used to satisfy the passed variant-name-scope-constraint.
+ public static ArrayList<Topic> getTmValuesForVariantNameScopeConstraint(Topic variantNameScopeConstraint){
+ ArrayList<Topic> result = new ArrayList<Topic>();
+ if(variantNameScopeConstraint == null) return result;
+ // TODO: implement
+
+ return result;
+ }
+
+
+ // returns the regular expression for a constraint. If no regular-expression constraint is set for the
+ // constrained-statement of the passed constraint, the value ".*" is returned
+ public static String getLiteralValueForConstraint(Topic constraint) throws InvalidGdlSchemaException {
+ String result = ".*";
+ if(constraint == null) return result;
+
+ TopicMap tm = constraint.getTopicMap();
+ Topic constraintRoleType = getTopicByPsi(GdlPsis.TMCL.tmclConstraint, tm);
+ Topic constrainedStatementAssocType = getTopicByPsi(GdlPsis.TMCL.tmclConstrainedStatement, tm);
+ Topic constrainedRoleType = getTopicByPsi(GdlPsis.TMCL.tmclConstrained, tm);
+ Topic nameType = getTopicByPsi(GdlPsis.TMCL.tmclNameType, tm);
+ Topic occurrenceType = getTopicByPsi(GdlPsis.TMCL.tmclOccurrenceType, tm);
+ ArrayList<Topic> nameTypes = getOtherPlayerOfBinaryAssociation(constraint, constraintRoleType, constrainedStatementAssocType, null, nameType, constrainedRoleType);
+ ArrayList<Topic> occurrenceTypes = getOtherPlayerOfBinaryAssociation(constraint, constraintRoleType, constrainedStatementAssocType, null, occurrenceType, constrainedRoleType);
+ ArrayList<Topic> nameOrOccurrenceTypes = Utils.union(nameTypes, occurrenceTypes);
+
+ if(nameOrOccurrenceTypes.size() == 0){
+ return result;
+ } else if(nameOrOccurrenceTypes.size() > 1){
+ throw new InvalidGdlSchemaException("the topic " + getAnyIdOfTopic(constraint) + " must be bound maximum once to a topic via a " + GdlPsis.TMCL.tmclConstrainedStatement + ", but is: " + nameOrOccurrenceTypes.size());
+ } else {
+ Topic regularExpressionConstraintType = getTopicByPsi(GdlPsis.TMCL.tmclRegularExpressionConstraint, tm);
+ ArrayList<Topic> regularExpressionConstraints = getOtherPlayerOfBinaryAssociation(nameOrOccurrenceTypes.get(0), constrainedRoleType, constrainedStatementAssocType, null, regularExpressionConstraintType, constraintRoleType);
+
+ if(regularExpressionConstraints.size() == 0) {
+ return ".*";
+ } else if(regularExpressionConstraints.size() == 1){
+ Topic regexpOccurrenceType = getTopicByPsi(GdlPsis.TMCL.tmclRegexp, tm);
+ Occurrence rex = getSingleOccurrence(regularExpressionConstraints.get(0), regexpOccurrenceType);
+ return rex.getValue();
+ } else {
+ throw new InvalidGdlSchemaException("the topic " + getAnyIdOfTopic(nameOrOccurrenceTypes.get(0)) + " must be bound maximum once to a " + GdlPsis.TMCL.tmclRegularExpressionConstraint + ", but is: " + regularExpressionConstraints.size());
+ }
+ }
+ }
+
+
+ // return the occurrence of the passed type, if the topic contains more than one such occurrences,
+ // this function throws a InvalidgdlSchemaException
+ public static Occurrence getSingleOccurrence(Topic topic, Topic occurrenceType) throws InvalidGdlSchemaException {
+ if(topic == null) return null;
+
+ JsArray<Occurrence> occs = topic.getOccurrences(occurrenceType);
+ if(occs.length() > 1) throw new InvalidGdlSchemaException("the topic " + getAnyIdOfTopic(topic) + " must contains maximum one occurrence of the type " + getAnyIdOfTopic(occurrenceType) + ", but conaints: " + occs.length());
+ else if(occs.length() == 0) return null;
+ else return occs.get(0);
}
}
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/Utils.java
==============================================================================
--- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/Utils.java Thu Jul 28 10:18:30 2011 (r692)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/Utils.java Sun Jul 31 02:09:48 2011 (r693)
@@ -23,6 +23,17 @@
}
+ // returns an ArrayList that is a union of fst and snd
+ public static <T> ArrayList<T> union(ArrayList<T> fst, ArrayList<T> snd){
+ ArrayList<T> result = new ArrayList<T>();
+
+ if(fst != null) for (T t : fst) if(!result.contains(t)) result.add(t);
+ if(snd != null) for (T t : fst) if(!result.contains(t)) result.add(t);
+
+ return result;
+ }
+
+
// returns true if the string consists only of digits
public static boolean isDecNumber(String str){
if(str == null) return false;
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlText.java
==============================================================================
--- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlText.java Thu Jul 28 10:18:30 2011 (r692)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/text/GdlText.java Sun Jul 31 02:09:48 2011 (r693)
@@ -45,6 +45,12 @@
protected boolean rootConstraintTopicSet = false;
protected Topic defaultTmValueTopic = null;
protected boolean defaultTmValueTopicSet = false;
+ protected Topic defaultLiteralValueTopic = null;
+ protected boolean defaultLiteralValueTopicSet = false;
+ protected ArrayList<Topic> tmValueTopics = new ArrayList<Topic>();
+ protected boolean tmValueTopicsSet = false;
+ protected ArrayList<Topic> literalValueTopics = new ArrayList<Topic>();
+ protected boolean literalValueTopicsSet = false;
// some constructors
protected GdlText() throws InvalidGdlSchemaException, ExecutionException {
@@ -574,7 +580,6 @@
// cols is only treated if width is not set
if(widthOcc == null) DOM.setElementAttribute(widget.getElement(), "cols", String.valueOf(value));
}
-
// calls the super applies the GdlStyle for every TextArea item of this instance
@@ -867,8 +872,13 @@
@Override
public Topic getDefaultLiteralValue() throws InvalidGdlSchemaException {
- // TODO Auto-generated method stub
- return null;
+ if(this.defaultLiteralValueTopicSet){
+ return this.defaultLiteralValueTopic;
+ } else {
+ this.defaultLiteralValueTopic = TmHelper.getDefaultLiteralValue(this.getValueGroup());
+ this.defaultLiteralValueTopicSet = true;
+ return this.defaultLiteralValueTopic;
+ }
}
@@ -882,15 +892,25 @@
@Override
public ArrayList<Topic> getTmValues() throws InvalidGdlSchemaException {
- // TODO Auto-generated method stub
- return null;
+ if(this.tmValueTopicsSet){
+ return this.tmValueTopics;
+ } else {
+ this.tmValueTopics = TmHelper.getTmValues(this.getValueGroup());
+ this.tmValueTopicsSet = true;
+ return this.tmValueTopics;
+ }
}
@Override
public ArrayList<Topic> getLiteralValues() throws InvalidGdlSchemaException {
- // TODO Auto-generated method stub
- return null;
+ if(this.literalValueTopicsSet){
+ return this.literalValueTopics;
+ } else {
+ this.literalValueTopics = TmHelper.getLiteralValues(this.getValueGroup());
+ this.literalValueTopicsSet = true;
+ return this.literalValueTopics;
+ }
}
@@ -906,4 +926,16 @@
// TODO Auto-generated method stub
return null;
}
+
+
+ @Override
+ public ArrayList<Topic> getTmValuesForConstraint() throws InvalidGdlSchemaException {
+ return TmHelper.getTmValuesForConstraint(this.getConstraint(), this.getValueGroup());
+ }
+
+
+ @Override
+ public String getLiteralValueForConstraint() throws InvalidGdlSchemaException {
+ return TmHelper.getLiteralValueForConstraint(this.getConstraint());
+ }
}
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 Thu Jul 28 10:18:30 2011 (r692)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/war/gdl_widgets/test.gdl.jtm Sun Jul 31 02:09:48 2011 (r693)
@@ -28,6 +28,7 @@
{"subject_identifiers":["[gdl:border-width]"], "instance_of":["si:[tmcl:occurrence-type]"]},
{"subject_identifiers":["[tmcl:card-max]"], "instance_of":["si:[tmcl:occurrence-type]"]},
{"subject_identifiers":["[tmcl:card-min]"], "instance_of":["si:[tmcl:occurrence-type]"]},
+ {"subject_identifiers":["[tmcl:regexp]"], "instance_of":["si:[tmcl:occurrence-type]"]},
{"subject_identifiers":["[doc:test-schema]"], "instance_of":["si:[gdl:Schema]"], "names":[{"value": "Test GDL Schema", "type":"si:[gdl:schema-name]"}]},
{"subject_identifiers":["[gdl:Visible-Object]"]},
{"subject_identifiers":["[doc:person-name]"], "instance_of":["si:[tmcl:name-type]"]},
@@ -41,6 +42,7 @@
{"subject_identifiers":["[tmcl:constrained-topic-type]"], "instance_of":["si:[tmcl:role-type]"]},
{"subject_identifiers":["[gdl:value]"], "instance_of":["si:[tmcl:role-type]"]},
{"subject_identifiers":["[tmcl:topic-name-constraint]"], "instance_of":["si:[tmcl:topic-type]"]},
+ {"subject_identifiers":["[tmcl:regular-expression-constraint]"], "instance_of":["si:[tmcl:topic-type]"]},
{"subject_identifiers":["[gdl:Value-Group]"]},
{"subject_identifiers":["[gdl:Text-Object]"]},
{"subject_identifiers":["[gdl:Type]"]},
@@ -100,6 +102,7 @@
{"subject_identifiers":["[doc:default-tm-value-person-name-type-constraint]"], "instance_of":["si:[gdl:Default-TM-Instance-Value]"]},
{"subject_identifiers":["[doc:person-name-type-constraint]"], "instance_of":["si:[gdl:Type]"]},
{"subject_identifiers":["[doc:person-name-constraint]"], "instance_of":["si:[tmcl:topic-name-constraint]"], "occurrences":[{"type":"si:[tmcl:card-min]", "value":"1"}, {"type":"si:[tmcl:card-max]", "value":"1"}]},
+ {"subject_identifiers":["[doc:person-name-regexp-constraint]"], "instance_of":["si:[tmcl:regular-expression-constraint]"], "occurrences":[{"type":"si:[tmcl:regexp]", "value":"^[A-Z][a-z]+ [A-Z][a-z]+$"}]},
{"subject_identifiers":["[doc:unit-1-radio-button]"], "instance_of":["si:[gdl:Radio-Button]"], "occurrences":[{"type":"si:[gdl:id]", "value":"unit_1_radio_button_id"},{"type":"si:[gdl:content-orientation]", "value":"horizontal"}, {"type":"si:[gdl:background-color]", "value": "lime"}, {"type":"si:[gdl:margin-left]", "value":"15pt"}, {"type":"si:[gdl:font-size]", "value":"8pt"}]},
{"subject_identifiers":["[doc:unit-1-check-box]"], "instance_of":["si:[gdl:Check-Box]"], "occurrences":[{"type":"si:[gdl:id]", "value":"unit_1_check_box_id"},{"type":"si:[gdl:content-orientation]", "value":"vertical"}, {"type":"si:[gdl:background-color]", "value": "lime"}, {"type":"si:[gdl:margin]", "value":"30pt"}, {"type":"si:[gdl:font-size]", "value":"8pt"}]},
{"subject_identifiers":["[doc:unit-1-action-button]"], "instance_of":["si:[gdl:Action-Button]"], "occurrences":[{"type":"si:[gdl:id]","value":"unit_1_action_button"}]},
@@ -223,6 +226,7 @@
{"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[doc:Person]"},{"type":"si:[tmdm:subtype]", "player":"si:[doc:Director]"}]},
{"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[doc:Person]"},{"type":"si:[tmdm:subtype]", "player":"si:[doc:Poet]"}]},
{"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[doc:Person]"},{"type":"si:[tmdm:subtype]", "player":"si:[doc:Musician]"}]},
+ {"type":"si:[tmdm:supertype-subtype]", "roles":[{"type":"si:[tmdm:supertype]", "player":"si:[tmcl:constraint]"},{"type":"si:[tmdm:subtype]", "player":"si:[tmcl:regular-expression-constraint]"}]},
{"type":"si:[gdl:contains]", "roles":[{"type":"si:[gdl:container]", "player":"si:[doc:test-schema]"},{"type":"si:[gdl:containee]", "player":"si:[doc:default-creator-topic-view-1]"}]},
{"type":"si:[gdl:contains]", "roles":[{"type":"si:[gdl:container]", "player":"si:[doc:test-schema]"},{"type":"si:[gdl:containee]", "player":"si:[doc:default-creator-topic-view-2]"}]},
{"type":"si:[gdl:contains]", "roles":[{"type":"si:[gdl:container]", "player":"si:[doc:test-schema]"},{"type":"si:[gdl:containee]", "player":"si:[doc:default-editor-topic-view]"}]},
@@ -279,5 +283,6 @@
{"type":"si:[gdl:tm-binding]", "roles":[{"type":"si:[gdl:descriptor]", "player":"si:[doc:default-tm-value-person-name-type-constraint]"},{"type":"si:[gdl:tm-construct]", "player":"si:[doc:Poet]"}]},
{"type":"si:[gdl:tm-binding]", "roles":[{"type":"si:[gdl:descriptor]", "player":"si:[doc:person-name-type-constraint]"},{"type":"si:[gdl:tm-construct]", "player":"si:[doc:person-name-constraint]"}]},
{"type":"si:[tmcl:constrained-statement]", "roles":[{"type":"si:[tmcl:constrained]", "player":"si:[doc:person-name]"},{"type":"si:[tmcl:constraint]", "player":"si:[doc:person-name-constraint]"}]},
- {"type":"si:[tmcl:constrained-topic-type]", "roles":[{"type":"si:[tmcl:constraint]", "player":"si:[doc:person-name-constraint]"},{"type":"si:[tmcl:constrained]", "player":"si:[doc:Person]"}]}
+ {"type":"si:[tmcl:constrained-topic-type]", "roles":[{"type":"si:[tmcl:constraint]", "player":"si:[doc:person-name-constraint]"},{"type":"si:[tmcl:constrained]", "player":"si:[doc:Person]"}]},
+ {"type":"si:[tmcl:constrained-statement]", "roles":[{"type":"si:[tmcl:constraint]", "player":"si:[doc:person-name-regexp-constraint]"},{"type":"si:[tmcl:constrained]", "player":"si:[doc:person-name]"}]}
]}
\ No newline at end of file
More information about the Isidorus-cvs
mailing list