From 319fa760e32e0597841c523de9d4b4dae0f86eee Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Fri, 12 Feb 2021 12:09:33 +0100 Subject: [PATCH] Fixing code due to refactoring --- .../dbinitialization/SchemaActionImpl.java | 3 --- .../resourceregistry/types/CachedType.java | 26 +++++-------------- .../types/SchemaManagement.java | 23 +++++++++------- .../types/SchemaManagementImplTest.java | 6 +++-- 4 files changed, 24 insertions(+), 34 deletions(-) diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/dbinitialization/SchemaActionImpl.java b/src/main/java/org/gcube/informationsystem/resourceregistry/dbinitialization/SchemaActionImpl.java index e8d9ed6..66d2dfc 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/dbinitialization/SchemaActionImpl.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/dbinitialization/SchemaActionImpl.java @@ -57,9 +57,6 @@ public class SchemaActionImpl implements SchemaAction { ((SchemaManagement) schemaManagement).setSkipTypeDefinitionCreation(true); } schemaManagement.create(); - schemaManagement.setTypeName(TypeMapper.getType(p)); - String json = TypeMapper.serializeType(p); - logger.trace(json); } catch(SchemaAlreadyPresentException sape) { logger.warn("{} already exists. It will be ignored", TypeMapper.getType(p)); } catch(Exception ex) { diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/types/CachedType.java b/src/main/java/org/gcube/informationsystem/resourceregistry/types/CachedType.java index 8839db1..3f52636 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/types/CachedType.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/types/CachedType.java @@ -3,11 +3,6 @@ package org.gcube.informationsystem.resourceregistry.types; import java.util.Set; import org.gcube.informationsystem.base.reference.AccessType; -import org.gcube.informationsystem.model.reference.entities.Facet; -import org.gcube.informationsystem.model.reference.entities.Resource; -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.resourceregistry.api.exceptions.ResourceRegistryException; import org.gcube.informationsystem.resourceregistry.api.exceptions.schema.SchemaException; import org.gcube.informationsystem.resourceregistry.api.exceptions.schema.SchemaNotFoundException; @@ -89,24 +84,17 @@ public class CachedType { return oClass; } - private AccessType getAccessTypeFromOClass(OClass oClass) throws ResourceRegistryException { - if(oClass.isSubClassOf(Resource.NAME)) { - return AccessType.RESOURCE; - } else if(oClass.isSubClassOf(Facet.NAME)) { - return AccessType.FACET; - } else if(oClass.isSubClassOf(ConsistsOf.NAME)) { - return AccessType.CONSISTS_OF; - } else if(oClass.isSubClassOf(IsRelatedTo.NAME)) { - return AccessType.IS_RELATED_TO; - } else if(oClass.isSubClassOf(Property.NAME)) { - return AccessType.PROPERTY; - }else { - throw new ResourceRegistryException(typeName + " is not a base type"); + AccessType[] accessTypes = AccessType.values(); + for(int i=accessTypes.length-1; i>=0; i--) { + AccessType accessType = accessTypes[i]; + if(oClass.isSubClassOf(accessType.getName())) { + return accessType; + } } + throw new ResourceRegistryException(typeName + " is not a base type"); } - public synchronized AccessType getAccessType() throws SchemaNotFoundException, SchemaException, ResourceRegistryException { if(accessType==null) { if(type!=null) { diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/types/SchemaManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/types/SchemaManagement.java index 36ac893..ed93596 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/types/SchemaManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/types/SchemaManagement.java @@ -119,9 +119,10 @@ public class SchemaManagement { this.typeName = typeName; } - public void setTypeAndTypeName(Class clz) { + public void setTypeAndTypeName(Class clz) throws Exception { this.type = TypeMapper.createTypeDefinition(clz); this.typeName = type.getName(); + this.json = TypeMapper.serializeTypeDefinition(type); } /* @@ -331,7 +332,7 @@ public class SchemaManagement { typeList.add(ConsistsOfType.NAME); } - protected void registerTypeSchema(Type type) + protected void registerTypeSchema() throws SchemaAlreadyPresentException, SchemaException { ODatabaseDocument oDatabaseDocument = null; @@ -353,13 +354,15 @@ public class SchemaManagement { OClass oClass = null; AccessType accessType = type.getAccessType(); + Class typeClass = accessType.getTypeClass(); + String typeName = type.getName(); - if(EntityElement.class.isAssignableFrom(accessType.getTypeClass())) { - oClass = oDatabaseDocument.createVertexClass(type.getName()); - } else if(RelationElement.class.isAssignableFrom(accessType.getTypeClass())) { - oClass = oDatabaseDocument.createEdgeClass(type.getName()); - } else if(PropertyElement.class.isAssignableFrom(accessType.getTypeClass())) { - oClass = oSchema.createClass(type.getName()); + if(EntityElement.class.isAssignableFrom(typeClass)) { + oClass = oDatabaseDocument.createVertexClass(typeName); + } else if(RelationElement.class.isAssignableFrom(typeClass)) { + oClass = oDatabaseDocument.createEdgeClass(typeName); + } else if(PropertyElement.class.isAssignableFrom(typeClass)) { + oClass = oSchema.createClass(typeName); } else { String error = String.format("Allowed superclass are %s, %s, %s, or any subclasses of them.", Entity.NAME, Relation.NAME, Property.NAME); @@ -739,11 +742,11 @@ public class SchemaManagement { AccessType accessType = type.getAccessType(); logger.info("Trying to register {} {} : {}", accessType.getName(), type.getName(), json); - registerTypeSchema(type); + registerTypeSchema(); ElementManagement erManagement = null; - switch(type.getAccessType()) { + switch(accessType) { case PROPERTY: erManagement = new PropertyTypeDefinitionManagement(); break; diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/types/SchemaManagementImplTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/types/SchemaManagementImplTest.java index 48e475f..34c2f2b 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/types/SchemaManagementImplTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/types/SchemaManagementImplTest.java @@ -212,7 +212,8 @@ public class SchemaManagementImplTest extends ContextTest { } - protected String create(Class clz) throws SchemaAlreadyPresentException, SchemaException { + protected String create(Class clz) + throws SchemaAlreadyPresentException, SchemaException, Exception { SchemaManagement schemaManagement = new SchemaManagement(); schemaManagement.setTypeAndTypeName(clz); String ret = schemaManagement.create(); @@ -220,7 +221,8 @@ public class SchemaManagementImplTest extends ContextTest { return ret; } - protected String update(Class clz, boolean skipVersionCheckOnUpdate) throws SchemaAlreadyPresentException, SchemaException, SchemaNotFoundException { + protected String update(Class clz, boolean skipVersionCheckOnUpdate) + throws SchemaAlreadyPresentException, SchemaException, SchemaNotFoundException, Exception { SchemaManagement schemaManagement = new SchemaManagement(); schemaManagement.setTypeAndTypeName(clz); schemaManagement.setSkipVersionCheckOnUpdate(skipVersionCheckOnUpdate);