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 }