1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * This library is free software; you can redistribute it and/or modify it under
5    * the terms of the GNU Lesser General Public License as published by the Free
6    * Software Foundation; either version 2.1 of the License, or (at your option)
7    * any later version.
8    *
9    * This library is distributed in the hope that it will be useful, but WITHOUT
10   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11   * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12   * details.
13   */
14  
15  package com.liferay.portal.search.lucene;
16  
17  import com.liferay.portal.kernel.search.BooleanClause;
18  import com.liferay.portal.kernel.search.BooleanClauseOccur;
19  import com.liferay.portal.kernel.search.BooleanQuery;
20  import com.liferay.portal.kernel.search.ParseException;
21  import com.liferay.portal.kernel.search.Query;
22  
23  import java.util.ArrayList;
24  import java.util.List;
25  
26  /**
27   * <a href="BooleanQueryImpl.java.html"><b><i>View Source</i></b></a>
28   *
29   * @author Brian Wing Shun Chan
30   */
31  public class BooleanQueryImpl implements BooleanQuery {
32  
33      public BooleanQueryImpl() {
34          _booleanQuery = new org.apache.lucene.search.BooleanQuery();
35      }
36  
37      public void add(Query query, BooleanClauseOccur occur)
38          throws ParseException {
39  
40          try {
41              _booleanQuery.add(
42                  QueryTranslator.translate(query),
43                  BooleanClauseOccurTranslator.translate(occur));
44          }
45          catch (org.apache.lucene.queryParser.ParseException pe) {
46              throw new ParseException(pe.getMessage());
47          }
48      }
49  
50      public void addExactTerm(String field, boolean value) {
51          LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
52      }
53  
54      public void addExactTerm(String field, Boolean value) {
55          LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
56      }
57  
58      public void addExactTerm(String field, double value) {
59          LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
60      }
61  
62      public void addExactTerm(String field, Double value) {
63          LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
64      }
65  
66      public void addExactTerm(String field, int value) {
67          LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
68      }
69  
70      public void addExactTerm(String field, Integer value) {
71          LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
72      }
73  
74      public void addExactTerm(String field, long value) {
75          LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
76      }
77  
78      public void addExactTerm(String field, Long value) {
79          LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
80      }
81  
82      public void addExactTerm(String field, short value) {
83          LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
84      }
85  
86      public void addExactTerm(String field, Short value) {
87          LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
88      }
89  
90      public void addExactTerm(String field, String value) {
91          LuceneHelperUtil.addExactTerm(_booleanQuery, field, value);
92      }
93  
94      public void addRequiredTerm(String field, boolean value) {
95          LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
96      }
97  
98      public void addRequiredTerm(String field, Boolean value) {
99          LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
100     }
101 
102     public void addRequiredTerm(String field, double value) {
103         LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
104     }
105 
106     public void addRequiredTerm(String field, Double value) {
107         LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
108     }
109 
110     public void addRequiredTerm(String field, int value) {
111         LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
112     }
113 
114     public void addRequiredTerm(String field, Integer value) {
115         LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
116     }
117 
118     public void addRequiredTerm(String field, long value) {
119         LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
120     }
121 
122     public void addRequiredTerm(String field, Long value) {
123         LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
124     }
125 
126     public void addRequiredTerm(String field, short value) {
127         LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
128     }
129 
130     public void addRequiredTerm(String field, Short value) {
131         LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
132     }
133 
134     public void addRequiredTerm(String field, String value) {
135         LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value);
136     }
137 
138     public void addRequiredTerm(String field, String value, boolean like) {
139         LuceneHelperUtil.addRequiredTerm(_booleanQuery, field, value, like);
140     }
141 
142     public void addTerm(String field, long value) throws ParseException {
143         try {
144             LuceneHelperUtil.addTerm(_booleanQuery, field, value);
145         }
146         catch (org.apache.lucene.queryParser.ParseException pe) {
147             throw new ParseException(pe.getMessage());
148         }
149     }
150 
151     public void addTerm(String field, String value) throws ParseException {
152         try {
153             LuceneHelperUtil.addTerm(_booleanQuery, field, value);
154         }
155         catch (org.apache.lucene.queryParser.ParseException pe) {
156             throw new ParseException(pe.getMessage());
157         }
158     }
159 
160     public void addTerm(String field, String value, boolean like)
161         throws ParseException {
162 
163         try {
164             LuceneHelperUtil.addTerm(_booleanQuery, field, value, like);
165         }
166         catch (org.apache.lucene.queryParser.ParseException pe) {
167             throw new ParseException(pe.getMessage());
168         }
169     }
170 
171     public List<BooleanClause> clauses() {
172         List<org.apache.lucene.search.BooleanClause> luceneClauses =
173             _booleanQuery.clauses();
174 
175         List<BooleanClause> clauses = new ArrayList<BooleanClause>(
176             luceneClauses.size());
177 
178         for (int i = 0; i < luceneClauses.size(); i++) {
179             clauses.add(new BooleanClauseImpl(luceneClauses.get(i)));
180         }
181 
182         return clauses;
183     }
184 
185     public org.apache.lucene.search.BooleanQuery getBooleanQuery() {
186         return _booleanQuery;
187     }
188 
189     public String toString() {
190         return _booleanQuery.toString();
191     }
192 
193     private org.apache.lucene.search.BooleanQuery _booleanQuery;
194 
195 }