Interface FeatureLocking<T extends FeatureType,​F extends Feature>

    • Method Detail

      • setFeatureLock

        void setFeatureLock​(FeatureLock lock)
        All locking operations will operate against the provided lock.

        This in in keeping with the stateful spirit of DataSource in which operations are against the "current" transaction. If a FeatureLock is not provided lock operations will only be applicable for the current transaction (they will expire on the next commit or rollback).

        That is lockFeatures() operations will:

        • Be recorded against the provided FeatureLock.
        • Be recorded against the current transaction if no FeatureLock is provided.

        Calling this method with setFeatureLock( FeatureLock.TRANSACTION ) will revert to per transaction operation.

        This design allows for the following:

        • cross DataSource FeatureLock usage
        • not having pass in the same FeatureLock object multiple times
        Parameters:
        lock - FeatureLock configuration including authorization and requested duration
      • lockFeatures

        int lockFeatures​(Query query)
                  throws IOException
        FeatureLock features described by Query.

        To implement WFS parcial Locking retrieve your features with a query operation first before trying to lock them individually. If you are not into WFS please don't ask what parcial locking is.

        Parameters:
        query - Query describing the features to lock
        Returns:
        Number of features locked
        Throws:
        IOException - Thrown if anything goes wrong
      • lockFeatures

        int lockFeatures​(Filter filter)
                  throws IOException
        FeatureLock features described by Filter.

        To implement WFS partial Locking retrieve your features with a query operation first before trying to lock them individually. If you are not into WFS please don't ask what partial locking is.

        Parameters:
        filter - Filter describing the features to lock
        Returns:
        Number of features locked
        Throws:
        IOException - Thrown if anything goes wrong
      • lockFeatures

        int lockFeatures()
                  throws IOException
        FeatureLock all Features.

        The method does not prevent addFeatures() from being used (we could add a lockDataSource() method if this functionality is required.

        Returns:
        Number of Features locked by this opperation
        Throws:
        IOException
      • unLockFeatures

        void unLockFeatures()
                     throws IOException
        Unlocks all Features.

        Authorization must be provided prior before calling this method.

        
         void releaseLock( String lockId, LockingDataSource ds ){
            ds.setAuthorization( "LOCK534" );
            ds.unLockFeatures();
         }
         
        Throws:
        IOException
      • unLockFeatures

        void unLockFeatures​(Filter filter)
                     throws IOException
        Unlock Features denoted by provided filter.

        Authorization must be provided prior before calling this method.

        Throws:
        IOException
      • unLockFeatures

        void unLockFeatures​(Query query)
                     throws IOException
        Unlock Features denoted by provided query.

        Authorization must be provided prior before calling this method.

        Parameters:
        query - Specifies fatures to unlock
        Throws:
        IOException