001package de.deepamehta.core.impl;
002
003import de.deepamehta.core.TopicType;
004import de.deepamehta.core.model.AssociationDefinitionModel;
005import de.deepamehta.core.model.SimpleValue;
006import de.deepamehta.core.model.TopicModel;
007import de.deepamehta.core.model.TopicTypeModel;
008import de.deepamehta.core.model.TypeModel;
009import de.deepamehta.core.service.Directive;
010
011import java.util.List;
012
013
014
015/**
016 * Data that underlies a {@link TopicType}.
017 *
018 * @author <a href="mailto:jri@deepamehta.de">Jörg Richter</a>
019 */
020class TopicTypeModelImpl extends TypeModelImpl implements TopicTypeModel {
021
022    // ---------------------------------------------------------------------------------------------------- Constructors
023
024    TopicTypeModelImpl(TypeModelImpl type) {
025        super(type);
026    }
027
028    // -------------------------------------------------------------------------------------------------- Public Methods
029
030    @Override
031    public TopicTypeModel addAssocDef(AssociationDefinitionModel assocDef) {
032        return (TopicTypeModel) super.addAssocDef(assocDef);
033    }
034
035    // ---
036
037    @Override
038    public String toString() {
039        return "topic type (" + super.toString() + ")";
040    }
041
042    // ----------------------------------------------------------------------------------------- Package Private Methods
043
044    @Override
045    String className() {
046        return "topic type";
047    }
048
049    @Override
050    TopicType instantiate() {
051        return new TopicTypeImpl(this, pl);
052    }
053
054
055
056    // === Implementation of abstract TypeModelImpl methods ===
057
058    @Override
059    List<TopicModelImpl> getAllInstances() {
060        return pl.fetchTopics("type_uri", new SimpleValue(uri));
061    }
062
063    // ---
064
065    @Override
066    Directive getUpdateTypeDirective() {
067        return Directive.UPDATE_TOPIC_TYPE;
068    }
069
070    @Override
071    Directive getDeleteTypeDirective() {
072        return Directive.DELETE_TOPIC_TYPE;
073    }
074}