diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/ERManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/ERManagement.java index 7fe1ce6..639f577 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/ERManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/ERManagement.java @@ -153,7 +153,15 @@ public abstract class ERManagement { checkJsonNode(); } - public static OClass getOClass(OElement oElement) throws SchemaException, ResourceRegistryException { + public static E getElementFromOptional(Optional optional) throws ResourceRegistryException { + if(optional.isPresent()) { + return optional.get(); + }else { + throw new ResourceRegistryException("An element not belonging to any defined type should not exists. Please contact the administrator."); + } + } + + public static OClass getOClass(OElement oElement) throws ResourceRegistryException { Optional optional = oElement.getSchemaType(); if(optional.isPresent()) { return optional.get(); diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/ERManagementUtility.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/ERManagementUtility.java index b08b7f8..6454109 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/ERManagementUtility.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/ERManagementUtility.java @@ -12,9 +12,9 @@ import org.gcube.informationsystem.model.reference.relations.IsRelatedTo; import org.gcube.informationsystem.model.reference.relations.Relation; import org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; -import org.gcube.informationsystem.resourceregistry.instances.model.entity.EntityManagement; -import org.gcube.informationsystem.resourceregistry.instances.model.entity.FacetManagement; -import org.gcube.informationsystem.resourceregistry.instances.model.entity.ResourceManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entities.EntityManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entities.FacetManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entities.ResourceManagement; import org.gcube.informationsystem.resourceregistry.instances.model.relation.ConsistsOfManagement; import org.gcube.informationsystem.resourceregistry.instances.model.relation.IsRelatedToManagement; import org.gcube.informationsystem.resourceregistry.instances.model.relation.RelationManagement; diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/relations/BaseRelationManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/relations/BaseRelationManagement.java index deed0e4..5cb0c77 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/relations/BaseRelationManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/relations/BaseRelationManagement.java @@ -11,7 +11,7 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.relation.Rela import org.gcube.informationsystem.resourceregistry.api.exceptions.schema.SchemaException; import org.gcube.informationsystem.resourceregistry.instances.base.ERManagement; import org.gcube.informationsystem.resourceregistry.instances.base.entities.BaseEntityManagement; -import org.gcube.informationsystem.resourceregistry.instances.model.entity.FacetManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entities.FacetManagement; import org.gcube.informationsystem.resourceregistry.security.SecurityContext; import org.gcube.informationsystem.resourceregistry.utils.Utility; diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/context/ContextUtility.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/context/ContextUtility.java index 68eacfe..5435400 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/context/ContextUtility.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/context/ContextUtility.java @@ -1,7 +1,6 @@ package org.gcube.informationsystem.resourceregistry.instances.context; import java.util.HashMap; -import java.util.Iterator; import java.util.Map; import java.util.NoSuchElementException; import java.util.UUID; @@ -17,6 +16,7 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegis import org.gcube.informationsystem.resourceregistry.api.exceptions.context.ContextException; import org.gcube.informationsystem.resourceregistry.api.exceptions.context.ContextNotFoundException; import org.gcube.informationsystem.resourceregistry.dbinitialization.DatabaseEnvironment; +import org.gcube.informationsystem.resourceregistry.instances.base.ERManagement; import org.gcube.informationsystem.resourceregistry.security.AdminSecurityContext; import org.gcube.informationsystem.resourceregistry.security.SecurityContext; import org.gcube.informationsystem.resourceregistry.security.SecurityContext.PermissionMode; @@ -28,7 +28,8 @@ import com.orientechnologies.orient.core.db.ODatabaseRecordThreadLocal; import com.orientechnologies.orient.core.db.document.ODatabaseDocument; import com.orientechnologies.orient.core.record.ODirection; import com.orientechnologies.orient.core.record.OVertex; -import com.orientechnologies.orient.core.sql.query.OSQLSynchQuery; +import com.orientechnologies.orient.core.sql.executor.OResult; +import com.orientechnologies.orient.core.sql.executor.OResultSet; /** * @author Luca Frosini (ISTI - CNR) @@ -209,30 +210,25 @@ public class ContextUtility { ScopeBean scopeBean = new ScopeBean(fullName); String name = scopeBean.name(); - // TODO Rewrite the query using Gremlin - // Please note that this query works because all the scope parts has a - // different name - String select = "SELECT FROM " + Context.class.getSimpleName() + " WHERE " + Context.NAME_PROPERTY + " = \"" - + name + "\""; - ; - OSQLSynchQuery osqlSynchQuery = new OSQLSynchQuery(select); - + // TODO Rewrite better query. This query works because all the scope parts has a different name + String select = "SELECT FROM " + Context.class.getSimpleName() + " WHERE " + Context.NAME_PROPERTY + " = :name"; + Map map = new HashMap<>(); + map.put("name", name); ODatabaseDocument current = ContextUtility.getCurrentODatabaseDocumentFromThreadLocal(); - Iterable vertexes = getAdminSecurityContext().getDatabaseDocument(PermissionMode.READER).command(osqlSynchQuery) - .execute(); + OResultSet resultSet = getAdminSecurityContext().getDatabaseDocument(PermissionMode.READER).query(select, map); - if(vertexes == null || !vertexes.iterator().hasNext()) { + if(resultSet == null || !resultSet.hasNext()) { throw new ContextNotFoundException("Error retrieving context with name " + fullName); } - Iterator iterator = vertexes.iterator(); - OVertex context = iterator.next(); + OResult oResult = resultSet.next(); + OVertex context = ERManagement.getElementFromOptional(oResult.getVertex()); logger.trace("Context Representing Vertex : {}", Utility.toJsonString(context, true)); - if(iterator.hasNext()) { + if(resultSet.hasNext()) { throw new ContextNotFoundException("Found more than one context with name " + name + "but required the one with path" + fullName + ". Please Reimplement the query"); } diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/context/entities/ContextManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/context/entities/ContextManagement.java index 22deda8..8613da7 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/context/entities/ContextManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/context/entities/ContextManagement.java @@ -1,5 +1,6 @@ package org.gcube.informationsystem.resourceregistry.instances.context.entities; +import java.util.HashMap; import java.util.Iterator; import java.util.UUID; @@ -36,7 +37,7 @@ import com.orientechnologies.orient.core.record.ODirection; import com.orientechnologies.orient.core.record.OEdge; import com.orientechnologies.orient.core.record.OVertex; import com.orientechnologies.orient.core.record.impl.ODocument; -import com.orientechnologies.orient.core.sql.query.OSQLSynchQuery; +import com.orientechnologies.orient.core.sql.executor.OResultSet; /** * @author Luca Frosini (ISTI - CNR) @@ -107,7 +108,6 @@ public class ContextManagement extends BaseEntityManagement { if(parentContext != null) { String parentId = parentContext.getElement().getIdentity().toString(); - // TODO Rewrite using Gremlin String select = "SELECT FROM (TRAVERSE out(" + IsParentOf.NAME + ") FROM " + parentId + " MAXDEPTH 1) WHERE " + Context.NAME_PROPERTY + "=\"" + getName() + "\" AND " + Context.HEADER_PROPERTY + "." + Header.UUID_PROPERTY + "<>\"" + parentContext.uuid + "\""; @@ -122,23 +122,20 @@ public class ContextManagement extends BaseEntityManagement { logger.trace("Checking if {} -> {}", message, select); - OSQLSynchQuery osqlSynchQuery = new OSQLSynchQuery(select); - Iterable vertexes = oDatabaseDocument.command(osqlSynchQuery).execute(); + OResultSet resultSet = oDatabaseDocument.command(select, new HashMap<>()); - if(vertexes != null && vertexes.iterator().hasNext()) { + if(resultSet != null && resultSet.hasNext()) { throw new ContextAlreadyPresentException(message.toString()); } } else { - // TODO Rewrite using Gremlin String select = "SELECT FROM " + Context.NAME + " WHERE " + Context.NAME_PROPERTY + " = \"" + getName() + "\"" + " AND in(\"" + IsParentOf.NAME + "\").size() = 0"; - OSQLSynchQuery osqlSynchQuery = new OSQLSynchQuery(select); - Iterable vertexes = oDatabaseDocument.command(osqlSynchQuery).execute(); + OResultSet resultSet = oDatabaseDocument.command(select, new HashMap<>()); - if(vertexes != null && vertexes.iterator().hasNext()) { + if(resultSet != null && resultSet.hasNext()) { throw new ContextAlreadyPresentException( "A root context with the same name (" + this.getName() + ") already exist"); } diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entity/EntityManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entities/EntityManagement.java similarity index 98% rename from src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entity/EntityManagement.java rename to src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entities/EntityManagement.java index d3e3d79..efe44b1 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entity/EntityManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entities/EntityManagement.java @@ -1,4 +1,4 @@ -package org.gcube.informationsystem.resourceregistry.instances.model.entity; +package org.gcube.informationsystem.resourceregistry.instances.model.entities; import java.util.ArrayList; import java.util.HashMap; @@ -40,7 +40,8 @@ import com.orientechnologies.orient.core.record.OEdge; import com.orientechnologies.orient.core.record.OElement; import com.orientechnologies.orient.core.record.OVertex; import com.orientechnologies.orient.core.record.impl.ODocument; -import com.orientechnologies.orient.core.sql.query.OSQLSynchQuery; +import com.orientechnologies.orient.core.sql.executor.OResult; +import com.orientechnologies.orient.core.sql.executor.OResultSet; /** * @author Luca Frosini (ISTI - CNR) @@ -387,10 +388,11 @@ public abstract class EntityManagement extends BaseEntityM String select = selectStringBuilder.toString(); logger.trace(select); - OSQLSynchQuery osqlSynchQuery = new OSQLSynchQuery(select); - Iterable elements = oDatabaseDocument.command(osqlSynchQuery).execute(); + OResultSet resultSet = oDatabaseDocument.command(select,new HashMap<>()); - for(OElement element : elements) { + while(resultSet.hasNext()) { + OResult oResult = resultSet.next(); + OElement element = ERManagement.getElementFromOptional(oResult.getElement()); if(polymorphic) { OClass oClass = null; diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entity/FacetManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entities/FacetManagement.java similarity index 99% rename from src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entity/FacetManagement.java rename to src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entities/FacetManagement.java index 3ac3332..c40b3a1 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entity/FacetManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entities/FacetManagement.java @@ -1,4 +1,4 @@ -package org.gcube.informationsystem.resourceregistry.instances.model.entity; +package org.gcube.informationsystem.resourceregistry.instances.model.entities; import org.gcube.informationsystem.base.reference.AccessType; import org.gcube.informationsystem.model.reference.entities.Facet; diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entity/ResourceManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entities/ResourceManagement.java similarity index 99% rename from src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entity/ResourceManagement.java rename to src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entities/ResourceManagement.java index c67b946..586d958 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entity/ResourceManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entities/ResourceManagement.java @@ -1,4 +1,4 @@ -package org.gcube.informationsystem.resourceregistry.instances.model.entity; +package org.gcube.informationsystem.resourceregistry.instances.model.entities; import java.util.Iterator; diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/relation/ConsistsOfManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/relation/ConsistsOfManagement.java index 5f71076..076d9f1 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/relation/ConsistsOfManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/relation/ConsistsOfManagement.java @@ -13,7 +13,7 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegis import org.gcube.informationsystem.resourceregistry.api.exceptions.relation.consistsOf.ConsistsOfAlreadyPresentException; import org.gcube.informationsystem.resourceregistry.api.exceptions.relation.consistsOf.ConsistsOfAvailableInAnotherContextException; import org.gcube.informationsystem.resourceregistry.api.exceptions.relation.consistsOf.ConsistsOfNotFoundException; -import org.gcube.informationsystem.resourceregistry.instances.model.entity.FacetManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entities.FacetManagement; import org.gcube.informationsystem.resourceregistry.security.SecurityContext; import com.orientechnologies.orient.core.db.document.ODatabaseDocument; diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/relation/IsRelatedToManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/relation/IsRelatedToManagement.java index 6c07a17..8f502e5 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/relation/IsRelatedToManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/relation/IsRelatedToManagement.java @@ -12,7 +12,7 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegis import org.gcube.informationsystem.resourceregistry.api.exceptions.relation.isrelatedto.IsRelatedToAlreadyPresentException; import org.gcube.informationsystem.resourceregistry.api.exceptions.relation.isrelatedto.IsRelatedToAvailableInAnotherContextException; import org.gcube.informationsystem.resourceregistry.api.exceptions.relation.isrelatedto.IsRelatedToNotFoundException; -import org.gcube.informationsystem.resourceregistry.instances.model.entity.ResourceManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entities.ResourceManagement; import org.gcube.informationsystem.resourceregistry.security.SecurityContext; import com.orientechnologies.orient.core.db.document.ODatabaseDocument; diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/relation/RelationManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/relation/RelationManagement.java index e31609c..7e9ac5b 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/relation/RelationManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/relation/RelationManagement.java @@ -21,9 +21,9 @@ import org.gcube.informationsystem.resourceregistry.instances.base.ERManagement; import org.gcube.informationsystem.resourceregistry.instances.base.ERManagementUtility; import org.gcube.informationsystem.resourceregistry.instances.base.relations.BaseRelationManagement; import org.gcube.informationsystem.resourceregistry.instances.context.ContextUtility; -import org.gcube.informationsystem.resourceregistry.instances.model.entity.EntityManagement; -import org.gcube.informationsystem.resourceregistry.instances.model.entity.FacetManagement; -import org.gcube.informationsystem.resourceregistry.instances.model.entity.ResourceManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entities.EntityManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entities.FacetManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entities.ResourceManagement; import org.gcube.informationsystem.resourceregistry.security.SecurityContext; import org.gcube.informationsystem.resourceregistry.security.SecurityContext.PermissionMode; import org.gcube.informationsystem.resourceregistry.utils.PropagationConstraintOrient; diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/query/QueryImpl.java b/src/main/java/org/gcube/informationsystem/resourceregistry/query/QueryImpl.java index fae9efb..ddd50f6 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/query/QueryImpl.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/query/QueryImpl.java @@ -1,5 +1,8 @@ package org.gcube.informationsystem.resourceregistry.query; +import java.util.HashMap; +import java.util.Map; + import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; import org.gcube.informationsystem.resourceregistry.api.exceptions.query.InvalidQueryException; import org.gcube.informationsystem.resourceregistry.api.rest.AccessPath; @@ -17,8 +20,8 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; import com.orientechnologies.orient.core.db.document.ODatabaseDocument; import com.orientechnologies.orient.core.record.OElement; -import com.orientechnologies.orient.core.record.impl.ODocument; -import com.orientechnologies.orient.core.sql.query.OSQLSynchQuery; +import com.orientechnologies.orient.core.sql.executor.OResult; +import com.orientechnologies.orient.core.sql.executor.OResultSet; /** * @author Luca Frosini (ISTI - CNR) @@ -34,35 +37,46 @@ public class QueryImpl implements Query { } limit = (limit <= 0) ? AccessPath.UNBOUNDED : limit; - ODatabaseDocument orientGraph = null; + ODatabaseDocument oDatabaseDocument = null; + ODatabaseDocument current = ContextUtility.getCurrentODatabaseDocumentFromThreadLocal(); try { SecurityContext securityContext = ContextUtility.getCurrentSecurityContext(); - orientGraph = securityContext.getDatabaseDocument(PermissionMode.READER); - orientGraph.begin(); + oDatabaseDocument = securityContext.getDatabaseDocument(PermissionMode.READER); + oDatabaseDocument.begin(); - OSQLSynchQuery osqlSynchQuery = new OSQLSynchQuery<>(query, limit); - osqlSynchQuery.setFetchPlan(fetchPlan); - osqlSynchQuery.setCacheableResult(true); + StringBuffer stringBuffer = new StringBuffer(); + stringBuffer.append(query); + stringBuffer.append(" limit :limit"); + + Map map = new HashMap<>(); + map.put("limit", limit); - logger.debug("Going to execute query : \"{}\", fetchPlan : \"{}\", limit : {}", osqlSynchQuery.getText(), - osqlSynchQuery.getFetchPlan(), osqlSynchQuery.getLimit()); + if(fetchPlan!=null) { + stringBuffer.append(" fetchplan "); + stringBuffer.append(fetchPlan); + logger.debug("Going to execute query '{} limit {} fetchPlan {}'", query, limit, fetchPlan); + }else { + logger.debug("Going to execute query '{} limit {}'", query, limit); + } - Iterable elements = orientGraph.command(osqlSynchQuery).execute(); + OResultSet resultSet = oDatabaseDocument.query(stringBuffer.toString(), map); ObjectMapper objectMapper = new ObjectMapper(); ArrayNode arrayNode = objectMapper.createArrayNode(); - - for(OElement element : elements) { + while(resultSet.hasNext()) { + OResult oResult = resultSet.next(); + OElement element = ERManagement.getElementFromOptional(oResult.getElement()); + try { JsonNode jsonNode = null; if(raw) { jsonNode = Utility.toJsonNode(element, false); } else { @SuppressWarnings("rawtypes") - ERManagement erManagement = ERManagementUtility.getERManagement(securityContext, orientGraph, + ERManagement erManagement = ERManagementUtility.getERManagement(securityContext, oDatabaseDocument, element); jsonNode = erManagement.serializeAsJson(); } @@ -79,8 +93,11 @@ public class QueryImpl implements Query { } catch(Exception e) { throw new InvalidQueryException(e.getMessage()); } finally { - if(orientGraph != null) { - orientGraph.close(); + if(oDatabaseDocument != null) { + oDatabaseDocument.close(); + } + if(current!=null) { + current.activateOnCurrentThread(); } } diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/Access.java b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/Access.java index 4b59df8..d4a017b 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/Access.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/Access.java @@ -37,7 +37,7 @@ import org.gcube.informationsystem.resourceregistry.instances.base.ERManagement; import org.gcube.informationsystem.resourceregistry.instances.base.ERManagementUtility; import org.gcube.informationsystem.resourceregistry.instances.context.ContextUtility; import org.gcube.informationsystem.resourceregistry.instances.context.entities.ContextManagement; -import org.gcube.informationsystem.resourceregistry.instances.model.entity.ResourceManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entities.ResourceManagement; import org.gcube.informationsystem.resourceregistry.instances.type.SchemaManagement; import org.gcube.informationsystem.resourceregistry.instances.type.SchemaManagementImpl; import org.gcube.informationsystem.resourceregistry.query.Query; diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/utils/Utility.java b/src/main/java/org/gcube/informationsystem/resourceregistry/utils/Utility.java index 0ebfc1d..abafe0a 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/utils/Utility.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/utils/Utility.java @@ -1,6 +1,6 @@ package org.gcube.informationsystem.resourceregistry.utils; -import java.util.Iterator; +import java.util.HashMap; import java.util.UUID; import org.gcube.informationsystem.base.reference.properties.BaseProperty; @@ -9,6 +9,7 @@ import org.gcube.informationsystem.model.reference.entities.Entity; import org.gcube.informationsystem.model.reference.relations.Relation; import org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; +import org.gcube.informationsystem.resourceregistry.instances.base.ERManagement; import org.gcube.informationsystem.resourceregistry.instances.context.ContextUtility; import org.gcube.informationsystem.resourceregistry.security.AdminSecurityContext; import org.gcube.informationsystem.resourceregistry.security.SecurityContext.PermissionMode; @@ -24,7 +25,8 @@ import com.orientechnologies.orient.core.record.OElement; import com.orientechnologies.orient.core.record.ORecord; import com.orientechnologies.orient.core.record.OVertex; import com.orientechnologies.orient.core.record.impl.ODocument; -import com.orientechnologies.orient.core.sql.query.OSQLSynchQuery; +import com.orientechnologies.orient.core.sql.executor.OResult; +import com.orientechnologies.orient.core.sql.executor.OResultSet; /** * @author Luca Frosini (ISTI - CNR) @@ -97,21 +99,22 @@ public class Utility { String select = "SELECT FROM " + elementType + " WHERE " + Relation.HEADER_PROPERTY + "." + Header.UUID_PROPERTY + " = \"" + uuid.toString() + "\""; - OSQLSynchQuery osqlSynchQuery = new OSQLSynchQuery<>(select); + OResultSet resultSet = oDatabaseDocument.query(select, new HashMap<>()); - Iterable elements = oDatabaseDocument.command(osqlSynchQuery).execute(); - if(elements == null || !elements.iterator().hasNext()) { + + if(resultSet == null || !resultSet.hasNext()) { String error = String.format("No %s with UUID %s was found", elementType, uuid.toString()); logger.info(error); throw new NotFoundException(error); } - Iterator iterator = elements.iterator(); - El element = iterator.next(); + OResult oResult = resultSet.next(); + @SuppressWarnings("unchecked") + El element = (El) ERManagement.getElementFromOptional(oResult.getElement()); logger.trace("{} with id {} is : {}", elementType, uuid.toString(), Utility.toJsonString(element, true)); - if(iterator.hasNext()) { + if(resultSet.hasNext()) { throw new ResourceRegistryException("Found more than one " + elementType + " with uuid " + uuid.toString() + ". This is a fatal error please contact Admnistrator"); } diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/access/QueryImplTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/access/QueryImplTest.java deleted file mode 100644 index 968b546..0000000 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/access/QueryImplTest.java +++ /dev/null @@ -1,31 +0,0 @@ -/** - * - */ -package org.gcube.informationsystem.resourceregistry.access; - -import org.gcube.informationsystem.resourceregistry.ContextTest; -import org.gcube.informationsystem.resourceregistry.api.exceptions.query.InvalidQueryException; -import org.gcube.informationsystem.resourceregistry.query.QueryImpl; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author Luca Frosini (ISTI - CNR) - * - */ -public class QueryImplTest extends ContextTest { - - private static Logger logger = LoggerFactory.getLogger(QueryImplTest.class); - - @Test - public void testQuery() throws InvalidQueryException{ - QueryImpl queryImpl = new QueryImpl(); - - String query = "select * from SoftwareFacet"; - String ret = queryImpl.query(query, -7, null, false); - - logger.debug(ret); - } - -} diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/context/ContextManagementTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/context/ContextManagementTest.java index 2a8557e..e3c2918 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/context/ContextManagementTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/context/ContextManagementTest.java @@ -13,9 +13,9 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegis import org.gcube.informationsystem.resourceregistry.api.exceptions.context.ContextAlreadyPresentException; import org.gcube.informationsystem.resourceregistry.api.exceptions.context.ContextException; import org.gcube.informationsystem.resourceregistry.api.exceptions.context.ContextNotFoundException; -import org.gcube.informationsystem.resourceregistry.er.entity.FacetManagementTest; import org.gcube.informationsystem.resourceregistry.instances.context.ContextUtility; import org.gcube.informationsystem.resourceregistry.instances.context.entities.ContextManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entity.FacetManagementTest; import org.gcube.informationsystem.resourceregistry.security.ContextSecurityContext; import org.gcube.informationsystem.resourceregistry.security.SecurityContext; import org.gcube.informationsystem.resourceregistry.security.SecurityContext.PermissionMode; diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/er/AbstractERManagementTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/AbstractERManagementTest.java similarity index 88% rename from src/test/java/org/gcube/informationsystem/resourceregistry/er/AbstractERManagementTest.java rename to src/test/java/org/gcube/informationsystem/resourceregistry/instances/AbstractERManagementTest.java index c8cafaf..bd66d31 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/er/AbstractERManagementTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/AbstractERManagementTest.java @@ -1,4 +1,4 @@ -package org.gcube.informationsystem.resourceregistry.er; +package org.gcube.informationsystem.resourceregistry.instances; import org.gcube.informationsystem.base.reference.ER; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/er/DiscoveryTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/DiscoveryTest.java similarity index 96% rename from src/test/java/org/gcube/informationsystem/resourceregistry/er/DiscoveryTest.java rename to src/test/java/org/gcube/informationsystem/resourceregistry/instances/DiscoveryTest.java index 77c8944..c751260 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/er/DiscoveryTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/DiscoveryTest.java @@ -1,4 +1,4 @@ -package org.gcube.informationsystem.resourceregistry.er; +package org.gcube.informationsystem.resourceregistry.instances; import java.util.ArrayList; import java.util.Arrays; diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/er/ERManagementTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/ERManagementTest.java similarity index 99% rename from src/test/java/org/gcube/informationsystem/resourceregistry/er/ERManagementTest.java rename to src/test/java/org/gcube/informationsystem/resourceregistry/instances/ERManagementTest.java index f5828f8..99434ff 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/er/ERManagementTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/ERManagementTest.java @@ -1,7 +1,7 @@ /** * */ -package org.gcube.informationsystem.resourceregistry.er; +package org.gcube.informationsystem.resourceregistry.instances; import java.io.File; import java.io.FileInputStream; @@ -35,8 +35,8 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegis import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.facet.FacetNotFoundException; import org.gcube.informationsystem.resourceregistry.api.exceptions.query.InvalidQueryException; import org.gcube.informationsystem.resourceregistry.instances.base.ERManagementUtility; -import org.gcube.informationsystem.resourceregistry.instances.model.entity.FacetManagement; -import org.gcube.informationsystem.resourceregistry.instances.model.entity.ResourceManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entities.FacetManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entities.ResourceManagement; import org.gcube.informationsystem.resourceregistry.instances.model.relation.ConsistsOfManagement; import org.gcube.informationsystem.resourceregistry.instances.model.relation.IsRelatedToManagement; import org.gcube.informationsystem.utils.ISMapper; diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/er/EncryptionTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/EncryptionTest.java similarity index 96% rename from src/test/java/org/gcube/informationsystem/resourceregistry/er/EncryptionTest.java rename to src/test/java/org/gcube/informationsystem/resourceregistry/instances/EncryptionTest.java index d187cc7..31d03ef 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/er/EncryptionTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/EncryptionTest.java @@ -1,4 +1,4 @@ -package org.gcube.informationsystem.resourceregistry.er; +package org.gcube.informationsystem.resourceregistry.instances; import java.security.Key; diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/er/SmartgearResourcesTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/SmartgearResourcesTest.java similarity index 99% rename from src/test/java/org/gcube/informationsystem/resourceregistry/er/SmartgearResourcesTest.java rename to src/test/java/org/gcube/informationsystem/resourceregistry/instances/SmartgearResourcesTest.java index 626ac12..932c64a 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/er/SmartgearResourcesTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/SmartgearResourcesTest.java @@ -1,7 +1,7 @@ /** * */ -package org.gcube.informationsystem.resourceregistry.er; +package org.gcube.informationsystem.resourceregistry.instances; import java.io.BufferedReader; import java.io.File; @@ -35,7 +35,7 @@ import org.gcube.informationsystem.model.reference.relations.ConsistsOf; import org.gcube.informationsystem.model.reference.relations.IsIdentifiedBy; import org.gcube.informationsystem.resourceregistry.ContextTest; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; -import org.gcube.informationsystem.resourceregistry.instances.model.entity.ResourceManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entities.ResourceManagement; import org.gcube.informationsystem.utils.ISMapper; import org.gcube.resourcemanagement.model.impl.entities.facets.CPUFacetImpl; import org.gcube.resourcemanagement.model.impl.entities.facets.ContainerStateFacetImpl; diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/er/entity/FacetManagementTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/model/entity/FacetManagementTest.java similarity index 98% rename from src/test/java/org/gcube/informationsystem/resourceregistry/er/entity/FacetManagementTest.java rename to src/test/java/org/gcube/informationsystem/resourceregistry/instances/model/entity/FacetManagementTest.java index 3070350..7cea3b3 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/er/entity/FacetManagementTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/model/entity/FacetManagementTest.java @@ -1,4 +1,4 @@ -package org.gcube.informationsystem.resourceregistry.er.entity; +package org.gcube.informationsystem.resourceregistry.instances.model.entity; import java.util.UUID; @@ -9,9 +9,9 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.facet. import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.facet.FacetAvailableInAnotherContextException; import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.facet.FacetNotFoundException; import org.gcube.informationsystem.resourceregistry.api.utils.Utility; -import org.gcube.informationsystem.resourceregistry.er.ERManagementTest; +import org.gcube.informationsystem.resourceregistry.instances.ERManagementTest; import org.gcube.informationsystem.resourceregistry.instances.context.ContextUtility; -import org.gcube.informationsystem.resourceregistry.instances.model.entity.FacetManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entities.FacetManagement; import org.gcube.informationsystem.resourceregistry.utils.HeaderUtility; import org.gcube.informationsystem.utils.ISMapper; import org.gcube.resourcemanagement.model.impl.entities.facets.SoftwareFacetImpl; diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/er/entity/ResourceManagementTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/model/entity/ResourceManagementTest.java similarity index 97% rename from src/test/java/org/gcube/informationsystem/resourceregistry/er/entity/ResourceManagementTest.java rename to src/test/java/org/gcube/informationsystem/resourceregistry/instances/model/entity/ResourceManagementTest.java index e4d3477..fb6d860 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/er/entity/ResourceManagementTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/model/entity/ResourceManagementTest.java @@ -1,4 +1,4 @@ -package org.gcube.informationsystem.resourceregistry.er.entity; +package org.gcube.informationsystem.resourceregistry.instances.model.entity; import java.util.HashMap; import java.util.Map; @@ -12,7 +12,7 @@ import org.gcube.informationsystem.resourceregistry.ContextTest; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; import org.gcube.informationsystem.resourceregistry.instances.base.ERManagement; import org.gcube.informationsystem.resourceregistry.instances.base.ERManagementUtility; -import org.gcube.informationsystem.resourceregistry.instances.model.entity.ResourceManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entities.ResourceManagement; import org.gcube.informationsystem.utils.ISMapper; import org.gcube.resourcemanagement.model.impl.entities.resources.EServiceImpl; import org.gcube.resourcemanagement.model.reference.entities.facets.SoftwareFacet; diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/er/multicontext/BasicTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/multicontext/BasicTest.java similarity index 98% rename from src/test/java/org/gcube/informationsystem/resourceregistry/er/multicontext/BasicTest.java rename to src/test/java/org/gcube/informationsystem/resourceregistry/instances/multicontext/BasicTest.java index 93ebf01..f36e905 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/er/multicontext/BasicTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/multicontext/BasicTest.java @@ -1,7 +1,7 @@ /** * */ -package org.gcube.informationsystem.resourceregistry.er.multicontext; +package org.gcube.informationsystem.resourceregistry.instances.multicontext; import java.net.URI; import java.net.URL; @@ -22,10 +22,10 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.facet. import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.resource.ResourceAvailableInAnotherContextException; import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.resource.ResourceNotFoundException; import org.gcube.informationsystem.resourceregistry.api.exceptions.relation.RelationAvailableInAnotherContextException; -import org.gcube.informationsystem.resourceregistry.er.SmartgearResourcesTest; +import org.gcube.informationsystem.resourceregistry.instances.SmartgearResourcesTest; import org.gcube.informationsystem.resourceregistry.instances.context.ContextUtility; -import org.gcube.informationsystem.resourceregistry.instances.model.entity.FacetManagement; -import org.gcube.informationsystem.resourceregistry.instances.model.entity.ResourceManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entities.FacetManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entities.ResourceManagement; import org.gcube.informationsystem.resourceregistry.instances.model.relation.IsRelatedToManagement; import org.gcube.informationsystem.utils.ISMapper; import org.gcube.resourcemanagement.model.impl.entities.facets.AccessPointFacetImpl; diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/er/multicontext/RuleTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/multicontext/RuleTest.java similarity index 97% rename from src/test/java/org/gcube/informationsystem/resourceregistry/er/multicontext/RuleTest.java rename to src/test/java/org/gcube/informationsystem/resourceregistry/instances/multicontext/RuleTest.java index ca5a6b8..e5bc36a 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/er/multicontext/RuleTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/multicontext/RuleTest.java @@ -1,4 +1,4 @@ -package org.gcube.informationsystem.resourceregistry.er.multicontext; +package org.gcube.informationsystem.resourceregistry.instances.multicontext; import java.util.UUID; @@ -8,8 +8,8 @@ import org.gcube.informationsystem.model.reference.relations.IsIdentifiedBy; import org.gcube.informationsystem.resourceregistry.ContextTest; import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.facet.FacetAlreadyPresentException; import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.resource.ResourceAlreadyPresentException; -import org.gcube.informationsystem.resourceregistry.instances.model.entity.FacetManagement; -import org.gcube.informationsystem.resourceregistry.instances.model.entity.ResourceManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entities.FacetManagement; +import org.gcube.informationsystem.resourceregistry.instances.model.entities.ResourceManagement; import org.gcube.informationsystem.utils.ISMapper; import org.gcube.resourcemanagement.model.impl.entities.facets.SoftwareFacetImpl; import org.gcube.resourcemanagement.model.impl.entities.resources.EServiceImpl; diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/query/QueryTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/query/QueryTest.java index c96a425..0a69be5 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/query/QueryTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/query/QueryTest.java @@ -1,19 +1,36 @@ +/** + * + */ package org.gcube.informationsystem.resourceregistry.query; import org.gcube.informationsystem.resourceregistry.ContextTest; import org.gcube.informationsystem.resourceregistry.api.exceptions.query.InvalidQueryException; +import org.gcube.informationsystem.resourceregistry.api.rest.AccessPath; +import org.gcube.informationsystem.resourceregistry.query.QueryImpl; +import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +/** + * @author Luca Frosini (ISTI - CNR) + * + */ public class QueryTest extends ContextTest { private static Logger logger = LoggerFactory.getLogger(QueryTest.class); - //@Test - public void testGremlinQuery() throws InvalidQueryException { - Query query = new QueryImpl(); - String ret = query.gremlinQuery("g.V()"); - logger.debug("Gremlin Query Result is : {}", ret); + @Test + public void testQuery() throws InvalidQueryException{ + QueryImpl queryImpl = new QueryImpl(); + + String query = "select from SoftwareFacet"; + String ret = queryImpl.query(query, -7, AccessPath.DEFAULT_FETCH_PLAN_PARAM, false); + + logger.debug(ret); + + ret = queryImpl.query(query, -7, null, false); + + logger.debug(ret); } }