aboutsummaryrefslogtreecommitdiffstats
path: root/server/src
diff options
context:
space:
mode:
authorArtur Signell <artur@vaadin.com>2013-08-09 20:35:54 +0300
committerVaadin Code Review <review@vaadin.com>2013-09-03 07:39:51 +0000
commitaae2fa65316a228f7e1c17bd976ab0cbcc22543c (patch)
tree45f7c197c48e3b10ef3524e096f6860969cf39e2 /server/src
parentf14fc3cbd235b6004d93b10a660bb3a97d13cd64 (diff)
downloadvaadin-framework-aae2fa65316a228f7e1c17bd976ab0cbcc22543c.tar.gz
vaadin-framework-aae2fa65316a228f7e1c17bd976ab0cbcc22543c.zip
Add StringToLongConverter for automatic handling of long values (#12291)
Change-Id: Ia2865b199303c0e35b562120f1c916f288aa458a
Diffstat (limited to 'server/src')
-rw-r--r--server/src/com/vaadin/data/util/converter/DefaultConverterFactory.java2
-rw-r--r--server/src/com/vaadin/data/util/converter/StringToLongConverter.java78
2 files changed, 80 insertions, 0 deletions
diff --git a/server/src/com/vaadin/data/util/converter/DefaultConverterFactory.java b/server/src/com/vaadin/data/util/converter/DefaultConverterFactory.java
index 0b3cfcd1b0..4d3717e9ba 100644
--- a/server/src/com/vaadin/data/util/converter/DefaultConverterFactory.java
+++ b/server/src/com/vaadin/data/util/converter/DefaultConverterFactory.java
@@ -102,6 +102,8 @@ public class DefaultConverterFactory implements ConverterFactory {
return new StringToFloatConverter();
} else if (Integer.class.isAssignableFrom(sourceType)) {
return new StringToIntegerConverter();
+ } else if (Long.class.isAssignableFrom(sourceType)) {
+ return new StringToLongConverter();
} else if (BigDecimal.class.isAssignableFrom(sourceType)) {
return new StringToBigDecimalConverter();
} else if (Boolean.class.isAssignableFrom(sourceType)) {
diff --git a/server/src/com/vaadin/data/util/converter/StringToLongConverter.java b/server/src/com/vaadin/data/util/converter/StringToLongConverter.java
new file mode 100644
index 0000000000..3532336787
--- /dev/null
+++ b/server/src/com/vaadin/data/util/converter/StringToLongConverter.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2000-2013 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.vaadin.data.util.converter;
+
+import java.text.NumberFormat;
+import java.util.Locale;
+
+/**
+ * A converter that converts from {@link String} to {@link Long} and back. Uses
+ * the given locale and a {@link NumberFormat} instance for formatting and
+ * parsing.
+ * <p>
+ * Override and overwrite {@link #getFormat(Locale)} to use a different format.
+ * </p>
+ *
+ * @author Vaadin Ltd
+ * @since 7.2
+ */
+public class StringToLongConverter extends
+ AbstractStringToNumberConverter<Long> {
+
+ /**
+ * Returns the format used by
+ * {@link #convertToPresentation(Long, Class, Locale)} and
+ * {@link #convertToModel(String, Class, Locale)}
+ *
+ * @param locale
+ * The locale to use
+ * @return A NumberFormat instance
+ */
+ @Override
+ protected NumberFormat getFormat(Locale locale) {
+ if (locale == null) {
+ locale = Locale.getDefault();
+ }
+ return NumberFormat.getIntegerInstance(locale);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.vaadin.data.util.converter.Converter#convertToModel(java.lang.Object,
+ * java.lang.Class, java.util.Locale)
+ */
+ @Override
+ public Long convertToModel(String value, Class<? extends Long> targetType,
+ Locale locale) throws ConversionException {
+ Number n = convertToNumber(value, targetType, locale);
+ return n == null ? null : n.longValue();
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.vaadin.data.util.converter.Converter#getModelType()
+ */
+ @Override
+ public Class<Long> getModelType() {
+ return Long.class;
+ }
+
+}