in hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/LongParserFactory.java [35:129]
public IValueParser createValueParser() {
return new IValueParser() {
@Override
public void parse(char[] buffer, int start, int length, DataOutput out) throws HyracksDataException {
long n = 0;
int sign = 1;
int i = 0;
boolean pre = true;
for (; pre && i < length; ++i) {
char ch = buffer[i + start];
switch (ch) {
case ' ':
case '\t':
case '\n':
case '\r':
case '\f':
break;
case '-':
sign = -1;
pre = false;
break;
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
pre = false;
n = n * 10 + (ch - '0');
break;
default:
String errorString = new String(buffer, i + start, length - i);
throw new HyracksDataException(
"Long Parser - a digit is expected. But, encountered this character: " + ch
+ " in the incoming input: " + errorString);
}
}
boolean post = false;
for (; !post && i < length; ++i) {
char ch = buffer[i + start];
switch (ch) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
n = n * 10 + (ch - '0');
break;
default:
String errorString = new String(buffer, i + start, length - i);
throw new HyracksDataException(
"Long Parser - a digit is expected. But, encountered this character: " + ch
+ " in the incoming input: " + errorString);
}
}
for (; i < length; ++i) {
char ch = buffer[i + start];
switch (ch) {
case ' ':
case '\t':
case '\n':
case '\r':
case '\f':
break;
default:
String errorString = new String(buffer, i + start, length - i);
throw new HyracksDataException(
"Long Parser - a whitespace, tab, new line, or form-feed expected. "
+ "But, encountered this character: " + ch + " in the incoming input: "
+ errorString);
}
}
try {
out.writeLong(n * sign);
} catch (IOException e) {
throw new HyracksDataException(e);
}
}
};
}