From 972b8469e15bf1adc94d1338b3fde1a185a8d2dd Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Fri, 12 May 2023 16:06:48 +0200 Subject: [PATCH] Migrating code --- .../instances/base/ElementManagement.java | 43 +++++--------- .../templates/QueryTemplateManagement.java | 48 ++++++++-------- .../resourceregistry/rest/Access.java | 8 +-- .../resourceregistry/types/DBTypeMapping.java | 57 +++++++++++++++++++ .../types/OrientDBTypeMapping.java | 57 ------------------- .../types/TypeManagement.java | 10 ++-- .../utils/EncryptedOrient.java | 9 +-- .../utils/PropagationConstraintOrient.java | 4 +- 8 files changed, 109 insertions(+), 127 deletions(-) create mode 100644 src/main/java/org/gcube/informationsystem/resourceregistry/types/DBTypeMapping.java delete mode 100644 src/main/java/org/gcube/informationsystem/resourceregistry/types/OrientDBTypeMapping.java diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/ElementManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/ElementManagement.java index 49426b3..cfaa576 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/ElementManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/ElementManagement.java @@ -1091,7 +1091,7 @@ public abstract class ElementManagement { JsonNode elementOfArray = arrayElement.next(); Object object = null; - if(property.getLinkedType()!=null) { + if(property.getType()!=null) { object = getObjectFromJsonNode(elementOfArray); }else { object = PropertyElementManagement.getPropertyDocument(elementOfArray); @@ -1101,30 +1101,13 @@ public abstract class ElementManagement { ((MutableDocument) element).set(key, list, com.arcadedb.schema.Type.LIST); break; - case SET: - Set set = new HashSet(); - Iterator setElement = value.elements(); - while(setElement.hasNext()) { - JsonNode elementOfSet = setElement.next(); - Object object = null; - - if(property.getLinkedType()!=null) { - object = getObjectFromJsonNode(elementOfSet); - }else { - object = PropertyElementManagement.getPropertyDocument(elementOfSet); - } - set.add(object); - } - element.setProperty(key, set, OType.EMBEDDEDSET); - break; - case MAP: Map map = new HashMap<>(); Iterator fieldNames = value.fieldNames(); while(fieldNames.hasNext()) { String fieldKey = fieldNames.next(); Object object = null; - if(property.getLinkedType()!=null) { + if(property.getType()!=null) { object = getObjectFromJsonNode(value.get(fieldKey)); }else { object = PropertyElementManagement.getPropertyDocument(value.get(fieldKey)); @@ -1146,7 +1129,7 @@ public abstract class ElementManagement { default: Object obj = getObjectFromJsonNode(value); if(obj != null) { - element.set(key, obj); + ((MutableDocument) element).set(key, obj); } break; } @@ -1172,9 +1155,9 @@ public abstract class ElementManagement { try { JsonNode value = properties.get(key); - OProperty oProperty = type.getProperty(key); + Property property = type.getProperty(key); - if(oProperty==null) { + if(property==null) { Object object = getObjectFromJsonNode(value); if(object != null) { if(object instanceof Document) { @@ -1190,7 +1173,7 @@ public abstract class ElementManagement { } } }else { - setProperty(oProperty, key, value); + setProperty(property, key, value); } } catch(Exception e) { @@ -1214,7 +1197,7 @@ public abstract class ElementManagement { } } - element.removeProperty(key); + ((MutableDocument) element).remove(key); } return element; @@ -1237,7 +1220,7 @@ public abstract class ElementManagement { if(key.compareTo(IdentifiableElement.METADATA_PROPERTY) == 0) { // Keeping the metadata - MetadataOrient metadataOrient = MetadataUtility.getMetadataOrient((ODocument) object); + MetadataOrient metadataOrient = MetadataUtility.getMetadataOrient((Document) object); ObjectNode metadataJson = (ObjectNode) DBUtility.toJsonNode(metadataOrient); if(!isUserAllowedToGetPrivacyMeta()) { @@ -1248,7 +1231,7 @@ public abstract class ElementManagement { // TODO check a solution for supertypes TypesCache typesCache = TypesCache.getInstance(); @SuppressWarnings("unchecked") - CachedType> metadataType = (CachedType>) typesCache.getCachedType(Metadata.NAME); + CachedType> metadataType = (CachedType>) typesCache.getCachedType(Metadata.NAME); ObjectMapper objectMapper = new ObjectMapper(); Collection superClasses = metadataType.getSuperTypes(); ArrayNode arrayNode = objectMapper.valueToTree(superClasses); @@ -1277,10 +1260,10 @@ public abstract class ElementManagement { } if(object instanceof Date) { - OProperty oProperty = getDocumentType().getProperty(key); - OType oType = oProperty.getType(); + Property property = getDocumentType().getProperty(key); + com.arcadedb.schema.Type type = property.getType(); DateFormat dateFormat = ODateHelper.getDateTimeFormatInstance(); - switch(oType) { + switch(type) { case DATE: dateFormat = ODateHelper.getDateFormatInstance(); break; @@ -1425,7 +1408,7 @@ public abstract class ElementManagement { if(propertyDefinition.isNotnull()) { // If the field is mandatory but null value is accepted I add the // field as null value - element.set(fieldName, null); + ((MutableDocument) element).set(fieldName, null); } else { throw new SchemaViolationException(getMandatoryErrorMessage(fieldName)); } diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/queries/templates/QueryTemplateManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/queries/templates/QueryTemplateManagement.java index bff1436..e7f5bd8 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/queries/templates/QueryTemplateManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/queries/templates/QueryTemplateManagement.java @@ -1,7 +1,5 @@ package org.gcube.informationsystem.resourceregistry.queries.templates; -import java.util.HashMap; - import org.gcube.com.fasterxml.jackson.core.JsonProcessingException; import org.gcube.com.fasterxml.jackson.databind.JsonNode; import org.gcube.com.fasterxml.jackson.databind.ObjectMapper; @@ -25,11 +23,11 @@ import org.gcube.informationsystem.types.reference.entities.EntityType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.orientechnologies.orient.core.db.document.ODatabaseDocument; -import com.orientechnologies.orient.core.record.OVertex; -import com.orientechnologies.orient.core.record.impl.ODocument; -import com.orientechnologies.orient.core.sql.executor.OResult; -import com.orientechnologies.orient.core.sql.executor.OResultSet; +import com.arcadedb.database.Document; +import com.arcadedb.graph.Vertex; +import com.arcadedb.query.sql.executor.Result; +import com.arcadedb.query.sql.executor.ResultSet; +import com.arcadedb.remote.RemoteDatabase; /** * @author Luca Frosini (ISTI - CNR) @@ -46,9 +44,9 @@ public class QueryTemplateManagement extends EntityElementManagement {}", errorMessage, select); - OResultSet resultSet = oDatabaseDocument.command(select.toString(), new HashMap<>()); + ResultSet resultSet = database.command("sql", select.toString()); if (resultSet != null) { try { @@ -170,10 +168,10 @@ public class QueryTemplateManagement extends EntityElementManagement()); + ResultSet resultSet = database.query("sql", select.toString()); if(resultSet == null || !resultSet.hasNext()) { if(resultSet!=null) { @@ -182,8 +180,8 @@ public class QueryTemplateManagement extends EntityElementManagement iterable = oDatabaseDocument.browseClass(typeName, polymorphic); - for (ODocument vertex : iterable) { + Iterable iterable = database.browseClass(typeName, polymorphic); + for (Document vertex : iterable) { QueryTemplateManagement queryTemplateManagement = new QueryTemplateManagement(); - queryTemplateManagement.setElement((OVertex) vertex); + queryTemplateManagement.setElement((Vertex) vertex); try { JsonNode jsonObject = queryTemplateManagement.serializeAsJsonNode(); arrayNode.add(jsonObject); 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 16175b6..1fc0203 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/Access.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/Access.java @@ -45,7 +45,7 @@ import org.gcube.informationsystem.resourceregistry.types.TypeManagement; import org.gcube.informationsystem.types.TypeMapper; import org.gcube.informationsystem.types.reference.Type; -import com.orientechnologies.orient.core.record.ODirection; +import com.arcadedb.graph.Vertex.DIRECTION; /** * @author Luca Frosini (ISTI - CNR) @@ -372,7 +372,7 @@ public class Access extends BaseRest { if(erManagement instanceof ResourceManagement) { UUID refereceUUID = null; - ODirection directionEnum = ODirection.OUT; + DIRECTION directionEnum = DIRECTION.OUT; Map constraint = new HashMap<>(); @@ -414,9 +414,9 @@ public class Access extends BaseRest { } } try { - directionEnum = ODirection.valueOf(direction.toUpperCase()); + directionEnum = DIRECTION.valueOf(direction.toUpperCase()); } catch(Exception e) { - String error = String.format("%s is not a valid. Allowed values are %s", direction, ODirection.values()); + String error = String.format("%s is not a valid. Allowed values are %s", direction, DIRECTION.values()); throw new InvalidQueryException(error); } diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/types/DBTypeMapping.java b/src/main/java/org/gcube/informationsystem/resourceregistry/types/DBTypeMapping.java new file mode 100644 index 0000000..873c2eb --- /dev/null +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/types/DBTypeMapping.java @@ -0,0 +1,57 @@ +package org.gcube.informationsystem.resourceregistry.types; + +import java.util.HashMap; +import java.util.Map; + +import org.gcube.informationsystem.types.PropertyTypeName.BaseType; + +import com.arcadedb.schema.Type; + +/** + * @author Luca Frosini (ISTI - CNR) + * + * Create a mapping between OrientDB {@link Type} + * https://orientdb.gitbooks.io/orientdb-manual/content/orientdb.wiki/Types.html + * and {@link BaseType} + */ +public class DBTypeMapping { + + protected static final Map IS_BASE_TYPE_TO_DB_TYPE; + + protected static final Map DB_TYPE_TO_IS_BASE_TYPE; + + + static { + IS_BASE_TYPE_TO_DB_TYPE = new HashMap<>(); + + IS_BASE_TYPE_TO_DB_TYPE.put(BaseType.BOOLEAN, Type.BOOLEAN); + IS_BASE_TYPE_TO_DB_TYPE.put(BaseType.INTEGER, Type.INTEGER); + IS_BASE_TYPE_TO_DB_TYPE.put(BaseType.SHORT, Type.SHORT); + IS_BASE_TYPE_TO_DB_TYPE.put(BaseType.LONG, Type.LONG); + IS_BASE_TYPE_TO_DB_TYPE.put(BaseType.FLOAT, Type.FLOAT); + IS_BASE_TYPE_TO_DB_TYPE.put(BaseType.DOUBLE, Type.DOUBLE); + IS_BASE_TYPE_TO_DB_TYPE.put(BaseType.DATE, Type.DATETIME); + IS_BASE_TYPE_TO_DB_TYPE.put(BaseType.STRING, Type.STRING); + IS_BASE_TYPE_TO_DB_TYPE.put(BaseType.BINARY, Type.BINARY); + IS_BASE_TYPE_TO_DB_TYPE.put(BaseType.BYTE, Type.BYTE); + IS_BASE_TYPE_TO_DB_TYPE.put(BaseType.PROPERTY, Type.EMBEDDED); + IS_BASE_TYPE_TO_DB_TYPE.put(BaseType.LIST, Type.LIST); + IS_BASE_TYPE_TO_DB_TYPE.put(BaseType.SET, Type.LIST); + IS_BASE_TYPE_TO_DB_TYPE.put(BaseType.MAP, Type.MAP); + + DB_TYPE_TO_IS_BASE_TYPE = new HashMap<>(); + for(BaseType baseType : IS_BASE_TYPE_TO_DB_TYPE.keySet()) { + DB_TYPE_TO_IS_BASE_TYPE.put(IS_BASE_TYPE_TO_DB_TYPE.get(baseType), baseType); + } + + } + + public static Type getDBType(final BaseType baseType) { + return IS_BASE_TYPE_TO_DB_TYPE.get(baseType); + } + + public static BaseType getISBaseType(final Type oType) { + return DB_TYPE_TO_IS_BASE_TYPE.get(oType); + } + +} diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/types/OrientDBTypeMapping.java b/src/main/java/org/gcube/informationsystem/resourceregistry/types/OrientDBTypeMapping.java deleted file mode 100644 index 5999542..0000000 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/types/OrientDBTypeMapping.java +++ /dev/null @@ -1,57 +0,0 @@ -package org.gcube.informationsystem.resourceregistry.types; - -import java.util.HashMap; -import java.util.Map; - -import org.gcube.informationsystem.types.PropertyTypeName.BaseType; - -import com.orientechnologies.orient.core.metadata.schema.OType; - -/** - * @author Luca Frosini (ISTI - CNR) - * - * Create a mapping between OrientDB {@link OType} - * https://orientdb.gitbooks.io/orientdb-manual/content/orientdb.wiki/Types.html - * and {@link BaseType} - */ -public class OrientDBTypeMapping { - - protected static final Map BASE_TYPE_TO_OTYPE; - - protected static final Map OTYPE_TO_BASE_TYPE; - - - static { - BASE_TYPE_TO_OTYPE = new HashMap<>(); - - BASE_TYPE_TO_OTYPE.put(BaseType.BOOLEAN, OType.BOOLEAN); - BASE_TYPE_TO_OTYPE.put(BaseType.INTEGER, OType.INTEGER); - BASE_TYPE_TO_OTYPE.put(BaseType.SHORT, OType.SHORT); - BASE_TYPE_TO_OTYPE.put(BaseType.LONG, OType.LONG); - BASE_TYPE_TO_OTYPE.put(BaseType.FLOAT, OType.FLOAT); - BASE_TYPE_TO_OTYPE.put(BaseType.DOUBLE, OType.DOUBLE); - BASE_TYPE_TO_OTYPE.put(BaseType.DATE, OType.DATETIME); - BASE_TYPE_TO_OTYPE.put(BaseType.STRING, OType.STRING); - BASE_TYPE_TO_OTYPE.put(BaseType.BINARY, OType.BINARY); - BASE_TYPE_TO_OTYPE.put(BaseType.BYTE, OType.BYTE); - BASE_TYPE_TO_OTYPE.put(BaseType.PROPERTY, OType.EMBEDDED); - BASE_TYPE_TO_OTYPE.put(BaseType.LIST, OType.EMBEDDEDLIST); - BASE_TYPE_TO_OTYPE.put(BaseType.SET, OType.EMBEDDEDSET); - BASE_TYPE_TO_OTYPE.put(BaseType.MAP, OType.EMBEDDEDMAP); - - OTYPE_TO_BASE_TYPE = new HashMap<>(); - for(BaseType baseType : BASE_TYPE_TO_OTYPE.keySet()) { - OTYPE_TO_BASE_TYPE.put(BASE_TYPE_TO_OTYPE.get(baseType), baseType); - } - - } - - public static OType getOTypeByBaseType(final BaseType baseType) { - return BASE_TYPE_TO_OTYPE.get(baseType); - } - - public static BaseType getBaseTypeByOType(final OType oType) { - return OTYPE_TO_BASE_TYPE.get(oType); - } - -} diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/types/TypeManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/types/TypeManagement.java index 5000461..81abddb 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/types/TypeManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/types/TypeManagement.java @@ -368,7 +368,7 @@ public class TypeManagement { } } - com.arcadedb.schema.Type oType = OrientDBTypeMapping.getOTypeByBaseType(propertyTypeName.getBaseType()); + com.arcadedb.schema.Type oType = DBTypeMapping.getDBType(propertyTypeName.getBaseType()); com.arcadedb.schema.Property op = documentType.createProperty(propertyDefinition.getName(), oType); op.setDescription(propertyDefinition.getDescription()); @@ -404,8 +404,8 @@ public class TypeManagement { op.setLinkedClass(linkedClass); } else { - OType linkedOType = OrientDBTypeMapping - .getOTypeByBaseType(propertyTypeName.getGenericBaseType()); + OType linkedOType = DBTypeMapping + .getDBType(propertyTypeName.getGenericBaseType()); op.setLinkedType(OType.getById(Integer.valueOf(linkedOType.ordinal()).byteValue())); } @@ -542,7 +542,7 @@ public class TypeManagement { } PropertyTypeName newPropertyTypeName = ((PropertyDefinitionImpl) newPropertyDefinition).getPropertyTypeName(); - com.arcadedb.schema.Type dbType = OrientDBTypeMapping.getOTypeByBaseType(newPropertyTypeName.getBaseType()); + com.arcadedb.schema.Type dbType = DBTypeMapping.getDBType(newPropertyTypeName.getBaseType()); /* * Excluding EMBEDDEDLIST and EMBEDDEDSET @@ -603,7 +603,7 @@ public class TypeManagement { dbProperty.setLinkedClass(linkedClass); } else { - com.arcadedb.schema.Type linkedOType = OrientDBTypeMapping.getOTypeByBaseType(newPropertyTypeName.getGenericBaseType()); + com.arcadedb.schema.Type linkedOType = DBTypeMapping.getDBType(newPropertyTypeName.getGenericBaseType()); dbProperty.setLinkedType(Type.getById(Integer.valueOf(linkedOType.ordinal()).byteValue())); } } diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/utils/EncryptedOrient.java b/src/main/java/org/gcube/informationsystem/resourceregistry/utils/EncryptedOrient.java index 2e66c04..6696786 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/utils/EncryptedOrient.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/utils/EncryptedOrient.java @@ -5,7 +5,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -import org.apache.lucene.document.Document; import org.gcube.common.encryption.encrypter.StringEncrypter; import org.gcube.informationsystem.base.reference.properties.PropertyElement; import org.gcube.informationsystem.model.reference.properties.Encrypted; @@ -16,10 +15,12 @@ import org.gcube.informationsystem.resourceregistry.types.TypesCache; import org.gcube.informationsystem.types.reference.properties.PropertyType; import org.gcube.informationsystem.utils.TypeUtility; +import com.arcadedb.database.MutableDocument; + /** * @author Luca Frosini (ISTI - CNR) */ -public class EncryptedOrient extends Document implements Encrypted { +public class EncryptedOrient extends MutableDocument implements Encrypted { public static final String NAME = "Encrypted"; public static final String VALUE = "value"; @@ -61,11 +62,11 @@ public class EncryptedOrient extends Document implements Encrypted { } public String getEncryptedValue() { - return this.field(EncryptedOrient.VALUE); + return this.getString(EncryptedOrient.VALUE); } public void setEncryptedValue(String encryptedValue) { - this.field(EncryptedOrient.VALUE, encryptedValue); + this.set(EncryptedOrient.VALUE, encryptedValue); } public String getDecryptedValue() { diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/utils/PropagationConstraintOrient.java b/src/main/java/org/gcube/informationsystem/resourceregistry/utils/PropagationConstraintOrient.java index 2d51a53..0915b1d 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/utils/PropagationConstraintOrient.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/utils/PropagationConstraintOrient.java @@ -12,12 +12,12 @@ import org.gcube.informationsystem.resourceregistry.types.TypesCache; import org.gcube.informationsystem.types.reference.properties.PropertyType; import org.gcube.informationsystem.utils.TypeUtility; -import com.orientechnologies.orient.core.record.impl.ODocument; +import com.arcadedb.database.MutableDocument; /** * @author Luca Frosini (ISTI - CNR) */ -public class PropagationConstraintOrient extends ODocument implements PropagationConstraint { +public class PropagationConstraintOrient extends MutableDocument implements PropagationConstraint { public PropagationConstraintOrient() { super(PropagationConstraint.NAME);