[isidorus-cvs] r786 - branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base
lgiessmann at common-lisp.net
lgiessmann at common-lisp.net
Thu Aug 25 13:56:57 UTC 2011
Author: lgiessmann
Date: Thu Aug 25 06:56:56 2011
New Revision: 786
Log:
gdl-frontend: Widgets: finalised the implementeation of gdl:preferred-scope in the display-by schema
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 06:32:05 2011 (r785)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlVisibleObject.java Thu Aug 25 06:56:56 2011 (r786)
@@ -1938,6 +1938,8 @@
}
+ // returns the topic instance of gdlt:Value-Group that is bound to this
+ // visible element, or null if it is unbound
public Topic getValueGroup() throws InvalidGdlSchemaException {
if(this.valueGroupTopicSet){
return this.valueGroupTopic;
@@ -1949,6 +1951,8 @@
}
+ // returns the direct (first) constraint that is bound to the value-group
+ // of this element - or null if it is unbound
public Topic getConstraint() throws InvalidGdlSchemaException {
if(this.constraintTopicSet){
return this.constraintTopic;
@@ -1960,6 +1964,8 @@
}
+ // returns the root (last) constraint that is bound to the value-group
+ // of this element - or null if it is unbound
public Topic getRootConstraint() throws InvalidGdlSchemaException {
if(this.rootConstraintTopicSet){
return this.rootConstraintTopic;
@@ -1971,6 +1977,8 @@
}
+ // returns the topic that represents the default topic maps value of
+ // the value-group that is bound to this element - null if it is unbound
public Topic getDefaultTmValue() throws InvalidGdlSchemaException {
if(this.defaultTmValueTopicSet){
return this.defaultTmValueTopic;
@@ -1982,6 +1990,8 @@
}
+ // returns the topic that represents the default literal value of the
+ // value-group that is bound to this element - or null if it is unbound
public Topic getDefaultLiteralValue() throws InvalidGdlSchemaException {
if(this.defaultLiteralValueTopicSet){
return this.defaultLiteralValueTopic;
@@ -1993,6 +2003,8 @@
}
+ // returns the topic that represents the default value of
+ // the value-group that is bound to this element - null if it is unbound
public Topic getDefaultValue() throws InvalidGdlSchemaException {
if(this.getDefaultLiteralValue() != null && this.getDefaultTmValue() != null) throw new InvalidGdlSchemaException("the topic " + TmHelper.getAnyIdOfTopic(this.getValueGroup()) + " must be bound to maximal one " + PSIs.GDL.TopicType.gdlDefaultValue + ", but is: 2");
else if(this.getDefaultLiteralValue() != null) return this.getDefaultLiteralValue();
@@ -2000,6 +2012,8 @@
}
+ // returns true if the default value is fixed
+ // otherwise the return value is false
public boolean fixedDefaultValue() throws InvalidGdlSchemaException{
Topic defVal = this.getDefaultValue();
@@ -2020,6 +2034,8 @@
}
+ // returns all topic maps values that are valid and declared for the value-group
+ // of this element - or an empty ArrayList
public ArrayList<Topic> getTmValues() throws InvalidGdlSchemaException {
if(this.tmValueTopicsSet){
return this.tmValueTopics;
@@ -2031,6 +2047,8 @@
}
+ // returns all topics that represents literal values for this value-group - or
+ // an empty ArrayList
public ArrayList<Topic> getLiteralValues() throws InvalidGdlSchemaException {
if(this.literalValueTopicsSet){
return this.literalValueTopics;
@@ -2042,28 +2060,36 @@
}
+ // returns the set literal value or null
public String getSetLiteralValue() throws InvalidGdlSchemaException {
// TODO Auto-generated method stub
return null;
}
+ // returns the set tm value or null
public Construct getSetTmValue() throws InvalidGdlSchemaException {
// TODO Auto-generated method stub
return null;
}
+ // returns the valid topic maps value for the constraint that is 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());
}
+ // returns the regular expression that is set for the constraint bound to the
+ // value-group of this element
public String getLiteralValueForConstraint() throws InvalidGdlSchemaException {
return TmHelper.getLiteralValueForConstraint(this.getConstraint());
}
+ // returns the display-by schema that is defined for the value-group that
+ // is bound to this element
public Topic getDisplayByOfValueGroup() throws InvalidGdlSchemaException {
if(this.displayByConstraintSet){
return this.displayByConstraint;
@@ -2075,6 +2101,8 @@
}
+ // returns the preferred scope that is bound to the value-group of
+ // this element - or an empty ArrayList
public ArrayList<Topic> getPreferredScopeOfValueGroup() throws InvalidGdlSchemaException {
if(this.prefferedScopesSet){
return this.preferredScopes;
@@ -2086,6 +2114,8 @@
}
+ // returns the string that represents the topic topicToRepresent corresponding
+ // to the passed displayBy and prefferedScopes arguments
public String getTopicRepresentation(Topic topicToRepresent, Topic displayBy, ArrayList<Topic> preferredScopes) throws InvalidGdlSchemaException {
return TmHelper.getTopicRepresentation(topicToRepresent, displayBy, preferredScopes);
}
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 06:32:05 2011 (r785)
+++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/TmHelper.java Thu Aug 25 06:56:56 2011 (r786)
@@ -1116,50 +1116,44 @@
Topic itemIdentifierConstraint = getTopicByPsi(PSIs.TMCL.tmclItemIdentifierConstraint, tm);
Topic topicNameConstraint = getTopicByPsi(PSIs.TMCL.tmclTopicNameConstraint, tm);
- String result = null;
if(isInstanceOf(displayBy, topicNameConstraint)){
Topic nameType = TmHelper.getConstrainedStatement(displayBy);
- ArrayList<Name> names = new ArrayList<Name>();
- for(int i = 0; i != topicToRepresent.getNames(nameType).length(); ++i)
- names.add(topicToRepresent.getNames(nameType).get(i));
-
- if(preferredScopes != null && preferredScopes.size() != 0){
- // TODO: implement
+ for(int i = 0; i != topicToRepresent.getNames(nameType).length(); ++i){
+ Name name = topicToRepresent.getNames(nameType).get(i);
+ if(preferredScopes == null || preferredScopes.size() == 0){
+ return name.getValue();
+ } else {
+ for(int j = 0; j != name.getScope().length(); ++j){
+ if(preferredScopes.contains(name.getScope().get(j))) return name.getValue();
+ }
+ }
}
- if(names.size() != 0) result = names.get(0).getValue();
+ throw new InvalidGdlSchemaException("the topic " + getAnyIdOfTopic(topicToRepresent) + " does not contain any name that can be used for its " + PSIs.GDL.AssociationType.gdlDisplayBy + " schema");
+
} else if(isInstanceOf(displayBy, subjectIdentifierConstraint)){
Pattern rex = new Pattern(TmHelper.getLiteralValueForConstraint(displayBy));
for(int i = 0; i != topicToRepresent.getSubjectIdentifiers().length(); ++i){
String psi = topicToRepresent.getSubjectIdentifiers().get(i).getReference();
- if(rex.matches(psi)){
- result = psi;
- break;
- }
+ if(rex.matches(psi)) return psi;
}
+ throw new InvalidGdlSchemaException("the topic " + getAnyIdOfTopic(topicToRepresent) + " does not contain any subject-identifier that can be used for its " + PSIs.GDL.AssociationType.gdlDisplayBy + " schema");
} else if(isInstanceOf(displayBy, subjectLocatorConstraint)){
Pattern rex = new Pattern(TmHelper.getLiteralValueForConstraint(displayBy));
for(int i = 0; i != topicToRepresent.getSubjectLocators().length(); ++i){
- String psi = topicToRepresent.getSubjectLocators().get(i).getReference();
- if(rex.matches(psi)){
- result = psi;
- break;
- }
+ String sl = topicToRepresent.getSubjectLocators().get(i).getReference();
+ if(rex.matches(sl)) return sl;
}
+ throw new InvalidGdlSchemaException("the topic " + getAnyIdOfTopic(topicToRepresent) + " does not contain any subject-locator that can be used for its " + PSIs.GDL.AssociationType.gdlDisplayBy + " schema");
} else if(isInstanceOf(displayBy, itemIdentifierConstraint)){
Pattern rex = new Pattern(TmHelper.getLiteralValueForConstraint(displayBy));
for(int i = 0; i != topicToRepresent.getItemIdentifiers().length(); ++i){
- String psi = topicToRepresent.getItemIdentifiers().get(i).getReference();
- if(rex.matches(psi)){
- result = psi;
- break;
- }
+ String ii = topicToRepresent.getItemIdentifiers().get(i).getReference();
+ if(rex.matches(ii)) return ii;
}
+ throw new InvalidGdlSchemaException("the topic " + getAnyIdOfTopic(topicToRepresent) + " does not contain any item-identifier that can be used for its " + PSIs.GDL.AssociationType.gdlDisplayBy + " schema");
} else {
throw new InvalidGdlSchemaException("the topic " + getAnyIdOfTopic(displayBy) + " is not a valid representation schema type");
}
-
- if(result == null) throw new InvalidGdlSchemaException("");
- else return result;
}
}
}
More information about the Isidorus-cvs
mailing list