001    /**
002     * Licensed to the Apache Software Foundation (ASF) under one or more
003     * contributor license agreements.  See the NOTICE file distributed with
004     * this work for additional information regarding copyright ownership.
005     * The ASF licenses this file to You under the Apache License, Version 2.0
006     * (the "License"); you may not use this file except in compliance with
007     * the License.  You may obtain a copy of the License at
008     *
009     *      http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    package org.apache.camel.language.simple;
018    
019    /**
020     * Operators supported by simple language
021     * <ul>
022     *   <li>EQ : ==</li>
023     *   <li>GT : ></li>
024     *   <li>GTE : >=</li>
025     *   <li>LT : <</li>
026     *   <li>LTE : <=</li>
027     *   <li>NOT : !=</li>
028     *   <li>contains : tested for if it contains the value</li>
029     *   <li>not contains : tested for if it does not contain the value</li>
030     *   <li>regex : matching a regular expression</li>
031     *   <li>not regex : not matching a regular expression</li>
032     *   <li>in : tested for in a list of values separated by comma</li>
033     *   <li>not in : tested for not in a list of values separated by comma</li>
034     * </ul>
035     */
036    public enum SimpleLangaugeOperator {
037    
038        EQ, GT, GTE, LT, LTE, NOT, CONTAINS, NOT_CONTAINS, REGEX, NOT_REGEX, IN, NOT_IN;
039    
040        public static SimpleLangaugeOperator asOperator(String text) {
041            if ("==".equals(text)) {
042                return EQ;
043            } else if (">".equals(text)) {
044                return GT;
045            } else if (">=".equals(text)) {
046                return GTE;
047            } else if ("<".equals(text)) {
048                return LT;
049            } else if ("<=".equals(text)) {
050                return LTE;
051            } else if ("!=".equals(text)) {
052                return NOT;
053            } else if ("contains".equals(text)) {
054                return CONTAINS;
055            } else if ("not contains".equals(text)) {
056                return NOT_CONTAINS;
057            } else if ("regex".equals(text)) {
058                return REGEX;
059            } else if ("not regex".equals(text)) {
060                return NOT_REGEX;
061            } else if ("in".equals(text)) {
062                return IN;
063            } else if ("not in".equals(text)) {
064                return NOT_IN;
065            }
066            throw new IllegalArgumentException("Operator not supported: " + text);
067        }
068    
069        public String getOperatorText(SimpleLangaugeOperator operator) {
070            if (operator == EQ) {
071                return "==";
072            } else if (operator == GT) {
073                return ">";
074            } else if (operator == GTE) {
075                return ">=";
076            } else if (operator == LT) {
077                return "<";
078            } else if (operator == LTE) {
079                return "<=";
080            } else if (operator == NOT) {
081                return "!=";
082            } else if (operator == CONTAINS) {
083                return "contains";
084            } else if (operator == NOT_CONTAINS) {
085                return "not contains";
086            } else if (operator == REGEX) {
087                return "regex";
088            } else if (operator == NOT_REGEX) {
089                return "not regex";
090            } else if (operator == IN) {
091                return "in";
092            } else if (operator == NOT_IN) {
093                return "not in";
094            }
095            return "";
096        }
097    
098        @Override
099        public String toString() {
100            return getOperatorText(this);
101        }
102    }