diff --git a/src/main/java/org/gcube/informationsystem/base/reference/AccessType.java b/src/main/java/org/gcube/informationsystem/base/reference/AccessType.java index 50cbcaa..8b0531d 100644 --- a/src/main/java/org/gcube/informationsystem/base/reference/AccessType.java +++ b/src/main/java/org/gcube/informationsystem/base/reference/AccessType.java @@ -34,6 +34,12 @@ import org.gcube.informationsystem.model.reference.properties.Property; import org.gcube.informationsystem.model.reference.relations.ConsistsOf; import org.gcube.informationsystem.model.reference.relations.IsRelatedTo; import org.gcube.informationsystem.model.reference.relations.Relation; +import org.gcube.informationsystem.querytemplates.impl.entities.QueryTemplateImpl; +import org.gcube.informationsystem.querytemplates.impl.properties.TemplatePropertyImpl; +import org.gcube.informationsystem.querytemplates.impl.properties.TemplateVariableImpl; +import org.gcube.informationsystem.querytemplates.reference.entities.QueryTemplate; +import org.gcube.informationsystem.querytemplates.reference.properties.TemplateProperty; +import org.gcube.informationsystem.querytemplates.reference.properties.TemplateVariable; import org.gcube.informationsystem.types.impl.entities.EntityTypeImpl; import org.gcube.informationsystem.types.impl.properties.PropertyDefinitionImpl; import org.gcube.informationsystem.types.impl.properties.PropertyTypeImpl; @@ -55,11 +61,14 @@ public enum AccessType { PROPERTY_ELEMENT(PropertyElement.class, PropertyElement.NAME, PropertyElementImpl.class, null), PROPERTY_DEFINITION(PropertyDefinition.class, PropertyDefinition.NAME, PropertyDefinitionImpl.class, null), PROPERTY_TYPE(PropertyType.class, PropertyType.NAME, PropertyTypeImpl.class, null), + TEMPLATE_PROPERTY(TemplateProperty.class, TemplateProperty.NAME, TemplatePropertyImpl.class, null), + TEMPLATE_VARIABLE(TemplateVariable.class, TemplateVariable.NAME, TemplateVariableImpl.class, null), PROPERTY(Property.class, Property.NAME, PropertyImpl.class, null), ENTITY_ELEMENT(EntityElement.class, EntityElement.NAME, EntityElementImpl.class, null), ENTITY_TYPE(EntityType.class, EntityType.NAME, EntityTypeImpl.class, null), CONTEXT(Context.class, Context.NAME, ContextImpl.class, null), + QUERY_TEMPLATE(QueryTemplate.class, QueryTemplate.NAME, QueryTemplateImpl.class, null), ENTITY(Entity.class, Entity.NAME, EntityImpl.class, null), RESOURCE(Resource.class, Resource.NAME, ResourceImpl.class, DummyResource.class), FACET(Facet.class, Facet.NAME, FacetImpl.class, DummyFacet.class), diff --git a/src/main/java/org/gcube/informationsystem/querytemplates/impl/entities/QueryTemplatesImpl.java b/src/main/java/org/gcube/informationsystem/querytemplates/impl/entities/QueryTemplateImpl.java similarity index 73% rename from src/main/java/org/gcube/informationsystem/querytemplates/impl/entities/QueryTemplatesImpl.java rename to src/main/java/org/gcube/informationsystem/querytemplates/impl/entities/QueryTemplateImpl.java index bc78e1e..c1af526 100644 --- a/src/main/java/org/gcube/informationsystem/querytemplates/impl/entities/QueryTemplatesImpl.java +++ b/src/main/java/org/gcube/informationsystem/querytemplates/impl/entities/QueryTemplateImpl.java @@ -1,14 +1,12 @@ package org.gcube.informationsystem.querytemplates.impl.entities; import java.util.HashMap; -import java.util.HashSet; import java.util.Map; -import java.util.Set; import org.gcube.com.fasterxml.jackson.annotation.JsonInclude; import org.gcube.com.fasterxml.jackson.annotation.JsonInclude.Include; import org.gcube.com.fasterxml.jackson.annotation.JsonProperty; -import org.gcube.informationsystem.model.reference.properties.Header; +import org.gcube.informationsystem.base.impl.entities.EntityElementImpl; import org.gcube.informationsystem.querytemplates.reference.entities.QueryTemplate; import org.gcube.informationsystem.querytemplates.reference.properties.TemplateProperty; import org.gcube.informationsystem.querytemplates.reference.properties.TemplateVariable; @@ -17,15 +15,13 @@ import org.gcube.informationsystem.utils.Version; /** * @author Luca Frosini (ISTI - CNR) */ -public class QueryTemplatesImpl implements QueryTemplate { +public class QueryTemplateImpl extends EntityElementImpl implements QueryTemplate { /** * Generated Serial version UID */ private static final long serialVersionUID = -1096809036997782113L; - protected Header header; - protected String name; protected String description; protected Version version; @@ -34,23 +30,13 @@ public class QueryTemplatesImpl implements QueryTemplate { protected Map changelog; protected TemplateProperty templateProperty; - protected Set templateDefaultValues; + protected Map templateDefaultValues; - public QueryTemplatesImpl() { + public QueryTemplateImpl() { this.changelog = new HashMap<>(); - this.templateDefaultValues = new HashSet<>(); + this.templateDefaultValues = new HashMap<>(); } - @Override - public Header getHeader() { - return header; - } - - @Override - public void setHeader(Header header) { - this.header = header; - } - @Override public String getName() { return name; @@ -77,8 +63,8 @@ public class QueryTemplatesImpl implements QueryTemplate { } @Override - public void setVersion(Version typeVersion) { - this.version = typeVersion; + public void setVersion(Version version) { + this.version = version; } @Override @@ -133,28 +119,24 @@ public class QueryTemplatesImpl implements QueryTemplate { } @Override - public TemplateProperty getQueryTemplate() { + public TemplateProperty getTemplate() { return templateProperty; } @Override - public void setQueryTemplate(TemplateProperty templateProperty) { + public void setTemplate(TemplateProperty templateProperty) { this.templateProperty = templateProperty; } @Override - public Set getQueryTemplateDefaultValues() { + public Map getTemplateVariables() { return templateDefaultValues; } @Override - public void setQueryTemplateDefaultValues(Set queryTemplateDefaultValues) { - this.templateDefaultValues = queryTemplateDefaultValues; - } - - @Override - public void addQueryTemplateDefaultValues(TemplateVariable queryTemplateDefaultValue) { - this.templateDefaultValues.add(queryTemplateDefaultValue); + public void addTemplateVariable(TemplateVariable templateVariable) { + String name = templateVariable.getName(); + this.templateDefaultValues.put(name, templateVariable); } } diff --git a/src/main/java/org/gcube/informationsystem/querytemplates/reference/entities/QueryTemplate.java b/src/main/java/org/gcube/informationsystem/querytemplates/reference/entities/QueryTemplate.java index e27a790..9103daa 100644 --- a/src/main/java/org/gcube/informationsystem/querytemplates/reference/entities/QueryTemplate.java +++ b/src/main/java/org/gcube/informationsystem/querytemplates/reference/entities/QueryTemplate.java @@ -1,7 +1,6 @@ package org.gcube.informationsystem.querytemplates.reference.entities; import java.util.Map; -import java.util.Set; import org.gcube.com.fasterxml.jackson.annotation.JsonGetter; import org.gcube.com.fasterxml.jackson.annotation.JsonIgnore; @@ -11,7 +10,8 @@ import org.gcube.com.fasterxml.jackson.annotation.JsonInclude.Include; import org.gcube.com.fasterxml.jackson.annotation.JsonSetter; import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize; import org.gcube.informationsystem.base.reference.IdentifiableElement; -import org.gcube.informationsystem.querytemplates.impl.entities.QueryTemplatesImpl; +import org.gcube.informationsystem.base.reference.entities.EntityElement; +import org.gcube.informationsystem.querytemplates.impl.entities.QueryTemplateImpl; import org.gcube.informationsystem.querytemplates.reference.properties.TemplateProperty; import org.gcube.informationsystem.querytemplates.reference.properties.TemplateVariable; import org.gcube.informationsystem.types.annotations.Abstract; @@ -25,12 +25,12 @@ import org.gcube.informationsystem.utils.Version; */ @Abstract @JsonIgnoreProperties(ignoreUnknown=true) -@JsonDeserialize(as=QueryTemplatesImpl.class) +@JsonDeserialize(as=QueryTemplateImpl.class) @TypeMetadata(name = QueryTemplate.NAME, description = "The type used to store Query Templates", version = Version.MINIMAL_VERSION_STRING) @Change(version = Version.MINIMAL_VERSION_STRING, description = Version.MINIMAL_VERSION_DESCRIPTION) -public interface QueryTemplate extends IdentifiableElement { +public interface QueryTemplate extends IdentifiableElement, EntityElement { - public static final String NAME = "QueryTemplates"; //QueryTemplates.class.getSimpleName(); + public static final String NAME = "QueryTemplate"; //QueryTemplate.class.getSimpleName(); public static final String NAME_PROPERTY = "name"; public static final String DESCRIPTION_PROPERTY = "description"; @@ -69,7 +69,7 @@ public interface QueryTemplate extends IdentifiableElement { public void setChangelog(Map changelog); @JsonIgnore - public void addChangelog(Version typeVersion, String changeDescription); + public void addChangelog(Version version, String changeDescription); @JsonGetter(value = CHANGELOG_PROPERTY) @JsonInclude(Include.NON_NULL) @@ -85,18 +85,19 @@ public interface QueryTemplate extends IdentifiableElement { @JsonGetter(value = QUERY_TEMPLATE_PROPERTY) @ISProperty(name = QUERY_TEMPLATE_PROPERTY, description = "The Query Template. It can contains QueryVariable to be replaced to obtain a runnable query.", readonly = false, mandatory = true, nullable = false) - public TemplateProperty getQueryTemplate(); + public TemplateProperty getTemplate(); @JsonIgnore - public void setQueryTemplate(TemplateProperty templateProperty); + public void setTemplate(TemplateProperty templateProperty); @JsonGetter(value = QUERY_TEMPLATE_DEFAULT_VALUES_PROPERTY) - public Set getQueryTemplateDefaultValues(); + public Map getTemplateVariables(); @JsonIgnore - public void setQueryTemplateDefaultValues(Set queryTemplateDefaultValues); - - @JsonIgnore - public void addQueryTemplateDefaultValues(TemplateVariable queryTemplateDefaultValue); + /** + * Adding variable which already exists, the previous value will be override. + * @param templateDefaultValue + */ + public void addTemplateVariable(TemplateVariable templateVariable); } diff --git a/src/main/java/org/gcube/informationsystem/querytemplates/reference/properties/TemplateVariable.java b/src/main/java/org/gcube/informationsystem/querytemplates/reference/properties/TemplateVariable.java index f0066cb..ec47045 100644 --- a/src/main/java/org/gcube/informationsystem/querytemplates/reference/properties/TemplateVariable.java +++ b/src/main/java/org/gcube/informationsystem/querytemplates/reference/properties/TemplateVariable.java @@ -2,7 +2,7 @@ package org.gcube.informationsystem.querytemplates.reference.properties; import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize; import org.gcube.informationsystem.base.reference.properties.PropertyElement; -import org.gcube.informationsystem.querytemplates.impl.properties.TemplatePropertyImpl; +import org.gcube.informationsystem.querytemplates.impl.properties.TemplateVariableImpl; import org.gcube.informationsystem.types.annotations.ISProperty; import org.gcube.informationsystem.types.reference.Change; import org.gcube.informationsystem.types.reference.TypeMetadata; @@ -11,7 +11,7 @@ import org.gcube.informationsystem.utils.Version; /** * @author Luca Frosini (ISTI - CNR) */ -@JsonDeserialize(as=TemplatePropertyImpl.class) +@JsonDeserialize(as=TemplateVariableImpl.class) @TypeMetadata(name = TemplateVariable.NAME, description = "This is the class used to define the a TemplateVariable", version = Version.MINIMAL_VERSION_STRING) @Change(version = Version.MINIMAL_VERSION_STRING, description = Version.MINIMAL_VERSION_DESCRIPTION) public interface TemplateVariable extends PropertyElement { diff --git a/src/main/java/org/gcube/informationsystem/types/TypeMapper.java b/src/main/java/org/gcube/informationsystem/types/TypeMapper.java index 6ff0bf2..b02a936 100644 --- a/src/main/java/org/gcube/informationsystem/types/TypeMapper.java +++ b/src/main/java/org/gcube/informationsystem/types/TypeMapper.java @@ -51,10 +51,6 @@ public class TypeMapper { mapper.registerSubtypes(PropertyType.class); mapper.registerSubtypes(PropertyDefinition.class); mapper.registerSubtypes(LinkedEntity.class); - - // TODO - // mapper.registerSubtypes(LinkedResource.class); - // mapper.registerSubtypes(LinkedFacet.class); } public static String serializeTypeDefinition(Type type) throws Exception{