Class AbstractEntitySchemaManagement<E extends org.gcube.informationsystem.types.reference.entities.EntitySchema>
java.lang.Object
org.gcube.informationsystem.resourceregistry.persistence.orientdb.base.ElementManagement<com.orientechnologies.orient.core.record.OVertex,ET>
org.gcube.informationsystem.resourceregistry.persistence.orientdb.base.EntityElementManagement<E,E>
org.gcube.informationsystem.resourceregistry.persistence.orientdb.types.entities.AbstractEntitySchemaManagement<E>
- All Implemented Interfaces:
TypeDefinitionManagement
- Direct Known Subclasses:
EntitySchemaManagement,FacetSchemaManagement,ResourceSchemaManagement
public abstract class AbstractEntitySchemaManagement<E extends org.gcube.informationsystem.types.reference.entities.EntitySchema>
extends EntityElementManagement<E,E>
implements TypeDefinitionManagement
- Author:
- Luca Frosini (ISTI - CNR)
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected StringThe name of the entity type definition being managed.Fields inherited from class org.gcube.informationsystem.resourceregistry.persistence.orientdb.base.EntityElementManagement
IN_PREFIX, OUT_PREFIX, relationManagementsFields inherited from class org.gcube.informationsystem.resourceregistry.persistence.orientdb.base.ElementManagement
accessType, affectedInstances, AT, cachedType, complete, DELETED, DOLLAR, dryRun, element, elementClass, entryPoint, ignoredFields, ignoreKeys, ignoreStartWithKeys, jsonNode, limit, maskMetadata, metadataPolicy, oClass, oDatabaseDocument, offset, operation, polymorphic, preservePassedMetadata, reload, sanityCheckDeferred, self, typeName, UNDERSCORE, updateMode, uuid, workingEnvironment -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedCreates a newAbstractEntitySchemaManagementinstance bound to the specified entity type class. -
Method Summary
Modifier and TypeMethodDescriptionprotected org.gcube.com.fasterxml.jackson.databind.JsonNodeAbstract method to create the complete JSON node representation of the element.protected com.orientechnologies.orient.core.record.OVertexInstantiates, validates, and persists a new OrientDB Vertex element.Returns the map of instances affected by operations on this element.com.orientechnologies.orient.core.record.OVertexReturns the OrientDB element instance, retrieving and caching it if not already present.getName()Returns the name of the Type definition.protected org.gcube.informationsystem.resourceregistry.api.exceptions.AlreadyPresentExceptiongetSpecificAlreadyPresentException(String message) Converts a generic AlreadyPresentException into a subclass-specific AlreadyPresentException.protected org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundExceptiongetSpecificNotFoundException(org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException e) Converts a generic NotFoundException into a subclass-specific NotFoundException.protected EnvironmentReturns the active database working environment.protected com.orientechnologies.orient.core.record.OVertexPersists a new element in the database (subclass hook).protected voidDeletes an existing element from the database (subclass hook).Retrieves all elements from the database and returns them as a JSON array string.protected com.orientechnologies.orient.core.record.OVertexUpdates an existing element in the database (subclass hook).com.orientechnologies.orient.core.record.OVertexDirectly queries and retrieves the OrientDB element from the database.voidPerforms runtime validation of mandatory and not-null schema constraints that cannot be enforced directly by OrientDB in distributed mode.voidSets the name of the Type definition.Methods inherited from class org.gcube.informationsystem.resourceregistry.persistence.orientdb.base.EntityElementManagement
addRelation, addToRelationManagement, getBaseRelationManagementMethods inherited from class org.gcube.informationsystem.resourceregistry.persistence.orientdb.base.ElementManagement
addIgnoredFields, afterModification, all, applyPrivacyMask, applyPrivacyMask, checkERMatch, checkJsonNode, checkUUIDMatch, checkUUIDNotAlreadyInUse, cleanCachedSerialization, concludeTransaction, create, createOrUpdate, createOrUpdateElementWithResult, delete, exists, getAccessType, getAllProperties, getCachedType, getCurrentODatabaseDocumentFromThreadLocal, getIgnoredFields, getLimit, getMandatoryErrorMessage, getMandatoryErrorMessage, getMetadataPolicy, getOClass, getOffset, getPropertyForJson, getPropertyMap, getTypeName, getUpdateMode, getUUID, internalCreate, internalCreateOrUdate, internalDelete, internalUpdate, isBackendLinkFieldName, isDryRun, isMaskMetadata, isPolymorphic, isPreservePassedMetadata, isReload, isSanityCheckDeferred, read, requireExplicitUUID, retrieveElementFromAnyContext, serializeAsAffectedInstance, serializeAsEndpointReference, serializeAsJsonNode, serializeSelfAsJsonNode, setAsEntryPoint, setDryRun, setElement, setElementType, setIgnoredFields, setJson, setJsonNode, setLimit, setMaskMetadata, setMetadataPolicy, setOClass, setODatabaseDocument, setOffset, setOperation, setPolymorphic, setPreservePassedMetadata, setProperty, setReload, setRequireExplicitUUID, setSanityCheckDeferred, setUpdateMode, setUUID, setWorkingEnvironment, typeSatified, update, updateProperties
-
Field Details
-
name
The name of the entity type definition being managed.
-
-
Constructor Details
-
AbstractEntitySchemaManagement
Creates a newAbstractEntitySchemaManagementinstance bound to the specified entity type class.- Parameters:
clz- the class of the entity type
-
-
Method Details
-
getAffectedInstances
Description copied from class:ElementManagementReturns the map of instances affected by operations on this element.- Overrides:
getAffectedInstancesin classElementManagement<com.orientechnologies.orient.core.record.OVertex,E extends org.gcube.informationsystem.types.reference.entities.EntitySchema> - Returns:
- the map of affected instances
-
getWorkingEnvironment
protected Environment getWorkingEnvironment() throws org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryExceptionDescription copied from class:ElementManagementReturns the active database working environment.- Specified by:
getWorkingEnvironmentin classElementManagement<com.orientechnologies.orient.core.record.OVertex,E extends org.gcube.informationsystem.types.reference.entities.EntitySchema> - Returns:
- the working environment
- Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException- if the environment cannot be resolved
-
setName
Description copied from interface:TypeDefinitionManagementSets the name of the Type definition.- Specified by:
setNamein interfaceTypeDefinitionManagement- Parameters:
name- the name of the Type definition to set
-
getName
Description copied from interface:TypeDefinitionManagementReturns the name of the Type definition.- Specified by:
getNamein interfaceTypeDefinitionManagement- Returns:
- the name of the Type definition
-
createCompleteJsonNode
protected org.gcube.com.fasterxml.jackson.databind.JsonNode createCompleteJsonNode() throws org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryExceptionDescription copied from class:ElementManagementAbstract method to create the complete JSON node representation of the element.- Specified by:
createCompleteJsonNodein classElementManagement<com.orientechnologies.orient.core.record.OVertex,E extends org.gcube.informationsystem.types.reference.entities.EntitySchema> - Returns:
- the complete JSON node representing the element and its relationships
- Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException- on serialization or mapping error
-
reallyCreate
protected com.orientechnologies.orient.core.record.OVertex reallyCreate() throws org.gcube.informationsystem.resourceregistry.api.exceptions.AlreadyPresentException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryExceptionDescription copied from class:ElementManagementPersists a new element in the database (subclass hook).- Specified by:
reallyCreatein classElementManagement<com.orientechnologies.orient.core.record.OVertex,E extends org.gcube.informationsystem.types.reference.entities.EntitySchema> - Returns:
- the persisted OrientDB vertex
- Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.AlreadyPresentException- if the element already exists in the databaseorg.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException- on any database error
-
reallyUpdate
protected com.orientechnologies.orient.core.record.OVertex reallyUpdate() throws org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryExceptionDescription copied from class:ElementManagementUpdates an existing element in the database (subclass hook).- Specified by:
reallyUpdatein classElementManagement<com.orientechnologies.orient.core.record.OVertex,E extends org.gcube.informationsystem.types.reference.entities.EntitySchema> - Returns:
- the updated OrientDB vertex
- Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException- if the element does not exist in the databaseorg.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException- on any database error
-
reallyDelete
protected void reallyDelete() throws org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryExceptionDescription copied from class:ElementManagementDeletes an existing element from the database (subclass hook).- Specified by:
reallyDeletein classElementManagement<com.orientechnologies.orient.core.record.OVertex,E extends org.gcube.informationsystem.types.reference.entities.EntitySchema> - Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException- if the element does not exist in the databaseorg.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException- on any database error
-
getElement
public com.orientechnologies.orient.core.record.OVertex getElement() throws org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryExceptionDescription copied from class:ElementManagementReturns the OrientDB element instance, retrieving and caching it if not already present.- Overrides:
getElementin classElementManagement<com.orientechnologies.orient.core.record.OVertex,E extends org.gcube.informationsystem.types.reference.entities.EntitySchema> - Returns:
- the OrientDB element instance
- Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException- if the element does not existorg.gcube.informationsystem.resourceregistry.api.exceptions.instances.AvailableInAnotherContextException- if the element belongs to another contextorg.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException- on database error
-
retrieveElement
public com.orientechnologies.orient.core.record.OVertex retrieveElement() throws org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryExceptionDescription copied from class:ElementManagementDirectly queries and retrieves the OrientDB element from the database.- Overrides:
retrieveElementin classElementManagement<com.orientechnologies.orient.core.record.OVertex,E extends org.gcube.informationsystem.types.reference.entities.EntitySchema> - Returns:
- the loaded OrientDB element
- Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException- if the element does not existorg.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException- on database error
-
createVertex
protected com.orientechnologies.orient.core.record.OVertex createVertex() throws org.gcube.informationsystem.resourceregistry.api.exceptions.AlreadyPresentException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryExceptionDescription copied from class:EntityElementManagementInstantiates, validates, and persists a new OrientDB Vertex element.- Overrides:
createVertexin classEntityElementManagement<E extends org.gcube.informationsystem.types.reference.entities.EntitySchema,E extends org.gcube.informationsystem.types.reference.entities.EntitySchema> - Returns:
- the created OrientDB vertex
- Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.AlreadyPresentException- if a vertex with the specified UUID already existsorg.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException- if the schema class is abstract or if database creation fails
-
reallyGetAll
public String reallyGetAll() throws org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryExceptionDescription copied from class:ElementManagementRetrieves all elements from the database and returns them as a JSON array string.- Specified by:
reallyGetAllin classElementManagement<com.orientechnologies.orient.core.record.OVertex,E extends org.gcube.informationsystem.types.reference.entities.EntitySchema> - Returns:
- JSON array string of all elements
- Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException- on database traversal or serialization error
-
getSpecificNotFoundException
protected org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException getSpecificNotFoundException(org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException e) Description copied from class:ElementManagementConverts a generic NotFoundException into a subclass-specific NotFoundException.- Specified by:
getSpecificNotFoundExceptionin classElementManagement<com.orientechnologies.orient.core.record.OVertex,E extends org.gcube.informationsystem.types.reference.entities.EntitySchema> - Parameters:
e- the generic exception- Returns:
- the specific NotFoundException
-
getSpecificAlreadyPresentException
protected org.gcube.informationsystem.resourceregistry.api.exceptions.AlreadyPresentException getSpecificAlreadyPresentException(String message) Description copied from class:ElementManagementConverts a generic AlreadyPresentException into a subclass-specific AlreadyPresentException.- Specified by:
getSpecificAlreadyPresentExceptionin classElementManagement<com.orientechnologies.orient.core.record.OVertex,E extends org.gcube.informationsystem.types.reference.entities.EntitySchema> - Parameters:
message- the exception message- Returns:
- the specific AlreadyPresentException
-
sanityCheck
public void sanityCheck() throws org.gcube.informationsystem.resourceregistry.api.exceptions.types.SchemaViolationException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryExceptionDescription copied from class:ElementManagementPerforms runtime validation of mandatory and not-null schema constraints that cannot be enforced directly by OrientDB in distributed mode.- Overrides:
sanityCheckin classElementManagement<com.orientechnologies.orient.core.record.OVertex,E extends org.gcube.informationsystem.types.reference.entities.EntitySchema> - Throws:
org.gcube.informationsystem.resourceregistry.api.exceptions.types.SchemaViolationException- if a schema constraint is violatedorg.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException- on database lookup failure
-