001 package de.deepamehta.core.impl;
002
003 import de.deepamehta.core.Association;
004 import de.deepamehta.core.DeepaMehtaObject;
005 import de.deepamehta.core.Topic;
006 import de.deepamehta.core.TopicRole;
007 import de.deepamehta.core.model.SimpleValue;
008 import de.deepamehta.core.model.TopicRoleModel;
009
010 import java.util.logging.Logger;
011
012
013
014 /**
015 * A topic role that is attached to the {@link DeepaMehtaService}.
016 */
017 class AttachedTopicRole extends AttachedRole implements TopicRole {
018
019 // ---------------------------------------------------------------------------------------------- Instance Variables
020
021 private Logger logger = Logger.getLogger(getClass().getName());
022
023 // ---------------------------------------------------------------------------------------------------- Constructors
024
025 AttachedTopicRole(TopicRoleModel model, Association assoc, EmbeddedService dms) {
026 super(model, assoc, dms);
027 }
028
029 // -------------------------------------------------------------------------------------------------- Public Methods
030
031
032
033 // === Role Implementation ===
034
035 @Override
036 public DeepaMehtaObject getPlayer() {
037 if (topicIdentifiedByUri()) {
038 return dms.getTopic("uri", new SimpleValue(getTopicUri()));
039 } else {
040 return dms.getTopic(getPlayerId());
041 }
042 }
043
044
045
046 // === TopicRole Implementation ===
047
048 @Override
049 public String getTopicUri() {
050 return getModel().getTopicUri();
051 }
052
053 @Override
054 public boolean topicIdentifiedByUri() {
055 return getModel().topicIdentifiedByUri();
056 }
057
058 // ---
059
060 @Override
061 public Topic getTopic() {
062 return (Topic) getPlayer();
063 }
064
065
066
067 // === AttachedRole Overrides ===
068
069 @Override
070 public TopicRoleModel getModel() {
071 return (TopicRoleModel) super.getModel();
072 }
073 }