]> source.dussan.org Git - vaadin-framework.git/commitdiff
#8101 Swapped generics parameter order for Converter based on API review
authorArtur Signell <artur@vaadin.com>
Wed, 21 Dec 2011 17:35:25 +0000 (19:35 +0200)
committerArtur Signell <artur@vaadin.com>
Wed, 21 Dec 2011 17:35:25 +0000 (19:35 +0200)
meeting

22 files changed:
src/com/vaadin/data/util/converter/BooleanToStringConverter.java [deleted file]
src/com/vaadin/data/util/converter/Converter.java
src/com/vaadin/data/util/converter/ConverterFactory.java
src/com/vaadin/data/util/converter/DateToLongConverter.java [new file with mode: 0644]
src/com/vaadin/data/util/converter/DateToStringConverter.java [deleted file]
src/com/vaadin/data/util/converter/DefaultConverterFactory.java
src/com/vaadin/data/util/converter/DoubleToStringConverter.java [deleted file]
src/com/vaadin/data/util/converter/IntegerToStringConverter.java [deleted file]
src/com/vaadin/data/util/converter/LongToDateConverter.java [deleted file]
src/com/vaadin/data/util/converter/NumberToStringConverter.java [deleted file]
src/com/vaadin/data/util/converter/ReverseConverter.java
src/com/vaadin/data/util/converter/StringToBooleanConverter.java [new file with mode: 0644]
src/com/vaadin/data/util/converter/StringToDateConverter.java [new file with mode: 0644]
src/com/vaadin/data/util/converter/StringToDoubleConverter.java [new file with mode: 0644]
src/com/vaadin/data/util/converter/StringToIntegerConverter.java [new file with mode: 0644]
src/com/vaadin/data/util/converter/StringToNumberConverter.java [new file with mode: 0644]
src/com/vaadin/ui/AbstractField.java
src/com/vaadin/ui/Table.java
tests/server-side/com/vaadin/tests/server/component/abstractfield/AbstractFieldValueConversions.java
tests/testbench/com/vaadin/tests/components/abstractfield/Vaadin6ImplicitDoubleConverter.java
tests/testbench/com/vaadin/tests/components/table/DoublesInTable.java
tests/testbench/com/vaadin/tests/fieldbinder/BasicPersonForm.java

diff --git a/src/com/vaadin/data/util/converter/BooleanToStringConverter.java b/src/com/vaadin/data/util/converter/BooleanToStringConverter.java
deleted file mode 100644 (file)
index 9c6add7..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-/*\r
-@VaadinApache2LicenseForJavaFiles@\r
- */\r
-\r
-package com.vaadin.data.util.converter;\r
-\r
-import java.util.Locale;\r
-\r
-/**\r
- * A converter that converts from {@link Boolean} to {@link String} and back.\r
- * The String representation is given by Boolean.toString().\r
- * <p>\r
- * Leading and trailing white spaces are ignored when converting from a String.\r
- * </p>\r
- * \r
- * @author Vaadin Ltd\r
- * @version\r
- * @VERSION@\r
- * @since 7.0\r
- */\r
-public class BooleanToStringConverter implements Converter<Boolean, String> {\r
-\r
-    /*\r
-     * (non-Javadoc)\r
-     * \r
-     * @see\r
-     * com.vaadin.data.util.converter.Converter#convertFromTargetToSource(java\r
-     * .lang.Object, java.util.Locale)\r
-     */\r
-    public Boolean convertToModel(String value, Locale locale)\r
-            throws ConversionException {\r
-        if (value == null) {\r
-            return null;\r
-        }\r
-\r
-        // Remove leading and trailing white space\r
-        value = value.trim();\r
-\r
-        if (getTrueString().equals(value)) {\r
-            return true;\r
-        } else if (getFalseString().equals(value)) {\r
-            return false;\r
-        } else {\r
-            throw new ConversionException("Cannot convert " + value\r
-                    + " to Boolean");\r
-        }\r
-    }\r
-\r
-    protected String getTrueString() {\r
-        return Boolean.TRUE.toString();\r
-    }\r
-\r
-    protected String getFalseString() {\r
-        return Boolean.FALSE.toString();\r
-    }\r
-\r
-    /*\r
-     * (non-Javadoc)\r
-     * \r
-     * @see\r
-     * com.vaadin.data.util.converter.Converter#convertFromSourceToTarget(java\r
-     * .lang.Object, java.util.Locale)\r
-     */\r
-    public String convertToPresentation(Boolean value, Locale locale)\r
-            throws ConversionException {\r
-        if (value == null) {\r
-            return null;\r
-        }\r
-        if (value) {\r
-            return getTrueString();\r
-        } else {\r
-            return getFalseString();\r
-        }\r
-    }\r
-\r
-    /*\r
-     * (non-Javadoc)\r
-     * \r
-     * @see com.vaadin.data.util.converter.Converter#getSourceType()\r
-     */\r
-    public Class<Boolean> getModelType() {\r
-        return Boolean.class;\r
-    }\r
-\r
-    /*\r
-     * (non-Javadoc)\r
-     * \r
-     * @see com.vaadin.data.util.converter.Converter#getTargetType()\r
-     */\r
-    public Class<String> getPresentationType() {\r
-        return String.class;\r
-    }\r
-\r
-}\r
index 2a2c3025d99bca70815704492f26c169c0fc4ba0..f48246ff4cd30c2e74f92a461b35a5ff7050fe8c 100644 (file)
@@ -38,7 +38,7 @@ import java.util.Locale;
  * @VERSION@\r
  * @since 7.0\r
  */\r
