1 | /*--
|
---|
2 |
|
---|
3 | $Id: NegateFilter.java,v 1.4 2007/11/10 05:29:00 jhunter Exp $
|
---|
4 |
|
---|
5 | Copyright (C) 2000-2007 Jason Hunter & Brett McLaughlin.
|
---|
6 | All rights reserved.
|
---|
7 |
|
---|
8 | Redistribution and use in source and binary forms, with or without
|
---|
9 | modification, are permitted provided that the following conditions
|
---|
10 | are met:
|
---|
11 |
|
---|
12 | 1. Redistributions of source code must retain the above copyright
|
---|
13 | notice, this list of conditions, and the following disclaimer.
|
---|
14 |
|
---|
15 | 2. Redistributions in binary form must reproduce the above copyright
|
---|
16 | notice, this list of conditions, and the disclaimer that follows
|
---|
17 | these conditions in the documentation and/or other materials
|
---|
18 | provided with the distribution.
|
---|
19 |
|
---|
20 | 3. The name "JDOM" must not be used to endorse or promote products
|
---|
21 | derived from this software without prior written permission. For
|
---|
22 | written permission, please contact <request_AT_jdom_DOT_org>.
|
---|
23 |
|
---|
24 | 4. Products derived from this software may not be called "JDOM", nor
|
---|
25 | may "JDOM" appear in their name, without prior written permission
|
---|
26 | from the JDOM Project Management <request_AT_jdom_DOT_org>.
|
---|
27 |
|
---|
28 | In addition, we request (but do not require) that you include in the
|
---|
29 | end-user documentation provided with the redistribution and/or in the
|
---|
30 | software itself an acknowledgement equivalent to the following:
|
---|
31 | "This product includes software developed by the
|
---|
32 | JDOM Project (http://www.jdom.org/)."
|
---|
33 | Alternatively, the acknowledgment may be graphical using the logos
|
---|
34 | available at http://www.jdom.org/images/logos.
|
---|
35 |
|
---|
36 | THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
---|
37 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
---|
38 | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
---|
39 | DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT
|
---|
40 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
---|
41 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
---|
42 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
---|
43 | USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
---|
44 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
---|
45 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
---|
46 | OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
---|
47 | SUCH DAMAGE.
|
---|
48 |
|
---|
49 | This software consists of voluntary contributions made by many
|
---|
50 | individuals on behalf of the JDOM Project and was originally
|
---|
51 | created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
|
---|
52 | Brett McLaughlin <brett_AT_jdom_DOT_org>. For more information
|
---|
53 | on the JDOM Project, please see <http://www.jdom.org/>.
|
---|
54 |
|
---|
55 | */
|
---|
56 |
|
---|
57 | package org.jdom.filter;
|
---|
58 |
|
---|
59 | /**
|
---|
60 | * Filter that is the logical <b>negation</b> operation of another filter.
|
---|
61 | *
|
---|
62 | *
|
---|
63 | * @author Bradley S. Huffman
|
---|
64 | * @version $Revision: 1.4 $, $Date: 2007/11/10 05:29:00 $
|
---|
65 | */
|
---|
66 | final class NegateFilter extends AbstractFilter {
|
---|
67 |
|
---|
68 | // Underlying filter.
|
---|
69 | private Filter filter;
|
---|
70 |
|
---|
71 | /**
|
---|
72 | * Match if the supplied filter <b>does not</b> match.
|
---|
73 | *
|
---|
74 | * @param filter filter to use.
|
---|
75 | */
|
---|
76 | public NegateFilter(Filter filter) {
|
---|
77 | this.filter = filter;
|
---|
78 | }
|
---|
79 |
|
---|
80 | public boolean matches(Object obj) {
|
---|
81 | return !filter.matches(obj);
|
---|
82 | }
|
---|
83 |
|
---|
84 | public Filter negate() {
|
---|
85 | return filter;
|
---|
86 | }
|
---|
87 |
|
---|
88 | public boolean equals(Object obj) {
|
---|
89 | if (this == obj) {
|
---|
90 | return true;
|
---|
91 | }
|
---|
92 |
|
---|
93 | if (obj instanceof NegateFilter) {
|
---|
94 | return filter.equals(((NegateFilter) obj).filter);
|
---|
95 | }
|
---|
96 | return false;
|
---|
97 | }
|
---|
98 |
|
---|
99 | public int hashCode() {
|
---|
100 | return ~filter.hashCode();
|
---|
101 | }
|
---|
102 |
|
---|
103 | public String toString() {
|
---|
104 | return new StringBuffer(64)
|
---|
105 | .append("[NegateFilter: ")
|
---|
106 | .append(filter.toString())
|
---|
107 | .append("]")
|
---|
108 | .toString();
|
---|
109 | }
|
---|
110 | }
|
---|