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 }