diff --git a/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/GCubeResourceImpl.java b/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/GCubeResourceImpl.java new file mode 100644 index 0000000..d2a4d74 --- /dev/null +++ b/src/main/java/org/gcube/resourcemanagement/model/impl/entities/resources/GCubeResourceImpl.java @@ -0,0 +1,37 @@ +package org.gcube.resourcemanagement.model.impl.entities.resources; + +import java.util.ArrayList; +import java.util.List; + +import org.gcube.informationsystem.model.impl.entities.ResourceImpl; +import org.gcube.informationsystem.model.reference.entities.Facet; +import org.gcube.informationsystem.model.reference.entities.Resource; +import org.gcube.informationsystem.model.reference.relations.ConsistsOf; +import org.gcube.resourcemanagement.model.reference.entities.resources.GCubeResource; +import org.gcube.resourcemanagement.model.reference.relations.consistsof.IsIdentifiedBy; + +import com.fasterxml.jackson.annotation.JsonTypeName; + +/** + * @author Luca Frosini (ISTI - CNR) + */ +@JsonTypeName(value=GCubeResource.NAME) +public abstract class GCubeResourceImpl extends ResourceImpl implements GCubeResource { + + /** + * Generated Serial version UID + */ + private static final long serialVersionUID = 8005284153516839231L; + + @Override + public List getIdentificationFacets() { + List identificationFacets = new ArrayList<>(); + for(ConsistsOf consistsOfInstance : consistsOfList){ + if (IsIdentifiedBy.class.isAssignableFrom(consistsOfInstance.getClass())) { + identificationFacets.add(consistsOfInstance.getTarget()); + } + } + return identificationFacets; + } + +} diff --git a/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/GCubeResource.java b/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/GCubeResource.java new file mode 100644 index 0000000..3568e2f --- /dev/null +++ b/src/main/java/org/gcube/resourcemanagement/model/reference/entities/resources/GCubeResource.java @@ -0,0 +1,33 @@ +package org.gcube.resourcemanagement.model.reference.entities.resources; + +import java.util.List; + +import org.gcube.informationsystem.model.reference.entities.Facet; +import org.gcube.informationsystem.model.reference.entities.Resource; +import org.gcube.informationsystem.types.annotations.Abstract; +import org.gcube.informationsystem.types.annotations.ResourceSchema; +import org.gcube.informationsystem.types.annotations.ResourceSchemaEntry; +import org.gcube.resourcemanagement.model.impl.entities.resources.GCubeResourceImpl; +import org.gcube.resourcemanagement.model.reference.relations.consistsof.IsIdentifiedBy; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; + +/** + * @author Luca Frosini (ISTI - CNR) + */ +@Abstract +@JsonDeserialize(as=GCubeResourceImpl.class) +@ResourceSchema({@ResourceSchemaEntry(consistOfType=IsIdentifiedBy.class, min=1)}) +public interface GCubeResource extends Resource { + + public static final String NAME = "GCubeResource"; // GCubeResource.class.getSimpleName(); + public static final String DESCRIPTION = "Base Class for any gCube Resource"; + public static final String VERSION = "1.0.0"; + + @JsonIgnore + public List getIdentificationFacets(); + + + +}