Class ObjectStoreSafeImpl

  • All Implemented Interfaces:
    ObjectStore

    public class ObjectStoreSafeImpl
    extends ObjectStorePassthruImpl
    Provides a safe implementation of an objectstore - that is, an implementation that works correctly if passed a Query object that has been modified since being used previously.
    Author:
    Matthew Wakeling
    • Constructor Detail

      • ObjectStoreSafeImpl

        public ObjectStoreSafeImpl​(ObjectStore os)
        Creates an instance, from another ObjectStore instance.
        Parameters:
        os - an ObjectStore object to use
    • Method Detail

      • execute

        public Results execute​(Query q,
                               int batchSize,
                               boolean optimise,
                               boolean explain,
                               boolean prefetch)
        Execute a Query on this ObjectStore
        Specified by:
        execute in interface ObjectStore
        Overrides:
        execute in class ObjectStorePassthruImpl
        Parameters:
        q - the Query to execute
        batchSize - the batch size to initialise the Results object with
        optimise - whether to optimise queries
        explain - whether to explain queries
        prefetch - whether to use the PrefetchManager
        Returns:
        the results of the Query
      • executeSingleton

        public SingletonResults executeSingleton​(Query q,
                                                 int batchSize,
                                                 boolean optimise,
                                                 boolean explain,
                                                 boolean prefetch)
        Execute a Query on this ObjectStore, returning a SingletonResults
        Specified by:
        executeSingleton in interface ObjectStore
        Overrides:
        executeSingleton in class ObjectStorePassthruImpl
        Parameters:
        q - the Query to execute
        batchSize - the batch size to initialise the Results object with
        optimise - whether to optimise queries
        explain - whether to explain queries
        prefetch - whether to use the PrefetchManager
        Returns:
        the results of the Query
      • execute

        public java.util.List<ResultsRow<java.lang.Object>> execute​(Query q,
                                                                    int start,
                                                                    int limit,
                                                                    boolean optimise,
                                                                    boolean explain,
                                                                    java.util.Map<java.lang.Object,​java.lang.Integer> sequence)
                                                             throws ObjectStoreException
        Execute a Query on this ObjectStore, asking for a certain range of rows to be returned. This will usually only be called by the Results object returned from execute(Query q).
        Specified by:
        execute in interface ObjectStore
        Overrides:
        execute in class ObjectStorePassthruImpl
        Parameters:
        q - the Query to execute
        start - the start row
        limit - the maximum number of rows to return
        optimise - true if it is expected that optimising the query will improve performance
        explain - true if the ObjectStore should enforce maximum query running time constraints
        sequence - an object representing the state of the database corresponding to when the action that resulted in this execute was started. This number must match the ObjectStore's internal sequence number or a DataChangedException is thrown. The sequence number is incremented each time the data in the objectstore is changed
        Returns:
        a List of ResultRows
        Throws:
        ObjectStoreException - if an error occurs during the running of the Query
      • count

        public int count​(Query q,
                         java.util.Map<java.lang.Object,​java.lang.Integer> sequence)
                  throws ObjectStoreException
        Counts the number of rows the query will produce
        Specified by:
        count in interface ObjectStore
        Overrides:
        count in class ObjectStorePassthruImpl
        Parameters:
        q - InterMine Query on which to count rows
        sequence - an object representing the state of the database corresponding to when the action that resulted in this execute was started. This number must match the ObjectStore's internal sequence number or a DataChangedException is thrown. The sequence number is incremented each time the data in the objectstore is changed
        Returns:
        the number of rows that will be produced by query
        Throws:
        ObjectStoreException - if an error occurs counting the query
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object