]> source.dussan.org Git - archiva.git/blob
abc99bd13eb3bd3c7fcbc0f7761cbfb95e342c42
[archiva.git] /
1 package org.apache.maven.repository.indexing.query;
2
3 /*
4  * Copyright 2005-2006 The Apache Software Foundation.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18
19 /**
20  * Base of all query terms.
21  *
22  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
23  */
24 public class CompoundQueryTerm
25 {
26     /**
27      * The query to add to the compound query.
28      */
29     private final Query query;
30
31     /**
32      * Whether the term is required (an AND).
33      */
34     private final boolean required;
35
36     /**
37      * Whether the term is prohibited (a NOT).
38      */
39     private final boolean prohibited;
40
41     /**
42      * Class constructor
43      *
44      * @param query      the subquery to add
45      * @param required   whether the term is required (an AND)
46      * @param prohibited whether the term is prohibited (a NOT)
47      */
48     private CompoundQueryTerm( Query query, boolean required, boolean prohibited )
49     {
50         this.query = query;
51         this.prohibited = prohibited;
52         this.required = required;
53     }
54
55     /**
56      * Method to test if the Query is a search requirement
57      *
58      * @return true if this Query is a search requirement, otherwise returns false
59      */
60     public boolean isRequired()
61     {
62         return required;
63     }
64
65     /**
66      * Method to test if the Query is prohibited in the search result
67      *
68      * @return true if this Query is prohibited in the search result
69      */
70     public boolean isProhibited()
71     {
72         return prohibited;
73     }
74
75
76     /**
77      * The subquery to execute.
78      *
79      * @return the query
80      */
81     public Query getQuery()
82     {
83         return query;
84     }
85
86     static CompoundQueryTerm and( Query query )
87     {
88         return new CompoundQueryTerm( query, true, false );
89     }
90
91     static CompoundQueryTerm or( Query query )
92     {
93         return new CompoundQueryTerm( query, false, false );
94     }
95
96     static CompoundQueryTerm not( Query query )
97     {
98         return new CompoundQueryTerm( query, false, true );
99     }
100 }