001 package de.deepamehta.plugins.facets.model; 002 003 import de.deepamehta.core.model.ChildTopicsModel; 004 import de.deepamehta.core.model.TopicModel; 005 006 import org.codehaus.jettison.json.JSONObject; 007 008 import java.util.List; 009 010 011 012 /** 013 * A facet value as used in update facet calls. 014 * Used for both, single-valued facets and multiple-valued facets. 015 */ 016 public class FacetValue extends ChildTopicsModel { 017 018 private String childTypeUri; 019 020 // ---------------------------------------------------------------------------------------------------- Constructors 021 022 public FacetValue(String childTypeUri) { 023 this.childTypeUri = childTypeUri; 024 } 025 026 public FacetValue(JSONObject obj) { 027 super(obj); 028 try { 029 if (size() != 1) { 030 throw new RuntimeException("There are " + size() + " child type entries (expected is 1)"); 031 } 032 // 033 this.childTypeUri = iterator().next(); 034 } catch (Exception e) { 035 throw new RuntimeException("Parsing FacetValue failed (JSONObject=" + obj + ")", e); 036 } 037 } 038 039 // -------------------------------------------------------------------------------------------------- Public Methods 040 041 /** 042 * Accesses a single-valued facet. 043 */ 044 public TopicModel getTopic() { 045 return getTopic(childTypeUri); 046 } 047 048 /** 049 * Accesses a multiple-valued facet. 050 */ 051 public List<TopicModel> getTopics() { 052 return getTopics(childTypeUri); 053 } 054 055 // --- 056 057 /** 058 * Puts a value in a single-valued facet. 059 */ 060 public FacetValue put(TopicModel value) { 061 return (FacetValue) put(childTypeUri, value); 062 } 063 064 // --- 065 066 /** 067 * Convenience method to put a *simple* value in a single-valued facet. 068 */ 069 public FacetValue put(Object value) { 070 return (FacetValue) put(childTypeUri, value); 071 } 072 073 /** 074 * Convenience method to put a *composite* value in a single-valued facet. 075 */ 076 public FacetValue put(ChildTopicsModel value) { 077 return (FacetValue) put(childTypeUri, value); 078 } 079 080 // --- 081 082 /** 083 * Adds all the values to a multiple-valued facet. 084 */ 085 public FacetValue put(List<TopicModel> values) { 086 return (FacetValue) put(childTypeUri, values); 087 } 088 089 // --- 090 091 /** 092 * Adds a by-ID topic reference to a multiple-valued facet. 093 */ 094 public FacetValue addRef(long refTopicId) { 095 return (FacetValue) addRef(childTypeUri, refTopicId); 096 } 097 098 /** 099 * Adds a by-URI topic reference to a multiple-valued facet. 100 */ 101 public FacetValue addRef(String refTopicUri) { 102 return (FacetValue) addRef(childTypeUri, refTopicUri); 103 } 104 105 // --- 106 107 /** 108 * Adds a by-ID topic deletion reference to a multiple-valued facet. 109 */ 110 public FacetValue addDeletionRef(long refTopicId) { 111 return (FacetValue) addDeletionRef(childTypeUri, refTopicId); 112 } 113 }