001package de.deepamehta.core.impl;
002
003import de.deepamehta.core.Association;
004import de.deepamehta.core.DeepaMehtaObject;
005import de.deepamehta.core.Topic;
006import de.deepamehta.core.TopicRole;
007import de.deepamehta.core.model.SimpleValue;
008import de.deepamehta.core.model.TopicRoleModel;
009
010import java.util.logging.Logger;
011
012
013
014/**
015 * A topic role that is attached to the {@link DeepaMehtaService}.
016 */
017class 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}