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    }