View Javadoc
1   /*
2    * #%L
3    * LogicalOperator.java - mongodb-async-driver - Allanbank Consulting, Inc.
4    * %%
5    * Copyright (C) 2011 - 2014 Allanbank Consulting, Inc.
6    * %%
7    * Licensed under the Apache License, Version 2.0 (the "License");
8    * you may not use this file except in compliance with the License.
9    * You may obtain a copy of the License at
10   * 
11   *      http://www.apache.org/licenses/LICENSE-2.0
12   * 
13   * Unless required by applicable law or agreed to in writing, software
14   * distributed under the License is distributed on an "AS IS" BASIS,
15   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16   * See the License for the specific language governing permissions and
17   * limitations under the License.
18   * #L%
19   */
20  
21  package com.allanbank.mongodb.builder;
22  
23  import com.allanbank.mongodb.Version;
24  
25  /**
26   * LogicalOperator provides the set of logical operators.
27   * 
28   * @api.yes This enumeration is part of the driver's API. Public and protected
29   *          members will be deprecated for at least 1 non-bugfix release
30   *          (version numbers are <major>.<minor>.<bugfix>)
31   *          before being removed or modified.
32   * @copyright 2012-2013, Allanbank Consulting, Inc., All Rights Reserved
33   */
34  public enum LogicalOperator implements Operator {
35  
36      /** The logical conjunction operator. */
37      AND("$and"),
38  
39      /** The logical negated disjunction operator. */
40      NOR("$nor"),
41  
42      /** The logical negation operator. */
43      NOT("$not"),
44  
45      /** The logical disjunction operator. */
46      OR("$or");
47  
48      /** The operator's token to use when sending to the server. */
49      private final String myToken;
50  
51      /** The first MongoDB version to support the operator. */
52      private final Version myVersion;
53  
54      /**
55       * Creates a new LogicalOperator.
56       * 
57       * @param token
58       *            The token to use when sending to the server.
59       */
60      private LogicalOperator(final String token) {
61          this(token, null);
62      }
63  
64      /**
65       * Creates a new LogicalOperator.
66       * 
67       * @param token
68       *            The token to use when sending to the server.
69       * @param version
70       *            The first MongoDB version to support the operator.
71       */
72      private LogicalOperator(final String token, final Version version) {
73          myToken = token;
74          myVersion = version;
75      }
76  
77      /**
78       * The token for the operator that can be sent to the server.
79       * 
80       * @return The token for the operator.
81       */
82      @Override
83      public String getToken() {
84          return myToken;
85      }
86  
87      /**
88       * Returns the first MongoDB version to support the operator.
89       * 
90       * @return The first MongoDB version to support the operator. If
91       *         <code>null</code> then the version is not known and can be
92       *         assumed to be all currently supported versions.
93       */
94      @Override
95      public Version getVersion() {
96          return myVersion;
97      }
98  }