package org.eclipse.osbp.vaaclipse.addons.app.converter;

import com.vaadin.data.util.converter.Converter;
import com.vaadin.data.util.converter.DefaultConverterFactory;

@SuppressWarnings("serial")
public class VaaclipseConverterFactory extends DefaultConverterFactory {

	@SuppressWarnings("unchecked")
	@Override
	public <PRESENTATION, MODEL> Converter<PRESENTATION, MODEL> createConverter(Class<PRESENTATION> presentationType,
			Class<MODEL> modelType) {
		if (String.class == presentationType && (
			java.util.Date.class == modelType||
			java.sql.Date.class == modelType||
			java.sql.Timestamp.class == modelType)) {
				return (Converter<PRESENTATION, MODEL>)	new VaaclipseDateConverter();
		}
		return super.createConverter(presentationType, modelType);
	}

}
