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    }