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 }