Better error catching in toNumber function.
Watch out for the string "Infinity" while importing data sets: don't parse it into a double. git-svn-id: http://google-refine.googlecode.com/svn/trunk@438 7d457c2a-affb-35e4-300a-418c747d4874
This commit is contained in:
parent
8950e87e02
commit
70449cf7c8
@ -5,13 +5,23 @@ import java.util.Properties;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONWriter;
|
||||
|
||||
import com.metaweb.gridworks.expr.EvalError;
|
||||
import com.metaweb.gridworks.gel.Function;
|
||||
|
||||
public class ToNumber implements Function {
|
||||
|
||||
public Object call(Properties bindings, Object[] args) {
|
||||
if (args.length == 1 && args[0] != null) {
|
||||
return args[0] instanceof Number ? args[0] : Double.parseDouble(args[0].toString());
|
||||
if (args[0] instanceof Number) {
|
||||
return args[0];
|
||||
} else {
|
||||
String s = args[0].toString();
|
||||
try {
|
||||
return Double.parseDouble(s);
|
||||
} catch (NumberFormatException e) {
|
||||
return new EvalError("Cannot parse to number");
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@ -16,7 +16,10 @@ public class ImporterUtilities {
|
||||
}
|
||||
|
||||
try {
|
||||
return Double.parseDouble(text);
|
||||
double d = Double.parseDouble(text);
|
||||
if (!Double.isInfinite(d) && !Double.isNaN(d)) {
|
||||
return d;
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user