001    /**
002     * Copyright (c) 2000-2011 Liferay, Inc. All rights reserved.
003     *
004     * The contents of this file are subject to the terms of the Liferay Enterprise
005     * Subscription License ("License"). You may not use this file except in
006     * compliance with the License. You can obtain a copy of the License by
007     * contacting Liferay, Inc. See the License for the specific language governing
008     * permissions and limitations under the License, including but not limited to
009     * distribution rights of the Software.
010     *
011     *
012     *
013     */
014    
015    package com.liferay.portal.search.lucene;
016    
017    import com.liferay.portal.kernel.search.BaseBooleanQueryImpl;
018    import com.liferay.portal.kernel.search.BooleanClause;
019    import com.liferay.portal.kernel.search.BooleanClauseOccur;
020    import com.liferay.portal.kernel.search.BooleanClauseOccurImpl;
021    import com.liferay.portal.kernel.search.ParseException;
022    import com.liferay.portal.kernel.search.Query;
023    import com.liferay.portal.kernel.search.QueryTranslatorUtil;
024    
025    import java.util.ArrayList;
026    import java.util.List;
027    
028    /**
029     * @author Brian Wing Shun Chan
030     * @author Hugo Huijser
031     */
032    public class BooleanQueryImpl extends BaseBooleanQueryImpl {
033    
034            public BooleanQueryImpl() {
035                    _booleanQuery = new org.apache.lucene.search.BooleanQuery();
036            }
037    
038            public void add(Query query, BooleanClauseOccur booleanClauseOccur)
039                    throws ParseException {
040    
041                    _booleanQuery.add(
042                            (org.apache.lucene.search.Query)QueryTranslatorUtil.translate(
043                                    query),
044                            BooleanClauseOccurTranslator.translate(booleanClauseOccur));
045            }
046    
047            public void add(Query query, String occur) throws ParseException {
048                    BooleanClauseOccur booleanClauseOccur = new BooleanClauseOccurImpl(
049                            occur);
050    
051                    add(query, booleanClauseOccur);
052            }
053    
054            public void addExactTerm(String field, boolean value) {
055                    LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
056            }
057    
058            public void addExactTerm(String field, Boolean value) {
059                    LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
060            }
061    
062            public void addExactTerm(String field, double value) {
063                    LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
064            }
065    
066            public void addExactTerm(String field, Double value) {
067                    LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
068            }
069    
070            public void addExactTerm(String field, int value) {
071                    LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
072            }
073    
074            public void addExactTerm(String field, Integer value) {
075                    LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
076            }
077    
078            public void addExactTerm(String field, long value) {
079                    LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
080            }
081    
082            public void addExactTerm(String field, Long value) {
083                    LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
084            }
085    
086            public void addExactTerm(String field, short value) {
087                    LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
088            }
089    
090            public void addExactTerm(String field, Short value) {
091                    LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
092            }
093    
094            public void addExactTerm(String field, String value) {
095                    LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
096            }
097    
098            public void addNumericRangeTerm(
099                    String field, int startValue, int endValue) {
100    
101                    LuceneHelperUtil.addNumericRangeTerm(
102                            _booleanQuery, field, startValue, endValue);
103            }
104    
105            public void addNumericRangeTerm(
106                    String field, Integer startValue, Integer endValue) {
107    
108                    LuceneHelperUtil.addNumericRangeTerm(
109                            _booleanQuery, field, startValue, endValue);
110            }
111    
112            public void addNumericRangeTerm(
113                    String field, long startValue, long endValue) {
114    
115                    LuceneHelperUtil.addNumericRangeTerm(
116                            _booleanQuery, field, startValue, endValue);
117            }
118    
119            public void addNumericRangeTerm(
120                    String field, Long startValue, Long endValue) {
121    
122                    LuceneHelperUtil.addNumericRangeTerm(
123                            _booleanQuery, field, startValue, endValue);
124            }
125    
126            public void addNumericRangeTerm(
127                    String field, short startValue, short endValue) {
128    
129                    LuceneHelperUtil.addNumericRangeTerm(
130                            _booleanQuery, field, startValue, endValue);
131            }
132    
133            public void addNumericRangeTerm(
134                    String field, Short startValue, Short endValue) {
135    
136                    LuceneHelperUtil.addNumericRangeTerm(
137                            _booleanQuery, field, startValue, endValue);
138            }
139    
140            public void addRangeTerm(String field, int startValue, int endValue) {
141                    LuceneHelperUtil.addRangeTerm(
142                            _booleanQuery, field, startValue, endValue);
143            }
144    
145            public void addRangeTerm(
146                    String field, Integer startValue, Integer endValue) {
147    
148                    LuceneHelperUtil.addRangeTerm(
149                            _booleanQuery, field, startValue, endValue);
150            }
151    
152            public void addRangeTerm(String field, long startValue, long endValue) {
153                    LuceneHelperUtil.addRangeTerm(
154                            _booleanQuery, field, startValue, endValue);
155            }
156    
157            public void addRangeTerm(String field, Long startValue, Long endValue) {
158                    LuceneHelperUtil.addRangeTerm(
159                            _booleanQuery, field, startValue, endValue);
160            }
161    
162            public void addRangeTerm(String field, short startValue, short endValue) {
163                    LuceneHelperUtil.addRangeTerm(
164                            _booleanQuery, field, startValue, endValue);
165            }
166    
167            public void addRangeTerm(String field, Short startValue, Short endValue) {
168                    LuceneHelperUtil.addRangeTerm(
169                            _booleanQuery, field, startValue, endValue);
170            }
171    
172            public void addRangeTerm(String field, String startValue, String endValue) {
173                    LuceneHelperUtil.addRangeTerm(
174                            _booleanQuery, field, startValue, endValue);
175            }
176    
177            public void addRequiredTerm(String field, boolean value) {
178                    LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
179            }
180    
181            public void addRequiredTerm(String field, Boolean value) {
182                    LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
183            }
184    
185            public void addRequiredTerm(String field, double value) {
186                    LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
187            }
188    
189            public void addRequiredTerm(String field, Double value) {
190                    LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
191            }
192    
193            public void addRequiredTerm(String field, int value) {
194                    LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
195            }
196    
197            public void addRequiredTerm(String field, Integer value) {
198                    LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
199            }
200    
201            public void addRequiredTerm(String field, long value) {
202                    LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
203            }
204    
205            public void addRequiredTerm(String field, Long value) {
206                    LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
207            }
208    
209            public void addRequiredTerm(String field, short value) {
210                    LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
211            }
212    
213            public void addRequiredTerm(String field, Short value) {
214                    LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
215            }
216    
217            public void addRequiredTerm(String field, String value) {
218                    LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
219            }
220    
221            public void addRequiredTerm(String field, String value, boolean like) {
222                    LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value, like);
223            }
224    
225            public void addTerm(String field, long value) {
226                    LuceneHelperUtil.addTerm(_booleanQuery, field, value);
227            }
228    
229            public void addTerm(String field, String value) {
230                    LuceneHelperUtil.addTerm(_booleanQuery, field, value);
231            }
232    
233            public void addTerm(String field, String value, boolean like) {
234                    LuceneHelperUtil.addTerm(_booleanQuery, field, value, like);
235            }
236    
237            public List<BooleanClause> clauses() {
238                    List<org.apache.lucene.search.BooleanClause> luceneClauses =
239                            _booleanQuery.clauses();
240    
241                    List<BooleanClause> clauses = new ArrayList<BooleanClause>(
242                            luceneClauses.size());
243    
244                    for (int i = 0; i < luceneClauses.size(); i++) {
245                            clauses.add(new BooleanClauseImpl(luceneClauses.get(i)));
246                    }
247    
248                    return clauses;
249            }
250    
251            public org.apache.lucene.search.BooleanQuery getBooleanQuery() {
252                    return _booleanQuery;
253            }
254    
255            @Override
256            public Object getWrappedQuery() {
257                    return getBooleanQuery();
258            }
259    
260            @Override
261            public String toString() {
262                    return _booleanQuery.toString();
263            }
264    
265            private org.apache.lucene.search.BooleanQuery _booleanQuery;
266    
267    }