diff --git a/src/main/java/org/gcube/informationsystem/types/impl/entities/EntityTypeImpl.java b/src/main/java/org/gcube/informationsystem/types/impl/entities/EntityTypeImpl.java index 7d49f2a..2d27bb6 100644 --- a/src/main/java/org/gcube/informationsystem/types/impl/entities/EntityTypeImpl.java +++ b/src/main/java/org/gcube/informationsystem/types/impl/entities/EntityTypeImpl.java @@ -3,6 +3,7 @@ package org.gcube.informationsystem.types.impl.entities; import java.io.StringWriter; import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName; +import org.gcube.informationsystem.base.reference.AccessType; import org.gcube.informationsystem.base.reference.entities.EntityElement; import org.gcube.informationsystem.context.reference.entities.Context; import org.gcube.informationsystem.model.reference.entities.Facet; @@ -97,5 +98,23 @@ public class EntityTypeImpl extends TypeImpl implements EntityType { } } } + + @Override + public AccessType getAccessType() { + + if(name.compareTo(Context.NAME)==0) { + return AccessType.CONTEXT; + } + + if(name.compareTo(EntityType.NAME)==0) { + return AccessType.ENTITY_TYPE; + } + + if(name.compareTo(EntityElement.NAME)==0) { + return AccessType.ENTITY_ELEMENT; + } + + return AccessType.ENTITY; + } } diff --git a/src/main/java/org/gcube/informationsystem/types/impl/properties/PropertyTypeImpl.java b/src/main/java/org/gcube/informationsystem/types/impl/properties/PropertyTypeImpl.java index 6a88fea..1a840f1 100644 --- a/src/main/java/org/gcube/informationsystem/types/impl/properties/PropertyTypeImpl.java +++ b/src/main/java/org/gcube/informationsystem/types/impl/properties/PropertyTypeImpl.java @@ -3,6 +3,7 @@ package org.gcube.informationsystem.types.impl.properties; import java.util.Set; import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName; +import org.gcube.informationsystem.base.reference.AccessType; import org.gcube.informationsystem.base.reference.properties.PropertyElement; import org.gcube.informationsystem.types.impl.TypeImpl; import org.gcube.informationsystem.types.reference.properties.PropertyDefinition; @@ -39,4 +40,13 @@ public final class PropertyTypeImpl

extends TypeImpl return properties; } + @Override + public AccessType getAccessType() { + + if(name.compareTo(PropertyElement.NAME)==0) { + return AccessType.PROPERTY_ELEMENT; + } + + return AccessType.PROPERTY; + } } \ No newline at end of file diff --git a/src/main/java/org/gcube/informationsystem/types/impl/relations/RelationTypeImpl.java b/src/main/java/org/gcube/informationsystem/types/impl/relations/RelationTypeImpl.java index 645e808..c1cfacf 100644 --- a/src/main/java/org/gcube/informationsystem/types/impl/relations/RelationTypeImpl.java +++ b/src/main/java/org/gcube/informationsystem/types/impl/relations/RelationTypeImpl.java @@ -4,6 +4,7 @@ import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName; +import org.gcube.informationsystem.base.reference.AccessType; import org.gcube.informationsystem.base.reference.entities.EntityElement; import org.gcube.informationsystem.base.reference.relations.RelationElement; import org.gcube.informationsystem.context.reference.relations.IsParentOf; @@ -132,4 +133,21 @@ public class RelationTypeImpl this.target = target; } + @Override + public AccessType getAccessType() { + + if(name.compareTo(IsParentOf.NAME)==0) { + return AccessType.IS_PARENT_OF; + } + + if(name.compareTo(RelationType.NAME)==0) { + return AccessType.RELATION_TYPE; + } + + if(name.compareTo(RelationElement.NAME)==0) { + return AccessType.RELATION_ELEMENT; + } + + return AccessType.RELATION; + } } diff --git a/src/main/java/org/gcube/informationsystem/types/reference/Type.java b/src/main/java/org/gcube/informationsystem/types/reference/Type.java index 4ec070c..bd5159b 100644 --- a/src/main/java/org/gcube/informationsystem/types/reference/Type.java +++ b/src/main/java/org/gcube/informationsystem/types/reference/Type.java @@ -6,6 +6,7 @@ import java.util.Set; import org.gcube.com.fasterxml.jackson.annotation.JsonGetter; import org.gcube.com.fasterxml.jackson.annotation.JsonIgnore; import org.gcube.com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import org.gcube.informationsystem.base.reference.AccessType; import org.gcube.informationsystem.base.reference.IdentifiableElement; import org.gcube.informationsystem.types.annotations.Abstract; import org.gcube.informationsystem.types.reference.properties.PropertyDefinition; @@ -52,5 +53,10 @@ public interface Type extends IdentifiableElement { public Set getSuperClasses(); public Set getProperties(); + + @JsonIgnore + public default AccessType getAccessType() { + return null; + } } diff --git a/src/main/java/org/gcube/informationsystem/types/reference/entities/EntityType.java b/src/main/java/org/gcube/informationsystem/types/reference/entities/EntityType.java index 1127ebc..ad60a87 100644 --- a/src/main/java/org/gcube/informationsystem/types/reference/entities/EntityType.java +++ b/src/main/java/org/gcube/informationsystem/types/reference/entities/EntityType.java @@ -4,6 +4,7 @@ import java.util.Set; import org.gcube.com.fasterxml.jackson.annotation.JsonIgnoreProperties; import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import org.gcube.informationsystem.base.reference.AccessType; import org.gcube.informationsystem.base.reference.entities.EntityElement; import org.gcube.informationsystem.types.annotations.ISProperty; import org.gcube.informationsystem.types.impl.entities.EntityTypeImpl; @@ -43,5 +44,9 @@ public interface EntityType extends Type, EntityElement { /* {@link Type} is just a Java useful class. The type is not created in the IS. Hence the fields must be redefined */ + @Override + public default AccessType getAccessType() { + return AccessType.ENTITY_ELEMENT; + } } diff --git a/src/main/java/org/gcube/informationsystem/types/reference/entities/FacetType.java b/src/main/java/org/gcube/informationsystem/types/reference/entities/FacetType.java index 68b7bb3..9f8e09d 100644 --- a/src/main/java/org/gcube/informationsystem/types/reference/entities/FacetType.java +++ b/src/main/java/org/gcube/informationsystem/types/reference/entities/FacetType.java @@ -4,6 +4,7 @@ import java.util.Set; import org.gcube.com.fasterxml.jackson.annotation.JsonIgnoreProperties; import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import org.gcube.informationsystem.base.reference.AccessType; import org.gcube.informationsystem.types.annotations.ISProperty; import org.gcube.informationsystem.types.impl.entities.FacetTypeImpl; import org.gcube.informationsystem.types.reference.Change; @@ -26,5 +27,9 @@ public interface FacetType extends EntityType { @ISProperty(name = Type.PROPERTIES_PROPERTY, readonly = false, mandatory = true, nullable = false) public Set getProperties(); + @Override + public default AccessType getAccessType() { + return AccessType.FACET; + } } diff --git a/src/main/java/org/gcube/informationsystem/types/reference/entities/ResourceType.java b/src/main/java/org/gcube/informationsystem/types/reference/entities/ResourceType.java index dbd8e2f..e5dae3e 100644 --- a/src/main/java/org/gcube/informationsystem/types/reference/entities/ResourceType.java +++ b/src/main/java/org/gcube/informationsystem/types/reference/entities/ResourceType.java @@ -3,6 +3,7 @@ package org.gcube.informationsystem.types.reference.entities; import java.util.List; import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import org.gcube.informationsystem.base.reference.AccessType; import org.gcube.informationsystem.types.annotations.ISProperty; import org.gcube.informationsystem.types.impl.entities.ResourceTypeImpl; import org.gcube.informationsystem.types.reference.Change; @@ -29,4 +30,9 @@ public interface ResourceType extends EntityType { @ISProperty(name = RESOURCES_PROPERTY, readonly = false, mandatory = true, nullable = false) public List getResources(); + @Override + public default AccessType getAccessType() { + return AccessType.RESOURCE; + } + } diff --git a/src/main/java/org/gcube/informationsystem/types/reference/properties/PropertyType.java b/src/main/java/org/gcube/informationsystem/types/reference/properties/PropertyType.java index 095ca6a..c1b3151 100644 --- a/src/main/java/org/gcube/informationsystem/types/reference/properties/PropertyType.java +++ b/src/main/java/org/gcube/informationsystem/types/reference/properties/PropertyType.java @@ -4,6 +4,7 @@ import java.util.Set; import org.gcube.com.fasterxml.jackson.annotation.JsonIgnoreProperties; import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import org.gcube.informationsystem.base.reference.AccessType; import org.gcube.informationsystem.base.reference.IdentifiableElement; import org.gcube.informationsystem.base.reference.properties.PropertyElement; import org.gcube.informationsystem.model.reference.properties.Header; @@ -52,5 +53,8 @@ public interface PropertyType

