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