Author: lgiessmann Date: Tue Aug 30 05:45:13 2011 New Revision: 812
Log: gdl-frontend: Widgets: implemented the production of gdl:Hidden-Value instances when they are set to a gdlt:Role-Player instance
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlHiddenValue.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/button/GdlCommitButton.java branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/view/GdlAssociationView.java branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/view/GdlTopicView.java
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlHiddenValue.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlHiddenValue.java Tue Aug 30 05:43:56 2011 (r811) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/GdlHiddenValue.java Tue Aug 30 05:45:13 2011 (r812) @@ -1,9 +1,11 @@ package us.isidor.gdl.anaToMia.Widgets.base;
+ import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.Topic; import us.isidor.gdl.anaToMia.Widgets.environment.ExecutionException; import us.isidor.gdl.anaToMia.Widgets.environment.InvalidGdlSchemaException;
+ public class GdlHiddenValue { protected Topic constraintTopic = null; protected boolean constraintTopicSet = false; @@ -14,15 +16,19 @@ protected Topic defaultLiteralValueTopic = null; protected boolean defaultLiteralValueTopicSet = false; protected Topic tmRepresentative = null; + protected boolean rawTmValuesSet = false; + protected Topic rawTmValue = null; + protected GdlVisibleObject owner = null; @SuppressWarnings("unused") private GdlHiddenValue(){} - public GdlHiddenValue(Topic tmRepresentative) throws ExecutionException{ - if(tmRepresentative == null) throw new ExecutionException("tmRepresentative must no be null"); + public GdlHiddenValue(Topic tmRepresentative, GdlVisibleObject owner) throws ExecutionException{ + if(tmRepresentative == null || owner == null) throw new ExecutionException("tmRepresentative and owner must not be null"); this.tmRepresentative = tmRepresentative; + this.owner = owner; } @@ -90,4 +96,16 @@ else if(this.getDefaultLiteralValue() != null) return this.getDefaultLiteralValue(); else return this.getDefaultTmValue(); } + + + //returns the actual values represetned by the tmValues + public Topic getRawTmValue() throws InvalidGdlSchemaException{ + if(this.rawTmValuesSet){ + return this.rawTmValue; + } else { + this.rawTmValuesSet = true; + this.rawTmValue = TmHelper.getRawTmValueForHiddenValue(this.tmRepresentative, this.owner); + return this.rawTmValue; + } + } }
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 Tue Aug 30 05:43:56 2011 (r811) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/base/TmHelper.java Tue Aug 30 05:45:13 2011 (r812) @@ -1425,4 +1425,25 @@ throw new ExecutionException("no topic found for the representation string: " + representation); } + + + // Returns the actual default tm value for the corresponding hidden-value topic + public static Topic getRawTmValueForHiddenValue(Topic hiddenValue, GdlVisibleObject elem) throws InvalidGdlSchemaException{ + ArrayList<Topic> result = new ArrayList<Topic>(); + if(hiddenValue == null) return null; + + Topic defaultTmValue = getDefaultTmValueOfHiddenValue(hiddenValue); + if(defaultTmValue != null){ + result = getValuesForTmValue(defaultTmValue); + }else if(getDefaultLiteralValueOfHiddenValue(hiddenValue) != null){ + return null; + } else { + if(elem == null) return null; + else result.add(getNearestTopic(elem)); + } + + if(result.size() > 1) throw new InvalidGdlSchemaException("the hidden value " + getAnyIdOfTopic(hiddenValue) + " represents more than one particular value: " + result.size()); + else if(result.size() == 1) return result.get(0); + else return null; + } }
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/button/GdlCommitButton.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/button/GdlCommitButton.java Tue Aug 30 05:43:56 2011 (r811) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/button/GdlCommitButton.java Tue Aug 30 05:45:13 2011 (r812) @@ -37,8 +37,8 @@ @Override public void onClick(ClickEvent event) { try{ - this.owner.getGdlParent().getContent(null); - + Window.alert(" >> " + this.owner.getGdlParent().getContent(null).size()); + // TODO: implement }catch(Exception e){ e.printStackTrace();
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/view/GdlAssociationView.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/view/GdlAssociationView.java Tue Aug 30 05:43:56 2011 (r811) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/view/GdlAssociationView.java Tue Aug 30 05:45:13 2011 (r812) @@ -2,6 +2,7 @@
import java.util.ArrayList; import com.google.gwt.core.client.JsArray; +import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; @@ -12,6 +13,7 @@ import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.TopicMap; import us.isidor.gdl.anaToMia.TopicMaps.TopicMapsModel.TopicMapsTypes; import us.isidor.gdl.anaToMia.Widgets.base.ButtonableObject; +import us.isidor.gdl.anaToMia.Widgets.base.GdlHiddenValue; import us.isidor.gdl.anaToMia.Widgets.base.GdlVisibleObject; import us.isidor.gdl.anaToMia.Widgets.base.PSIs; import us.isidor.gdl.anaToMia.Widgets.base.TmHelper; @@ -197,7 +199,29 @@ } } - // TODO: process hidden values + // process hidden values + for (Topic hd : this.getHiddenValues()) { + GdlHiddenValue hdv = new GdlHiddenValue(hd, this); + if(TmHelper.isInstanceOf(hdv.getConstraint(), PSIs.GDL.TopicType.gdlRolePlayer)){ + if(!TmHelper.isInstanceOf(hdv.getRootConstraint(), PSIs.TMCL.tmclTopicRoleConstraint)) throw new InvalidGdlSchemaException("the constraint " + TmHelper.getAnyIdOfTopic(hdv.getConstraint()) + " must be bound to an instance of " + PSIs.TMCL.tmclTopicRoleConstraint + ", but is: " + TmHelper.getAnyIdOfTopic(hdv.getRootConstraint())); + for (Pair<Construct, TopicMapsTypes> pair : result) { + if(pair.getSecond().equals(TopicMapsTypes.Association)){ + Association assoc = (Association)pair.getFirst(); + Topic player = hdv.getRawTmValue(); + if(player == null) throw new InvalidGdlSchemaException("the hidden value " + TmHelper.getAnyIdOfTopic(hd) + " must be bound to exactly one topic, but is unbound"); + assoc.createRole(TmHelper.getConstrainedRoleAndPlayerTypeOfConstraint(hdv.getRootConstraint()).getFirst(), player); + } + } + } + + // TODO: implement + // reifier => topic-role + // item-identifeir => topic-role + // type => association-role + // reifier => association-role + // item-identifier => association-role + // scope => assocition-role + } return result; }
Modified: branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/view/GdlTopicView.java ============================================================================== --- branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/view/GdlTopicView.java Tue Aug 30 05:43:56 2011 (r811) +++ branches/gdl-frontend/src/anaToMia/GDL_Widgets/src/us/isidor/gdl/anaToMia/Widgets/view/GdlTopicView.java Tue Aug 30 05:45:13 2011 (r812) @@ -91,7 +91,20 @@ } } - // TODO: process hidden values + for (@SuppressWarnings("unused") Topic hd : this.getHiddenValues()) { + // TODO: process hidden values + // subject-identifier + // subject-locator + // item-identifier + // topic-name + // variant-name + // topic-occurrence + // type => topic-name + // type => topic-occurrence + // datatype => topic-occurrence + // scope => topic-name + // scope => topic-occurrence + } return result; }