[isidorus-cvs] r1027 - trunk/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base
lgiessmann at common-lisp.net
lgiessmann at common-lisp.net
Wed Oct 26 16:18:55 UTC 2011
Author: lgiessmann
Date: Wed Oct 26 09:18:46 2011
New Revision: 1027
Log:
gdl-frontend: Widgets: implemented the tmcl:reifier-constraint semantics for generating content entered in GdlVisibleObject
Modified:
trunk/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlVisibleObject.java
Modified: trunk/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlVisibleObject.java
==============================================================================
--- trunk/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlVisibleObject.java Wed Oct 26 07:10:16 2011 (r1026)
+++ trunk/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlVisibleObject.java Wed Oct 26 09:18:46 2011 (r1027)
@@ -10,6 +10,7 @@
import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Reifiable;
import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.ReifiableStub;
import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Role;
+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.TopicMaps.TopicMapsModel.TopicMapsTypes;
@@ -1960,7 +1961,12 @@
if(occs.length() != 0) reifier = occs.get(0).getReifier();
}
} else if(this.receivedData instanceof Association){
- if(((Association)this.receivedData).getType().equals(type)) type = ((Association)this.receivedData).getType();
+ if(((Association)this.receivedData).getType().equals(type)){
+ reifier = ((Association)this.receivedData).getReifier();
+ } else {
+ JsArray<Role> roles = ((Association)this.receivedData).getRoles(type);
+ if(roles.length() != 0) reifier = roles.get(0).getReifier();
+ }
} else {
throw new ExecutionException("the constraint " + TmHelper.getAnyIdOfTopic(this.getConstraint()) + " must be bound to a topic or association, but is: " + this.receivedData.getClass());
}
@@ -1984,7 +1990,7 @@
if(occs.length() != 0) scope = occs.get(0).getScope();
}
} else if(this.receivedData instanceof Association){
- if(((Association)this.receivedData).getType().equals(type)) type = ((Association)this.receivedData).getType();
+ if(((Association)this.receivedData).getType().equals(type)) scope = ((Association)this.receivedData).getScope();
} else {
throw new ExecutionException("the constraint " + TmHelper.getAnyIdOfTopic(this.getConstraint()) + " must be bound to a topic or association, but is: " + this.receivedData.getClass());
}
@@ -2757,21 +2763,94 @@
variant.addTheme(newScope);
}
}
-
contents.add(new Pair<Object, TopicMapsTypes>(variant, TopicMapsTypes.Variant));
}
}
// handles the getContent call for scope topics
- private void getScopeContent(ArrayList<Pair<Object, TopicMapsTypes>> contents, boolean validate, Topic carrier, int selectedValueIndex) throws InvalidGdlSchemaException, InvalidContentException, ExecutionException{
- // TODO: implement
+ private void getScopeContent(ArrayList<Pair<Object, TopicMapsTypes>> contents, boolean validate, Construct carrier, int selectedValueIndex) throws InvalidGdlSchemaException, InvalidContentException, ExecutionException{
+ Topic type = TmHelper.getConstrainedStatement(this.getConstraint());
+
+ JsArray<Topic> scopes = null;
+ Construct owner = null;
+ TopicMapsTypes ownerType = null;
+ if(carrier instanceof Topic){
+ JsArray<Name> names = ((Topic)carrier).getNames(type);
+ if(names.length() != 0){
+ scopes = names.get(0).getScope();
+ owner = names.get(0);
+ ownerType = TopicMapsTypes.Name;
+ }
+ if(scopes == null){
+ JsArray<Occurrence> occs = ((Topic)carrier).getOccurrences(type);
+ if(occs.length() != 0){
+ scopes = occs.get(0).getScope();
+ owner = occs.get(0);
+ ownerType = TopicMapsTypes.Occurrence;
+ }
+ }
+ } else if(carrier instanceof Association){
+ if(((Association)carrier).getType().equals(type)){
+ scopes = ((Association)carrier).getScope();
+ owner = carrier;
+ ownerType = TopicMapsTypes.Association;
+ }
+ } else {
+ throw new ExecutionException("the constraint " + TmHelper.getAnyIdOfTopic(this.getConstraint()) + " must be bound to a topic or association, but is: " + carrier.getClass());
+ }
+
+ Topic newScope = TmHelper.getTopicFromStringRepresentation(this.getSelectedValues().get(selectedValueIndex), this.getValueGroup());
+ Topic oldScope = null;
+ if(scopes.length() > selectedValueIndex){
+ oldScope = scopes.get(selectedValueIndex);
+ if(!newScope.equals(oldScope)){
+ ((ScopedStub)owner).removeTheme(oldScope);
+ ((ScopedStub)owner).addTheme(newScope);
+ }
+ } else {
+ ((ScopedStub)owner).addTheme(newScope);
+ }
+ contents.add(new Pair<Object, TopicMapsTypes>(owner, ownerType));
}
- // handles the getContent call for scope topics
- private void getReifierContent(ArrayList<Pair<Object, TopicMapsTypes>> contents, boolean validate, Topic carrier, int selectedValueIndex) throws InvalidGdlSchemaException, InvalidContentException, ExecutionException{
- // TODO: implement
+ // handles the getContent call for a reifier topic
+ private void getReifierContent(ArrayList<Pair<Object, TopicMapsTypes>> contents, boolean validate, Construct carrier, int selectedValueIndex) throws InvalidGdlSchemaException, InvalidContentException, ExecutionException{
+ Topic type = TmHelper.getConstrainedStatement(this.getConstraint());
+
+ Construct owner = null;
+ TopicMapsTypes ownerType = null;
+ if(carrier instanceof Topic){
+ JsArray<Name> names = ((Topic)carrier).getNames(type);
+ if(names.length() != 0){
+ owner = names.get(0);
+ ownerType = TopicMapsTypes.Name;
+ } else {
+ JsArray<Occurrence> occs = ((Topic)carrier).getOccurrences(type);
+ if(occs.length() != 0){
+ owner = occs.get(0);
+ ownerType = TopicMapsTypes.Occurrence;
+ }
+ }
+ } else if(carrier instanceof Association){
+ if(((Association)carrier).getType().equals(type)){
+ owner = carrier;
+ ownerType = TopicMapsTypes.Association;
+ } else {
+ JsArray<Role> roles = ((Association)carrier).getRoles(type);
+ if(roles.length() != 0){
+ owner = roles.get(0);
+ ownerType = TopicMapsTypes.Role;
+ }
+ }
+ } else {
+ throw new ExecutionException("the constraint " + TmHelper.getAnyIdOfTopic(this.getConstraint()) + " must be bound to a topic or association, but is: " + carrier.getClass());
+ }
+
+ Topic newReifier = TmHelper.getTopicFromStringRepresentation(this.getSelectedValues().get(selectedValueIndex), this.getValueGroup());
+ if(!newReifier.equals(((ReifiableStub)owner).getReifier())) ((ReifiableStub)owner).setReifier(newReifier);
+ contents.add(new Pair<Object, TopicMapsTypes>(owner, ownerType));
}
More information about the Isidorus-cvs
mailing list