1   /**
2    * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3    *
4    * Permission is hereby granted, free of charge, to any person obtaining a copy
5    * of this software and associated documentation files (the "Software"), to deal
6    * in the Software without restriction, including without limitation the rights
7    * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8    * copies of the Software, and to permit persons to whom the Software is
9    * furnished to do so, subject to the following conditions:
10   *
11   * The above copyright notice and this permission notice shall be included in
12   * all copies or substantial portions of the Software.
13   *
14   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20   * SOFTWARE.
21   */
22  
23  package com.liferay.portal.kernel.bi.rules;
24  
25  import java.util.ArrayList;
26  import java.util.Arrays;
27  import java.util.List;
28  
29  /**
30   * <a href="RuleEngineQuery.java.html"><b><i>View Source</i></b></a>
31   *
32   * @author Michael C. Han
33   *
34   */
35  public class Query {
36  
37      public static Query createCustomQuery() {
38          return new Query(QueryType.CUSTOM);
39      }
40  
41      public static Query createStandardQuery() {
42          return new Query(QueryType.STANDARD);
43      }
44  
45      public void addArgument(Object object) {
46          if (_queryType.equals(QueryType.STANDARD)) {
47              throw new IllegalStateException(
48                  "Standard queries cannot accept query arguments");
49          }
50  
51          _arguments.add(object);
52      }
53  
54      public void addArguments(List<?> arguments) {
55          if (_queryType.equals(QueryType.STANDARD)) {
56              throw new IllegalStateException(
57                  "Standard queries cannot accept query arguments");
58          }
59  
60          _arguments.addAll(arguments);
61      }
62  
63      public void addArguments(Object[] arguments) {
64          if (_queryType.equals(QueryType.STANDARD)) {
65              throw new IllegalStateException(
66                  "Standard queries cannot accept query arguments");
67          }
68  
69          if ((arguments != null) && (arguments.length > 0)) {
70              _arguments.addAll(Arrays.asList(arguments));
71          }
72      }
73  
74      public Object[] getArguments() {
75          return _arguments.toArray(new Object[_arguments.size()]);
76      }
77  
78      public String getQueryString() {
79          return _queryString;
80      }
81  
82      public QueryType getQueryType() {
83          return _queryType;
84      }
85  
86      public void setQueryString(String queryString) {
87          if (_queryType.equals(QueryType.STANDARD)) {
88              throw new IllegalStateException(
89                  "Standard queries cannot accept query strings");
90          }
91  
92          _queryString = queryString;
93      }
94  
95      private Query(QueryType queryType) {
96          _queryType = queryType;
97      }
98  
99      private List<Object> _arguments = new ArrayList<Object>();
100     private String _queryString;
101     private QueryType _queryType;
102 
103 }