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

    • Field Detail

      • sourceSecurityContext

        protected SecurityContext sourceSecurityContext
        The source context of an addToContex
      • targetSecurityContext

        protected SecurityContext targetSecurityContext
        The target context of an addToContex/RemoveFromContext
      • honourPropagationConstraintsInContextSharing

        protected boolean honourPropagationConstraintsInContextSharing
        By the default the system honour the propagation constraints so this variable is initialised as true. To revert a previous operation or for particular a 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 Detail

      • EntityManagement

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

      • setSourceSecurityContext

        public void setSourceSecurityContext​(SecurityContext sourceSecurityContext)
        Description copied from interface: ERManagement
        Set source security context to evaluate addToContext
        Specified by:
        setSourceSecurityContext in interface ERManagement
        Parameters:
        sourceSecurityContext - the source security context
      • 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
      • propertyMatchRequestedValue

        public boolean propertyMatchRequestedValue​(com.orientechnologies.orient.core.record.OVertex v,
                                                   String key,
                                                   String requestedValue,
                                                   Object instanceValue)
                                            throws org.gcube.informationsystem.resourceregistry.api.exceptions.types.SchemaException,
                                                   org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
        Throws:
        org.gcube.informationsystem.resourceregistry.api.exceptions.types.SchemaException
        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
      • reallyQueryTraversal

        public String reallyQueryTraversal​(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