fix failure in mlt with dates, this does mean that currently, mlt, when based on fetching the source and parsing it, does not do mlt on numbers

This commit is contained in:
kimchy 2010-03-30 22:46:20 +03:00
parent 81c6b9075c
commit 4492293b49
15 changed files with 34 additions and 32 deletions

View File

@ -1,6 +1,7 @@
rootLogger: INFO, console, file
logger:
jgroups: WARN
action: DEBUG
appender:
console:

View File

@ -26,23 +26,19 @@ import java.io.IOException;
import java.io.Reader;
/**
* @author kimchy (Shay Banon)
* @author kimchy (shay.banon)
*/
public class NumericDateTokenizer extends NumericTokenizer {
private final DateTimeFormatter dateTimeFormatter;
public NumericDateTokenizer(Reader reader, int precisionStep, DateTimeFormatter dateTimeFormatter) throws IOException {
super(reader, new NumericTokenStream(precisionStep));
this.dateTimeFormatter = dateTimeFormatter;
super(reader, new NumericTokenStream(precisionStep), dateTimeFormatter);
}
public NumericDateTokenizer(Reader reader, int precisionStep, char[] buffer, DateTimeFormatter dateTimeFormatter) throws IOException {
super(reader, new NumericTokenStream(precisionStep), buffer);
this.dateTimeFormatter = dateTimeFormatter;
super(reader, new NumericTokenStream(precisionStep), buffer, dateTimeFormatter);
}
@Override protected void setValue(NumericTokenStream tokenStream, String value) {
tokenStream.setLongValue(dateTimeFormatter.parseMillis(value));
tokenStream.setLongValue(((DateTimeFormatter) extra).parseMillis(value));
}
}

View File

