/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. 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. For additional information regarding
* copyright in this work, please see the NOTICE file in the top level
* directory of this distribution.
*/
package org.apache.usergrid.persistence.index.query.tree;
import org.antlr.runtime.ClassicToken;
import org.antlr.runtime.Token;
import static org.apache.commons.lang.StringUtils.removeEnd;
/** @author tnine */
public class StringLiteral extends Literal<String> {
private String value;
private String finishValue;
/**
* @param t
*/
public StringLiteral( Token t ) {
super( t );
String newValue = t.getText();
newValue = newValue.substring( 1, newValue.length() - 1 );
parseValue( newValue );
}
public StringLiteral( String value ) {
super( new ClassicToken( 1, value ) );
parseValue( value );
}
/** Parse the value and set the optional end value */
private void parseValue( String value ) {
this.value = value.trim().toLowerCase();
if ( "*".equals( value ) ) {
this.value = null;
this.finishValue = null;
return;
}
// removing this because it breaks queries like "select * where name = "fred*"
//
// if ( value != null && value.endsWith( "*" ) ) {
// this.value = removeEnd( value.toString(), "*" );
// finishValue = this.value + "\uFFFF";
// }
// // set the end value to the same as the start value
// else {
// finishValue = value;
// }
finishValue = value;
}
/** If this were a string literal */
public String getEndValue() {
return this.finishValue;
}
public String getValue() {
return this.value;
}
}