1 /*
2 * AutoDAO - Generic DAO on steroids implementation for Java.
3 *
4 * Copyright 2008-2012 Marat Radchenko <slonopotamus@users.sourceforge.net>
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18 package net.sf.autodao.impl;
19
20 import java.lang.reflect.Method;
21 import java.util.List;
22 import java.util.Map;
23
24 import org.jetbrains.annotations.NotNull;
25 import org.jetbrains.annotations.Nullable;
26
27 /**
28 * Implemented by AutoDAO implementations.
29 *
30 * <p>NOT FOR PUBLIC USE.
31 */
32 public interface FinderExecutor {
33
34 @NotNull
35 <T> List<T> executeListFinder(@NotNull final Method method,
36 @NotNull final Map<String, ?> namedArgs,
37 @Nullable final Integer limit,
38 @Nullable final Integer offset);
39
40 /**
41 * Execute a finder method with the appropriate arguments.
42 *
43 * @param method query method.
44 * @param indexedArgs arguments for query method
45 * @param limit query limit. Can be <code>null</code>. See {@link net.sf.autodao.Limit}.
46 * @param offset query offset. Can be <code>null</code>. See {@link net.sf.autodao.Offset}.
47 * @return list of found objects or empty list.
48 */
49 @NotNull
50 <T> List<T> executeListFinder(@NotNull final Method method,
51 @NotNull final Object[] indexedArgs,
52 @Nullable final Integer limit,
53 @Nullable final Integer offset);
54
55 @Nullable
56 <T> T executeSingleFinder(@NotNull final Method method, @NotNull final Map<String, ?> namedArgs);
57
58 /**
59 * Same as {@link #executeListFinder(Method, Object[], Integer, Integer)} but for single result.
60 *
61 * @param method query method.
62 * @param indexedArgs arguments for query method.
63 * @return found object or <code>null</code>
64 */
65 @Nullable
66 <T> T executeSingleFinder(@NotNull final Method method, @NotNull final Object[] indexedArgs);
67 }