Class ExpressionStoreQuery

    • Field Detail

      • _parsed

        protected transient java.lang.Object _parsed
    • Constructor Detail

      • ExpressionStoreQuery

        public ExpressionStoreQuery​(ExpressionParser parser)
        Construct a query with a parser for the language.
    • Method Detail

      • getResolver

        public Resolver getResolver()
        Resolver used in parsing.
      • setQuery

        public boolean setQuery​(java.lang.Object query)
        Allow direct setting of parsed state for facades that do parsing. The facade should call this method twice: once with the query string, and again with the parsed state.
        Specified by:
        setQuery in interface StoreQuery
        Overrides:
        setQuery in class AbstractStoreQuery
      • newInMemoryExecutor

        public StoreQuery.Executor newInMemoryExecutor​(ClassMetaData meta,
                                                       boolean subs)
        Description copied from interface: StoreQuery
        Return an executor for in-memory execution of this query. Executors must be cachable and thread safe. If this class returns true from StoreQuery.supportsAbstractExecutors(), the given metadata will always be for the candidate class of this query, or possibly null if the candidate class is not itself persistence capable (like an interface or abstract base class). Otherwise, the given type will be a mapped class.
        Specified by:
        newInMemoryExecutor in interface StoreQuery
        Overrides:
        newInMemoryExecutor in class AbstractStoreQuery
        subs - whether to include dependent mapped subclasses in the results; independent subclasses should never be included
      • newDataStoreExecutor

        public StoreQuery.Executor newDataStoreExecutor​(ClassMetaData meta,
                                                        boolean subs)
        Description copied from interface: StoreQuery
        Return an executor for datastore execution of this query. Executors must be cachable and thread safe. If this class returns true from StoreQuery.supportsAbstractExecutors(), the given metadata will always be for the candidate class of this query, or possibly null if the candidate class is not itself persistence capable (like an interface or abstract base class). Otherwise, the given type will be a mapped class.
        Specified by:
        newDataStoreExecutor in interface StoreQuery
        Overrides:
        newDataStoreExecutor in class AbstractStoreQuery
        subs - whether to include dependent mapped subclasses in the results; independent subclasses should never be included
      • executeQuery

        protected ResultObjectProvider executeQuery​(StoreQuery.Executor ex,
                                                    ClassMetaData base,
                                                    ClassMetaData[] types,
                                                    boolean subclasses,
                                                    ExpressionFactory[] facts,
                                                    QueryExpressions[] parsed,
                                                    java.lang.Object[] params,
                                                    StoreQuery.Range range)
        Execute the given expression against the given candidate extent.
        Parameters:
        ex - current executor
        base - the base type the query should match
        types - the independent candidate types
        subclasses - true if subclasses should be included in the results
        facts - the expression factory used to build the query for each base type
        parsed - the parsed query values
        params - parameter values, or empty array
        range - result range
        Returns:
        a provider for matching objects
      • executeDelete

        protected java.lang.Number executeDelete​(StoreQuery.Executor ex,
                                                 ClassMetaData base,
                                                 ClassMetaData[] types,
                                                 boolean subclasses,
                                                 ExpressionFactory[] facts,
                                                 QueryExpressions[] parsed,
                                                 java.lang.Object[] params)
        Execute the given expression against the given candidate extent and delete the instances.
        Parameters:
        ex - current executor
        base - the base type the query should match
        types - the independent candidate types
        subclasses - true if subclasses should be included in the results
        facts - the expression factory used to build the query for each base type
        parsed - the parsed query values
        params - parameter values, or empty array
        Returns:
        a number indicating the number of instances deleted, or null to execute the delete in memory
      • executeUpdate

        protected java.lang.Number executeUpdate​(StoreQuery.Executor ex,
                                                 ClassMetaData base,
                                                 ClassMetaData[] types,
                                                 boolean subclasses,
                                                 ExpressionFactory[] facts,
                                                 QueryExpressions[] parsed,
                                                 java.lang.Object[] params)
        Execute the given expression against the given candidate extent and updates the instances.
        Parameters:
        ex - current executor
        base - the base type the query should match
        types - the independent candidate types
        subclasses - true if subclasses should be included in the results
        facts - the expression factory used to build the query for each base type
        parsed - the parsed query values
        params - parameter values, or empty array
        Returns:
        a number indicating the number of instances updated, or null to execute the update in memory.
      • getDataStoreActions

        protected java.lang.String[] getDataStoreActions​(ClassMetaData base,
                                                         ClassMetaData[] types,
                                                         boolean subclasses,
                                                         ExpressionFactory[] facts,
                                                         QueryExpressions[] parsed,
                                                         java.lang.Object[] params,
                                                         StoreQuery.Range range)
        Return the commands that will be sent to the datastore in order to execute the query, typically in the database's native language.
        Parameters:
        base - the base type the query should match
        types - the independent candidate types
        subclasses - true if subclasses should be included in the results
        facts - the expression factory used to build the query for each base type
        parsed - the parsed query values
        params - parameter values, or empty array
        range - result range
        Returns:
        a textual description of the query to execute
      • getIndependentExpressionCandidates

        protected ClassMetaData[] getIndependentExpressionCandidates​(ClassMetaData type,
                                                                     boolean subclasses)
        Return the assignable types for the given metadata whose expression trees must be compiled independently.
      • getExpressionFactory

        protected ExpressionFactory getExpressionFactory​(ClassMetaData type)
        Return an ExpressionFactory to use to create an expression to be executed against an extent. Each factory will be used to compile one filter only. The factory must be cachable.