/** * */ package org.gcube.informationsystem.model.reference.entities; import java.util.List; import java.util.UUID; import org.gcube.informationsystem.model.reference.relations.ConsistsOf; import org.gcube.informationsystem.model.reference.relations.IsRelatedTo; import org.gcube.informationsystem.types.annotations.Abstract; import com.fasterxml.jackson.annotation.JsonIgnore; /** * @author Luca Frosini (ISTI - CNR) * https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Resources */ @Abstract // @JsonDeserialize(as=ResourceImpl.class) Do not uncomment to manage subclasses public interface Resource extends Entity { public static final String NAME = "Resource"; //Resource.class.getSimpleName(); public static final String CONSISTS_OF_PROPERTY = "consistsOf"; public static final String IS_RELATED_TO_PROPERTY = "isRelatedTo"; @JsonIgnore public List getIdentificationFacets(); // @JsonManagedReference public List> getConsistsOf(); @JsonIgnore public > List getConsistsOf(Class clz); @JsonIgnore public > List getConsistsOf(Class clz, Class target); // @JsonManagedReference public List> getIsRelatedTo(); @JsonIgnore public > List getIsRelatedTo(Class clz); @JsonIgnore public List getFacets(); @JsonIgnore public List getFacets(Class clz); @JsonIgnore public > List getFacets(Class clz, Class target); public void addFacet(UUID uuid); public void addFacet(F facet); public > void addFacet(C relation); public void attachResource(UUID uuid); public void attachResource(R resource); public > void attachResource(I relation); }