-public interface Converter<MODEL, PRESENTATION> extends Serializable {\r
+public interface Converter<PRESENTATION, MODEL> extends Serializable {\r
 \r
     /**\r
      * Converts the given value from target type to source type.\r
index 1770bf85ac0f9def188882820fd5bf55a674788a..451f84185d21c5f2fdcc84780108f0ffe46cb712 100644 (file)
@@ -7,7 +7,8 @@ package com.vaadin.data.util.converter;
 import java.io.Serializable;\r
 \r
 /**\r
- * Factory interface for providing Converters based on a source and target type.\r
+ * Factory interface for providing Converters based on a presentation type and a\r
+ * model type.\r
  * \r
  * @author Vaadin Ltd.\r
  * @version\r
@@ -16,7 +17,7 @@ import java.io.Serializable;
  * \r
  */\r
 public interface ConverterFactory extends Serializable {\r
-    <SOURCE, TARGET> Converter<SOURCE, TARGET> createConverter(\r
-            Class<SOURCE> sourceType, Class<TARGET> targetType);\r
+    public <PRESENTATION, MODEL> Converter<PRESENTATION, MODEL> createConverter(\r
+            Class<PRESENTATION> presentationType, Class<MODEL> modelType);\r
 \r
 }\r
diff --git a/src/com/vaadin/data/util/converter/DateToLongConverter.java b/src/com/vaadin/data/util/converter/DateToLongConverter.java
new file mode 100644 (file)
index 0000000..c9a76ec
--- /dev/null
@@ -0,0 +1,68 @@
+/*\r
+@VaadinApache2LicenseForJavaFiles@\r
+ */\r
+\r
+package com.vaadin.data.util.converter;\r
+\r
+import java.util.Date;\r
+import java.util.Locale;\r
+\r
+/**\r
+ * A converter that converts from {@link Long} to {@link Date} and back.\r
+ * \r
+ * @author Vaadin Ltd\r
+ * @version\r
+ * @VERSION@\r
+ * @since 7.0\r
+ */\r
+public class DateToLongConverter implements Converter<Date, Long> {\r
+\r
+    /*\r
+     * (non-Javadoc)\r
+     * \r
+     * @see\r
+     * com.vaadin.data.util.converter.Converter#convertFromTargetToSource(java\r
+     * .lang.Object, java.util.Locale)\r
+     */\r
+    public Long convertToModel(Date value, Locale locale) {\r
+        if (value == null) {\r
+            return null;\r
+        }\r
+\r
+        return value.getTime();\r
+    }\r
+\r
+    /*\r
+     * (non-Javadoc)\r
+     * \r
+     * @see\r
+     * com.vaadin.data.util.converter.Converter#convertFromSourceToTarget(java\r
+     * .lang.Object, java.util.Locale)\r
+     */\r
+    public Date convertToPresentation(Long value, Locale locale) {\r
+        if (value == null) {\r
+            return null;\r
+        }\r
+\r
+        return new Date(value);\r
+    }\r
+\r
+    /*\r
+     * (non-Javadoc)\r
+     * \r
+     * @see com.vaadin.data.util.converter.Converter#getSourceType()\r
+     */\r
+    public Class<Long> getModelType() {\r
+        return Long.class;\r
+    }\r
+\r
+    /*\r
+     * (non-Javadoc)\r
+     * \r
+     * @see com.vaadin.data.util.converter.Converter#getTargetType()\r
+     */\r
+    public Class<Date> getPresentationType() {\r
+        return Date.class;\r
+    }\r
+\r
+}\r
diff --git a/src/com/vaadin/data/util/converter/DateToStringConverter.java b/src/com/vaadin/data/util/converter/DateToStringConverter.java
deleted file mode 100644 (file)
index 947a426..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-/*\r
-@VaadinApache2LicenseForJavaFiles@\r
- */\r
-\r
-package com.vaadin.data.util.converter;\r
-\r
-import java.text.DateFormat;\r
-import java.text.ParsePosition;\r
-import java.util.Date;\r
-import java.util.Locale;\r
-\r
-/**\r
- * A converter that converts from {@link Date} to {@link String} and back. Uses\r
- * the given locale and {@link DateFormat} for formatting and parsing.\r
- * <p>\r
- * Leading and trailing white spaces are ignored when converting from a String.\r
- * </p>\r
- * <p>\r
- * Override and overwrite {@link #getFormat(Locale)} to use a different format.\r
- * </p>\r
- * \r
- * @author Vaadin Ltd\r
- * @version\r
- * @VERSION@\r
- * @since 7.0\r
- */\r
-public class DateToStringConverter implements Converter<Date, String> {\r
-\r
-    /**\r
-     * Returns the format used by\r
-     * {@link #convertToPresentation(Date, Locale)} and\r
-     * {@link #convertToModel(String, Locale)}.\r
-     * \r
-     * @param locale\r
-     *            The locale to use\r
-     * @return A DateFormat instance\r
-     */\r
-    protected DateFormat getFormat(Locale locale) {\r
-        if (locale == null) {\r
-            locale = Locale.getDefault();\r
-        }\r
-\r
-        DateFormat f = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,\r
-                DateFormat.MEDIUM, locale);\r
-        f.setLenient(false);\r
-        return f;\r
-    }\r
-\r
-    /*\r
-     * (non-Javadoc)\r
-     * \r
-     * @see\r
-     * com.vaadin.data.util.converter.Converter#convertFromTargetToSource(java\r
-     * .lang.Object, java.util.Locale)\r
-     */\r
-    public Date convertToModel(String value, Locale locale)\r
-            throws com.vaadin.data.util.converter.Converter.ConversionException {\r
-        if (value == null) {\r
-            return null;\r
-        }\r
-\r
-        // Remove leading and trailing white space\r
-        value = value.trim();\r
-\r
-        ParsePosition parsePosition = new ParsePosition(0);\r
-        Date parsedValue = getFormat(locale).parse(value, parsePosition);\r
-        if (parsePosition.getIndex() != value.length()) {\r
-            throw new ConversionException("Could not convert '" + value\r
-                    + "' to " + getPresentationType().getName());\r
-        }\r
-\r
-        return parsedValue;\r
-    }\r
-\r
-    /*\r
-     * (non-Javadoc)\r
-     * \r
-     * @see\r
-     * com.vaadin.data.util.converter.Converter#convertFromSourceToTarget(java\r
-     * .lang.Object, java.util.Locale)\r
-     */\r
-    public String convertToPresentation(Date value, Locale locale)\r
-            throws com.vaadin.data.util.converter.Converter.ConversionException {\r
-        if (value == null) {\r
-            return null;\r
-        }\r
-\r
-        return getFormat(locale).format(value);\r
-    }\r
-\r
-    /*\r
-     * (non-Javadoc)\r
-     * \r
-     * @see com.vaadin.data.util.converter.Converter#getSourceType()\r
-     */\r
-    public Class<Date> getModelType() {\r
-        return Date.class;\r
-    }\r
-\r
-    /*\r
-     * (non-Javadoc)\r
-     * \r
-     * @see com.vaadin.data.util.converter.Converter#getTargetType()\r
-     */\r
-    public Class<String> getPresentationType() {\r
-        return String.class;\r
-    }\r
-\r
-}\r
index 073eb10d55b08b400b9b9506f27c66f2a9919ee5..92336248199925b6e24ec683695bea0c3685211f 100644 (file)
@@ -27,10 +27,10 @@ public class DefaultConverterFactory implements ConverterFactory {
     private final static Logger log = Logger\r
             .getLogger(DefaultConverterFactory.class.getName());\r
 \r
-    public <SOURCE, TARGET> Converter<SOURCE, TARGET> createConverter(\r
-            Class<SOURCE> sourceType, Class<TARGET> targetType) {\r
-        Converter<SOURCE, TARGET> converter = findConverter(sourceType,\r
-                targetType);\r
+    public <PRESENTATION, MODEL> Converter<PRESENTATION, MODEL> createConverter(\r
+            Class<PRESENTATION> presentationType, Class<MODEL> modelType) {\r
+        Converter<PRESENTATION, MODEL> converter = findConverter(\r
+                presentationType, modelType);\r
         if (converter != null) {\r
             log.finest(getClass().getName() + " created a "\r
                     + converter.getClass());\r
@@ -38,32 +38,32 @@ public class DefaultConverterFactory implements ConverterFactory {
         }\r
 \r
         // Try to find a reverse converter\r
-        Converter<TARGET, SOURCE> reverseConverter = findConverter(targetType,\r
-                sourceType);\r
+        Converter<MODEL, PRESENTATION> reverseConverter = findConverter(\r
+                modelType, presentationType);\r
         if (reverseConverter != null) {\r
             log.finest(getClass().getName() + " created a reverse "\r
                     + reverseConverter.getClass());\r
-            return new ReverseConverter<SOURCE, TARGET>(reverseConverter);\r
+            return new ReverseConverter<PRESENTATION, MODEL>(reverseConverter);\r
         }\r
 \r
         log.finest(getClass().getName() + " could not find a converter for "\r
-                + sourceType.getName() + " to " + targetType.getName()\r
+                + presentationType.getName() + " to " + modelType.getName()\r
                 + " conversion");\r
         return null;\r
 \r
     }\r
 \r
-    protected <SOURCE, TARGET> Converter<SOURCE, TARGET> findConverter(\r
-            Class<SOURCE> sourceType, Class<TARGET> targetType) {\r
-        if (targetType == String.class) {\r
+    protected <PRESENTATION, MODEL> Converter<PRESENTATION, MODEL> findConverter(\r
+            Class<PRESENTATION> presentationType, Class<MODEL> modelType) {\r
+        if (presentationType == String.class) {\r
             // TextField converters and more\r
-            Converter<SOURCE, TARGET> converter = (Converter<SOURCE, TARGET>) createStringConverter(sourceType);\r
+            Converter<PRESENTATION, MODEL> converter = (Converter<PRESENTATION, MODEL>) createStringConverter(modelType);\r
             if (converter != null) {\r
                 return converter;\r
             }\r
-        } else if (targetType == Date.class) {\r
+        } else if (presentationType == Date.class) {\r
             // DateField converters and more\r
-            Converter<SOURCE, TARGET> converter = (Converter<SOURCE, TARGET>) createDateConverter(sourceType);\r
+            Converter<PRESENTATION, MODEL> converter = (Converter<PRESENTATION, MODEL>) createDateConverter(modelType);\r
             if (converter != null) {\r
                 return converter;\r
             }\r
@@ -73,25 +73,25 @@ public class DefaultConverterFactory implements ConverterFactory {
 \r
     }\r
 \r
-    protected Converter<?, Date> createDateConverter(Class<?> sourceType) {\r
+    protected Converter<Date, ?> createDateConverter(Class<?> sourceType) {\r
         if (Long.class.isAssignableFrom(sourceType)) {\r
-            return new LongToDateConverter();\r
+            return new DateToLongConverter();\r
         } else {\r
             return null;\r
         }\r
     }\r
 \r
-    protected Converter<?, String> createStringConverter(Class<?> sourceType) {\r
+    protected Converter<String, ?> createStringConverter(Class<?> sourceType) {\r
         if (Double.class.isAssignableFrom(sourceType)) {\r
-            return new DoubleToStringConverter();\r
+            return new StringToDoubleConverter();\r
         } else if (Integer.class.isAssignableFrom(sourceType)) {\r
-            return new IntegerToStringConverter();\r
+            return new StringToIntegerConverter();\r
         } else if (Boolean.class.isAssignableFrom(sourceType)) {\r
-            return new BooleanToStringConverter();\r
+            return new StringToBooleanConverter();\r
         } else if (Number.class.isAssignableFrom(sourceType)) {\r
-            return new NumberToStringConverter();\r
+            return new StringToNumberConverter();\r
         } else if (Date.class.isAssignableFrom(sourceType)) {\r
-            return new DateToStringConverter();\r
+            return new StringToDateConverter();\r
         } else {\r
             return null;\r
         }\r
diff --git a/src/com/vaadin/data/util/converter/DoubleToStringConverter.java b/src/com/vaadin/data/util/converter/DoubleToStringConverter.java
deleted file mode 100644 (file)
index a6bebad..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-/*\r
-@VaadinApache2LicenseForJavaFiles@\r
- */\r
-\r
-package com.vaadin.data.util.converter;\r
-\r
-import java.text.NumberFormat;\r
-import java.text.ParsePosition;\r
-import java.util.Locale;\r
-\r
-/**\r
- * A converter that converts from {@link Double} to {@link String} and back.\r
- * Uses the given locale and a {@link NumberFormat} instance for formatting and\r
- * parsing.\r
- * <p>\r
- * Leading and trailing white spaces are ignored when converting from a String.\r
- * </p>\r
- * <p>\r
- * Override and overwrite {@link #getFormat(Locale)} to use a different format.\r
- * </p>\r
- * \r
- * @author Vaadin Ltd\r
- * @version\r
- * @VERSION@\r
- * @since 7.0\r
- */\r
-public class DoubleToStringConverter implements Converter<Double, String> {\r
-\r
-    /**\r
-     * Returns the format used by\r
-     * {@link #convertToPresentation(Double, Locale)} and\r
-     * {@link #convertToModel(String, Locale)}.\r
-     * \r
-     * @param locale\r
-     *            The locale to use\r
-     * @return A NumberFormat instance\r
-     */\r
-    protected NumberFormat getFormat(Locale locale) {\r
-        if (locale == null) {\r
-            locale = Locale.getDefault();\r
-        }\r
-\r
-        return NumberFormat.getNumberInstance(locale);\r
-    }\r
-\r
-    /*\r
-     * (non-Javadoc)\r
-     * \r
-     * @see\r
-     * com.vaadin.data.util.converter.Converter#convertFromTargetToSource(java\r
-     * .lang.Object, java.util.Locale)\r
-     */\r
-    public Double convertToModel(String value, Locale locale)\r
-            throws ConversionException {\r
-        if (value == null) {\r
-            return null;\r
-        }\r
-\r
-        // Remove leading and trailing white space\r
-        value = value.trim();\r
-\r
-        ParsePosition parsePosition = new ParsePosition(0);\r
-        Number parsedValue = getFormat(locale).parse(value, parsePosition);\r
-        if (parsePosition.getIndex() != value.length()) {\r
-            throw new ConversionException("Could not convert '" + value\r
-                    + "' to " + getPresentationType().getName());\r
-        }\r
-        return parsedValue.doubleValue();\r
-    }\r
-\r
-    /*\r
-     * (non-Javadoc)\r
-     * \r
-     * @see\r
-     * com.vaadin.data.util.converter.Converter#convertFromSourceToTarget(java\r
-     * .lang.Object, java.util.Locale)\r
-     */\r
-    public String convertToPresentation(Double value, Locale locale)\r
-            throws ConversionException {\r
-        if (value == null) {\r
-            return null;\r
-        }\r
-\r
-        return getFormat(locale).format(value);\r
-    }\r
-\r
-    /*\r
-     * (non-Javadoc)\r
-     * \r
-     * @see com.vaadin.data.util.converter.Converter#getSourceType()\r
-     */\r
-    public Class<Double> getModelType() {\r
-        return Double.class;\r
-    }\r
-\r
-    /*\r
-     * (non-Javadoc)\r
-     * \r
-     * @see com.vaadin.data.util.converter.Converter#getTargetType()\r
-     */\r
-    public Class<String> getPresentationType() {\r
-        return String.class;\r
-    }\r
-}\r
diff --git a/src/com/vaadin/data/util/converter/IntegerToStringConverter.java b/src/com/vaadin/data/util/converter/IntegerToStringConverter.java
deleted file mode 100644 (file)
index 5c0d676..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-/*\r
-@VaadinApache2LicenseForJavaFiles@\r
- */\r
-\r
-package com.vaadin.data.util.converter;\r
-\r
-import java.text.NumberFormat;\r
-import java.text.ParsePosition;\r
-import java.util.Locale;\r
-\r
-/**\r
- * A converter that converts from {@link Integer} to {@link String} and back.\r
- * Uses the given locale and a {@link NumberFormat} instance for formatting and\r
- * parsing.\r
- * <p>\r
- * Override and overwrite {@link #getFormat(Locale)} to use a different format.\r
- * </p>\r
- * \r
- * @author Vaadin Ltd\r
- * @version\r
- * @VERSION@\r
- * @since 7.0\r
- */\r
-public class IntegerToStringConverter implements Converter<Integer, String> {\r
-\r
-    /**\r
-     * Returns the format used by\r
-     * {@link #convertToPresentation(Integer, Locale)} and\r
-     * {@link #convertToModel(String, Locale)}.\r
-     * \r
-     * @param locale\r
-     *            The locale to use\r
-     * @return A NumberFormat instance\r
-     */\r
-    protected NumberFormat getFormat(Locale locale) {\r
-        if (locale == null) {\r
-            locale = Locale.getDefault();\r
-        }\r
-        return NumberFormat.getIntegerInstance(locale);\r
-    }\r
-\r
-    public Integer convertToModel(String value, Locale locale)\r
-            throws ConversionException {\r
-        if (value == null) {\r
-            return null;\r
-        }\r
-\r
-        // Remove leading and trailing white space\r
-        value = value.trim();\r
-\r
-        // Parse and detect errors. If the full string was not used, it is\r
-        // an error.\r
-        ParsePosition parsePosition = new ParsePosition(0);\r
-        Number parsedValue = getFormat(locale).parse(value, parsePosition);\r
-        if (parsePosition.getIndex() != value.length()) {\r
-            throw new ConversionException("Could not convert '" + value\r
-                    + "' to " + getModelType().getName());\r
-        }\r
-\r
-        if (parsedValue == null) {\r
-            // Convert "" to null\r
-            return null;\r
-        }\r
-        return parsedValue.intValue();\r
-    }\r
-\r
-    public String convertToPresentation(Integer value, Locale locale)\r
-            throws ConversionException {\r
-        if (value == null) {\r
-            return null;\r
-        }\r
-\r
-        return getFormat(locale).format(value);\r
-    }\r
-\r
-    public Class<Integer> getModelType() {\r
-        return Integer.class;\r
-    }\r
-\r
-    public Class<String> getPresentationType() {\r
-        return String.class;\r
-    }\r
-\r
-}\r
diff --git a/src/com/vaadin/data/util/converter/LongToDateConverter.java b/src/com/vaadin/data/util/converter/LongToDateConverter.java
deleted file mode 100644 (file)
index c22e8af..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/*\r
-@VaadinApache2LicenseForJavaFiles@\r
- */\r
-\r
-package com.vaadin.data.util.converter;\r
-\r
-import java.util.Date;\r
-import java.util.Locale;\r
-\r
-/**\r
- * A converter that converts from {@link Long} to {@link Date} and back.\r
- * \r
- * @author Vaadin Ltd\r
- * @version\r
- * @VERSION@\r
- * @since 7.0\r
- */\r
-public class LongToDateConverter implements Converter<Long, Date> {\r
-\r
-    /*\r
-     * (non-Javadoc)\r
-     * \r
-     * @see\r
-     * com.vaadin.data.util.converter.Converter#convertFromTargetToSource(java\r
-     * .lang.Object, java.util.Locale)\r
-     */\r
-    public Long convertToModel(Date value, Locale locale) {\r
-        if (value == null) {\r
-            return null;\r
-        }\r
-\r
-        return value.getTime();\r
-    }\r
-\r
-    /*\r
-     * (non-Javadoc)\r
-     * \r
-     * @see\r
-     * com.vaadin.data.util.converter.Converter#convertFromSourceToTarget(java\r
-     * .lang.Object, java.util.Locale)\r
-     */\r
-    public Date convertToPresentation(Long value, Locale locale) {\r
-        if (value == null) {\r
-            return null;\r
-        }\r
-\r
-        return new Date(value);\r
-    }\r
-\r
-    /*\r
-     * (non-Javadoc)\r
-     * \r
-     * @see com.vaadin.data.util.converter.Converter#getSourceType()\r
-     */\r
-    public Class<Long> getModelType() {\r
-        return Long.class;\r
-    }\r
-\r
-    /*\r
-     * (non-Javadoc)\r
-     * \r
-     * @see com.vaadin.data.util.converter.Converter#getTargetType()\r
-     */\r
-    public Class<Date> getPresentationType() {\r
-        return Date.class;\r
-    }\r
-\r
-}\r
diff --git a/src/com/vaadin/data/util/converter/NumberToStringConverter.java b/src/com/vaadin/data/util/converter/NumberToStringConverter.java
deleted file mode 100644 (file)
index cd4c136..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-/*\r
-@VaadinApache2LicenseForJavaFiles@\r
- */\r
-\r
-package com.vaadin.data.util.converter;\r
-\r
-import java.text.NumberFormat;\r
-import java.text.ParsePosition;\r
-import java.util.Locale;\r
-\r
-/**\r
- * A converter that converts from {@link Number} to {@link String} and back.\r
- * Uses the given locale and {@link NumberFormat} for formatting and parsing.\r
- * <p>\r
- * Override and overwrite {@link #getFormat(Locale)} to use a different format.\r
- * </p>\r
- * \r
- * @author Vaadin Ltd\r
- * @version\r
- * @VERSION@\r
- * @since 7.0\r
- */\r
-public class NumberToStringConverter implements Converter<Number, String> {\r
-\r
-    /**\r
-     * Returns the format used by\r
-     * {@link #convertToPresentation(Number, Locale)} and\r
-     * {@link #convertToModel(String, Locale)}.\r
-     * \r
-     * @param locale\r
-     *            The locale to use\r
-     * @return A NumberFormat instance\r
-     */\r
-    protected NumberFormat getFormat(Locale locale) {\r
-        if (locale == null) {\r
-            locale = Locale.getDefault();\r
-        }\r
-\r
-        return NumberFormat.getNumberInstance(locale);\r
-    }\r
-\r
-    /*\r
-     * (non-Javadoc)\r
-     * \r
-     * @see\r
-     * com.vaadin.data.util.converter.Converter#convertFromTargetToSource(java\r
-     * .lang.Object, java.util.Locale)\r
-     */\r
-    public Number convertToModel(String value, Locale locale)\r
-            throws ConversionException {\r
-        if (value == null) {\r
-            return null;\r
-        }\r
-\r
-        // Remove leading and trailing white space\r
-        value = value.trim();\r
-\r
-        // Parse and detect errors. If the full string was not used, it is\r
-        // an error.\r
-        ParsePosition parsePosition = new ParsePosition(0);\r
-        Number parsedValue = getFormat(locale).parse(value, parsePosition);\r
-        if (parsePosition.getIndex() != value.length()) {\r
-            throw new ConversionException("Could not convert '" + value\r
-                    + "' to " + getPresentationType().getName());\r
-        }\r
-\r
-        if (parsedValue == null) {\r
-            // Convert "" to null\r
-            return null;\r
-        }\r
-        return parsedValue;\r
-    }\r
-\r
-    /*\r
-     * (non-Javadoc)\r
-     * \r
-     * @see\r
-     * com.vaadin.data.util.converter.Converter#convertFromSourceToTarget(java\r
-     * .lang.Object, java.util.Locale)\r
-     */\r
-    public String convertToPresentation(Number value, Locale locale)\r
-            throws ConversionException {\r
-        if (value == null) {\r
-            return null;\r
-        }\r
-\r
-        return getFormat(locale).format(value);\r
-    }\r
-\r
-    /*\r
-     * (non-Javadoc)\r
-     * \r
-     * @see com.vaadin.data.util.converter.Converter#getSourceType()\r
-     */\r
-    public Class<Number> getModelType() {\r
-        return Number.class;\r
-    }\r
-\r
-    /*\r
-     * (non-Javadoc)\r
-     * \r
-     * @see com.vaadin.data.util.converter.Converter#getTargetType()\r
-     */\r
-    public Class<String> getPresentationType() {\r
-        return String.class;\r
-    }\r
-\r
-}\r
index c86ba72395ef9eaa5fee5c0520174dde1f3182b4..45f5abda6527cde7d7fc8a7a6b3d422828864bcb 100644 (file)
@@ -20,10 +20,10 @@ import java.util.Locale;
  * @VERSION@\r
  * @since 7.0\r
  */\r
-public class ReverseConverter<MODEL, PRESENTATION> implements\r
-        Converter<MODEL, PRESENTATION> {\r
+public class ReverseConverter<PRESENTATION, MODEL> implements\r
+        Converter<PRESENTATION, MODEL> {\r
 \r
-    private Converter<PRESENTATION, MODEL> realConverter;\r
+    private Converter<MODEL, PRESENTATION> realConverter;\r
 \r
     /**\r
      * Creates a converter from source to target based on a converter that\r
@@ -32,7 +32,7 @@ public class ReverseConverter<MODEL, PRESENTATION> implements
      * @param converter\r
      *            The converter to use in a reverse fashion\r
      */\r
-    public ReverseConverter(Converter<PRESENTATION, MODEL> converter) {\r
+    public ReverseConverter(Converter<MODEL, PRESENTATION> converter) {\r
         this.realConverter = converter;\r
     }\r
 \r
diff --git a/src/com/vaadin/data/util/converter/StringToBooleanConverter.java b/src/com/vaadin/data/util/converter/StringToBooleanConverter.java
new file mode 100644 (file)
index 0000000..5dfcf87
--- /dev/null
@@ -0,0 +1,94 @@
+/*\r
+@VaadinApache2LicenseForJavaFiles@\r
+ */\r
+\r
+package com.vaadin.data.util.converter;\r
+\r
+import java.util.Locale;\r
+\r
+/**\r
+ * A converter that converts from {@link String} to {@link Boolean} and back.\r
+ * The String representation is given by Boolean.toString().\r
+ * <p>\r
+ * Leading and trailing white spaces are ignored when converting from a String.\r
+ * </p>\r
+ * \r
+ * @author Vaadin Ltd\r
+ * @version\r
+ * @VERSION@\r
+ * @since 7.0\r
+ */\r
+public class StringToBooleanConverter implements Converter<String, Boolean> {\r
+\r
+    /*\r
+     * (non-Javadoc)\r
+     * \r
+     * @see\r
+     * com.vaadin.data.util.converter.Converter#convertFromTargetToSource(java\r
+     * .lang.Object, java.util.Locale)\r
+     */\r
+    public Boolean convertToModel(String value, Locale locale)\r
+            throws ConversionException {\r
+        if (value == null) {\r
+            return null;\r
+        }\r
+\r
+        // Remove leading and trailing white space\r
+        value = value.trim();\r
+\r
+        if (getTrueString().equals(value)) {\r
+            return true;\r
+        } else if (getFalseString().equals(value)) {\r
+            return false;\r
+        } else {\r
+            throw new ConversionException("Cannot convert " + value\r
+                    + " to Boolean");\r
+        }\r
+    }\r
+\r
+    protected String getTrueString() {\r
+        return Boolean.TRUE.toString();\r
+    }\r
+\r
+    protected String getFalseString() {\r
+        return Boolean.FALSE.toString();\r
+    }\r
+\r
+    /*\r
+     * (non-Javadoc)\r
+     * \r
+     * @see\r
+     * com.vaadin.data.util.converter.Converter#convertFromSourceToTarget(java\r
+     * .lang.Object, java.util.Locale)\r
+     */\r
+    public String convertToPresentation(Boolean value, Locale locale)\r
+            throws ConversionException {\r
+        if (value == null) {\r
+            return null;\r
+        }\r
+        if (value) {\r
+            return getTrueString();\r
+        } else {\r
+            return getFalseString();\r
+        }\r
+    }\r
+\r
+    /*\r
+     * (non-Javadoc)\r
+     * \r
+     * @see com.vaadin.data.util.converter.Converter#getSourceType()\r
+     */\r
+    public Class<Boolean> getModelType() {\r
+        return Boolean.class;\r
+    }\r
+\r
+    /*\r
+     * (non-Javadoc)\r
+     * \r
+     * @see com.vaadin.data.util.converter.Converter#getTargetType()\r
+     */\r
+    public Class<String> getPresentationType() {\r
+        return String.class;\r
+    }\r
+\r
+}\r
diff --git a/src/com/vaadin/data/util/converter/StringToDateConverter.java b/src/com/vaadin/data/util/converter/StringToDateConverter.java
new file mode 100644 (file)
index 0000000..c970903
--- /dev/null
@@ -0,0 +1,108 @@
+/*\r
+@VaadinApache2LicenseForJavaFiles@\r
+ */\r
+\r
+package com.vaadin.data.util.converter;\r
+\r
+import java.text.DateFormat;\r
+import java.text.ParsePosition;\r
+import java.util.Date;\r
+import java.util.Locale;\r
+\r
+/**\r
+ * A converter that converts from {@link Date} to {@link String} and back. Uses\r
+ * the given locale and {@link DateFormat} for formatting and parsing.\r
+ * <p>\r
+ * Leading and trailing white spaces are ignored when converting from a String.\r
+ * </p>\r
+ * <p>\r
+ * Override and overwrite {@link #getFormat(Locale)} to use a different format.\r
+ * </p>\r
+ * \r
+ * @author Vaadin Ltd\r
+ * @version\r
+ * @VERSION@\r
+ * @since 7.0\r
+ */\r
+public class StringToDateConverter implements Converter<String, Date> {\r
+\r
+    /**\r
+     * Returns the format used by {@link #convertToPresentation(Date, Locale)}\r
+     * and {@link #convertToModel(String, Locale)}.\r
+     * \r
+     * @param locale\r
+     *            The locale to use\r
+     * @return A DateFormat instance\r
+     */\r
+    protected DateFormat getFormat(Locale locale) {\r
+        if (locale == null) {\r
+            locale = Locale.getDefault();\r
+        }\r
+\r
+        DateFormat f = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,\r
+                DateFormat.MEDIUM, locale);\r
+        f.setLenient(false);\r
+        return f;\r
+    }\r
+\r
+    /*\r
+     * (non-Javadoc)\r
+     * \r
+     * @see\r
+     * com.vaadin.data.util.converter.Converter#convertFromTargetToSource(java\r
+     * .lang.Object, java.util.Locale)\r
+     */\r
+    public Date convertToModel(String value, Locale locale)\r
+            throws com.vaadin.data.util.converter.Converter.ConversionException {\r
+        if (value == null) {\r
+            return null;\r
+        }\r
+\r
+        // Remove leading and trailing white space\r
+        value = value.trim();\r
+\r
+        ParsePosition parsePosition = new ParsePosition(0);\r
+        Date parsedValue = getFormat(locale).parse(value, parsePosition);\r
+        if (parsePosition.getIndex() != value.length()) {\r
+            throw new ConversionException("Could not convert '" + value\r
+                    + "' to " + getPresentationType().getName());\r
+        }\r
+\r
+        return parsedValue;\r
+    }\r
+\r
+    /*\r
+     * (non-Javadoc)\r
+     * \r
+     * @see\r
+     * com.vaadin.data.util.converter.Converter#convertFromSourceToTarget(java\r
+     * .lang.Object, java.util.Locale)\r
+     */\r
+    public String convertToPresentation(Date value, Locale locale)\r
+            throws com.vaadin.data.util.converter.Converter.ConversionException {\r
+        if (value == null) {\r
+            return null;\r
+        }\r
+\r
+        return getFormat(locale).format(value);\r
+    }\r
+\r
+    /*\r
+     * (non-Javadoc)\r
+     * \r
+     * @see com.vaadin.data.util.converter.Converter#getSourceType()\r
+     */\r
+    public Class<Date> getModelType() {\r
+        return Date.class;\r
+    }\r
+\r
+    /*\r
+     * (non-Javadoc)\r
+     * \r
+     * @see com.vaadin.data.util.converter.Converter#getTargetType()\r
+     */\r
+    public Class<String> getPresentationType() {\r
+        return String.class;\r
+    }\r
+\r
+}\r
diff --git a/src/com/vaadin/data/util/converter/StringToDoubleConverter.java b/src/com/vaadin/data/util/converter/StringToDoubleConverter.java
new file mode 100644 (file)
index 0000000..0c60aea
--- /dev/null
@@ -0,0 +1,103 @@
+/*\r
+@VaadinApache2LicenseForJavaFiles@\r
+ */\r
+\r
+package com.vaadin.data.util.converter;\r
+\r
+import java.text.NumberFormat;\r
+import java.text.ParsePosition;\r
+import java.util.Locale;\r
+\r
+/**\r
+ * A converter that converts from {@link String} to {@link Double} and back.\r
+ * Uses the given locale and a {@link NumberFormat} instance for formatting and\r
+ * parsing.\r
+ * <p>\r
+ * Leading and trailing white spaces are ignored when converting from a String.\r
+ * </p>\r
+ * <p>\r
+ * Override and overwrite {@link #getFormat(Locale)} to use a different format.\r
+ * </p>\r
+ * \r
+ * @author Vaadin Ltd\r
+ * @version\r
+ * @VERSION@\r
+ * @since 7.0\r
+ */\r
+public class StringToDoubleConverter implements Converter<String, Double> {\r
+\r
+    /**\r
+     * Returns the format used by {@link #convertToPresentation(Double, Locale)}\r
+     * and {@link #convertToModel(String, Locale)}.\r
+     * \r
+     * @param locale\r
+     *            The locale to use\r
+     * @return A NumberFormat instance\r
+     */\r
+    protected NumberFormat getFormat(Locale locale) {\r
+        if (locale == null) {\r
+            locale = Locale.getDefault();\r
+        }\r
+\r
+        return NumberFormat.getNumberInstance(locale);\r
+    }\r
+\r
+    /*\r
+     * (non-Javadoc)\r
+     * \r
+     * @see\r
+     * com.vaadin.data.util.converter.Converter#convertFromTargetToSource(java\r
+     * .lang.Object, java.util.Locale)\r
+     */\r
+    public Double convertToModel(String value, Locale locale)\r
+            throws ConversionException {\r
+        if (value == null) {\r
+            return null;\r
+        }\r
+\r
+        // Remove leading and trailing white space\r
+        value = value.trim();\r
+\r
+        ParsePosition parsePosition = new ParsePosition(0);\r
+        Number parsedValue = getFormat(locale).parse(value, parsePosition);\r
+        if (parsePosition.getIndex() != value.length()) {\r
+            throw new ConversionException("Could not convert '" + value\r
+                    + "' to " + getPresentationType().getName());\r
+        }\r
+        return parsedValue.doubleValue();\r
+    }\r
+\r
+    /*\r
+     * (non-Javadoc)\r
+     * \r
+     * @see\r
+     * com.vaadin.data.util.converter.Converter#convertFromSourceToTarget(java\r
+     * .lang.Object, java.util.Locale)\r
+     */\r
+    public String convertToPresentation(Double value, Locale locale)\r
+            throws ConversionException {\r
+        if (value == null) {\r
+            return null;\r
+        }\r
+\r
+        return getFormat(locale).format(value);\r
+    }\r
+\r
+    /*\r
+     * (non-Javadoc)\r
+     * \r
+     * @see com.vaadin.data.util.converter.Converter#getSourceType()\r
+     */\r
+    public Class<Double> getModelType() {\r
+        return Double.class;\r
+    }\r
+\r
+    /*\r
+     * (non-Javadoc)\r
+     * \r
+     * @see com.vaadin.data.util.converter.Converter#getTargetType()\r
+     */\r
+    public Class<String> getPresentationType() {\r
+        return String.class;\r
+    }\r
+}\r
diff --git a/src/com/vaadin/data/util/converter/StringToIntegerConverter.java b/src/com/vaadin/data/util/converter/StringToIntegerConverter.java
new file mode 100644 (file)
index 0000000..7fa4458
--- /dev/null
@@ -0,0 +1,84 @@
+/*\r
+@VaadinApache2LicenseForJavaFiles@\r
+ */\r
+\r
+package com.vaadin.data.util.converter;\r
+\r
+import java.text.NumberFormat;\r
+import java.text.ParsePosition;\r
+import java.util.Locale;\r
+\r
+/**\r
+ * A converter that converts from {@link String} to {@link Integer} and back.\r
+ * Uses the given locale and a {@link NumberFormat} instance for formatting and\r
+ * parsing.\r
+ * <p>\r
+ * Override and overwrite {@link #getFormat(Locale)} to use a different format.\r
+ * </p>\r
+ * \r
+ * @author Vaadin Ltd\r
+ * @version\r
+ * @VERSION@\r
+ * @since 7.0\r
+ */\r
+public class StringToIntegerConverter implements Converter<String, Integer> {\r
+\r
+    /**\r
+     * Returns the format used by\r
+     * {@link #convertToPresentation(Integer, Locale)} and\r
+     * {@link #convertToModel(String, Locale)}.\r
+     * \r
+     * @param locale\r
+     *            The locale to use\r
+     * @return A NumberFormat instance\r
+     */\r
+    protected NumberFormat getFormat(Locale locale) {\r
+        if (locale == null) {\r
+            locale = Locale.getDefault();\r
+        }\r
+        return NumberFormat.getIntegerInstance(locale);\r
+    }\r
+\r
+    public Integer convertToModel(String value, Locale locale)\r
+            throws ConversionException {\r
+        if (value == null) {\r
+            return null;\r
+        }\r
+\r
+        // Remove leading and trailing white space\r
+        value = value.trim();\r
+\r
+        // Parse and detect errors. If the full string was not used, it is\r
+        // an error.\r
+        ParsePosition parsePosition = new ParsePosition(0);\r
+        Number parsedValue = getFormat(locale).parse(value, parsePosition);\r
+        if (parsePosition.getIndex() != value.length()) {\r
+            throw new ConversionException("Could not convert '" + value\r
+                    + "' to " + getModelType().getName());\r
+        }\r
+\r
+        if (parsedValue == null) {\r
+            // Convert "" to null\r
+            return null;\r
+        }\r
+        return parsedValue.intValue();\r
+    }\r
+\r
+    public String convertToPresentation(Integer value, Locale locale)\r
+            throws ConversionException {\r
+        if (value == null) {\r
+            return null;\r
+        }\r
+\r
+        return getFormat(locale).format(value);\r
+    }\r
+\r
+    public Class<Integer> getModelType() {\r
+        return Integer.class;\r
+    }\r
+\r
+    public Class<String> getPresentationType() {\r
+        return String.class;\r
+    }\r
+\r
+}\r
diff --git a/src/com/vaadin/data/util/converter/StringToNumberConverter.java b/src/com/vaadin/data/util/converter/StringToNumberConverter.java
new file mode 100644 (file)
index 0000000..8975dad
--- /dev/null
@@ -0,0 +1,107 @@
+/*\r
+@VaadinApache2LicenseForJavaFiles@\r
+ */\r
+\r
+package com.vaadin.data.util.converter;\r
+\r
+import java.text.NumberFormat;\r
+import java.text.ParsePosition;\r
+import java.util.Locale;\r
+\r
+/**\r
+ * A converter that converts from {@link Number} to {@link String} and back.\r
+ * Uses the given locale and {@link NumberFormat} for formatting and parsing.\r
+ * <p>\r
+ * Override and overwrite {@link #getFormat(Locale)} to use a different format.\r
+ * </p>\r
+ * \r
+ * @author Vaadin Ltd\r
+ * @version\r
+ * @VERSION@\r
+ * @since 7.0\r
+ */\r
+public class StringToNumberConverter implements Converter<String, Number> {\r
+\r
+    /**\r
+     * Returns the format used by {@link #convertToPresentation(Number, Locale)}\r
+     * and {@link #convertToModel(String, Locale)}.\r
+     * \r
+     * @param locale\r
+     *            The locale to use\r
+     * @return A NumberFormat instance\r
+     */\r
+    protected NumberFormat getFormat(Locale locale) {\r
+        if (locale == null) {\r
+            locale = Locale.getDefault();\r
+        }\r
+\r
+        return NumberFormat.getNumberInstance(locale);\r
+    }\r
+\r
+    /*\r
+     * (non-Javadoc)\r
+     * \r
+     * @see\r
+     * com.vaadin.data.util.converter.Converter#convertFromTargetToSource(java\r
+     * .lang.Object, java.util.Locale)\r
+     */\r
+    public Number convertToModel(String value, Locale locale)\r
+            throws ConversionException {\r
+        if (value == null) {\r
+            return null;\r
+        }\r
+\r
+        // Remove leading and trailing white space\r
+        value = value.trim();\r
+\r
+        // Parse and detect errors. If the full string was not used, it is\r
+        // an error.\r
+        ParsePosition parsePosition = new ParsePosition(0);\r
+        Number parsedValue = getFormat(locale).parse(value, parsePosition);\r
+        if (parsePosition.getIndex() != value.length()) {\r
+            throw new ConversionException("Could not convert '" + value\r
+                    + "' to " + getPresentationType().getName());\r
+        }\r
+\r
+        if (parsedValue == null) {\r
+            // Convert "" to null\r
+            return null;\r
+        }\r
+        return parsedValue;\r
+    }\r
+\r
+    /*\r
+     * (non-Javadoc)\r
+     * \r
+     * @see\r
+     * com.vaadin.data.util.converter.Converter#convertFromSourceToTarget(java\r
+     * .lang.Object, java.util.Locale)\r
+     */\r
+    public String convertToPresentation(Number value, Locale locale)\r
+            throws ConversionException {\r
+        if (value == null) {\r
+            return null;\r
+        }\r
+\r
+        return getFormat(locale).format(value);\r
+    }\r
+\r
+    /*\r
+     * (non-Javadoc)\r
+     * \r
+     * @see com.vaadin.data.util.converter.Converter#getSourceType()\r
+     */\r
+    public Class<Number> getModelType() {\r
+        return Number.class;\r
+    }\r
+\r
+    /*\r
+     * (non-Javadoc)\r
+     * \r
+     * @see com.vaadin.data.util.converter.Converter#getTargetType()\r
+     */\r
+    public Class<String> getPresentationType() {\r
+        return String.class;\r
+    }\r
+\r
+}\r
index 9e4bdde064e626f56b23522f51ddd0d1e533a9b2..cbdee0eae1d7c0f9d253a45b4befba2d30c0738d 100644 (file)
@@ -72,7 +72,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements
      * A converter used to convert from the data model type to the field type
      * and vice versa.
      */
-    private Converter<Object, T> converter = null;
+    private Converter<T, Object> converter = null;
     /**
      * Connected data-source.
      */
@@ -787,13 +787,13 @@ public abstract class AbstractField<T> extends AbstractComponent implements
      *            from
      */
     public void setConverter(Class<?> datamodelType) {
-        Converter<?, T> converter = null;
+        Converter<T, ?> converter = null;
 
         Application app = Application.getCurrentApplication();
         if (app != null) {
             ConverterFactory factory = app.getConverterFactory();
-            converter = (Converter<?, T>) factory.createConverter(
-                    datamodelType, getType());
+            converter = (Converter<T, ?>) factory.createConverter(getType(),
+                    datamodelType);
         }
         setConverter(converter);
     }
@@ -850,8 +850,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements
              * an exception.
              */
             try {
-                return converter.convertToModel(fieldValue,
-                        getLocale());
+                return converter.convertToModel(fieldValue, getLocale());
             } catch (com.vaadin.data.util.converter.Converter.ConversionException e) {
                 throw new Converter.ConversionException(
                         getValueConversionError(converter.getModelType()), e);
@@ -1030,8 +1029,8 @@ public abstract class AbstractField<T> extends AbstractComponent implements
         // to validate the converted value
         if (getConverter() != null) {
             try {
-                valueToValidate = getConverter().convertToModel(
-                        fieldValue, getLocale());
+                valueToValidate = getConverter().convertToModel(fieldValue,
+                        getLocale());
             } catch (Exception e) {
                 throw new InvalidValueException(
                         getValueConversionError(getConverter().getModelType()));
@@ -1586,23 +1585,20 @@ public abstract class AbstractField<T> extends AbstractComponent implements
      * 
      * @return The converter or null if none is set.
      */
-    public Converter<Object, T> getConverter() {
+    public Converter<T, Object> getConverter() {
         return converter;
     }
 
     /**
-     * Sets the converter used to convert the property data source value to the
-     * field value. The converter must have a target type that matches the field
-     * type.
-     * 
-     * The source for the converter is the data model and the target is the
-     * field.
+     * Sets the converter used to convert the field value to property data
+     * source type. The converter must have a presentation type that matches the
+     * field type.
      * 
      * @param converter
      *            The new converter to use.
      */
-    public void setConverter(Converter<?, T> converter) {
-        this.converter = (Converter<Object, T>) converter;
+    public void setConverter(Converter<T, ?> converter) {
+        this.converter = (Converter<T, Object>) converter;
         requestRepaint();
     }
 
index 5ab0fb9029ebde4070af508f3d93c443bb7c0bd7..8b9dc3ef81144276165a5d815630a77747773caf 100644 (file)
@@ -410,7 +410,7 @@ public class Table extends AbstractSelect implements Action.Container,
 
     private boolean painted = false;
 
-    private HashMap<Object, Converter> propertyValueConverters = new HashMap<Object, Converter>();
+    private HashMap<Object, Converter<String, Object>> propertyValueConverters = new HashMap<Object, Converter<String, Object>>();
 
     /* Table constructors */
 
@@ -3462,16 +3462,16 @@ public class Table extends AbstractSelect implements Action.Container,
         if (property == null) {
             return "";
         }
-        Converter<Object, String> converter = null;
+        Converter<String, Object> converter = null;
 
         if (hasConverter(colId)) {
             converter = getConverter(colId);
         } else {
             Application app = Application.getCurrentApplication();
             if (app != null) {
-                converter = (Converter<Object, String>) app
-                        .getConverterFactory().createConverter(
-                                property.getType(), String.class);
+                converter = (Converter<String, Object>) app
+                        .getConverterFactory().createConverter(String.class,
+                                property.getType());
             }
         }
         Object value = property.getValue();
@@ -5143,7 +5143,7 @@ public class Table extends AbstractSelect implements Action.Container,
      * @param converter
      *            The converter to use for the property id
      */
-    public void setConverter(Object propertyId, Converter<?, String> converter) {
+    public void setConverter(Object propertyId, Converter<String, ?> converter) {
         if (!getContainerPropertyIds().contains(propertyId)) {
             throw new IllegalArgumentException("PropertyId " + propertyId
                     + " must be in the container");
@@ -5158,7 +5158,8 @@ public class Table extends AbstractSelect implements Action.Container,
         // + ") must match converter source type ("
         // + converter.getSourceType() + ")");
         // }
-        propertyValueConverters.put(propertyId, converter);
+        propertyValueConverters.put(propertyId,
+                (Converter<String, Object>) converter);
         refreshRowCache();
     }
 
@@ -5182,7 +5183,7 @@ public class Table extends AbstractSelect implements Action.Container,
      * @return The converter used to format the propertyId or null if no
      *         converter has been set
      */
-    public Converter<Object, String> getConverter(Object propertyId) {
+    public Converter<String, Object> getConverter(Object propertyId) {
         return propertyValueConverters.get(propertyId);
     }
 
index 9de7425423eae081dd753c3672a329f4ab524b67..753afbdd066bd6fdc76d9d092a9bc90277c98372 100644 (file)
@@ -6,7 +6,7 @@ import junit.framework.TestCase;
 \r
 import com.vaadin.data.util.MethodProperty;\r
 import com.vaadin.data.util.converter.Converter;\r
-import com.vaadin.data.util.converter.IntegerToStringConverter;\r
+import com.vaadin.data.util.converter.StringToIntegerConverter;\r
 import com.vaadin.tests.data.bean.Address;\r
 import com.vaadin.tests.data.bean.Country;\r
 import com.vaadin.tests.data.bean.Person;\r
@@ -64,7 +64,7 @@ public class AbstractFieldValueConversions extends TestCase {
 \r
     public void testFailingConversion() {\r
         TextField tf = new TextField();\r
-        tf.setConverter(new Converter<Integer, String>() {\r
+        tf.setConverter(new Converter<String, Integer>() {\r
 \r
             public Integer convertToModel(String value, Locale locale) {\r
                 throw new ConversionException("Failed");\r
@@ -95,7 +95,7 @@ public class AbstractFieldValueConversions extends TestCase {
     public void testIntegerStringConversion() {\r
         TextField tf = new TextField();\r
 \r
-        tf.setConverter(new IntegerToStringConverter());\r
+        tf.setConverter(new StringToIntegerConverter());\r
         tf.setPropertyDataSource(new MethodProperty<Integer>(paulaBean, "age"));\r
         assertEquals(34, tf.getPropertyDataSource().getValue());\r
         assertEquals("34", tf.getValue());\r
@@ -111,16 +111,14 @@ public class AbstractFieldValueConversions extends TestCase {
         CheckBox cb = new CheckBox();\r
         cb.setConverter(new Converter<Boolean, Boolean>() {\r
 \r
-            public Boolean convertToModel(Boolean value,\r
-                    Locale locale) {\r
+            public Boolean convertToModel(Boolean value, Locale locale) {\r
                 // value from a CheckBox should never be null as long as it is\r
                 // not set to null (handled by conversion below).\r
                 assertNotNull(value);\r
                 return value;\r
             }\r
 \r
-            public Boolean convertToPresentation(Boolean value,\r
-                    Locale locale) {\r
+            public Boolean convertToPresentation(Boolean value, Locale locale) {\r
                 // Datamodel -> field\r
                 if (value == null) {\r
                     return false;\r
index 9ef42cf4b026aeb220bb24a0fa3da84611c2b441..274ac64b448258a4fe37e1322f25432403639ebc 100644 (file)
@@ -5,7 +5,7 @@ import java.util.Locale;
 import com.vaadin.data.util.converter.Converter;\r
 \r
 public class Vaadin6ImplicitDoubleConverter implements\r
-        Converter<Double, String> {\r
+        Converter<String, Double> {\r
 \r
     public Double convertToModel(String value, Locale locale)\r
             throws com.vaadin.data.util.converter.Converter.ConversionException {\r
index e92c1ab17ad91156ec69d4aec0a4e7d561dbf545..2380b12933761f1d3862e2b8fdaf148041ad13e8 100644 (file)
@@ -9,7 +9,7 @@ import com.vaadin.data.Property.ValueChangeEvent;
 import com.vaadin.data.Property.ValueChangeListener;\r
 import com.vaadin.data.util.BeanItemContainer;\r
 import com.vaadin.data.util.converter.Converter;\r
-import com.vaadin.data.util.converter.NumberToStringConverter;\r
+import com.vaadin.data.util.converter.StringToNumberConverter;\r
 import com.vaadin.tests.components.TestBase;\r
 import com.vaadin.tests.data.bean.Address;\r
 import com.vaadin.tests.data.bean.Country;\r
@@ -143,12 +143,11 @@ public class DoublesInTable extends TestBase {
     }\r
 \r
     private void addConverters(Table t) {\r
-        t.setConverter("sex", new Converter<Sex, String>() {\r
+        t.setConverter("sex", new Converter<String, Sex>() {\r
 \r
             public Sex convertToModel(String value, Locale locale)\r
                     throws com.vaadin.data.util.converter.Converter.ConversionException {\r
-                // not used in this test - Table only converts from source to\r
-                // target\r
+                // not used in this test - Table only converts to presentation\r
                 return null;\r
             }\r
 \r
@@ -168,7 +167,7 @@ public class DoublesInTable extends TestBase {
                 return String.class;\r
             }\r
         });\r
-        t.setConverter("deceased", new Converter<Boolean, String>() {\r
+        t.setConverter("deceased", new Converter<String, Boolean>() {\r
 \r
             public Boolean convertToModel(String value, Locale locale) {\r
                 // not used in this test - Table only converts from source to\r
@@ -192,7 +191,7 @@ public class DoublesInTable extends TestBase {
                 return String.class;\r
             }\r
         });\r
-        t.setConverter("age", new Converter<Integer, String>() {\r
+        t.setConverter("age", new Converter<String, Integer>() {\r
 \r
             public Integer convertToModel(String value, Locale locale)\r
                     throws com.vaadin.data.util.converter.Converter.ConversionException {\r
@@ -225,12 +224,11 @@ public class DoublesInTable extends TestBase {
                 return String.class;\r
             }\r
         });\r
-        t.setConverter("address", new Converter<Address, String>() {\r
+        t.setConverter("address", new Converter<String, Address>() {\r
 \r
             public Address convertToModel(String value, Locale locale)\r
                     throws ConversionException {\r
-                // not used in this test - Table only converts from source to\r
-                // target\r
+                // not used in this test - Table only converts to presentation\r
                 return null;\r
             }\r
 \r
@@ -250,7 +248,7 @@ public class DoublesInTable extends TestBase {
 \r
         });\r
 \r
-        t.setConverter("rent", new NumberToStringConverter() {\r
+        t.setConverter("rent", new StringToNumberConverter() {\r
             @Override\r
             protected NumberFormat getFormat(Locale locale) {\r
                 return NumberFormat.getCurrencyInstance(locale);\r
index 1e7d90ec187f094615a2f6e97b13237bf83be1b3..de7193d84919293b3e047597ee97812f09bb4e2a 100644 (file)
@@ -7,7 +7,7 @@ import com.vaadin.data.fieldbinder.FieldBinder.CommitException;
 import com.vaadin.data.fieldbinder.FieldBinder.CommitHandler;\r
 import com.vaadin.data.fieldbinder.FormBuilder;\r
 import com.vaadin.data.util.BeanItem;\r
-import com.vaadin.data.util.converter.BooleanToStringConverter;\r
+import com.vaadin.data.util.converter.StringToBooleanConverter;\r
 import com.vaadin.data.validator.EmailValidator;\r
 import com.vaadin.data.validator.IntegerRangeValidator;\r
 import com.vaadin.data.validator.StringLengthValidator;\r
@@ -160,7 +160,7 @@ public class BasicPersonForm extends TestBase {
         age.addValidator(new IntegerRangeValidator(\r
                 "Must be between 0 and 150, {0} is not", 0, 150));\r
         sex.setPageLength(0);\r
-        deceased.setConverter(new BooleanToStringConverter() {\r
+        deceased.setConverter(new StringToBooleanConverter() {\r
             @Override\r
             protected String getTrueString() {\r
                 return "YAY!";\r