blob: 4032e5feaf1535adbbc7c048bb1c9ce2a51fc7b8 [file] [log] [blame]
package org.eclipse.osbp.vaaclipse.addons.app.converter;
import org.eclipse.osbp.runtime.web.vaadin.components.converter.DecimalDoubleConverter;
import org.eclipse.osbp.runtime.web.vaadin.components.converter.DecimalFloatConverter;
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) {
if (java.util.Date.class.isAssignableFrom(modelType)||
java.sql.Date.class.isAssignableFrom(modelType)||
java.sql.Timestamp.class.isAssignableFrom(modelType)) {
return (Converter<PRESENTATION, MODEL>) new VaaclipseDateConverter();
}
if (modelType.isArray() && modelType.getComponentType().getSimpleName().equals("byte")){
return (Converter<PRESENTATION, MODEL>) new VaaclipseByteArrayConverter();
}
if (Double.class.isAssignableFrom(modelType)) {
return (Converter<PRESENTATION, MODEL>) new DecimalDoubleConverter();
} else if (Float.class.isAssignableFrom(modelType)) {
return (Converter<PRESENTATION, MODEL>) new DecimalFloatConverter();
}
}
return super.createConverter(presentationType, modelType);
}
}