All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sun.jdo.api.persistence.support.Query Maven / Gradle / Ivy

The newest version!
/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 *
 * The contents of this file are subject to the terms of either the GNU
 * General Public License Version 2 only ("GPL") or the Common Development
 * and Distribution License("CDDL") (collectively, the "License").  You
 * may not use this file except in compliance with the License.  You can
 * obtain a copy of the License at
 * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
 * or packager/legal/LICENSE.txt.  See the License for the specific
 * language governing permissions and limitations under the License.
 *
 * When distributing the software, include this License Header Notice in each
 * file and include the License file at packager/legal/LICENSE.txt.
 *
 * GPL Classpath Exception:
 * Oracle designates this particular file as subject to the "Classpath"
 * exception as provided by Oracle in the GPL Version 2 section of the License
 * file that accompanied this code.
 *
 * Modifications:
 * If applicable, add the following below the License Header, with the fields
 * enclosed by brackets [] replaced by your own identifying information:
 * "Portions Copyright [year] [name of copyright owner]"
 *
 * Contributor(s):
 * If you wish your version of this file to be governed by only the CDDL or
 * only the GPL Version 2, indicate your decision by adding "[Contributor]
 * elects to include this software in this distribution under the [CDDL or GPL
 * Version 2] license."  If you don't indicate a single choice of license, a
 * recipient has the option to distribute your version of this file under
 * either the CDDL, the GPL Version 2 or to extend the choice of license to
 * its licensees as provided above.  However, if you add GPL Version 2 code
 * and therefore, elected the GPL Version 2 license, then the option applies
 * only if the new code is made subject to such option by the copyright
 * holder.
 */

/*
 * Query.java
 *
 * Created on February 25, 2000
 */
 
package com.sun.jdo.api.persistence.support;
import java.io.Serializable;
import java.util.Collection;
import java.util.Map;

/** The Query interface allows applications to obtain persistent instances
 * from the data store.
 *
 * The @link PersistenceManager is the factory for Query instances.  There
 * may be many Query instances associated with a PersistenceManager.  Multiple
 * queries might be executed simultaneously by different threads, but the
 * implementation might choose to execute them serially.  In either case, the
 * implementation must be thread safe.
 *
 * 

There are three required elements in a Query: * the class of the candidate instances, * the candidate collection of instances, and the filter. * *

There are optional elements: parameter declarations, variable * declarations, import statements, and an ordering specification. * * @author Craig Russell * @version 0.1 */ public interface Query extends java.io.Serializable { /** Set the class of the candidate instances of the query. *

The class is a PersistenceCapable class which specifies the class * of the candidates of the query. Elements of the candidate collection * that are of the specified class are filtered before being * put into the result Collection. * @param cls the Class of the candidate instances. */ void setClass(Class cls); /** Set the candidate Collection to query. * @param pcs the Candidate collection. */ void setCandidates(Collection pcs); /** Set the filter for the query. * * The filter is a Java-like boolean expression used to select elements of the * candidate Collection. * @param filter the query filter. */ void setFilter(String filter); /** Set the import statements to be used to identify the package name of * variables or parameters. * @param imports import statements separated by semicolons. */ void declareImports(String imports); /** Set the parameter list for query execution. * * The types and names of execution parameters are specified as a String * separated by commas, similar to formal method declarations. * * @param parameters the list of parameters separated by commas. */ void declareParameters(String parameters); /** Declare the unbound variables to be used in the query. * * @param variables the variables separated by semicolons. */ void declareVariables(String variables); /** Bind the ordering declarations to the query instance. * The ordering consists of one or more ordering declarations separated by commas. * Each ordering declaration is the name of the field in the name scope of the * candidate class followed by one of the following words: ascending or descending. * * @param ordering the ordering declarations separated by comma. */ void setOrdering (String ordering); /** * Set the result of the query. *

* The query result is an optional keyword distinct followed by a Java * expression, which tells what values are to be returned by the JDO query. * If the result is not specified, then it defaults to "distinct this", * which has the effect of returning the elements of the candidates * that match the filter. */ void setResult(String result); /** Sets the prefetchEnabled option. * * The prefetchEnabled option specifies whether prefetch of relationship * fields should be enabled for this query. The prefetch is enabled by * default if such fields are part of DFG. A user needs to explicitely * disable prefetch for any particular query if the related instances * will not be used in this transaction. * * @param prefetchEnabled the setting of the prefetchEnabled option. */ void setPrefetchEnabled(boolean prefetchEnabled); /** Set the ignoreCache option. * * The ignoreCache option setting specifies whether the query should execute * entirely in the back end, instead of in the cache. * @param ignoreCache the setting of the ignoreCache option. */ void setIgnoreCache(boolean ignoreCache); /** Get the ignoreCache option setting. * @return the ignoreCache option setting. * @see #setIgnoreCache */ boolean getIgnoreCache(); /** Verify the elements of the query and provide a hint to the query to * prepare and optimize an execution plan. */ void compile(); /** Execute the query and return the filtered Collection. * @return the filtered Collection. * @see #executeWithArray (Object[] parameters) */ Object execute(); /** Execute the query and return the filtered Collection. * @return the filtered Collection. * @see #executeWithArray (Object[] parameters) * @param p1 the value of the first parameter declared. */ Object execute(Object p1); /** Execute the query and return the filtered Collection. * @return the filtered Collection. * @see #executeWithArray (Object[] parameters) * @param p1 the value of the first parameter declared. * @param p2 the value of the second parameter declared. */ Object execute(Object p1, Object p2); /** Execute the query and return the filtered Collection. * @return the filtered Collection. * @see #executeWithArray (Object[] parameters) * @param p1 the value of the first parameter declared. * @param p2 the value of the second parameter declared. * @param p3 the value of the third parameter declared. */ Object execute(Object p1, Object p2, Object p3); /** Execute the query and return the filtered Collection. * @return the filtered Collection. * @see #executeWithArray (Object[] parameters) * @param parameters the Map containing all of the parameters. */ Object executeWithMap (Map parameters); /** Execute the query and return the filtered Collection. * *

The execution of the query obtains the values of the parameters and * matches them against the declared parameters in order. The type of * the declared parameters must match the type of the passed parameters, * except that the passed parameters might need to be unwrapped to get * their primitive values. * *

The filter, import, declared parameters, declared variables, and * ordering statements are verified for consistency. * *

Each element in the candidate Collection is examined to see that it * is assignment compatible to the Class of the query. It is then evaluated * by the boolean expression of the filter. The element passes the filter * if there exist unique values for all variables for which the filter * expression evaluates to true. * @return the filtered Collection. * @param parameters the Object array with all of the parameters. */ Object executeWithArray (Object[] parameters); /** Get the PersistenceManager associated with this Query. * *

If this Query has no PersistenceManager return null. * @return the PersistenceManager associated with this Query. */ PersistenceManager getPersistenceManager(); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy