001 package de.deepamehta.plugins.facets.service;
002
003 import de.deepamehta.plugins.facets.model.FacetValue;
004
005 import de.deepamehta.core.DeepaMehtaObject;
006 import de.deepamehta.core.RelatedTopic;
007 import de.deepamehta.core.Topic;
008 import de.deepamehta.core.service.PluginService;
009 import de.deepamehta.core.service.ResultList;
010
011 import java.util.List;
012
013
014
015 public interface FacetsService extends PluginService {
016
017 // ### TODO: rename to getFacetValue
018 // ### TODO: add fetchComposite parameter
019 Topic getFacet(long topicId, String facetTypeUri);
020
021 /**
022 * Retrieves a facet value.
023 * ### TODO: rename to getFacetValue
024 * ### TODO: add fetchComposite parameter
025 *
026 * @param object The facetted object: a topic, association, a type ...
027 * @param facetTypeUri URI of the facet type.
028 *
029 * @return The retrieved facet value (including its child topics) or <code>null</code> if no such topic extists.
030 */
031 Topic getFacet(DeepaMehtaObject object, String facetTypeUri);
032
033 // ---
034
035 // ### TODO: rename to getFacetValues
036 ResultList<RelatedTopic> getFacets(long topicId, String facetTypeUri);
037
038 /**
039 * Retrieves the values of a multi-facet.
040 * ### TODO: rename to getFacetValues
041 * ### TODO: add fetchComposite parameter
042 *
043 * @param object The facetted object: a topic, association, a type ...
044 * @param facetTypeUri URI of the facet type.
045 *
046 * @return The retrieved facet values (including their child topics). The list may be empty.
047 */
048 ResultList<RelatedTopic> getFacets(DeepaMehtaObject object, String facetTypeUri);
049
050 // ---
051
052 Topic getFacettedTopic(long topicId, List<String> facetTypeUris);
053
054 void addFacetTypeToTopic(long topicId, String facetTypeUri);
055
056 // ---
057
058 void updateFacet(long topicId, String facetTypeUri, FacetValue value);
059
060 /**
061 * Updates a facet.
062 *
063 * @param object The facetted object: a topic, association, a type ...
064 * @param facetTypeUri URI of the facet type.
065 * @param facetValue The new facet value.
066 */
067 void updateFacet(DeepaMehtaObject object, String facetTypeUri, FacetValue value);
068
069 // ---
070
071 boolean hasFacet(long topicId, String facetTypeUri, long facetTopicId);
072 }