Interface IBmTransaction

    • Method Detail

      • rollback

        void rollback()
        Rolls back the transaction.
      • attachTopObject

        void attachTopObject​(IBmObject object,
                             String fqn)
        Attaches a new top-level object with the specified FQN, i.e. this method makes the specified object persistent and managed by the BM.
        • The FQN must be unique.
        • If there is already an object with the specified FQN then depending on the situation either this method or commit() will throw an exception.
        • If the specified object is already attached to a BM then an exception is thrown.
        Parameters:
        object - The object to attach. May not be null.
        fqn - The FQN. May not be null.
      • detachTopObject

        void detachTopObject​(IBmObject object)
        Detaches (removes) a top object.
        • If the specified object is a contained object an exception is thrown.
        • If the specified object is not attached to the BM an exception is thrown.
        Parameters:
        object - The top object to detach. May not be null.
      • updateTopObjectFqn

        void updateTopObjectFqn​(IBmObject object,
                                String fqn)
        Assigns the specified top-level object a new FQN. The FQN must be unique. If there is already an object with the specified FQN then depending on the situation either this method or commit() will throw an exception.
        Parameters:
        object - The object to assign FQN to. May not be null.
        fqn - The FQN to assign. May not be null.
      • getObjectById

        IBmObject getObjectById​(long id)
        Gets object by ID.
        Parameters:
        id - The ID to get object by.
        Returns:
        the object with the specified ID or null if it does not exist.
      • getTopObjectByFqn

        IBmObject getTopObjectByFqn​(String fqn)
        Gets top-level object by FQN.
        Parameters:
        fqn - The FQN to get object by. May not be null
        Returns:
        the object with the specified FQN or null if it does not exist.
      • getTopObjectByResourceId

        IBmObject getTopObjectByResourceId​(int resourceId)
        Gets top object by resource ID.
        Parameters:
        resourceId - The resource ID to get object by.
        Returns:
        the top object belonging to the resource specified by ID if exists, otherwise null.
      • getObjectByUri

        IBmObject getObjectByUri​(org.eclipse.emf.common.util.URI uri)
        Gets object by URI.
        Parameters:
        uri - The URI to get object by. May not be null.
        Returns:
        the object identified by the specified URI or null if it does not exist.
      • isReadOnly

        boolean isReadOnly()
        Checks whether the transaction is read-only.
        Returns:
        true if the transaction is read-only, false otherwise.
      • undo

        void undo​(IBmTransactionRecord transactionRecord)
        Undoes the modifications represented by the specified transaction record.
        Parameters:
        transactionRecord - The transaction record. May not be null.
      • redo

        void redo​(IBmTransactionRecord transactionRecord)
        Redoes the modifications represented by the specified transaction record.
        Parameters:
        transactionRecord - The transaction record. May not be null.
      • getResourceSet

        @Deprecated
        com._1c.g5.v8.bm.core.internal.IBmInternalResourceSet getResourceSet()
        Deprecated.
        This method has been added to support existing legacy solutions.
        Gets the transaction resource set.
        Returns:
        the transaction resource set, never null.
      • getExternalObjectByUri

        @Deprecated
        org.eclipse.emf.ecore.EObject getExternalObjectByUri​(org.eclipse.emf.common.util.URI uri)
        Deprecated.
        This method has been added to support existing legacy solutions.
        Gets external object (that is not managed by the engine this transaction belongs to) by URI.
        Parameters:
        uri - The URI to get external object by. May not be null.
        Returns:
        the object identified by the specified URI or null if it does not exist.
      • toTransactionObject

        <T extends org.eclipse.emf.ecore.EObject> T toTransactionObject​(T object)
        The shortcut for getting the transaction counterpart by the given object.
        The same thing can be made by using:
         
         T object = ...;
        
         long objectId = ((IBmObject)object).bmGetId();
         IBmObject bmObject = transaction.getObjectById(objectId);
         T transactionObject = (T)bmObject;
         
         
        Parameters:
        object - The object to get transaction counterpart for. May not be null.
        Returns:
        transaction object or null if the object gets detached from BM before this invocation finishes.
      • getTopObjectIterator

        Iterator<IBmObject> getTopObjectIterator()
        Gets iterator over the top objects managed by this engine. The iterator does not implement remove method.
        Returns:
        the iterator, never null.
      • getTopObjectIterator

        Iterator<IBmObject> getTopObjectIterator​(org.eclipse.emf.ecore.EClass eClass)
        Gets iterator over the top objects of the specified EMF class and its subclasses. The iterator does not implement remove method.
        Parameters:
        eClass - The EMF class. May not be null.
        Returns:
        the iterator, never null.
      • getTopObjectEClasses

        Iterator<org.eclipse.emf.ecore.EClass> getTopObjectEClasses()
        Gets specific EClass'es of all top objects being registered in the store at this point
        Returns:
        An iterator over EMF classes of known top objects. May not be null. Elements are guaranteed to be unique.
      • getTopObjectIdByFqn

        long getTopObjectIdByFqn​(String fqn)
        Gets top-level object ID by FQN.
        Parameters:
        fqn - The FQN to get ID by. May not be null
        Returns:
        the ID of -1L if there is no object with the specified FQN.
      • getTopObjectIdsByEClass

        IBmLongIterator getTopObjectIdsByEClass​(org.eclipse.emf.ecore.EClass eClass)
        Gets IDs of the top objects of the specified EMF class and its subclasses. Note that the correponding objects are not attached to the transaction i.e. not locked. Thus the returned set of identifiers may already be outdated. The method should be used only for mass operations with external control on BM contents changing and external means of data integrity tracking and support. The iterator does not implement remove method.
        Parameters:
        eClass - The EMF class. May not be null.
        Returns:
        an iterator over the IDs of the top objects of the specified EMF class. Never null.
      • getContainedObjectIterator

        Iterator<IBmObject> getContainedObjectIterator​(IBmObject topObject,
                                                       org.eclipse.emf.ecore.EClass eClass)
        Gets iterator over the contained objects of the specified EMF class (and its subclasses) contained (directly or indirectly) in the specified top object. The iterator does not implement remove method.
        Parameters:
        topObject - The top obect. May not be null.
        eClass - The EMF class. May not be null.
        Returns:
        the iterator, never null.
      • getContainedObjectIterator

        Iterator<IBmObject> getContainedObjectIterator​(org.eclipse.emf.ecore.EClass eClass)
        Gets iterator over the contained objects of the specified EMF class and its subclasses. The iterator does not implement remove method.
        Parameters:
        eClass - The EMF class. May not be null.
        Returns:
        the iterator, never null.
      • getContainedObjectIdsByEClass

        IBmLongIterator getContainedObjectIdsByEClass​(org.eclipse.emf.ecore.EClass eClass)
        Gets IDs of the contained objects of the specified EMF class and its subclasses. Note that the correponding objects are not attached to the transaction i.e. not locked. Thus the returned set of identifiers may already be outdated. The method should be used only for mass operations with external control on BM contents changing and external means of data integrity tracking and support. The iterator does not implement remove method.
        Parameters:
        eClass - The EMF class. May not be null.
        Returns:
        an iterator over the IDs of the top objects of the specified EMF class. Never null.
      • getContainedObjectIdsByTopObjectIdAndEClass

        IBmLongIterator getContainedObjectIdsByTopObjectIdAndEClass​(long topObjectId,
                                                                    org.eclipse.emf.ecore.EClass eClass)
        Gets IDs of the contained objects of the specified EMF class (and its subclasses) contained (directly or indirectly) in the top object with the specified ID. Note that the correponding objects are not attached to the transaction i.e. not locked. Thus the returned set of identifiers may already be outdated. The method should be used only for mass operations with external control on BM contents changing and external means of data integrity tracking and support. The iterator does not implement remove method.
        Parameters:
        topObjectId - The ID of the top object.
        eClass - The EMF class. May not be null.
        Returns:
        an iterator over the IDs of the top objects of the specified EMF class. Never null.
      • getTopObjectsByFqnIgnoreCase

        Iterator<IBmObject> getTopObjectsByFqnIgnoreCase​(String fqn)
        Gets top objects by FQN ignoring case.
        Parameters:
        handle - The handle of the transaction. May not be null.
        fqn - The FQN. May not be null.
        Returns:
        an iterator over top objects matching the FQN. Never null.
      • getObjectsByAttributeValue

        Iterator<IBmObject> getObjectsByAttributeValue​(org.eclipse.emf.ecore.EAttribute attribute,
                                                       Object value)
        Gets objects by attribute value. Throws an exception if the attribute is not indexed.
        Parameters:
        attribute - The attribute. May not be null.
        value - The value. May not be null.
        Returns:
        an iterator over the objects with the specified attribute value, never null. The iterator does not implement remove method.
        See Also:
        BmPlatformConfiguration#indexedAttributes(java.util.Collection)
      • getReferences

        Collection<IBmCrossReference> getReferences​(org.eclipse.emf.common.util.URI uri)
        Gets references to the specified object from objects belonging to the current namespace.
        Parameters:
        uri - The URI of the object to get references to. May not be null.
        Returns:
        a collection of references. Never null.
      • getNamespace

        IBmNamespace getNamespace()
        Gets the namespace the transaction is bound to.
        Returns:
        the namespace the transaction is bound to, never null.
      • peekEClass

        org.eclipse.emf.ecore.EClass peekEClass​(long id)
        Peeks the EMF class of the specified object without locking the object.
        Parameters:
        id - The ID of the object.
        Returns:
        the EMF class of the object or null if the object does not exist.
      • evict

        @Deprecated
        void evict​(long id)
        Deprecated.
        Evicts the specified object form the transaction. After evicting the object from the transaction, any change to the evicted object won't be persisted on transaction commit. Evicting affects all contained objects being attached to the transaction.
        Evicting also releases all locks (both read and write) to this object being captured earlier in the transaction.
        Parameters:
        id - The ID to release lock for.
      • addPostCommitHandler

        void addPostCommitHandler​(Runnable handler)
        Adds a post-commit handler. The handlers are invoked until after the transaction is successfully committed.
        Parameters:
        handler - The post-commit handler to add. May not be null.
      • getPlatformTransaction

        IBmPlatformTransaction getPlatformTransaction()
        Gets the corresponding platform-wide transaction.
        Returns:
        the corresponding platform-wide transaction, never null.
      • createBlob

        IBmBlob createBlob​(String fqn)
        Creates a blob.
        Parameters:
        fqn -
        Returns:
      • getBlob

        IBmBlob getBlob​(String fqn)
        Gets a blob.
        Parameters:
        fqn -
        Returns:
      • removeBlob

        void removeBlob​(IBmBlob blob)
        Removes a blob.
        Parameters:
        blob -
      • renameBlob

        void renameBlob​(IBmBlob blob,
                        String newFqn)
        Renames a blob. Note that the transaction result will look as though the blob was removed and then created with a new name.
        Parameters:
        blob -
        newFqn -