package org.activityinfo.core.server.formatter; import org.activityinfo.core.shared.type.formatter.QuantityFormatter; import org.activityinfo.core.shared.type.formatter.QuantityFormatterFactory; import java.text.NumberFormat; import java.text.ParseException; /** * Creates a formatter for a field using the standard Java API */ public class JavaTextQuantityFormatterFactory implements QuantityFormatterFactory { @Override public QuantityFormatter create() { final NumberFormat format = NumberFormat.getNumberInstance(); return new QuantityFormatter() { @Override public String format(Double value) { return format.format(value); } @Override public Double parse(String valueAsString) { try { // consider strings with '-' not at the start as invalid // e.g. "2012-12-18" is not 2012.0 if (valueAsString.indexOf("-") > 1 || valueAsString.contains("/")) { return null; } return format.parse(valueAsString).doubleValue(); } catch (ParseException e) { return null; } } }; } }