Class EntityManagement<E extends org.gcube.informationsystem.model.reference.entities.Entity,ET extends org.gcube.informationsystem.types.reference.entities.EntityType>

java.lang.Object
org.gcube.informationsystem.resourceregistry.base.ElementManagement<com.orientechnologies.orient.core.record.OVertex,ET>
org.gcube.informationsystem.resourceregistry.base.entities.EntityElementManagement<E,ET>
org.gcube.informationsystem.resourceregistry.instances.model.entities.EntityManagement<E,ET>
All Implemented Interfaces:
ERManagement
Direct Known Subclasses:
FacetManagement, ResourceManagement

public abstract class EntityManagement<E extends org.gcube.informationsystem.model.reference.entities.Entity,ET extends org.gcube.informationsystem.types.reference.entities.EntityType> extends EntityElementManagement<E,ET> implements ERManagement
Author:
Luca Frosini (ISTI - CNR)
  • Field Details

    • sourceInstanceEnvironment

      protected InstanceEnvironment sourceInstanceEnvironment
      The source context of an addToContex
    • targetInstanceEnvironment

      protected InstanceEnvironment targetInstanceEnvironment
      The target context of an addToContex/RemoveFromContext
    • honourPropagationConstraintsInContextSharing

      protected boolean honourPropagationConstraintsInContextSharing
      By default the system honour the propagation constraints so this variable is initialised as true. To revert a previous operation or for a particular maintenance we could request to the service do not honour the propagation constraints but under certain conditions and with some limitation only. These limitation are required to keep the system in a consistent state. In fact, this directive is only valid for Resources and IsRelatedTo relations. We need to take in account that to add an IsRelatedTo to a context always the source and target Resources must be in such a Context. Please also take into account that adding a Resource to a context always imply to honour the propagation constraints of ConsistsOf relations. In fact, a resource must be characterised least by one facet in any context it belongs. Giving that we cannot made assumption on which facets must be used. A way could be to consider just the facets are mandatory for such a Resource Type, but the type could not have mandatory facets (even every Resource Type in the gCube Model has one mandatory facet). As counterpart, when a Resource is removed from a Context all the facets charactering it must be removed. This option can also be used in conjunction with ElementManagement.dryRun=true. This allow to simulate a sharing operation which requires do not honour the propagation constraints.
    • relationManagements

      protected Map<String,RelationManagement<?,?>> relationManagements
      Provide a cache edge-internal-id -> RelationManagement this avoid to recreate the relationManagement of already visited edges
    • forceAddToContext

      protected boolean forceAddToContext
    • skipped

      protected boolean skipped
  • Constructor Details

    • EntityManagement

      protected EntityManagement(org.gcube.informationsystem.base.reference.AccessType accessType)
  • Method Details

    • setSourceInstanceEnvironment

      public void setSourceInstanceEnvironment(InstanceEnvironment source)
      Description copied from interface: ERManagement
      Set source InstanceEnvironment to evaluate addToContext
      Specified by:
      setSourceInstanceEnvironment in interface ERManagement
      Parameters:
      source - the source security context
    • getSourceInstanceEnvironment

      public InstanceEnvironment getSourceInstanceEnvironment()
      Specified by:
      getSourceInstanceEnvironment in interface ERManagement
    • setTargetInstanceEnvironment

      public void setTargetInstanceEnvironment(InstanceEnvironment target)
      Description copied from interface: ERManagement
      Set target security context of addToContext/removeFromContext
      Specified by:
      setTargetInstanceEnvironment in interface ERManagement
    • getTargetInstanceEnvironment

      public InstanceEnvironment getTargetInstanceEnvironment()
      Specified by:
      getTargetInstanceEnvironment in interface ERManagement
    • isHonourPropagationConstraintsInContextSharing

      public boolean isHonourPropagationConstraintsInContextSharing()
      Specified by:
      isHonourPropagationConstraintsInContextSharing in interface ERManagement
    • setHonourPropagationConstraintsInContextSharing

      public void setHonourPropagationConstraintsInContextSharing(boolean honourPropagationConstraintsInContextSharing)
      Specified by:
      setHonourPropagationConstraintsInContextSharing in interface ERManagement
    • getWorkingEnvironment

      protected Environment getWorkingEnvironment() throws org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Specified by:
      getWorkingEnvironment in class ElementManagement<com.orientechnologies.orient.core.record.OVertex,ET extends org.gcube.informationsystem.types.reference.entities.EntityType>
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
    • getElement

      public com.orientechnologies.orient.core.record.OVertex getElement() throws org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException, org.gcube.informationsystem.resourceregistry.api.exceptions.AvailableInAnotherContextException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Overrides:
      getElement in class ElementManagement<com.orientechnologies.orient.core.record.OVertex,ET extends org.gcube.informationsystem.types.reference.entities.EntityType>
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException
      org.gcube.informationsystem.resourceregistry.api.exceptions.AvailableInAnotherContextException
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
    • getRelationManagement

      protected RelationManagement<?,?> getRelationManagement(com.orientechnologies.orient.core.record.OEdge edge) throws org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
    • addToRelationManagements

      public void addToRelationManagements(RelationManagement<?,?> relationManagement) throws org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
    • addRelation

      protected static org.gcube.com.fasterxml.jackson.databind.JsonNode addRelation(org.gcube.com.fasterxml.jackson.databind.JsonNode sourceResource, org.gcube.com.fasterxml.jackson.databind.JsonNode relation, String arrayKey) throws org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
    • createVertex

      protected com.orientechnologies.orient.core.record.OVertex createVertex() throws org.gcube.informationsystem.resourceregistry.api.exceptions.entities.EntityAlreadyPresentException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Overrides:
      createVertex in class EntityElementManagement<E extends org.gcube.informationsystem.model.reference.entities.Entity,ET extends org.gcube.informationsystem.types.reference.entities.EntityType>
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.entities.EntityAlreadyPresentException
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
    • reallyAddToContext

      protected void reallyAddToContext() throws org.gcube.informationsystem.resourceregistry.api.exceptions.contexts.ContextException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.contexts.ContextException
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
    • internalAddToContext

      public void internalAddToContext() throws org.gcube.informationsystem.resourceregistry.api.exceptions.contexts.ContextException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Specified by:
      internalAddToContext in interface ERManagement
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.contexts.ContextException
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
    • addToContext

      public void addToContext(UUID contextUUID) throws org.gcube.informationsystem.resourceregistry.api.exceptions.types.SchemaViolationException, org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException, org.gcube.informationsystem.resourceregistry.api.exceptions.contexts.ContextException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Specified by:
      addToContext in interface ERManagement
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.types.SchemaViolationException
      org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException
      org.gcube.informationsystem.resourceregistry.api.exceptions.contexts.ContextException
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
    • internalRemoveFromContext

      public void internalRemoveFromContext() throws org.gcube.informationsystem.resourceregistry.api.exceptions.contexts.ContextException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Specified by:
      internalRemoveFromContext in interface ERManagement
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.contexts.ContextException
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
    • reallyRemoveFromContext

      protected void reallyRemoveFromContext() throws org.gcube.informationsystem.resourceregistry.api.exceptions.contexts.ContextException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.contexts.ContextException
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
    • removeFromContext

      public void removeFromContext(UUID contextUUID) throws org.gcube.informationsystem.resourceregistry.api.exceptions.types.SchemaViolationException, org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException, org.gcube.informationsystem.resourceregistry.api.exceptions.contexts.ContextException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Specified by:
      removeFromContext in interface ERManagement
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.types.SchemaViolationException
      org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException
      org.gcube.informationsystem.resourceregistry.api.exceptions.contexts.ContextException
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
    • reallyGetAll

      public String reallyGetAll(boolean polymorphic) throws org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Specified by:
      reallyGetAll in class ElementManagement<com.orientechnologies.orient.core.record.OVertex,ET extends org.gcube.informationsystem.types.reference.entities.EntityType>
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
    • reallyQuery

      public String reallyQuery(String relationType, String referenceType, UUID referenceUUID, com.orientechnologies.orient.core.record.ODirection direction, boolean polymorphic, Map<String,String> constraint) throws org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
    • query

      public String query(String relationType, String referenceType, UUID referenceUUID, com.orientechnologies.orient.core.record.ODirection direction, boolean polymorphic, Map<String,String> constraint) throws org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
    • setForceAddToContext

      public void setForceAddToContext(Boolean forceAddToContext)
      Specified by:
      setForceAddToContext in interface ERManagement