import java.text.DateFormat;
import java.text.ParsePosition;
import java.util.Date;

import wicket.util.convert.ConversionException;
import wicket.util.convert.IConverter;
import wicket.util.convert.SimpleConverterAdapter;


public class DateTimeConverter {
	private DateFormat dateFormat;
	
	public DateTimeConverter(DateFormat dateFormat) {
		this.dateFormat=dateFormat;
	}

	public IConverter getConverter() {
		return new SimpleConverterAdapter() {
			
			public String toString(Object value) {
				if ((value == null)) {
					return null;
				}
				
				if (value instanceof String)
					return value.toString();
				return dateFormat.format((Date) value);
			}
			
			public Object toObject(String value) {
				if ((value == null) || value.trim().equals("")) {
					return null;
				}
				
				final ParsePosition position = new ParsePosition(0);
				final String stringValue = value.toString();
				final Object result = dateFormat.parseObject(stringValue,position);
				if (position.getIndex() != stringValue.length()) {
					throw new ConversionException("Cannot parse '" + value
							+ "' using format " + dateFormat);
				}
				return result;
			}
		};
	}
}
