1   /**
2    * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3    *
4    *
5    *
6    *
7    * The contents of this file are subject to the terms of the Liferay Enterprise
8    * Subscription License ("License"). You may not use this file except in
9    * compliance with the License. You can obtain a copy of the License by
10   * contacting Liferay, Inc. See the License for the specific language governing
11   * permissions and limitations under the License, including but not limited to
12   * distribution rights 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.search.lucene;
24  
25  import com.liferay.portal.kernel.search.BooleanClause;
26  import com.liferay.portal.kernel.search.BooleanClauseOccur;
27  import com.liferay.portal.kernel.search.BooleanQuery;
28  import com.liferay.portal.kernel.search.ParseException;
29  import com.liferay.portal.kernel.search.Query;
30  
31  import java.util.ArrayList;
32  import java.util.List;
33  
34  /**
35   * <a href="BooleanQueryImpl.java.html"><b><i>View Source</i></b></a>
36   *
37   * @author Brian Wing Shun Chan
38   */
39  public class BooleanQueryImpl implements BooleanQuery {
40  
41      public BooleanQueryImpl() {
42          _booleanQuery = new org.apache.lucene.search.BooleanQuery();
43      }
44  
45      public void add(Query query, BooleanClauseOccur occur)
46          throws ParseException {
47  
48          try {
49              _booleanQuery.add(
50                  QueryTranslator.translate(query),
51                  BooleanClauseOccurTranslator.translate(occur));
52          }
53          catch (org.apache.lucene.queryParser.ParseException pe) {
54              throw new ParseException(pe.getMessage());
55          }
56      }
57  
58      public void addExactTerm(String field, boolean value) {
59          LuceneUtil.addExactTerm(_booleanQuery, field, value);
60      }
61  
62      public void addExactTerm(String field, Boolean value) {
63          LuceneUtil.addExactTerm(_booleanQuery, field, value);
64      }
65  
66      public void addExactTerm(String field, double value) {
67          LuceneUtil.addExactTerm(_booleanQuery, field, value);
68      }
69  
70      public void addExactTerm(String field, Double value) {
71          LuceneUtil.addExactTerm(_booleanQuery, field, value);
72      }
73  
74      public void addExactTerm(String field, int value) {
75          LuceneUtil.addExactTerm(_booleanQuery, field, value);
76      }
77  
78      public void addExactTerm(String field, Integer value) {
79          LuceneUtil.addExactTerm(_booleanQuery, field, value);
80      }
81  
82      public void addExactTerm(String field, long value) {
83          LuceneUtil.addExactTerm(_booleanQuery, field, value);
84      }
85  
86      public void addExactTerm(String field, Long value) {
87          LuceneUtil.addExactTerm(_booleanQuery, field, value);
88      }
89  
90      public void addExactTerm(String field, short value) {
91          LuceneUtil.addExactTerm(_booleanQuery, field, value);
92      }
93  
94      public void addExactTerm(String field, Short value) {
95          LuceneUtil.addExactTerm(_booleanQuery, field, value);
96      }
97  
98      public void addExactTerm(String field, String value) {
99          LuceneUtil.addExactTerm(_booleanQuery, field, value);
100     }
101 
102     public void addRequiredTerm(String field, boolean value) {
103         LuceneUtil.addRequiredTerm(_booleanQuery, field, value);
104     }
105 
106     public void addRequiredTerm(String field, Boolean value) {
107         LuceneUtil.addRequiredTerm(_booleanQuery, field, value);
108     }
109 
110     public void addRequiredTerm(String field, double value) {
111         LuceneUtil.addRequiredTerm(_booleanQuery, field, value);
112     }
113 
114     public void addRequiredTerm(String field, Double value) {
115         LuceneUtil.addRequiredTerm(_booleanQuery, field, value);
116     }
117 
118     public void addRequiredTerm(String field, int value) {
119         LuceneUtil.addRequiredTerm(_booleanQuery, field, value);
120     }
121 
122     public void addRequiredTerm(String field, Integer value) {
123         LuceneUtil.addRequiredTerm(_booleanQuery, field, value);
124     }
125 
126     public void addRequiredTerm(String field, long value) {
127         LuceneUtil.addRequiredTerm(_booleanQuery, field, value);
128     }
129 
130     public void addRequiredTerm(String field, Long value) {
131         LuceneUtil.addRequiredTerm(_booleanQuery, field, value);
132     }
133 
134     public void addRequiredTerm(String field, short value) {
135         LuceneUtil.addRequiredTerm(_booleanQuery, field, value);
136     }
137 
138     public void addRequiredTerm(String field, Short value) {
139         LuceneUtil.addRequiredTerm(_booleanQuery, field, value);
140     }
141 
142     public void addRequiredTerm(String field, String value) {
143         LuceneUtil.addRequiredTerm(_booleanQuery, field, value);
144     }
145 
146     public void addRequiredTerm(String field, String value, boolean like) {
147         LuceneUtil.addRequiredTerm(_booleanQuery, field, value, like);
148     }
149 
150     public void addTerm(String field, long value) throws ParseException {
151         try {
152             LuceneUtil.addTerm(_booleanQuery, field, value);
153         }
154         catch (org.apache.lucene.queryParser.ParseException pe) {
155             throw new ParseException(pe.getMessage());
156         }
157     }
158 
159     public void addTerm(String field, String value) throws ParseException {
160         try {
161             LuceneUtil.addTerm(_booleanQuery, field, value);
162         }
163         catch (org.apache.lucene.queryParser.ParseException pe) {
164             throw new ParseException(pe.getMessage());
165         }
166     }
167 
168     public void addTerm(String field, String value, boolean like)
169         throws ParseException {
170 
171         try {
172             LuceneUtil.addTerm(_booleanQuery, field, value, like);
173         }
174         catch (org.apache.lucene.queryParser.ParseException pe) {
175             throw new ParseException(pe.getMessage());
176         }
177     }
178 
179     public List<BooleanClause> clauses() {
180         List<org.apache.lucene.search.BooleanClause> luceneClauses =
181             _booleanQuery.clauses();
182 
183         List<BooleanClause> clauses = new ArrayList<BooleanClause>(
184             luceneClauses.size());
185 
186         for (int i = 0; i < luceneClauses.size(); i++) {
187             clauses.add(new BooleanClauseImpl(luceneClauses.get(i)));
188         }
189 
190         return clauses;
191     }
192 
193     public org.apache.lucene.search.BooleanQuery getBooleanQuery() {
194         return _booleanQuery;
195     }
196 
197     public String toString() {
198         return _booleanQuery.toString();
199     }
200 
201     private org.apache.lucene.search.BooleanQuery _booleanQuery;
202 
203 }