001package de.deepamehta.core.impl;
002
003import de.deepamehta.core.DeepaMehtaObject;
004import de.deepamehta.core.Topic;
005import de.deepamehta.core.TopicRole;
006
007
008
009/**
010 * A topic role that is attached to the {@link PersistenceLayer}.
011 */
012class TopicRoleImpl extends RoleImpl implements TopicRole {
013
014    // ---------------------------------------------------------------------------------------------------- Constructors
015
016    TopicRoleImpl(TopicRoleModelImpl model, AssociationModelImpl assoc, PersistenceLayer pl) {
017        super(model, assoc, pl);
018    }
019
020    // -------------------------------------------------------------------------------------------------- Public Methods
021
022
023
024    // === Role Implementation ===
025
026    @Override
027    public DeepaMehtaObject getPlayer() {
028        return new TopicImpl(getModel().getPlayer(), pl);   // ### TODO: permission check?
029    }
030
031
032
033    // === TopicRole Implementation ===
034
035    @Override
036    public String getTopicUri() {
037        return getModel().getTopicUri();
038    }
039
040    @Override
041    public boolean topicIdentifiedByUri() {
042        return getModel().topicIdentifiedByUri();
043    }
044
045    // ---
046
047    @Override
048    public Topic getTopic() {
049        return (Topic) getPlayer();
050    }
051
052
053
054    // === RoleImpl Overrides ===
055
056    @Override
057    public TopicRoleModelImpl getModel() {
058        return (TopicRoleModelImpl) model;
059    }
060}