package net.rrm.ehour.ui.common.converter;
import net.rrm.ehour.config.EhourConfig;
import net.rrm.ehour.ui.common.session.EhourWebSession;
import org.apache.wicket.util.convert.IConverter;
import java.text.NumberFormat;
import java.util.Locale;
public abstract class AbstractNumberConverter<C> implements IConverter<C>
{
private static final long serialVersionUID = 6457762655971221986L;
private String defaultStringValue;
public AbstractNumberConverter()
{
this("--");
}
public AbstractNumberConverter(String defaultStringValue)
{
this.defaultStringValue = defaultStringValue;
}
/*
* (non-Javadoc)
* @see org.apache.wicket.util.convert.IConverter#convertToString(java.lang.Object, java.util.Locale)
*/
public final String convertToString(C value, Locale locale)
{
return convertToString(value, getConfig());
}
final String convertToString(C value, EhourConfig config)
{
return (value == null) ? defaultStringValue : getStringFormatter(config).format(value);
}
/*
* (non-Javadoc)
* @see org.apache.wicket.util.convert.IConverter#convertToObject(java.lang.String, java.util.Locale)
*/
public final C convertToObject(String value, Locale locale)
{
return convertToObject(value, getConfig());
}
protected abstract NumberFormat getStringFormatter(EhourConfig config);
protected abstract C convertToObject(String value, EhourConfig config);
private EhourConfig getConfig()
{
return EhourWebSession.getEhourConfig();
}
}