All Gcube Resources are now subclass of GCubeResource. Added the schema

definition refs #18213
This commit is contained in:
Luca Frosini 2019-12-05 12:04:31 +01:00
parent c9b6f5aba3
commit cee0da3ac5
16 changed files with 126 additions and 28 deletions

View File

@ -3,7 +3,6 @@
*/
package org.gcube.resourcemanagement.model.impl.entities.resources;
import org.gcube.informationsystem.model.impl.entities.ResourceImpl;
import org.gcube.resourcemanagement.model.reference.entities.resources.Actor;
import com.fasterxml.jackson.annotation.JsonTypeName;
@ -12,7 +11,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName;
* @author Luca Frosini (ISTI - CNR)
*/
@JsonTypeName(value=Actor.NAME)
public abstract class ActorImpl extends ResourceImpl implements Actor {
public abstract class ActorImpl extends GCubeResourceImpl implements Actor {
/**
* Generated Serial version UID

View File

@ -3,7 +3,6 @@
*/
package org.gcube.resourcemanagement.model.impl.entities.resources;
import org.gcube.informationsystem.model.impl.entities.ResourceImpl;
import org.gcube.resourcemanagement.model.reference.entities.resources.ConfigurationTemplate;
import com.fasterxml.jackson.annotation.JsonTypeName;
@ -12,7 +11,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName;
* @author Luca Frosini (ISTI - CNR)
*/
@JsonTypeName(value=ConfigurationTemplate.NAME)
public class ConfigurationTemplateImpl extends ResourceImpl implements ConfigurationTemplate {
public class ConfigurationTemplateImpl extends GCubeResourceImpl implements ConfigurationTemplate {
/**
* Generated Serial version UID

View File

@ -3,7 +3,6 @@
*/
package org.gcube.resourcemanagement.model.impl.entities.resources;
import org.gcube.informationsystem.model.impl.entities.ResourceImpl;
import org.gcube.resourcemanagement.model.reference.entities.resources.Dataset;
import com.fasterxml.jackson.annotation.JsonTypeName;
@ -12,7 +11,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName;
* @author Luca Frosini (ISTI - CNR)
*/
@JsonTypeName(value=Dataset.NAME)
public class DatasetImpl extends ResourceImpl implements Dataset {
public class DatasetImpl extends GCubeResourceImpl implements Dataset {
/**
* Generated Serial version UID

View File

@ -3,7 +3,6 @@
*/
package org.gcube.resourcemanagement.model.impl.entities.resources;
import org.gcube.informationsystem.model.impl.entities.ResourceImpl;
import org.gcube.resourcemanagement.model.reference.entities.resources.Schema;
import com.fasterxml.jackson.annotation.JsonTypeName;
@ -12,7 +11,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName;
* @author Luca Frosini (ISTI - CNR)
*/
@JsonTypeName(value=Schema.NAME)
public class SchemaImpl extends ResourceImpl implements Schema {
public class SchemaImpl extends GCubeResourceImpl implements Schema {
/**
* Generated Serial version UID

View File

@ -3,7 +3,6 @@
*/
package org.gcube.resourcemanagement.model.impl.entities.resources;
import org.gcube.informationsystem.model.impl.entities.ResourceImpl;
import org.gcube.resourcemanagement.model.reference.entities.resources.Service;
import com.fasterxml.jackson.annotation.JsonTypeName;
@ -12,7 +11,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName;
* @author Luca Frosini (ISTI - CNR)
*/
@JsonTypeName(value=Service.NAME)
public abstract class ServiceImpl extends ResourceImpl implements Service {
public abstract class ServiceImpl extends GCubeResourceImpl implements Service {
/**
* Generated Serial version UID

View File

@ -3,7 +3,6 @@
*/
package org.gcube.resourcemanagement.model.impl.entities.resources;
import org.gcube.informationsystem.model.impl.entities.ResourceImpl;
import org.gcube.resourcemanagement.model.reference.entities.resources.Site;
import com.fasterxml.jackson.annotation.JsonTypeName;
@ -12,7 +11,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName;
* @author Luca Frosini (ISTI - CNR)
*/
@JsonTypeName(value=Site.NAME)
public class SiteImpl extends ResourceImpl implements Site {
public class SiteImpl extends GCubeResourceImpl implements Site {
/**
* Generated Serial version UID

View File

@ -3,7 +3,6 @@
*/
package org.gcube.resourcemanagement.model.impl.entities.resources;
import org.gcube.informationsystem.model.impl.entities.ResourceImpl;
import org.gcube.resourcemanagement.model.reference.entities.resources.Software;
import com.fasterxml.jackson.annotation.JsonTypeName;
@ -12,7 +11,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName;
* @author Luca Frosini (ISTI - CNR)
*/
@JsonTypeName(value=Software.NAME)
public class SoftwareImpl extends ResourceImpl implements Software {
public class SoftwareImpl extends GCubeResourceImpl implements Software {
/**
* Generated Serial version UID

View File

@ -3,9 +3,14 @@
*/
package org.gcube.resourcemanagement.model.reference.entities.resources;
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.ActorImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.ContactFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.ContactReferenceFacet;
import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasContact;
import org.gcube.resourcemanagement.model.reference.relations.consistsof.IsIdentifiedBy;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
@ -15,7 +20,12 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
*/
@Abstract
@JsonDeserialize(as=ActorImpl.class)
public interface Actor extends Resource {
@ResourceSchema({
@ResourceSchemaEntry(consistOfType=IsIdentifiedBy.class, targetFacetType=ContactFacet.class, min=1),
@ResourceSchemaEntry(consistOfType=HasContact.class, targetFacetType=ContactFacet.class),
@ResourceSchemaEntry(targetFacetType=ContactReferenceFacet.class)
})
public interface Actor extends GCubeResource {
public static final String NAME = "Actor"; // Actor.class.getSimpleName();
public static final String DESCRIPTION = "Any entity (human or machine) playing an active role.";

View File

@ -3,7 +3,12 @@
*/
package org.gcube.resourcemanagement.model.reference.entities.resources;
import org.gcube.informationsystem.types.annotations.ResourceSchema;
import org.gcube.informationsystem.types.annotations.ResourceSchemaEntry;
import org.gcube.resourcemanagement.model.impl.entities.resources.ConcreteDatasetImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.AccessPointFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.ContactFacet;
import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasMaintainer;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
@ -13,6 +18,10 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Concrete_Dataset
*/
@JsonDeserialize(as=ConcreteDatasetImpl.class)
@ResourceSchema({
@ResourceSchemaEntry(consistOfType=HasMaintainer.class, targetFacetType=ContactFacet.class, min=1),
@ResourceSchemaEntry(targetFacetType=AccessPointFacet.class, min=1)
})
public interface ConcreteDataset extends Dataset {
public static final String NAME = "ConcreteDataset"; // ConcreteDataset.class.getSimpleName();

View File

@ -3,8 +3,12 @@
*/
package org.gcube.resourcemanagement.model.reference.entities.resources;
import org.gcube.informationsystem.model.reference.entities.Resource;
import org.gcube.informationsystem.types.annotations.ResourceSchema;
import org.gcube.informationsystem.types.annotations.ResourceSchemaEntry;
import org.gcube.resourcemanagement.model.impl.entities.resources.ConfigurationTemplateImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.IdentifierFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.SimpleFacet;
import org.gcube.resourcemanagement.model.reference.relations.consistsof.IsIdentifiedBy;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
@ -13,7 +17,11 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Configuration_Template
*/
@JsonDeserialize(as=ConfigurationTemplateImpl.class)
public interface ConfigurationTemplate extends Resource {
@ResourceSchema({
@ResourceSchemaEntry(consistOfType=IsIdentifiedBy.class, targetFacetType=IdentifierFacet.class, min=1),
@ResourceSchemaEntry(targetFacetType=SimpleFacet.class, min=1)
})
public interface ConfigurationTemplate extends GCubeResource {
public static final String NAME = "ConfigurationTemplate"; //ConfigurationTemplate.class.getSimpleName();
public static final String DESCRIPTION = "It represents a template for a configuration. It describe how a configuration has to be realized. E.g. Used to define the accounting configuration parameters template.";

View File

@ -3,8 +3,28 @@
*/
package org.gcube.resourcemanagement.model.reference.entities.resources;
import org.gcube.informationsystem.model.reference.entities.Resource;
import org.gcube.informationsystem.types.annotations.ResourceSchema;
import org.gcube.informationsystem.types.annotations.ResourceSchemaEntry;
import org.gcube.resourcemanagement.model.impl.entities.resources.DatasetImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.AccessPointFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.ContactFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.CoverageFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.DescriptiveMetadataFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.EventFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.IdentifierFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.LicenseFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.ProvenanceFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.SubjectFacet;
import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasContact;
import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasContributor;
import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasCoverage;
import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasCreator;
import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasCurator;
import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasMaintainer;
import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasOwner;
import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasSpatialCoverage;
import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasTemporalCoverage;
import org.gcube.resourcemanagement.model.reference.relations.consistsof.IsIdentifiedBy;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
@ -13,7 +33,25 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Dataset
*/
@JsonDeserialize(as=DatasetImpl.class)
public interface Dataset extends Resource {
@ResourceSchema({
@ResourceSchemaEntry(consistOfType=IsIdentifiedBy.class, targetFacetType=IdentifierFacet.class, min=1),
@ResourceSchemaEntry(consistOfType=HasContact.class, targetFacetType=ContactFacet.class, min=1),
@ResourceSchemaEntry(consistOfType=HasContributor.class, targetFacetType=ContactFacet.class),
@ResourceSchemaEntry(consistOfType=HasCreator.class, targetFacetType=ContactFacet.class),
@ResourceSchemaEntry(consistOfType=HasCurator.class, targetFacetType=ContactFacet.class),
@ResourceSchemaEntry(consistOfType=HasMaintainer.class, targetFacetType=ContactFacet.class),
@ResourceSchemaEntry(consistOfType=HasOwner.class, targetFacetType=ContactFacet.class),
@ResourceSchemaEntry(targetFacetType=AccessPointFacet.class),
@ResourceSchemaEntry(targetFacetType=LicenseFacet.class),
@ResourceSchemaEntry(targetFacetType=EventFacet.class),
@ResourceSchemaEntry(targetFacetType=ProvenanceFacet.class),
@ResourceSchemaEntry(consistOfType=HasCoverage.class, targetFacetType=CoverageFacet.class, min=1),
@ResourceSchemaEntry(consistOfType=HasTemporalCoverage.class, targetFacetType=CoverageFacet.class),
@ResourceSchemaEntry(consistOfType=HasSpatialCoverage.class, targetFacetType=CoverageFacet.class),
@ResourceSchemaEntry(targetFacetType=DescriptiveMetadataFacet.class),
@ResourceSchemaEntry(targetFacetType=SubjectFacet.class)
})
public interface Dataset extends GCubeResource {
public static final String NAME = "Dataset"; // Dataset.class.getSimpleName();
public static final String DESCRIPTION = "Collect Dataset information through the list of its facets";

View File

@ -3,7 +3,15 @@
*/
package org.gcube.resourcemanagement.model.reference.entities.resources;
import org.gcube.informationsystem.types.annotations.ResourceSchema;
import org.gcube.informationsystem.types.annotations.ResourceSchemaEntry;
import org.gcube.resourcemanagement.model.impl.entities.resources.EServiceImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.AccessPointFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.EventFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.LicenseFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.ServiceStateFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.SoftwareFacet;
import org.gcube.resourcemanagement.model.reference.relations.consistsof.IsIdentifiedBy;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
@ -12,6 +20,14 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#E-Service
*/
@JsonDeserialize(as=EServiceImpl.class)
@ResourceSchema({
@ResourceSchemaEntry(consistOfType=IsIdentifiedBy.class, targetFacetType=SoftwareFacet.class, min=1),
@ResourceSchemaEntry(targetFacetType=SoftwareFacet.class),
@ResourceSchemaEntry(targetFacetType=AccessPointFacet.class, min=1),
@ResourceSchemaEntry(targetFacetType=EventFacet.class, min=1, max=1),
@ResourceSchemaEntry(targetFacetType=ServiceStateFacet.class, min=1, max=1),
@ResourceSchemaEntry(targetFacetType=LicenseFacet.class)
})
public interface EService extends Service {
public static final String NAME = "EService"; // EService.class.getSimpleName();

View File

@ -3,8 +3,17 @@
*/
package org.gcube.resourcemanagement.model.reference.entities.resources;
import org.gcube.informationsystem.model.reference.entities.Resource;
import org.gcube.informationsystem.types.annotations.ResourceSchema;
import org.gcube.informationsystem.types.annotations.ResourceSchemaEntry;
import org.gcube.resourcemanagement.model.impl.entities.resources.SchemaImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.ContactFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.DescriptiveMetadataFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.JSONSchemaFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.SchemaFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.SubjectFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.XSDSchemaFacet;
import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasContact;
import org.gcube.resourcemanagement.model.reference.relations.consistsof.IsIdentifiedBy;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
@ -13,7 +22,15 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Schema
*/
@JsonDeserialize(as=SchemaImpl.class)
public interface Schema extends Resource {
@ResourceSchema({
@ResourceSchemaEntry(consistOfType=IsIdentifiedBy.class, targetFacetType=SchemaFacet.class, min=1),
@ResourceSchemaEntry(consistOfType=IsIdentifiedBy.class, targetFacetType=JSONSchemaFacet.class),
@ResourceSchemaEntry(consistOfType=IsIdentifiedBy.class, targetFacetType=XSDSchemaFacet.class),
@ResourceSchemaEntry(consistOfType=HasContact.class, targetFacetType=ContactFacet.class, min=1),
@ResourceSchemaEntry(targetFacetType=DescriptiveMetadataFacet.class),
@ResourceSchemaEntry(targetFacetType=SubjectFacet.class)
})
public interface Schema extends GCubeResource {
public static final String NAME = "Schema"; // Schema.class.getSimpleName();
public static final String DESCRIPTION = "Collect Schema information through the list of its facets";

View File

@ -3,9 +3,13 @@
*/
package org.gcube.resourcemanagement.model.reference.entities.resources;
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.ServiceImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.CapabilityFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.DescriptiveMetadataFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.SubjectFacet;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
@ -15,7 +19,12 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
*/
@Abstract
@JsonDeserialize(as=ServiceImpl.class)
public interface Service extends Resource {
@ResourceSchema({
@ResourceSchemaEntry(targetFacetType=DescriptiveMetadataFacet.class),
@ResourceSchemaEntry(targetFacetType=SubjectFacet.class),
@ResourceSchemaEntry(targetFacetType=CapabilityFacet.class)
})
public interface Service extends GCubeResource {
public static final String NAME = "Service"; // Service.class.getSimpleName();
public static final String DESCRIPTION = "Collect Service information through the list of its facets";

View File

@ -3,7 +3,6 @@
*/
package org.gcube.resourcemanagement.model.reference.entities.resources;
import org.gcube.informationsystem.model.reference.entities.Resource;
import org.gcube.resourcemanagement.model.impl.entities.resources.SiteImpl;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
@ -13,7 +12,7 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Site
*/
@JsonDeserialize(as=SiteImpl.class)
public interface Site extends Resource {
public interface Site extends GCubeResource {
public static final String NAME = "Site"; // Site.class.getSimpleName();
public static final String DESCRIPTION = "Collect Site information through the list of its facets";

View File

@ -3,7 +3,6 @@
*/
package org.gcube.resourcemanagement.model.reference.entities.resources;
import org.gcube.informationsystem.model.reference.entities.Resource;
import org.gcube.resourcemanagement.model.impl.entities.resources.SoftwareImpl;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
@ -13,7 +12,7 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Software
*/
@JsonDeserialize(as=SoftwareImpl.class)
public interface Software extends Resource {
public interface Software extends GCubeResource {
public static final String NAME = "Software"; // Software.class.getSimpleName();
public static final String DESCRIPTION = "Collect Software information through the list of its facets";