001 /*
002 * JBoss DNA (http://www.jboss.org/dna)
003 * See the COPYRIGHT.txt file distributed with this work for information
004 * regarding copyright ownership. Some portions may be licensed
005 * to Red Hat, Inc. under one or more contributor license agreements.
006 * See the AUTHORS.txt file in the distribution for a full listing of
007 * individual contributors.
008 *
009 * Unless otherwise indicated, all code in JBoss DNA is licensed
010 * to you under the terms of the GNU Lesser General Public License as
011 * published by the Free Software Foundation; either version 2.1 of
012 * the License, or (at your option) any later version.
013 *
014 * JBoss DNA is distributed in the hope that it will be useful,
015 * but WITHOUT ANY WARRANTY; without even the implied warranty of
016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
017 * Lesser General Public License for more details.
018 *
019 * You should have received a copy of the GNU Lesser General Public
020 * License along with this software; if not, write to the Free
021 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
022 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
023 */
024 package org.jboss.dna.cnd;
025
026 import java.util.Collections;
027 import java.util.HashMap;
028 import java.util.Iterator;
029 import java.util.Map;
030 import org.jboss.dna.common.util.CheckArg;
031
032 /**
033 * Enumeration of the query operators allowed in a CND file.
034 */
035 public enum QueryOperator {
036
037 EQUAL("="),
038 NOT_EQUAL("<>"),
039 LESS_THAN("<"),
040 LESS_THAN_OR_EQUALS("<="),
041 GREATER_THAN("<"),
042 GREATER_THAN_OR_EQUALS("<="),
043 LIKE("LIKE");
044
045 private static final Map<String, QueryOperator> ALL_OPERATORS;
046 static {
047 Map<String, QueryOperator> operators = new HashMap<String, QueryOperator>();
048 for (QueryOperator operator : QueryOperator.values()) {
049 operators.put(operator.getText(), operator);
050 }
051 ALL_OPERATORS = Collections.unmodifiableMap(operators);
052 }
053
054 private final String text;
055
056 private QueryOperator( String text ) {
057 this.text = text;
058 }
059
060 /**
061 * @return text
062 */
063 public String getText() {
064 return text;
065 }
066
067 public static QueryOperator forText( String text ) {
068 CheckArg.isNotNull(text, "text");
069 return ALL_OPERATORS.get(text.trim().toUpperCase());
070 }
071
072 /**
073 * Return an iterator over all the operator enumeration literals.
074 *
075 * @return an immutable iterator
076 */
077 public static Iterator<QueryOperator> iterator() {
078 return ALL_OPERATORS.values().iterator();
079 }
080 }