001package de.deepamehta.core.impl; 002 003import de.deepamehta.core.model.ChildTopicsModel; 004import de.deepamehta.core.model.RelatedTopicModel; 005import de.deepamehta.core.model.facets.FacetValueModel; 006import de.deepamehta.core.service.ModelFactory; 007 008import java.util.HashMap; 009import java.util.List; 010 011 012 013class FacetValueModelImpl extends ChildTopicsModelImpl implements FacetValueModel { 014 015 // ---------------------------------------------------------------------------------------------- Instance Variables 016 017 private String childTypeUri; 018 019 // ---------------------------------------------------------------------------------------------------- Constructors 020 021 FacetValueModelImpl(String childTypeUri, ModelFactory mf) { 022 super(new HashMap(), mf); 023 this.childTypeUri = childTypeUri; 024 } 025 026 FacetValueModelImpl(ChildTopicsModelImpl childTopics) { 027 super(childTopics); 028 this.childTypeUri = iterator().next(); 029 } 030 031 // -------------------------------------------------------------------------------------------------- Public Methods 032 033 034 035 // === Single-valued Facets === 036 037 /** 038 * Accesses a single-valued facet. 039 */ 040 public RelatedTopicModel getTopic() { 041 return getTopic(childTypeUri); 042 } 043 044 /** 045 * Accesses a multiple-valued facet. 046 */ 047 public List<? extends RelatedTopicModel> getTopics() { 048 return getTopics(childTypeUri); 049 } 050 051 // --- 052 053 /** 054 * Puts a value in a single-valued facet. 055 */ 056 public FacetValueModel put(RelatedTopicModel value) { 057 return (FacetValueModel) put(childTypeUri, value); 058 } 059 060 // --- 061 062 /** 063 * Convenience method to put a *simple* value in a single-valued facet. 064 */ 065 public FacetValueModel put(Object value) { 066 return (FacetValueModel) put(childTypeUri, value); 067 } 068 069 /** 070 * Convenience method to put a *composite* value in a single-valued facet. 071 */ 072 public FacetValueModel put(ChildTopicsModel value) { 073 return (FacetValueModel) put(childTypeUri, value); 074 } 075 076 // --- 077 078 /** 079 * Puts a by-ID topic reference in a single-valued facet. 080 */ 081 public FacetValueModel putRef(long refTopicId) { 082 return (FacetValueModel) putRef(childTypeUri, refTopicId); 083 } 084 085 /** 086 * Puts a by-URI topic reference in a single-valued facet. 087 */ 088 public FacetValueModel putRef(String refTopicUri) { 089 return (FacetValueModel) putRef(childTypeUri, refTopicUri); 090 } 091 092 093 094 // === Multiple-valued Facets === 095 096 /** 097 * Sets the values of a multiple-valued facet. 098 */ 099 public FacetValueModel put(List<RelatedTopicModel> values) { 100 return (FacetValueModel) put(childTypeUri, values); 101 } 102 103 // --- 104 105 /** 106 * Adds a by-ID topic reference to a multiple-valued facet. 107 */ 108 public FacetValueModel addRef(long refTopicId) { 109 return (FacetValueModel) addRef(childTypeUri, refTopicId); 110 } 111 112 /** 113 * Adds a by-URI topic reference to a multiple-valued facet. 114 */ 115 public FacetValueModel addRef(String refTopicUri) { 116 return (FacetValueModel) addRef(childTypeUri, refTopicUri); 117 } 118 119 // --- 120 121 /** 122 * Adds a by-ID topic deletion reference to a multiple-valued facet. 123 */ 124 public FacetValueModel addDeletionRef(long refTopicId) { 125 return (FacetValueModel) addDeletionRef(childTypeUri, refTopicId); 126 } 127}