Ported SchemaManagement to the new way to define the type of a property
This commit is contained in:
parent
bf24fe07c4
commit
1ccefd44e2
|
@ -39,6 +39,7 @@ import org.gcube.informationsystem.resourceregistry.types.properties.PropertyTyp
|
|||
import org.gcube.informationsystem.resourceregistry.types.relations.ConsistsOfTypeDefinitionManagement;
|
||||
import org.gcube.informationsystem.resourceregistry.types.relations.IsRelatedToTypeDefinitionManagement;
|
||||
import org.gcube.informationsystem.types.PropertyTypeName;
|
||||
import org.gcube.informationsystem.types.PropertyTypeName.BaseType;
|
||||
import org.gcube.informationsystem.types.TypeMapper;
|
||||
import org.gcube.informationsystem.types.impl.properties.PropertyDefinitionImpl;
|
||||
import org.gcube.informationsystem.types.reference.Type;
|
||||
|
@ -393,10 +394,10 @@ public class SchemaManagement {
|
|||
if(!typeList.contains(type.getName())) {
|
||||
switch(propertyTypeName.getBaseType()) {
|
||||
case LIST:
|
||||
throw new UnsupportedDataTypeException(OrientDBType.OType.PROPERTYLIST
|
||||
throw new UnsupportedDataTypeException(OType.EMBEDDEDLIST
|
||||
+ " support is currently disabled due to OrientDB bug see https://github.com/orientechnologies/orientdb/issues/7354");
|
||||
case SET:
|
||||
throw new UnsupportedDataTypeException(OrientDBType.OType.PROPERTYSET
|
||||
throw new UnsupportedDataTypeException(OType.EMBEDDEDSET
|
||||
+ " support is currently disabled due to OrientDB bug see https://github.com/orientechnologies/orientdb/issues/7354");
|
||||
default:
|
||||
break;
|
||||
|
@ -422,22 +423,26 @@ public class SchemaManagement {
|
|||
op.setRegexp(propertyDefinition.getRegexp());
|
||||
|
||||
if(propertyTypeName.getGenericBaseType()!=null) {
|
||||
OType linkedType =
|
||||
OClass linkedClass = getOClass(oSchema, propertyTypeName.getGenericBaseType().toString());
|
||||
if(propertyTypeName.getGenericBaseType().ordinal() >= BaseType.PROPERTY.ordinal()) {
|
||||
if(propertyTypeName.getGenericBaseType()!=null) {
|
||||
OType linkedOType = OrientDBTypeMapping.getOTypeByBaseType(propertyTypeName.getGenericBaseType());
|
||||
op.setLinkedType(OType.getById(Integer.valueOf(linkedOType.ordinal()).byteValue()));
|
||||
}else if(propertyTypeName.getGenericClassName()!=null){
|
||||
|
||||
OClass linkedClass = getOClass(oSchema, propertyTypeName.getGenericClassName());
|
||||
|
||||
if(linkedClass == null) {
|
||||
logger.trace("class {} not found in schema", propertyDefinition.getLinkedClass());
|
||||
throw new Exception(
|
||||
"class " + propertyDefinition.getLinkedClass() + " not found in schema");
|
||||
logger.trace("Class {} not found.", propertyTypeName.getGenericClassName());
|
||||
throw new Exception("Class " + propertyTypeName.getGenericClassName() + " not found.");
|
||||
}
|
||||
|
||||
if(linkedClass.isEdgeType() || linkedClass.isVertexType()) {
|
||||
throw new Exception("A Property Field cannot be an Entity or a Relation");
|
||||
throw new Exception("A PropertyType cannot be an Entity type or a Relation type");
|
||||
}
|
||||
|
||||
op.setLinkedClass(linkedClass);
|
||||
} else if(propertyDefinition.getLinkedType() != null) {
|
||||
op.setLinkedType(OType.getById(propertyDefinition.getLinkedType().byteValue()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -572,7 +577,8 @@ public class SchemaManagement {
|
|||
continue;
|
||||
}
|
||||
|
||||
OType oType = OType.getById(newPropertyDefinition.getType().byteValue());
|
||||
PropertyTypeName newPropertyTypeName = ((PropertyDefinitionImpl) newPropertyDefinition).getPropertyTypeName();
|
||||
OType oType = OrientDBTypeMapping.getOTypeByBaseType(newPropertyTypeName.getBaseType());
|
||||
|
||||
/*
|
||||
* Excluding EMBEDDEDLIST and EMBEDDEDSET
|
||||
|
@ -582,10 +588,10 @@ public class SchemaManagement {
|
|||
if(!typeList.contains(newTypeDefinition.getName())) {
|
||||
switch(oType) {
|
||||
case EMBEDDEDLIST:
|
||||
throw new UnsupportedDataTypeException(OrientDBType.OType.PROPERTYLIST
|
||||
throw new UnsupportedDataTypeException(OType.EMBEDDEDLIST
|
||||
+ " support is currently disabled due to OrientDB bug see https://github.com/orientechnologies/orientdb/issues/7354");
|
||||
case EMBEDDEDSET:
|
||||
throw new UnsupportedDataTypeException(OrientDBType.OType.PROPERTYSET
|
||||
throw new UnsupportedDataTypeException(OType.EMBEDDEDSET
|
||||
+ " support is currently disabled due to OrientDB bug see https://github.com/orientechnologies/orientdb/issues/7354");
|
||||
default:
|
||||
break;
|
||||
|
@ -615,25 +621,32 @@ public class SchemaManagement {
|
|||
op.setReadonly(newPropertyDefinition.isReadonly());
|
||||
op.setRegexp(newPropertyDefinition.getRegexp());
|
||||
|
||||
if(newPropertyDefinition.getLinkedClass() != null) {
|
||||
OClass linkedClass = getOClass(oSchema, newPropertyDefinition.getLinkedClass());
|
||||
if(newPropertyTypeName.getGenericBaseType()!=null) {
|
||||
if(newPropertyTypeName.getGenericBaseType().ordinal() >= BaseType.PROPERTY.ordinal()) {
|
||||
if(newPropertyTypeName.getGenericBaseType()!=null) {
|
||||
OType linkedOType = OrientDBTypeMapping.getOTypeByBaseType(newPropertyTypeName.getGenericBaseType());
|
||||
op.setLinkedType(OType.getById(Integer.valueOf(linkedOType.ordinal()).byteValue()));
|
||||
}else if(newPropertyTypeName.getGenericClassName()!=null){
|
||||
|
||||
OClass linkedClass = getOClass(oSchema, newPropertyTypeName.getGenericClassName());
|
||||
|
||||
if(linkedClass == null) {
|
||||
logger.trace("class {} not found in schema", newPropertyDefinition.getLinkedClass());
|
||||
throw new Exception(
|
||||
"class " + newPropertyDefinition.getLinkedClass() + " not found in schema");
|
||||
logger.trace("Class {} not found.", newPropertyTypeName.getGenericClassName());
|
||||
throw new Exception("Class " + newPropertyTypeName.getGenericClassName() + " not found.");
|
||||
}
|
||||
|
||||
if(linkedClass.isEdgeType() || linkedClass.isVertexType()) {
|
||||
throw new Exception("A Property Field cannot be an Entity or a Relation");
|
||||
throw new Exception("A PropertyType cannot be an Entity type or a Relation type");
|
||||
}
|
||||
|
||||
op.setLinkedClass(linkedClass);
|
||||
} else if(newPropertyDefinition.getLinkedType() != null) {
|
||||
op.setLinkedType(OType.getById(newPropertyDefinition.getLinkedType().byteValue()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
for(String propertyName : newPropertyDefinitionMap.keySet()) {
|
||||
actualPropertyDefinitionMap.remove(propertyName);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue