diff --git a/src/main/java/org/gcube/informationsystem/base/impl/ERImpl.java b/src/main/java/org/gcube/informationsystem/base/impl/ERImpl.java index 92d9140..86f285f 100644 --- a/src/main/java/org/gcube/informationsystem/base/impl/ERImpl.java +++ b/src/main/java/org/gcube/informationsystem/base/impl/ERImpl.java @@ -6,7 +6,7 @@ package org.gcube.informationsystem.base.impl; import java.io.StringWriter; import org.gcube.informationsystem.base.reference.ER; -import org.gcube.informationsystem.base.reference.properties.Header; +import org.gcube.informationsystem.model.reference.properties.Header; import org.gcube.informationsystem.utils.ISMapper; import com.fasterxml.jackson.annotation.JsonTypeName; diff --git a/src/main/java/org/gcube/informationsystem/base/impl/entities/BaseEntityImpl.java b/src/main/java/org/gcube/informationsystem/base/impl/entities/BaseEntityImpl.java index 2c5240e..0f40dcd 100644 --- a/src/main/java/org/gcube/informationsystem/base/impl/entities/BaseEntityImpl.java +++ b/src/main/java/org/gcube/informationsystem/base/impl/entities/BaseEntityImpl.java @@ -4,8 +4,8 @@ import java.io.StringWriter; import org.gcube.informationsystem.base.impl.ERImpl; import org.gcube.informationsystem.base.reference.entities.BaseEntity; -import org.gcube.informationsystem.base.reference.properties.Header; import org.gcube.informationsystem.model.reference.entities.Entity; +import org.gcube.informationsystem.model.reference.properties.Header; import org.gcube.informationsystem.utils.ISMapper; import com.fasterxml.jackson.annotation.JsonTypeName; diff --git a/src/main/java/org/gcube/informationsystem/base/reference/ER.java b/src/main/java/org/gcube/informationsystem/base/reference/ER.java index e6a6d6a..29ce103 100644 --- a/src/main/java/org/gcube/informationsystem/base/reference/ER.java +++ b/src/main/java/org/gcube/informationsystem/base/reference/ER.java @@ -3,7 +3,7 @@ */ package org.gcube.informationsystem.base.reference; -import org.gcube.informationsystem.base.reference.properties.Header; +import org.gcube.informationsystem.model.reference.properties.Header; /** * @author Luca Frosini (ISTI - CNR) diff --git a/src/main/java/org/gcube/informationsystem/base/reference/entities/BaseEntity.java b/src/main/java/org/gcube/informationsystem/base/reference/entities/BaseEntity.java index 24bb255..eed14cf 100644 --- a/src/main/java/org/gcube/informationsystem/base/reference/entities/BaseEntity.java +++ b/src/main/java/org/gcube/informationsystem/base/reference/entities/BaseEntity.java @@ -1,7 +1,7 @@ package org.gcube.informationsystem.base.reference.entities; import org.gcube.informationsystem.base.reference.ER; -import org.gcube.informationsystem.base.reference.properties.Header; +import org.gcube.informationsystem.model.reference.properties.Header; import org.gcube.informationsystem.types.annotations.Abstract; import org.gcube.informationsystem.types.annotations.ISProperty; diff --git a/src/main/java/org/gcube/informationsystem/base/reference/relations/BaseRelation.java b/src/main/java/org/gcube/informationsystem/base/reference/relations/BaseRelation.java index 42ecf3a..a246c40 100644 --- a/src/main/java/org/gcube/informationsystem/base/reference/relations/BaseRelation.java +++ b/src/main/java/org/gcube/informationsystem/base/reference/relations/BaseRelation.java @@ -2,7 +2,7 @@ package org.gcube.informationsystem.base.reference.relations; import org.gcube.informationsystem.base.reference.ER; import org.gcube.informationsystem.base.reference.entities.BaseEntity; -import org.gcube.informationsystem.base.reference.properties.Header; +import org.gcube.informationsystem.model.reference.properties.Header; import org.gcube.informationsystem.types.annotations.Abstract; import org.gcube.informationsystem.types.annotations.ISProperty; diff --git a/src/main/java/org/gcube/informationsystem/context/impl/entities/ContextImpl.java b/src/main/java/org/gcube/informationsystem/context/impl/entities/ContextImpl.java index 0dc6903..217dad7 100644 --- a/src/main/java/org/gcube/informationsystem/context/impl/entities/ContextImpl.java +++ b/src/main/java/org/gcube/informationsystem/context/impl/entities/ContextImpl.java @@ -8,10 +8,10 @@ import java.util.List; import java.util.UUID; import org.gcube.informationsystem.base.impl.entities.BaseEntityImpl; -import org.gcube.informationsystem.base.impl.properties.HeaderImpl; import org.gcube.informationsystem.context.impl.relations.IsParentOfImpl; import org.gcube.informationsystem.context.reference.entities.Context; import org.gcube.informationsystem.context.reference.relations.IsParentOf; +import org.gcube.informationsystem.model.impl.properties.HeaderImpl; import com.fasterxml.jackson.annotation.JsonSetter; import com.fasterxml.jackson.annotation.JsonTypeName; diff --git a/src/main/java/org/gcube/informationsystem/model/impl/entities/DummyFacet.java b/src/main/java/org/gcube/informationsystem/model/impl/entities/DummyFacet.java index 7968773..89113b8 100644 --- a/src/main/java/org/gcube/informationsystem/model/impl/entities/DummyFacet.java +++ b/src/main/java/org/gcube/informationsystem/model/impl/entities/DummyFacet.java @@ -5,7 +5,7 @@ package org.gcube.informationsystem.model.impl.entities; import java.util.UUID; -import org.gcube.informationsystem.base.impl.properties.HeaderImpl; +import org.gcube.informationsystem.model.impl.properties.HeaderImpl; import org.gcube.informationsystem.model.reference.entities.Facet; /** diff --git a/src/main/java/org/gcube/informationsystem/model/impl/entities/DummyResource.java b/src/main/java/org/gcube/informationsystem/model/impl/entities/DummyResource.java index 8149c07..bd48cd3 100644 --- a/src/main/java/org/gcube/informationsystem/model/impl/entities/DummyResource.java +++ b/src/main/java/org/gcube/informationsystem/model/impl/entities/DummyResource.java @@ -5,7 +5,7 @@ package org.gcube.informationsystem.model.impl.entities; import java.util.UUID; -import org.gcube.informationsystem.base.impl.properties.HeaderImpl; +import org.gcube.informationsystem.model.impl.properties.HeaderImpl; import org.gcube.informationsystem.model.reference.entities.Resource; /** diff --git a/src/main/java/org/gcube/informationsystem/base/impl/properties/HeaderImpl.java b/src/main/java/org/gcube/informationsystem/model/impl/properties/HeaderImpl.java similarity index 82% rename from src/main/java/org/gcube/informationsystem/base/impl/properties/HeaderImpl.java rename to src/main/java/org/gcube/informationsystem/model/impl/properties/HeaderImpl.java index 8003dac..9d4432f 100644 --- a/src/main/java/org/gcube/informationsystem/base/impl/properties/HeaderImpl.java +++ b/src/main/java/org/gcube/informationsystem/model/impl/properties/HeaderImpl.java @@ -1,12 +1,12 @@ /** * */ -package org.gcube.informationsystem.base.impl.properties; +package org.gcube.informationsystem.model.impl.properties; import java.util.Date; import java.util.UUID; -import org.gcube.informationsystem.base.reference.properties.Header; +import org.gcube.informationsystem.model.reference.properties.Header; import com.fasterxml.jackson.annotation.JsonTypeName; @@ -14,7 +14,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName; * @author Luca Frosini (ISTI - CNR) */ @JsonTypeName(value=Header.NAME) -public final class HeaderImpl extends BasePropertyImpl implements Header { +public final class HeaderImpl extends PropertyImpl implements Header { /** * Generated Serial Version UID diff --git a/src/main/java/org/gcube/informationsystem/base/reference/properties/Header.java b/src/main/java/org/gcube/informationsystem/model/reference/properties/Header.java similarity index 90% rename from src/main/java/org/gcube/informationsystem/base/reference/properties/Header.java rename to src/main/java/org/gcube/informationsystem/model/reference/properties/Header.java index c94939e..a0f6adc 100644 --- a/src/main/java/org/gcube/informationsystem/base/reference/properties/Header.java +++ b/src/main/java/org/gcube/informationsystem/model/reference/properties/Header.java @@ -1,13 +1,13 @@ /** * */ -package org.gcube.informationsystem.base.reference.properties; +package org.gcube.informationsystem.model.reference.properties; import java.util.Date; import java.util.UUID; -import org.gcube.informationsystem.base.impl.properties.HeaderImpl; import org.gcube.informationsystem.base.reference.ISConstants; +import org.gcube.informationsystem.model.impl.properties.HeaderImpl; import org.gcube.informationsystem.types.annotations.ISProperty; import com.fasterxml.jackson.annotation.JsonFormat; @@ -18,7 +18,7 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; * https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Header */ @JsonDeserialize(as=HeaderImpl.class) -public interface Header extends BaseProperty { +public interface Header extends Property { public static final String NAME = "Header"; // Header.class.getSimpleName(); diff --git a/src/main/java/org/gcube/informationsystem/types/impl/TypeDefinitionImpl.java b/src/main/java/org/gcube/informationsystem/types/impl/TypeDefinitionImpl.java index 72c0b32..39b669a 100644 --- a/src/main/java/org/gcube/informationsystem/types/impl/TypeDefinitionImpl.java +++ b/src/main/java/org/gcube/informationsystem/types/impl/TypeDefinitionImpl.java @@ -11,7 +11,6 @@ import org.gcube.informationsystem.base.reference.ISManageable; import org.gcube.informationsystem.base.reference.entities.BaseEntity; import org.gcube.informationsystem.base.reference.properties.BaseProperty; import org.gcube.informationsystem.base.reference.relations.BaseRelation; -import org.gcube.informationsystem.model.reference.entities.Resource; import org.gcube.informationsystem.types.TypeBinder; import org.gcube.informationsystem.types.annotations.Abstract; import org.gcube.informationsystem.types.annotations.ISProperty; @@ -45,10 +44,8 @@ public class TypeDefinitionImpl extends ERImpl implements TypeDefinition { @JsonProperty(value="abstract") protected boolean abstractType; protected Set superClasses; - protected Set properties; - - protected static Set retrieveSuperClasses(Class type, Class baseClass, String topSuperClass){ + protected Set retrieveSuperClasses(Class type, Class baseClass, String topSuperClass){ Set interfaceList = new HashSet<>(); if(type==baseClass){ @@ -74,7 +71,7 @@ public class TypeDefinitionImpl extends ERImpl implements TypeDefinition { return interfaceList; } - private static Set retrieveListOfProperties(Class type){ + protected Set retrieveListOfProperties(Class type){ Set properties = new HashSet<>(); for (Method m : type.getDeclaredMethods()){ m.setAccessible(true); @@ -140,10 +137,6 @@ public class TypeDefinitionImpl extends ERImpl implements TypeDefinition { this.abstractType = true; } - if(!Resource.class.isAssignableFrom(clz)){ - this.properties = retrieveListOfProperties(clz); - } - } @Override @@ -165,10 +158,5 @@ public class TypeDefinitionImpl extends ERImpl implements TypeDefinition { public Set getSuperClasses() { return superClasses; } - - @Override - public Set getProperties() { - return properties; - } } diff --git a/src/main/java/org/gcube/informationsystem/types/impl/entities/EntityTypeDefinitionImpl.java b/src/main/java/org/gcube/informationsystem/types/impl/entities/EntityTypeDefinitionImpl.java index 9ba01cb..972392e 100644 --- a/src/main/java/org/gcube/informationsystem/types/impl/entities/EntityTypeDefinitionImpl.java +++ b/src/main/java/org/gcube/informationsystem/types/impl/entities/EntityTypeDefinitionImpl.java @@ -3,11 +3,10 @@ package org.gcube.informationsystem.types.impl.entities; import java.io.StringWriter; import org.gcube.informationsystem.base.reference.entities.BaseEntity; -import org.gcube.informationsystem.base.reference.properties.Header; import org.gcube.informationsystem.context.reference.entities.Context; -import org.gcube.informationsystem.model.reference.entities.Entity; import org.gcube.informationsystem.model.reference.entities.Facet; import org.gcube.informationsystem.model.reference.entities.Resource; +import org.gcube.informationsystem.model.reference.properties.Header; import org.gcube.informationsystem.types.impl.TypeDefinitionImpl; import org.gcube.informationsystem.types.reference.entities.EntityTypeDefinition; import org.gcube.informationsystem.utils.ISMapper; @@ -31,6 +30,11 @@ public class EntityTypeDefinitionImpl extends TypeDefinitionImpl implements Enti Class c = (Class) clz; entityTypeDefinition = new ResourceTypeDefinitionImpl(c); return entityTypeDefinition; + } else if(Facet.class.isAssignableFrom(clz)){ + @SuppressWarnings("unchecked") + Class c = (Class) clz; + entityTypeDefinition = new FacetTypeDefinitionImpl(c); + return entityTypeDefinition; } else { entityTypeDefinition = new EntityTypeDefinitionImpl(clz); } @@ -45,11 +49,7 @@ public class EntityTypeDefinitionImpl extends TypeDefinitionImpl implements Enti public EntityTypeDefinitionImpl(Class clz) { super(clz); - if(Facet.class.isAssignableFrom(clz)){ - @SuppressWarnings("unchecked") - Class c = (Class) clz; - this.superClasses = retrieveSuperClasses(c, Facet.class, Entity.NAME); - } else if(EntityTypeDefinition.class.isAssignableFrom(clz)){ + if(EntityTypeDefinition.class.isAssignableFrom(clz)){ @SuppressWarnings("unchecked") Class c = (Class) clz; this.superClasses = retrieveSuperClasses(c, EntityTypeDefinition.class, BaseEntity.NAME); diff --git a/src/main/java/org/gcube/informationsystem/types/impl/entities/FacetTypeDefinitionImpl.java b/src/main/java/org/gcube/informationsystem/types/impl/entities/FacetTypeDefinitionImpl.java new file mode 100644 index 0000000..9e773e3 --- /dev/null +++ b/src/main/java/org/gcube/informationsystem/types/impl/entities/FacetTypeDefinitionImpl.java @@ -0,0 +1,39 @@ +package org.gcube.informationsystem.types.impl.entities; + +import java.util.Set; + +import org.gcube.informationsystem.model.reference.entities.Entity; +import org.gcube.informationsystem.model.reference.entities.Facet; +import org.gcube.informationsystem.types.reference.entities.FacetTypeDefinition; +import org.gcube.informationsystem.types.reference.properties.PropertyDefinition; + +import com.fasterxml.jackson.annotation.JsonTypeName; + +@JsonTypeName(value=FacetTypeDefinition.NAME) +public class FacetTypeDefinitionImpl extends EntityTypeDefinitionImpl implements FacetTypeDefinition { + + /** + * Generated Serial Version UID + */ + private static final long serialVersionUID = 6268161046955738969L; + + protected Set properties; + + protected FacetTypeDefinitionImpl() { + super(); + } + + public FacetTypeDefinitionImpl(Class clz) { + super(clz); + + Class c = (Class) clz; + this.superClasses = retrieveSuperClasses(c, Facet.class, Entity.NAME); + + this.properties = retrieveListOfProperties(clz); + } + + @Override + public Set getProperties() { + return properties; + } +} diff --git a/src/main/java/org/gcube/informationsystem/types/impl/entities/ResourceTypeDefinitionImpl.java b/src/main/java/org/gcube/informationsystem/types/impl/entities/ResourceTypeDefinitionImpl.java index 5e6a553..0befae7 100644 --- a/src/main/java/org/gcube/informationsystem/types/impl/entities/ResourceTypeDefinitionImpl.java +++ b/src/main/java/org/gcube/informationsystem/types/impl/entities/ResourceTypeDefinitionImpl.java @@ -2,7 +2,6 @@ package org.gcube.informationsystem.types.impl.entities; import java.util.ArrayList; import java.util.List; -import java.util.Set; import org.gcube.informationsystem.model.reference.entities.Resource; import org.gcube.informationsystem.types.TypeBinder; @@ -11,10 +10,8 @@ import org.gcube.informationsystem.types.annotations.ResourceSchemaEntry; import org.gcube.informationsystem.types.annotations.ResourceSchemaRelatedEntry; import org.gcube.informationsystem.types.impl.properties.ResourceEntryDefinitionImpl; import org.gcube.informationsystem.types.reference.entities.ResourceTypeDefinition; -import org.gcube.informationsystem.types.reference.properties.PropertyDefinition; import org.gcube.informationsystem.types.reference.properties.ResourceEntryDefinition; -import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonTypeName; @JsonTypeName(value=ResourceTypeDefinition.NAME) @@ -75,10 +72,4 @@ public class ResourceTypeDefinitionImpl extends EntityTypeDefinitionImpl impleme return resources; } - @Override - @JsonIgnore - public Set getProperties() { - return properties; - } - } diff --git a/src/main/java/org/gcube/informationsystem/types/impl/properties/PropertyTypeDefinitionImpl.java b/src/main/java/org/gcube/informationsystem/types/impl/properties/PropertyTypeDefinitionImpl.java index 276cd0d..67cc533 100644 --- a/src/main/java/org/gcube/informationsystem/types/impl/properties/PropertyTypeDefinitionImpl.java +++ b/src/main/java/org/gcube/informationsystem/types/impl/properties/PropertyTypeDefinitionImpl.java @@ -1,7 +1,10 @@ package org.gcube.informationsystem.types.impl.properties; +import java.util.Set; + import org.gcube.informationsystem.base.reference.properties.BaseProperty; import org.gcube.informationsystem.types.impl.TypeDefinitionImpl; +import org.gcube.informationsystem.types.reference.properties.PropertyDefinition; import org.gcube.informationsystem.types.reference.properties.PropertyTypeDefinition; import com.fasterxml.jackson.annotation.JsonTypeName; @@ -15,6 +18,8 @@ public final class PropertyTypeDefinitionImpl

extends Ty */ private static final long serialVersionUID = 7532701373450638829L; + protected Set properties; + protected PropertyTypeDefinitionImpl() { super(); } @@ -23,6 +28,12 @@ public final class PropertyTypeDefinitionImpl

extends Ty super(clz); this.superClasses = retrieveSuperClasses(clz, BaseProperty.class, clz == BaseProperty.class ? null : BaseProperty.NAME); + this.properties = retrieveListOfProperties(clz); + } + + @Override + public Set getProperties() { + return properties; } } \ No newline at end of file diff --git a/src/main/java/org/gcube/informationsystem/types/impl/relations/RelationTypeDefinitionImpl.java b/src/main/java/org/gcube/informationsystem/types/impl/relations/RelationTypeDefinitionImpl.java index 054d02f..0daf2d8 100644 --- a/src/main/java/org/gcube/informationsystem/types/impl/relations/RelationTypeDefinitionImpl.java +++ b/src/main/java/org/gcube/informationsystem/types/impl/relations/RelationTypeDefinitionImpl.java @@ -2,6 +2,7 @@ package org.gcube.informationsystem.types.impl.relations; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; +import java.util.Set; import org.gcube.informationsystem.base.reference.entities.BaseEntity; import org.gcube.informationsystem.base.reference.relations.BaseRelation; @@ -14,6 +15,7 @@ import org.gcube.informationsystem.model.reference.relations.Relation; import org.gcube.informationsystem.types.impl.TypeDefinitionImpl; import org.gcube.informationsystem.types.impl.entities.EntityTypeDefinitionImpl; import org.gcube.informationsystem.types.reference.entities.EntityTypeDefinition; +import org.gcube.informationsystem.types.reference.properties.PropertyDefinition; import org.gcube.informationsystem.types.reference.relations.RelationTypeDefinition; import com.fasterxml.jackson.annotation.JsonTypeName; @@ -26,6 +28,8 @@ public final class RelationTypeDefinitionImpl extends TypeDefinitionImpl impleme */ private static final long serialVersionUID = 2221831081869571296L; + protected Set properties; + protected RelationTypeDefinitionImpl() { super(); } @@ -55,6 +59,8 @@ public final class RelationTypeDefinitionImpl extends TypeDefinitionImpl impleme throw new RuntimeException("Type Hierachy Error"); } + this.properties = retrieveListOfProperties(clz); + discoverSourceAndTarget(clz); } @@ -92,6 +98,12 @@ public final class RelationTypeDefinitionImpl extends TypeDefinitionImpl impleme this.target = new EntityTypeDefinitionImpl(targetClass); } + @Override + public Set getProperties() { + return properties; + } + + /* * Java does not support class multiple inheritance. * TypeDefinitionImpl is the superclass so that this class does not inherits the methods and field of BaseRelationImpl diff --git a/src/main/java/org/gcube/informationsystem/types/reference/PropertyCapableTypeDefinition.java b/src/main/java/org/gcube/informationsystem/types/reference/PropertyCapableTypeDefinition.java new file mode 100644 index 0000000..79ded0b --- /dev/null +++ b/src/main/java/org/gcube/informationsystem/types/reference/PropertyCapableTypeDefinition.java @@ -0,0 +1,17 @@ +package org.gcube.informationsystem.types.reference; + +import java.util.Set; + +import org.gcube.informationsystem.types.reference.properties.PropertyDefinition; + +/** + * @author Luca Frosini (ISTI - CNR) + * This is just an useful interface to capture all type definition having properties + * such as FacetTypeDefinition, PropertyTypeDefinition, RelationTypeDefinition + */ +public interface PropertyCapableTypeDefinition { + + public static final String PROPERTIES_PROPERTY = "properties"; + + public Set getProperties(); +} diff --git a/src/main/java/org/gcube/informationsystem/types/reference/TypeDefinition.java b/src/main/java/org/gcube/informationsystem/types/reference/TypeDefinition.java index 69de249..433f277 100644 --- a/src/main/java/org/gcube/informationsystem/types/reference/TypeDefinition.java +++ b/src/main/java/org/gcube/informationsystem/types/reference/TypeDefinition.java @@ -5,7 +5,6 @@ import java.util.Set; import org.gcube.informationsystem.base.reference.ER; import org.gcube.informationsystem.types.annotations.Abstract; import org.gcube.informationsystem.types.annotations.ISProperty; -import org.gcube.informationsystem.types.reference.properties.PropertyDefinition; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @@ -20,7 +19,6 @@ public interface TypeDefinition extends ER { public static final String DESCRIPTION_PROPERTY = "description"; public static final String ABSTRACT_PROPERTY = "abstract"; public static final String TYPE_SUPERCLASSES_PROPERTY = "superClasses"; - public static final String PROPERTIES_PROPERTY = "properties"; @ISProperty(name = NAME_PROPERTY, readonly = true, mandatory = true, nullable = false) public String getName(); @@ -33,8 +31,5 @@ public interface TypeDefinition extends ER { @ISProperty(name = TYPE_SUPERCLASSES_PROPERTY, readonly = true, mandatory = true, nullable = false) public Set getSuperClasses(); - - @ISProperty(name = PROPERTIES_PROPERTY, readonly = false, mandatory = true, nullable = false) - public Set getProperties(); } diff --git a/src/main/java/org/gcube/informationsystem/types/reference/entities/EntityTypeDefinition.java b/src/main/java/org/gcube/informationsystem/types/reference/entities/EntityTypeDefinition.java index 19c9eb6..328c1a7 100644 --- a/src/main/java/org/gcube/informationsystem/types/reference/entities/EntityTypeDefinition.java +++ b/src/main/java/org/gcube/informationsystem/types/reference/entities/EntityTypeDefinition.java @@ -6,13 +6,12 @@ import org.gcube.informationsystem.base.reference.entities.BaseEntity; import org.gcube.informationsystem.types.annotations.ISProperty; import org.gcube.informationsystem.types.impl.entities.EntityTypeDefinitionImpl; import org.gcube.informationsystem.types.reference.TypeDefinition; -import org.gcube.informationsystem.types.reference.properties.PropertyDefinition; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; @JsonIgnoreProperties(ignoreUnknown = true) -@JsonDeserialize(as = EntityTypeDefinitionImpl.class) +@JsonDeserialize(as = EntityTypeDefinitionImpl.class) // Do not uncomment to manage subclasses public interface EntityTypeDefinition extends TypeDefinition, BaseEntity { public static final String NAME = "EntityTypeDefinition"; //EntityTypeDefinition.class.getSimpleName(); @@ -35,10 +34,6 @@ public interface EntityTypeDefinition extends TypeDefinition, BaseEntity { @ISProperty(name = TypeDefinition.TYPE_SUPERCLASSES_PROPERTY, readonly = true, mandatory = true, nullable = false) public Set getSuperClasses(); - @Override - @ISProperty(name = TypeDefinition.PROPERTIES_PROPERTY, readonly = false, mandatory = true, nullable = false) - public Set getProperties(); - /* TypeDefinition is just a Java useful class. The type is not created in the IS. Hence the fields must be redefined */ diff --git a/src/main/java/org/gcube/informationsystem/types/reference/entities/FacetTypeDefinition.java b/src/main/java/org/gcube/informationsystem/types/reference/entities/FacetTypeDefinition.java new file mode 100644 index 0000000..b97ca73 --- /dev/null +++ b/src/main/java/org/gcube/informationsystem/types/reference/entities/FacetTypeDefinition.java @@ -0,0 +1,25 @@ +package org.gcube.informationsystem.types.reference.entities; + +import java.util.Set; + +import org.gcube.informationsystem.base.reference.entities.BaseEntity; +import org.gcube.informationsystem.types.annotations.ISProperty; +import org.gcube.informationsystem.types.impl.entities.FacetTypeDefinitionImpl; +import org.gcube.informationsystem.types.reference.PropertyCapableTypeDefinition; +import org.gcube.informationsystem.types.reference.properties.PropertyDefinition; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; + +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonDeserialize(as = FacetTypeDefinitionImpl.class) +public interface FacetTypeDefinition extends EntityTypeDefinition, BaseEntity, PropertyCapableTypeDefinition { + + public static final String NAME = "FacetTypeDefinition"; //FacetTypeDefinition.class.getSimpleName(); + + @Override + @ISProperty(name = PropertyCapableTypeDefinition.PROPERTIES_PROPERTY, readonly = false, mandatory = true, nullable = false) + public Set getProperties(); + + +} diff --git a/src/main/java/org/gcube/informationsystem/types/reference/properties/PropertyTypeDefinition.java b/src/main/java/org/gcube/informationsystem/types/reference/properties/PropertyTypeDefinition.java index 9a63a70..e8377c5 100644 --- a/src/main/java/org/gcube/informationsystem/types/reference/properties/PropertyTypeDefinition.java +++ b/src/main/java/org/gcube/informationsystem/types/reference/properties/PropertyTypeDefinition.java @@ -4,9 +4,10 @@ import java.util.Set; import org.gcube.informationsystem.base.reference.ER; import org.gcube.informationsystem.base.reference.properties.BaseProperty; -import org.gcube.informationsystem.base.reference.properties.Header; +import org.gcube.informationsystem.model.reference.properties.Header; import org.gcube.informationsystem.types.annotations.ISProperty; import org.gcube.informationsystem.types.impl.properties.PropertyTypeDefinitionImpl; +import org.gcube.informationsystem.types.reference.PropertyCapableTypeDefinition; import org.gcube.informationsystem.types.reference.TypeDefinition; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @@ -14,7 +15,7 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; @JsonIgnoreProperties(ignoreUnknown = true) @JsonDeserialize(as = PropertyTypeDefinitionImpl.class) -public interface PropertyTypeDefinition

extends TypeDefinition, BaseProperty { +public interface PropertyTypeDefinition

extends TypeDefinition, BaseProperty, PropertyCapableTypeDefinition { public static final String NAME = "PropertyTypeDefinition"; // PropertyTypeDefinition.class.getSimpleName(); @@ -40,9 +41,9 @@ public interface PropertyTypeDefinition

extends TypeDefi @Override @ISProperty(name = TypeDefinition.TYPE_SUPERCLASSES_PROPERTY, readonly = true, mandatory = true, nullable = false) public Set getSuperClasses(); - + @Override - @ISProperty(name = TypeDefinition.PROPERTIES_PROPERTY, readonly = false, mandatory = true, nullable = false) + @ISProperty(name = PropertyCapableTypeDefinition.PROPERTIES_PROPERTY, readonly = false, mandatory = true, nullable = false) public Set getProperties(); /* TypeDefinition is just a Java useful class. The type is not created in the IS. Hence the fields must be redefined */ diff --git a/src/main/java/org/gcube/informationsystem/types/reference/relations/RelationTypeDefinition.java b/src/main/java/org/gcube/informationsystem/types/reference/relations/RelationTypeDefinition.java index fb0b7e2..64df936 100644 --- a/src/main/java/org/gcube/informationsystem/types/reference/relations/RelationTypeDefinition.java +++ b/src/main/java/org/gcube/informationsystem/types/reference/relations/RelationTypeDefinition.java @@ -5,6 +5,7 @@ import java.util.Set; import org.gcube.informationsystem.base.reference.relations.BaseRelation; import org.gcube.informationsystem.types.annotations.ISProperty; import org.gcube.informationsystem.types.impl.relations.RelationTypeDefinitionImpl; +import org.gcube.informationsystem.types.reference.PropertyCapableTypeDefinition; import org.gcube.informationsystem.types.reference.TypeDefinition; import org.gcube.informationsystem.types.reference.entities.EntityTypeDefinition; import org.gcube.informationsystem.types.reference.properties.PropertyDefinition; @@ -14,7 +15,7 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; @JsonIgnoreProperties(ignoreUnknown = true) @JsonDeserialize(as = RelationTypeDefinitionImpl.class) -public interface RelationTypeDefinition extends TypeDefinition, BaseRelation { +public interface RelationTypeDefinition extends TypeDefinition, BaseRelation, PropertyCapableTypeDefinition { public static final String NAME = "RelationTypeDefinition"; // PropertyTypeDefiniton.class.getSimpleName(); @@ -37,7 +38,7 @@ public interface RelationTypeDefinition extends TypeDefinition, BaseRelation getSuperClasses(); @Override - @ISProperty(name = TypeDefinition.PROPERTIES_PROPERTY, readonly = false, mandatory = true, nullable = false) + @ISProperty(name = PropertyCapableTypeDefinition.PROPERTIES_PROPERTY, readonly = false, mandatory = true, nullable = false) public Set getProperties(); @Override diff --git a/src/main/java/org/gcube/informationsystem/utils/Utility.java b/src/main/java/org/gcube/informationsystem/utils/Utility.java index ee16a11..984a8b3 100644 --- a/src/main/java/org/gcube/informationsystem/utils/Utility.java +++ b/src/main/java/org/gcube/informationsystem/utils/Utility.java @@ -6,8 +6,8 @@ package org.gcube.informationsystem.utils; import java.io.IOException; import java.util.UUID; -import org.gcube.informationsystem.base.reference.properties.Header; import org.gcube.informationsystem.model.reference.entities.Entity; +import org.gcube.informationsystem.model.reference.properties.Header; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/test/java/org/gcube/informationsystem/base/impl/properties/HeaderTest.java b/src/test/java/org/gcube/informationsystem/model/impl/properties/HeaderTest.java similarity index 81% rename from src/test/java/org/gcube/informationsystem/base/impl/properties/HeaderTest.java rename to src/test/java/org/gcube/informationsystem/model/impl/properties/HeaderTest.java index d37ced6..73e1f51 100644 --- a/src/test/java/org/gcube/informationsystem/base/impl/properties/HeaderTest.java +++ b/src/test/java/org/gcube/informationsystem/model/impl/properties/HeaderTest.java @@ -1,11 +1,11 @@ -package org.gcube.informationsystem.base.impl.properties; +package org.gcube.informationsystem.model.impl.properties; import java.util.Calendar; import java.util.Date; import java.util.UUID; -import org.gcube.informationsystem.base.impl.properties.HeaderImpl; -import org.gcube.informationsystem.base.reference.properties.Header; +import org.gcube.informationsystem.model.impl.properties.HeaderImpl; +import org.gcube.informationsystem.model.reference.properties.Header; import org.gcube.informationsystem.utils.ISMapper; import org.junit.Assert; import org.junit.Test; diff --git a/src/test/java/org/gcube/informationsystem/types/EntitySchemaDefinition.java b/src/test/java/org/gcube/informationsystem/types/EntitySchemaDefinition.java index 0c24152..c003c73 100644 --- a/src/test/java/org/gcube/informationsystem/types/EntitySchemaDefinition.java +++ b/src/test/java/org/gcube/informationsystem/types/EntitySchemaDefinition.java @@ -5,8 +5,8 @@ package org.gcube.informationsystem.types; import org.gcube.informationsystem.base.reference.ISManageable; import org.gcube.informationsystem.base.reference.properties.BaseProperty; -import org.gcube.informationsystem.base.reference.properties.Header; import org.gcube.informationsystem.model.reference.entities.Resource; +import org.gcube.informationsystem.model.reference.properties.Header; import org.gcube.informationsystem.model.reference.relations.IsRelatedTo; import org.junit.Test; import org.slf4j.Logger; diff --git a/src/test/java/org/gcube/informationsystem/types/SerializationTest.java b/src/test/java/org/gcube/informationsystem/types/SerializationTest.java index d934bf2..34be399 100644 --- a/src/test/java/org/gcube/informationsystem/types/SerializationTest.java +++ b/src/test/java/org/gcube/informationsystem/types/SerializationTest.java @@ -1,8 +1,8 @@ package org.gcube.informationsystem.types; -import org.gcube.informationsystem.base.reference.properties.Header; import org.gcube.informationsystem.context.reference.relations.IsParentOf; import org.gcube.informationsystem.model.impl.properties.PropagationConstraintImpl; +import org.gcube.informationsystem.model.reference.properties.Header; import org.gcube.informationsystem.model.reference.properties.PropagationConstraint; import org.gcube.informationsystem.model.reference.properties.PropagationConstraint.AddConstraint; import org.gcube.informationsystem.model.reference.properties.PropagationConstraint.RemoveConstraint;