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