KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > mvnforum > search > CombineFilter


1 /*
2  * $Header: /cvsroot/mvnforum/mvnforum/src/com/mvnforum/search/CombineFilter.java,v 1.7 2006/04/14 17:05:27 minhnn Exp $
3  * $Author: minhnn $
4  * $Revision: 1.7 $
5  * $Date: 2006/04/14 17:05:27 $
6  *
7  * ====================================================================
8  *
9  * Copyright (C) 2002-2006 by MyVietnam.net
10  *
11  * All copyright notices regarding mvnForum MUST remain
12  * intact in the scripts and in the outputted HTML.
13  * The "powered by" text/logo with a link back to
14  * http://www.mvnForum.com and http://www.MyVietnam.net in
15  * the footer of the pages MUST remain visible when the pages
16  * are viewed on the internet or intranet.
17  *
18  * This program is free software; you can redistribute it and/or modify
19  * it under the terms of the GNU General Public License as published by
20  * the Free Software Foundation; either version 2 of the License, or
21  * any later version.
22  *
23  * This program is distributed in the hope that it will be useful,
24  * but WITHOUT ANY WARRANTY; without even the implied warranty of
25  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26  * GNU General Public License for more details.
27  *
28  * You should have received a copy of the GNU General Public License
29  * along with this program; if not, write to the Free Software
30  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
31  *
32  * Support can be obtained from support forums at:
33  * http://www.mvnForum.com/mvnforum/index
34  *
35  * Correspondence and Marketing Questions can be sent to:
36  * info at MyVietnam net
37  *
38  * @author: Phong Ta Quoc
39  */

40 package com.mvnforum.search;
41
42 import java.io.IOException JavaDoc;
43 import java.util.BitSet JavaDoc;
44
45 import org.apache.lucene.index.IndexReader;
46 import org.apache.lucene.search.Filter;
47
48 /**
49  * A Filter that restricts search results to match the results of both filter.
50  */

51 public class CombineFilter extends Filter {
52
53     private Filter leftFilter;
54
55     private Filter rightFilter;
56
57     public CombineFilter(Filter f1, Filter f2) {
58         if ((f1 == null) && (f2 == null)) {
59             throw new IllegalArgumentException JavaDoc("At least f1 or f2 must not be null.");
60         }
61         leftFilter = f1;
62         rightFilter = f2;
63     }
64
65     public BitSet JavaDoc bits(IndexReader reader) throws IOException JavaDoc {
66
67         BitSet JavaDoc resultBits = null;
68         if ((leftFilter != null) && (rightFilter != null)) {
69             BitSet JavaDoc leftBits = leftFilter.bits(reader);
70             BitSet JavaDoc rightBits = rightFilter.bits(reader);
71             resultBits = (BitSet JavaDoc) leftBits.clone();
72             resultBits.and(rightBits);
73         } else if (leftFilter != null) {
74             resultBits = leftFilter.bits(reader);
75         } else if (rightFilter != null) {
76             resultBits = rightFilter.bits(reader);
77         } else {
78             // should never happen since we have checked it in the constructor
79
throw new IllegalArgumentException JavaDoc("At least f1 or f2 must not be null.");
80         }
81         return resultBits;
82     }
83
84     public String JavaDoc toString() {
85         StringBuffer JavaDoc buffer = new StringBuffer JavaDoc();
86         buffer.append(leftFilter);
87         buffer.append("\n");
88         buffer.append(rightFilter);
89         return buffer.toString();
90     }
91 }
92
Popular Tags