blob: 3063f2b568eddf44f35c2d977b1a1cec9c805954 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.ambari.server.api.predicate;
/**
* Token representation which is generated by the lexer.
* Contains type and value information.
*/
public class Token {
/**
* Token types.
*/
public enum TYPE {
/** Property name operand. This is the left operand in relational expressions. */
PROPERTY_OPERAND,
/** Value operand. This is the right operand in relational expressions. */
VALUE_OPERAND,
/** Relational operator */
RELATIONAL_OPERATOR,
/** Relational operator function */
RELATIONAL_OPERATOR_FUNC,
/** Logical operator */
LOGICAL_OPERATOR,
/** Logical unary operator such as !*/
LOGICAL_UNARY_OPERATOR,
/** Opening bracket */
BRACKET_OPEN,
/** Closing bracket */
BRACKET_CLOSE
}
/**
* Token type.
*/
private TYPE m_type;
/**
* Token value.
*/
private String m_value;
/**
* Constructor.
*
* @param type type
* @param value value
*/
public Token(TYPE type, String value) {
m_type = type;
m_value = value;
}
/**
* Get the token type.
* @return token type
*/
public TYPE getType() {
return m_type;
}
/**
* Get the token value.
* @return token value
*/
public String getValue() {
return m_value;
}
@Override
public String toString() {
return "Token{ type=" + m_type + ", value='" + m_value + "' }";
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Token token = (Token) o;
return m_type == token.m_type &&
(m_value == null ? token.m_value == null : m_value.equals(token.m_value));
}
@Override
public int hashCode() {
int result = m_type.hashCode();
result = 31 * result + (m_value != null ? m_value.hashCode() : 0);
return result;
}
}