001package de.deepamehta.core.model.facets;
002
003import de.deepamehta.core.model.ChildTopicsModel;
004import de.deepamehta.core.model.RelatedTopicModel;
005
006import java.util.List;
007
008
009
010/**
011 * A facet value as used in update facet calls.
012 * Used for both, single-valued facets and multiple-valued facets.
013 */
014public interface FacetValueModel extends ChildTopicsModel {
015
016
017
018    // === Single-valued Facets ===
019
020    /**
021     * Accesses a single-valued facet.
022     */
023    RelatedTopicModel getTopic();
024
025    /**
026     * Accesses a multiple-valued facet.
027     */
028    List<? extends RelatedTopicModel> getTopics();
029
030    // ---
031
032    /**
033     * Puts a value in a single-valued facet.
034     */
035    FacetValueModel put(RelatedTopicModel value);
036
037    // ---
038
039    /**
040     * Convenience method to put a *simple* value in a single-valued facet.
041     */
042    FacetValueModel put(Object value);
043
044    /**
045     * Convenience method to put a *composite* value in a single-valued facet.
046     */
047    FacetValueModel put(ChildTopicsModel value);
048
049    // ---
050
051    /**
052     * Puts a by-ID topic reference in a single-valued facet.
053     */
054    FacetValueModel putRef(long refTopicId);
055
056    /**
057     * Puts a by-URI topic reference in a single-valued facet.
058     */
059    FacetValueModel putRef(String refTopicUri);
060
061
062
063    // === Multiple-valued Facets ===
064
065    /**
066     * Sets the values of a multiple-valued facet.
067     */
068    FacetValueModel put(List<RelatedTopicModel> values);
069
070    // ---
071
072    /**
073     * Adds a by-ID topic reference to a multiple-valued facet.
074     */
075    FacetValueModel addRef(long refTopicId);
076
077    /**
078     * Adds a by-URI topic reference to a multiple-valued facet.
079     */
080    FacetValueModel addRef(String refTopicUri);
081
082    // ---
083
084    /**
085     * Adds a by-ID topic deletion reference to a multiple-valued facet.
086     */
087    FacetValueModel addDeletionRef(long refTopicId);
088}