package org.jboss.ejb.plugins.cmp.ejbql;
public final class ASTExactNumericLiteral extends SimpleNode {
public long value;
public String literal;
private static final String LOFFER_L = "l";
private static final String UPPER_L = "L";
private static final String OX = "0X";
private static final String Ox = "0x";
private static final String ZERRO = "0";
public ASTExactNumericLiteral(int id) {
super(id);
}
public void setValue(String number) {
literal = number;
if(number.endsWith(LOFFER_L) || number.endsWith(UPPER_L)) {
number = number.substring(0, number.length() - 1);
}
if(number.startsWith(OX) || number.startsWith(Ox)) {
if(number.length() == 18) {
byte first = Byte.decode(number.substring(0, 3)).byteValue();
if(first >= 8) {
number = Ox + (first - 8) + number.substring(3);
value = Long.decode(number).longValue() - Long.MAX_VALUE - 1;
return;
}
}
} else if(number.startsWith(ZERRO)) { if(number.length() == 23) {
if(number.charAt(1) == '1') {
number = ZERRO + number.substring(2);
value = Long.decode(number).longValue() - Long.MAX_VALUE - 1;
return;
}
}
}
value = Long.decode(number).longValue();
}
public String toString() {
return literal;
}
public Object jjtAccept(JBossQLParserVisitor visitor, Object data) {
return visitor.visit(this, data);
}
}