extends PropertyElement public Set getProperties(); /* TypeDefinition is just a Java useful class. The type is not created in the IS. Hence the fields must be redefined */ - + @Override + public default AccessType getAccessType() { + return AccessType.PROPERTY_ELEMENT; + } } diff --git a/src/main/java/org/gcube/informationsystem/types/reference/relations/ConsistsOfType.java b/src/main/java/org/gcube/informationsystem/types/reference/relations/ConsistsOfType.java index 7bee74b..4fb586c 100644 --- a/src/main/java/org/gcube/informationsystem/types/reference/relations/ConsistsOfType.java +++ b/src/main/java/org/gcube/informationsystem/types/reference/relations/ConsistsOfType.java @@ -1,6 +1,7 @@ package org.gcube.informationsystem.types.reference.relations; import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import org.gcube.informationsystem.base.reference.AccessType; import org.gcube.informationsystem.types.impl.relations.ConsistsOfTypeImpl; import org.gcube.informationsystem.types.reference.Change; import org.gcube.informationsystem.types.reference.TypeMetadata; @@ -18,4 +19,9 @@ public interface ConsistsOfType extends RelationType { public static final String NAME = "ConsistsOfType"; // ConsistsOfType.class.getSimpleName(); + @Override + public default AccessType getAccessType() { + return AccessType.CONSISTS_OF; + } + } diff --git a/src/main/java/org/gcube/informationsystem/types/reference/relations/IsRelatedToType.java b/src/main/java/org/gcube/informationsystem/types/reference/relations/IsRelatedToType.java index 7c4c749..d3854be 100644 --- a/src/main/java/org/gcube/informationsystem/types/reference/relations/IsRelatedToType.java +++ b/src/main/java/org/gcube/informationsystem/types/reference/relations/IsRelatedToType.java @@ -1,6 +1,7 @@ package org.gcube.informationsystem.types.reference.relations; import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import org.gcube.informationsystem.base.reference.AccessType; import org.gcube.informationsystem.types.impl.relations.IsRelatedToTypeImpl; import org.gcube.informationsystem.types.reference.Change; import org.gcube.informationsystem.types.reference.TypeMetadata; @@ -17,4 +18,9 @@ public interface IsRelatedToType extends RelationType @JsonGetter(value=TARGET_PROPERTY) public String getTargetType();*/ + @Override + public default AccessType getAccessType() { + return AccessType.RELATION_ELEMENT; + } + }