View Javadoc

1   /*
2    * Copyright (c) 2007, James Leigh All rights reserved.
3    * 
4    * Redistribution and use in source and binary forms, with or without
5    * modification, are permitted provided that the following conditions are met:
6    * 
7    * - Redistributions of source code must retain the above copyright notice, this
8    *   list of conditions and the following disclaimer.
9    * - Redistributions in binary form must reproduce the above copyright notice,
10   *   this list of conditions and the following disclaimer in the documentation
11   *   and/or other materials provided with the distribution. 
12   * - Neither the name of the openrdf.org nor the names of its contributors may
13   *   be used to endorse or promote products derived from this software without
14   *   specific prior written permission.
15   * 
16   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19   * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
20   * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24   * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26   * POSSIBILITY OF SUCH DAMAGE.
27   * 
28   */
29  package org.openrdf.elmo;
30  
31  import java.io.Closeable;
32  import java.util.Iterator;
33  import java.util.List;
34  import java.util.Locale;
35  
36  /**
37   * Interface used to bind and evaluate a query
38   * 
39   * @author James Leigh
40   */
41  public interface ElmoQuery extends Closeable {
42  
43  	/**
44  	 * Closes any open results from this query.
45  	 */
46  	public abstract void close();
47  
48  	/**
49  	 * Evaluates the query and returns an iterator over the result.
50  	 * 
51  	 * @return Iterator over the result of the query.
52  	 */
53  	public abstract Iterator<?> evaluate();
54  
55  	/**
56  	 * Evaluates the query and return the first result.
57  	 * 
58  	 * @return The first result from the query.
59  	 */
60  	public abstract Object getSingleResult();
61  
62  	/**
63  	 * Evaluates the query and returns the results disconnected from the query.
64  	 * 
65  	 * @return The results from the query.
66  	 */
67  	public abstract List getResultList();
68  
69  	/**
70  	 * Skips to the <code>startPosition</code> of the results.
71  	 * 
72  	 * @param startPosition
73  	 */
74  	public abstract ElmoQuery setFirstResult(int startPosition);
75  
76  	/**
77  	 * Terminates the result list after reading <code>maxResult</code>
78  	 * 
79  	 * @param maxResult
80  	 */
81  	public abstract ElmoQuery setMaxResults(int maxResult);
82  
83  	/**
84  	 * Binds a literal with no type and a language of <code>locale</code>.
85  	 * 
86  	 * @param name
87  	 *            Name of the variable to bind to.
88  	 * @param label
89  	 * @param locale
90  	 */
91  	public abstract ElmoQuery setParameter(String name, String label,
92  			Locale locale);
93  
94  	/**
95  	 * Assigns an entity or literal to the given name.
96  	 * 
97  	 * @param name
98  	 *            Name of the variable to bind to.
99  	 * @param value
100 	 *            managed entity or literal.
101 	 */
102 	public abstract ElmoQuery setParameter(String name, Object value);
103 }