@ -25,16 +25,16 @@ import java.io.IOException;
import java.io.Reader;
/**
* @author kimchy (Shay Banon)
* @author kimchy (shay.banon)
*/
public class NumericDoubleTokenizer extends NumericTokenizer {
public NumericDoubleTokenizer(Reader reader, int precisionStep) throws IOException {
super(reader, new NumericTokenStream(precisionStep));
super(reader, new NumericTokenStream(precisionStep), null);
}
public NumericDoubleTokenizer(Reader reader, int precisionStep, char[] buffer) throws IOException {
super(reader, new NumericTokenStream(precisionStep), buffer);
super(reader, new NumericTokenStream(precisionStep), buffer, null);
}
@Override protected void setValue(NumericTokenStream tokenStream, String value) {

View File

@ -25,16 +25,16 @@ import java.io.IOException;
import java.io.Reader;
/**
* @author kimchy (Shay Banon)
* @author kimchy (shay.banon)
*/
public class NumericFloatTokenizer extends NumericTokenizer {
public NumericFloatTokenizer(Reader reader, int precisionStep) throws IOException {
super(reader, new NumericTokenStream(precisionStep));
super(reader, new NumericTokenStream(precisionStep), null);
}
public NumericFloatTokenizer(Reader reader, int precisionStep, char[] buffer) throws IOException {
super(reader, new NumericTokenStream(precisionStep), buffer);
super(reader, new NumericTokenStream(precisionStep), buffer, null);
}
@Override protected void setValue(NumericTokenStream tokenStream, String value) {

View File

@ -25,16 +25,16 @@ import java.io.IOException;
import java.io.Reader;
/**
* @author kimchy (Shay Banon)
* @author kimchy (shay.banon)
*/
public class NumericIntegerTokenizer extends NumericTokenizer {
public NumericIntegerTokenizer(Reader reader, int precisionStep) throws IOException {
super(reader, new NumericTokenStream(precisionStep));
super(reader, new NumericTokenStream(precisionStep), null);
}
public NumericIntegerTokenizer(Reader reader, int precisionStep, char[] buffer) throws IOException {
super(reader, new NumericTokenStream(precisionStep), buffer);
super(reader, new NumericTokenStream(precisionStep), buffer, null);
}
@Override protected void setValue(NumericTokenStream tokenStream, String value) {

View File

@ -25,16 +25,16 @@ import java.io.IOException;
import java.io.Reader;
/**
* @author kimchy (Shay Banon)
* @author kimchy (shay.banon)
*/
public class NumericLongTokenizer extends NumericTokenizer {
public NumericLongTokenizer(Reader reader, int precisionStep) throws IOException {
super(reader, new NumericTokenStream(precisionStep));
super(reader, new NumericTokenStream(precisionStep), null);
}
public NumericLongTokenizer(Reader reader, int precisionStep, char[] buffer) throws IOException {
super(reader, new NumericTokenStream(precisionStep), buffer);
super(reader, new NumericTokenStream(precisionStep), buffer, null);
}
@Override protected void setValue(NumericTokenStream tokenStream, String value) {

View File

@ -26,21 +26,25 @@ import java.io.IOException;
import java.io.Reader;
/**
* @author kimchy (Shay Banon)
* @author kimchy (shay.banon)
*/
public abstract class NumericTokenizer extends Tokenizer {
private final NumericTokenStream numericTokenStream;
protected NumericTokenizer(Reader reader, NumericTokenStream numericTokenStream) throws IOException {
protected final Object extra;
protected NumericTokenizer(Reader reader, NumericTokenStream numericTokenStream, Object extra) throws IOException {
super(numericTokenStream);
this.numericTokenStream = numericTokenStream;
this.extra = extra;
reset(reader);
}
protected NumericTokenizer(Reader reader, NumericTokenStream numericTokenStream, char[] buffer) throws IOException {
protected NumericTokenizer(Reader reader, NumericTokenStream numericTokenStream, char[] buffer, Object extra) throws IOException {
super(numericTokenStream);
this.numericTokenStream = numericTokenStream;
this.extra = extra;
reset(reader, buffer);
}
@ -51,7 +55,7 @@ public abstract class NumericTokenizer extends Tokenizer {
public void reset(Reader input, char[] buffer) throws IOException {
super.reset(input);
int len = super.input.read(buffer);
int len = input.read(buffer);
String value = new String(buffer, 0, len);
setValue(numericTokenStream, value);
numericTokenStream.reset();

View File

@ -97,7 +97,7 @@ public class JsonBoostFieldMapper extends JsonNumberFieldMapper<Float> implement
@Override public Float value(Fieldable field) {
byte[] value = field.getBinaryValue();
if (value == null) {
return Float.NaN;
return null;
}
return Numbers.bytesToFloat(value);
}

View File

@ -124,7 +124,7 @@ public class JsonDateFieldMapper extends JsonNumberFieldMapper<Long> {
@Override public Long value(Fieldable field) {
byte[] value = field.getBinaryValue();
if (value == null) {
return Long.MIN_VALUE;
return null;
}
return Numbers.bytesToLong(value);
}

View File

@ -113,7 +113,7 @@ public class JsonDoubleFieldMapper extends JsonNumberFieldMapper<Double> {
@Override public Double value(Fieldable field) {
byte[] value = field.getBinaryValue();
if (value == null) {
return Double.NaN;
return null;
}
return Numbers.bytesToDouble(value);
}

View File

@ -111,7 +111,7 @@ public class JsonFloatFieldMapper extends JsonNumberFieldMapper<Float> {
@Override public Float value(Fieldable field) {
byte[] value = field.getBinaryValue();
if (value == null) {
return Float.NaN;
return null;
}
return Numbers.bytesToFloat(value);
}

View File

@ -111,7 +111,7 @@ public class JsonIntegerFieldMapper extends JsonNumberFieldMapper<Integer> {
@Override public Integer value(Fieldable field) {
byte[] value = field.getBinaryValue();
if (value == null) {
return Integer.MIN_VALUE;
return null;
}
return Numbers.bytesToInt(value);
}

View File

@ -111,7 +111,7 @@ public class JsonLongFieldMapper extends JsonNumberFieldMapper<Long> {
@Override public Long value(Fieldable field) {
byte[] value = field.getBinaryValue();
if (value == null) {
return Long.MIN_VALUE;
return null;
}
return Numbers.bytesToLong(value);
}

View File

@ -127,7 +127,8 @@ public abstract class JsonNumberFieldMapper<T extends Number> extends JsonFieldM
}
@Override public String valueAsString(Fieldable field) {
return value(field).toString();
Number num = value(field);
return num == null ? null : num.toString();
}
@Override public abstract Object valueFromTerm(String term);

View File

@ -111,7 +111,7 @@ public class JsonShortFieldMapper extends JsonNumberFieldMapper<Short> {
@Override public Short value(Fieldable field) {
byte[] value = field.getBinaryValue();
if (value == null) {
return Short.MIN_VALUE;
return null;
}
return Numbers.bytesToShort(value);
}