001 /*
002 * Copyright 2015 UnboundID Corp.
003 * All Rights Reserved.
004 */
005 /*
006 * Copyright (C) 2015 UnboundID Corp.
007 *
008 * This program is free software; you can redistribute it and/or modify
009 * it under the terms of the GNU General Public License (GPLv2 only)
010 * or the terms of the GNU Lesser General Public License (LGPLv2.1 only)
011 * as published by the Free Software Foundation.
012 *
013 * This program is distributed in the hope that it will be useful,
014 * but WITHOUT ANY WARRANTY; without even the implied warranty of
015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
016 * GNU General Public License for more details.
017 *
018 * You should have received a copy of the GNU General Public License
019 * along with this program; if not, see <http://www.gnu.org/licenses>.
020 */
021 package com.unboundid.ldap.sdk.unboundidds.jsonfilter;
022
023
024
025 import com.unboundid.util.StaticUtils;
026 import com.unboundid.util.ThreadSafety;
027 import com.unboundid.util.ThreadSafetyLevel;
028
029
030
031 /**
032 * <BLOCKQUOTE>
033 * <B>NOTE:</B> This class is part of the Commercial Edition of the UnboundID
034 * LDAP SDK for Java. It is not available for use in applications that
035 * include only the Standard Edition of the LDAP SDK, and is not supported for
036 * use in conjunction with non-UnboundID products.
037 * </BLOCKQUOTE>
038 * An enum that defines the possible values that may be used for the
039 * {@code expectedType} element
040 *
041 * An enum defining the possible values for the expected data types for the
042 * value of a given field.
043 */
044 @ThreadSafety(level=ThreadSafetyLevel.COMPLETELY_THREADSAFE)
045 public enum ExpectedValueType
046 {
047 /**
048 * Indicates that the target field may have a value of {@code true} or
049 * {@code false}.
050 */
051 BOOLEAN("boolean"),
052
053
054
055 /**
056 * Indicates that the target field may have a value that is an array
057 * containing zero elements.
058 */
059 EMPTY_ARRAY("empty-array"),
060
061
062
063 /**
064 * Indicates that the target field may have a value that is an array
065 * containing at least one element. No restriction will be placed on the type
066 * of elements that may be held in the array.
067 */
068 NON_EMPTY_ARRAY("non-empty-array"),
069
070
071
072 /**
073 * Indicates that the target field may have a value of {@code null}.
074 * {@code null}.
075 */
076 NULL("null"),
077
078
079
080 /**
081 * Indicates that the target field may have a value that is a number.
082 */
083 NUMBER("number"),
084
085
086
087 /**
088 * Indicates that the target field may have a value that is a JSON object.
089 */
090 OBJECT("object"),
091
092
093
094 /**
095 * Indicates that the target field may have a value that is a string.
096 */
097 STRING("string");
098
099
100
101 // The name that should be used for the type.
102 private final String name;
103
104
105
106 /**
107 * Creates a new expected value type with the specified name.
108 *
109 * @param name The name for the type.
110 */
111 private ExpectedValueType(final String name)
112 {
113 this.name = name;
114 }
115
116
117
118 /**
119 * Retrieves the expected value type with the specified name.
120 *
121 * @param name The name of the expected value type to retrieve.
122 *
123 * @return The expected value type with the specified name, ro {@code null}
124 * if there is no type with the given name.
125 */
126 public static ExpectedValueType forName(final String name)
127 {
128 final String lowerName = StaticUtils.toLowerCase(name);
129 for (final ExpectedValueType t : values())
130 {
131 if (t.name.equals(lowerName))
132 {
133 return t;
134 }
135 }
136
137 return null;
138 }
139
140
141
142 /**
143 * Retrieves a string representation of this expected value type.
144 *
145 * @return A string representation of this expected value type.
146 */
147 @Override()
148 public String toString()
149 {
150 return name;
151 }
152 }