Fixed QueryTemplate model
This commit is contained in:
parent
28d1218876
commit
05b06ce6fa
|
@ -35,10 +35,8 @@ import org.gcube.informationsystem.model.reference.relations.ConsistsOf;
|
||||||
import org.gcube.informationsystem.model.reference.relations.IsRelatedTo;
|
import org.gcube.informationsystem.model.reference.relations.IsRelatedTo;
|
||||||
import org.gcube.informationsystem.model.reference.relations.Relation;
|
import org.gcube.informationsystem.model.reference.relations.Relation;
|
||||||
import org.gcube.informationsystem.queries.templates.impl.entities.QueryTemplateImpl;
|
import org.gcube.informationsystem.queries.templates.impl.entities.QueryTemplateImpl;
|
||||||
import org.gcube.informationsystem.queries.templates.impl.properties.TemplatePropertyImpl;
|
|
||||||
import org.gcube.informationsystem.queries.templates.impl.properties.TemplateVariableImpl;
|
import org.gcube.informationsystem.queries.templates.impl.properties.TemplateVariableImpl;
|
||||||
import org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate;
|
import org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate;
|
||||||
import org.gcube.informationsystem.queries.templates.reference.properties.TemplateProperty;
|
|
||||||
import org.gcube.informationsystem.queries.templates.reference.properties.TemplateVariable;
|
import org.gcube.informationsystem.queries.templates.reference.properties.TemplateVariable;
|
||||||
import org.gcube.informationsystem.types.impl.entities.EntityTypeImpl;
|
import org.gcube.informationsystem.types.impl.entities.EntityTypeImpl;
|
||||||
import org.gcube.informationsystem.types.impl.properties.PropertyDefinitionImpl;
|
import org.gcube.informationsystem.types.impl.properties.PropertyDefinitionImpl;
|
||||||
|
@ -61,7 +59,6 @@ public enum AccessType {
|
||||||
PROPERTY_ELEMENT(PropertyElement.class, PropertyElement.NAME, PropertyElementImpl.class, null),
|
PROPERTY_ELEMENT(PropertyElement.class, PropertyElement.NAME, PropertyElementImpl.class, null),
|
||||||
PROPERTY_DEFINITION(PropertyDefinition.class, PropertyDefinition.NAME, PropertyDefinitionImpl.class, null),
|
PROPERTY_DEFINITION(PropertyDefinition.class, PropertyDefinition.NAME, PropertyDefinitionImpl.class, null),
|
||||||
PROPERTY_TYPE(PropertyType.class, PropertyType.NAME, PropertyTypeImpl.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),
|
TEMPLATE_VARIABLE(TemplateVariable.class, TemplateVariable.NAME, TemplateVariableImpl.class, null),
|
||||||
PROPERTY(Property.class, Property.NAME, PropertyImpl.class, null),
|
PROPERTY(Property.class, Property.NAME, PropertyImpl.class, null),
|
||||||
|
|
||||||
|
|
|
@ -1,16 +1,21 @@
|
||||||
package org.gcube.informationsystem.queries.templates.impl.entities;
|
package org.gcube.informationsystem.queries.templates.impl.entities;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
|
||||||
|
import org.gcube.com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
|
import org.gcube.com.fasterxml.jackson.databind.JsonNode;
|
||||||
|
import org.gcube.com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import org.gcube.informationsystem.base.impl.entities.EntityElementImpl;
|
import org.gcube.informationsystem.base.impl.entities.EntityElementImpl;
|
||||||
import org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate;
|
import org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate;
|
||||||
import org.gcube.informationsystem.queries.templates.reference.properties.TemplateProperty;
|
|
||||||
import org.gcube.informationsystem.queries.templates.reference.properties.TemplateVariable;
|
import org.gcube.informationsystem.queries.templates.reference.properties.TemplateVariable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Luca Frosini (ISTI - CNR)
|
* @author Luca Frosini (ISTI - CNR)
|
||||||
*/
|
*/
|
||||||
|
@JsonTypeName(value=QueryTemplate.NAME)
|
||||||
public class QueryTemplateImpl extends EntityElementImpl implements QueryTemplate {
|
public class QueryTemplateImpl extends EntityElementImpl implements QueryTemplate {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -21,11 +26,14 @@ public class QueryTemplateImpl extends EntityElementImpl implements QueryTemplat
|
||||||
protected String name;
|
protected String name;
|
||||||
protected String description;
|
protected String description;
|
||||||
|
|
||||||
protected TemplateProperty template;
|
protected ObjectMapper objectMapper;
|
||||||
|
protected JsonNode template;
|
||||||
|
|
||||||
protected Map<String, TemplateVariable> templateVariables;
|
protected Map<String, TemplateVariable> templateVariables;
|
||||||
|
|
||||||
public QueryTemplateImpl() {
|
public QueryTemplateImpl() {
|
||||||
this.templateVariables = new HashMap<>();
|
this.templateVariables = new HashMap<>();
|
||||||
|
this.objectMapper = new ObjectMapper();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -49,12 +57,22 @@ public class QueryTemplateImpl extends EntityElementImpl implements QueryTemplat
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TemplateProperty getTemplate() {
|
public String getTemplateAsString() throws JsonProcessingException {
|
||||||
|
return objectMapper.writeValueAsString(template);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setTemplate(String template) throws JsonProcessingException, IOException {
|
||||||
|
this.template = objectMapper.readTree(template);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JsonNode getTemplate() {
|
||||||
return template;
|
return template;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setTemplate(TemplateProperty template) {
|
public void setTemplate(JsonNode template) {
|
||||||
this.template = template;
|
this.template = template;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
package org.gcube.informationsystem.queries.templates.impl.properties;
|
|
||||||
|
|
||||||
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
|
|
||||||
import org.gcube.informationsystem.base.impl.properties.PropertyElementImpl;
|
|
||||||
import org.gcube.informationsystem.queries.templates.reference.properties.TemplateProperty;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Luca Frosini (ISTI - CNR)
|
|
||||||
*/
|
|
||||||
@JsonTypeName(value=TemplateProperty.NAME)
|
|
||||||
public class TemplatePropertyImpl extends PropertyElementImpl implements TemplateProperty {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Generated Serial Version UID
|
|
||||||
*/
|
|
||||||
private static final long serialVersionUID = 2628113641100130640L;
|
|
||||||
|
|
||||||
public TemplatePropertyImpl() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -5,13 +5,12 @@ package org.gcube.informationsystem.queries.templates.impl.properties;
|
||||||
|
|
||||||
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
|
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
|
||||||
import org.gcube.informationsystem.base.impl.properties.PropertyElementImpl;
|
import org.gcube.informationsystem.base.impl.properties.PropertyElementImpl;
|
||||||
import org.gcube.informationsystem.queries.templates.reference.properties.TemplateProperty;
|
|
||||||
import org.gcube.informationsystem.queries.templates.reference.properties.TemplateVariable;
|
import org.gcube.informationsystem.queries.templates.reference.properties.TemplateVariable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Luca Frosini (ISTI - CNR)
|
* @author Luca Frosini (ISTI - CNR)
|
||||||
*/
|
*/
|
||||||
@JsonTypeName(value=TemplateProperty.NAME)
|
@JsonTypeName(value=TemplateVariable.NAME)
|
||||||
public class TemplateVariableImpl extends PropertyElementImpl implements TemplateVariable {
|
public class TemplateVariableImpl extends PropertyElementImpl implements TemplateVariable {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,14 +1,17 @@
|
||||||
package org.gcube.informationsystem.queries.templates.reference.entities;
|
package org.gcube.informationsystem.queries.templates.reference.entities;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.gcube.com.fasterxml.jackson.annotation.JsonGetter;
|
import org.gcube.com.fasterxml.jackson.annotation.JsonGetter;
|
||||||
import org.gcube.com.fasterxml.jackson.annotation.JsonIgnore;
|
import org.gcube.com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import org.gcube.com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import org.gcube.com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
|
import org.gcube.com.fasterxml.jackson.annotation.JsonSetter;
|
||||||
|
import org.gcube.com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
|
import org.gcube.com.fasterxml.jackson.databind.JsonNode;
|
||||||
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||||
import org.gcube.informationsystem.base.reference.entities.EntityElement;
|
import org.gcube.informationsystem.base.reference.entities.EntityElement;
|
||||||
import org.gcube.informationsystem.queries.templates.impl.entities.QueryTemplateImpl;
|
import org.gcube.informationsystem.queries.templates.impl.entities.QueryTemplateImpl;
|
||||||
import org.gcube.informationsystem.queries.templates.reference.properties.TemplateProperty;
|
|
||||||
import org.gcube.informationsystem.queries.templates.reference.properties.TemplateVariable;
|
import org.gcube.informationsystem.queries.templates.reference.properties.TemplateVariable;
|
||||||
import org.gcube.informationsystem.types.annotations.ISProperty;
|
import org.gcube.informationsystem.types.annotations.ISProperty;
|
||||||
import org.gcube.informationsystem.types.reference.Change;
|
import org.gcube.informationsystem.types.reference.Change;
|
||||||
|
@ -44,10 +47,16 @@ public interface QueryTemplate extends EntityElement {
|
||||||
|
|
||||||
@JsonGetter(value = TEMPLATE_PROPERTY)
|
@JsonGetter(value = TEMPLATE_PROPERTY)
|
||||||
@ISProperty(name = TEMPLATE_PROPERTY, description = "The Query Template. It can contains query variables to be replaced to obtain a runnable query.", readonly = false, mandatory = true, nullable = false)
|
@ISProperty(name = TEMPLATE_PROPERTY, description = "The Query Template. It can contains query variables to be replaced to obtain a runnable query.", readonly = false, mandatory = true, nullable = false)
|
||||||
public TemplateProperty getTemplate();
|
public String getTemplateAsString() throws JsonProcessingException;
|
||||||
|
|
||||||
|
@JsonSetter(value = TEMPLATE_PROPERTY)
|
||||||
|
public void setTemplate(String template) throws JsonProcessingException, IOException;
|
||||||
|
|
||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
public void setTemplate(TemplateProperty templateProperty);
|
public JsonNode getTemplate();
|
||||||
|
|
||||||
|
@JsonIgnore
|
||||||
|
public void setTemplate(JsonNode template);
|
||||||
|
|
||||||
@JsonGetter(value = TEMPLATE_VARIABLES_PROPERTY)
|
@JsonGetter(value = TEMPLATE_VARIABLES_PROPERTY)
|
||||||
@ISProperty(name = TEMPLATE_VARIABLES_PROPERTY, description = "The Query Template Variables. It can contains Query Template Variable to be replaced to obtain a runnable query.", readonly = false, mandatory = true, nullable = false)
|
@ISProperty(name = TEMPLATE_VARIABLES_PROPERTY, description = "The Query Template Variables. It can contains Query Template Variable to be replaced to obtain a runnable query.", readonly = false, mandatory = true, nullable = false)
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
package org.gcube.informationsystem.queries.templates.reference.properties;
|
|
||||||
|
|
||||||
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
|
||||||
import org.gcube.informationsystem.base.reference.properties.PropertyElement;
|
|
||||||
import org.gcube.informationsystem.queries.templates.impl.properties.TemplatePropertyImpl;
|
|
||||||
import org.gcube.informationsystem.types.reference.Change;
|
|
||||||
import org.gcube.informationsystem.types.reference.TypeMetadata;
|
|
||||||
import org.gcube.informationsystem.utils.Version;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Luca Frosini (ISTI - CNR)
|
|
||||||
*/
|
|
||||||
@JsonDeserialize(as=TemplatePropertyImpl.class)
|
|
||||||
@TypeMetadata(name = TemplateProperty.NAME, description = "This is the class used to define the TemplateProperty", version = Version.MINIMAL_VERSION_STRING)
|
|
||||||
@Change(version = Version.MINIMAL_VERSION_STRING, description = Version.MINIMAL_VERSION_DESCRIPTION)
|
|
||||||
public interface TemplateProperty extends PropertyElement {
|
|
||||||
|
|
||||||
public static final String NAME = "TemplateProperty"; // TemplateProperty.class.getSimpleName();
|
|
||||||
|
|
||||||
}
|
|
|
@ -7,7 +7,6 @@ import org.gcube.com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
|
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
|
||||||
import org.gcube.informationsystem.base.reference.AccessType;
|
import org.gcube.informationsystem.base.reference.AccessType;
|
||||||
import org.gcube.informationsystem.base.reference.properties.PropertyElement;
|
import org.gcube.informationsystem.base.reference.properties.PropertyElement;
|
||||||
import org.gcube.informationsystem.queries.templates.reference.properties.TemplateProperty;
|
|
||||||
import org.gcube.informationsystem.queries.templates.reference.properties.TemplateVariable;
|
import org.gcube.informationsystem.queries.templates.reference.properties.TemplateVariable;
|
||||||
import org.gcube.informationsystem.types.impl.TypeImpl;
|
import org.gcube.informationsystem.types.impl.TypeImpl;
|
||||||
import org.gcube.informationsystem.types.reference.properties.LinkedEntity;
|
import org.gcube.informationsystem.types.reference.properties.LinkedEntity;
|
||||||
|
@ -35,7 +34,6 @@ public final class PropertyTypeImpl<P extends PropertyElement> extends TypeImpl
|
||||||
propertyElementAccesTypes.add(PropertyElement.NAME);
|
propertyElementAccesTypes.add(PropertyElement.NAME);
|
||||||
propertyElementAccesTypes.add(LinkedEntity.NAME);
|
propertyElementAccesTypes.add(LinkedEntity.NAME);
|
||||||
propertyElementAccesTypes.add(TemplateVariable.NAME);
|
propertyElementAccesTypes.add(TemplateVariable.NAME);
|
||||||
propertyElementAccesTypes.add(TemplateProperty.NAME);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ import org.gcube.informationsystem.model.reference.properties.Property;
|
||||||
import org.gcube.informationsystem.model.reference.relations.ConsistsOf;
|
import org.gcube.informationsystem.model.reference.relations.ConsistsOf;
|
||||||
import org.gcube.informationsystem.model.reference.relations.IsRelatedTo;
|
import org.gcube.informationsystem.model.reference.relations.IsRelatedTo;
|
||||||
import org.gcube.informationsystem.model.reference.relations.Relation;
|
import org.gcube.informationsystem.model.reference.relations.Relation;
|
||||||
import org.gcube.informationsystem.queries.templates.reference.properties.TemplateProperty;
|
import org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate;
|
||||||
import org.gcube.informationsystem.queries.templates.reference.properties.TemplateVariable;
|
import org.gcube.informationsystem.queries.templates.reference.properties.TemplateVariable;
|
||||||
import org.gcube.informationsystem.types.reference.entities.EntityType;
|
import org.gcube.informationsystem.types.reference.entities.EntityType;
|
||||||
import org.gcube.informationsystem.types.reference.entities.FacetType;
|
import org.gcube.informationsystem.types.reference.entities.FacetType;
|
||||||
|
@ -100,11 +100,6 @@ public class SerializationTest {
|
||||||
Assert.assertTrue(encrypted.getAccessType()==AccessType.PROPERTY);
|
Assert.assertTrue(encrypted.getAccessType()==AccessType.PROPERTY);
|
||||||
logger.info(ElementMapper.marshal(encrypted));
|
logger.info(ElementMapper.marshal(encrypted));
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
PropertyType<TemplateProperty> templateProperty = (PropertyType<TemplateProperty>) TypeMapper.createTypeDefinition(TemplateProperty.class);
|
|
||||||
Assert.assertTrue(templateProperty.getAccessType()==AccessType.PROPERTY_ELEMENT);
|
|
||||||
logger.info(ElementMapper.marshal(templateProperty));
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
PropertyType<TemplateVariable> templateVariable = (PropertyType<TemplateVariable>) TypeMapper.createTypeDefinition(TemplateVariable.class);
|
PropertyType<TemplateVariable> templateVariable = (PropertyType<TemplateVariable>) TypeMapper.createTypeDefinition(TemplateVariable.class);
|
||||||
Assert.assertTrue(templateVariable.getAccessType()==AccessType.PROPERTY_ELEMENT);
|
Assert.assertTrue(templateVariable.getAccessType()==AccessType.PROPERTY_ELEMENT);
|
||||||
|
@ -144,6 +139,11 @@ public class SerializationTest {
|
||||||
EntityType facetType = (EntityType) TypeMapper.createTypeDefinition(FacetType.class);
|
EntityType facetType = (EntityType) TypeMapper.createTypeDefinition(FacetType.class);
|
||||||
Assert.assertTrue(facetType.getAccessType()==AccessType.ENTITY_TYPE);
|
Assert.assertTrue(facetType.getAccessType()==AccessType.ENTITY_TYPE);
|
||||||
logger.info(ElementMapper.marshal(facetType));
|
logger.info(ElementMapper.marshal(facetType));
|
||||||
|
|
||||||
|
EntityType queryTemplateType = (EntityType) TypeMapper.createTypeDefinition(QueryTemplate.class);
|
||||||
|
Assert.assertTrue(queryTemplateType.getAccessType()==AccessType.QUERY_TEMPLATE);
|
||||||
|
logger.info(ElementMapper.marshal(queryTemplateType));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
Loading…
Reference in New Issue