1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * The contents of this file are subject to the terms of the Liferay Enterprise
5    * Subscription License ("License"). You may not use this file except in
6    * compliance with the License. You can obtain a copy of the License by
7    * contacting Liferay, Inc. See the License for the specific language governing
8    * permissions and limitations under the License, including but not limited to
9    * distribution rights of the Software.
10   *
11   *
12   *
13   */
14  
15  package com.liferay.portal.search.lucene;
16  
17  import com.liferay.portal.kernel.search.BaseBooleanQueryImpl;
18  import com.liferay.portal.kernel.search.BooleanClause;
19  import com.liferay.portal.kernel.search.BooleanClauseOccur;
20  import com.liferay.portal.kernel.search.BooleanClauseOccurImpl;
21  import com.liferay.portal.kernel.search.ParseException;
22  import com.liferay.portal.kernel.search.Query;
23  
24  import java.util.ArrayList;
25  import java.util.List;
26  
27  /**
28   * <a href="BooleanQueryImpl.java.html"><b><i>View Source</i></b></a>
29   *
30   * @author Brian Wing Shun Chan
31   */
32  public class BooleanQueryImpl extends BaseBooleanQueryImpl {
33  
34      public BooleanQueryImpl() {
35          _booleanQuery = new org.apache.lucene.search.BooleanQuery();
36      }
37  
38      public void add(Query query, BooleanClauseOccur booleanClauseOccur)
39          throws ParseException {
40  
41          try {
42              _booleanQuery.add(
43                  QueryTranslator.translate(query),
44                  BooleanClauseOccurTranslator.translate(booleanClauseOccur));
45          }
46          catch (org.apache.lucene.queryParser.ParseException pe) {
47              throw new ParseException(pe.getMessage());
48          }
49      }
50  
51      public void add(Query query, String occur) throws ParseException {
52          BooleanClauseOccur booleanClauseOccur = new BooleanClauseOccurImpl(
53              occur);
54  
55          add(query, booleanClauseOccur);
56      }
57  
58      public void addExactTerm(String field, boolean value) {
59          LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
60      }
61  
62      public void addExactTerm(String field, Boolean value) {
63          LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
64      }
65  
66      public void addExactTerm(String field, double value) {
67          LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
68      }
69  
70      public void addExactTerm(String field, Double value) {
71          LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
72      }
73  
74      public void addExactTerm(String field, int value) {
75          LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
76      }
77  
78      public void addExactTerm(String field, Integer value) {
79          LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
80      }
81  
82      public void addExactTerm(String field, long value) {
83          LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
84      }
85  
86      public void addExactTerm(String field, Long value) {
87          LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
88      }
89  
90      public void addExactTerm(String field, short value) {
91          LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
92      }
93  
94      public void addExactTerm(String field, Short value) {
95          LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
96      }
97  
98      public void addExactTerm(String field, String value) {
99          LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
100     }
101 
102     public void addRequiredTerm(String field, boolean value) {
103         LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
104     }
105 
106     public void addRequiredTerm(String field, Boolean value) {
107         LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
108     }
109 
110     public void addRequiredTerm(String field, double value) {
111         LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
112     }
113 
114     public void addRequiredTerm(String field, Double value) {
115         LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
116     }
117 
118     public void addRequiredTerm(String field, int value) {
119         LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
120     }
121 
122     public void addRequiredTerm(String field, Integer value) {
123         LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
124     }
125 
126     public void addRequiredTerm(String field, long value) {
127         LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
128     }
129 
130     public void addRequiredTerm(String field, Long value) {
131         LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
132     }
133 
134     public void addRequiredTerm(String field, short value) {
135         LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
136     }
137 
138     public void addRequiredTerm(String field, Short value) {
139         LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
140     }
141 
142     public void addRequiredTerm(String field, String value) {
143         LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
144     }
145 
146     public void addRequiredTerm(String field, String value, boolean like) {
147         LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value, like);
148     }
149 
150     public void addTerm(String field, long value) throws ParseException {
151         try {
152             LuceneHelperUtil.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             LuceneHelperUtil.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             LuceneHelperUtil.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 }