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}