diff options
author | Artur Signell <artur@vaadin.com> | 2013-08-09 20:35:54 +0300 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2013-10-30 13:58:43 +0000 |
commit | fbf069d745f9903da2c215a46027306417c1e3ed (patch) | |
tree | 1d306b1e5b5ee4ab1522ff961415a789d262369a /server/src | |
parent | e2157f47967e1470704cb0b2ab023941f26171f9 (diff) | |
download | vaadin-framework-fbf069d745f9903da2c215a46027306417c1e3ed.tar.gz vaadin-framework-fbf069d745f9903da2c215a46027306417c1e3ed.zip |
Add StringToLongConverter for automatic handling of long values (#12225)
Backported from master
Change-Id: Ibb91d28aab3731486c84d09547c7af641f39610a
Merge: no
Diffstat (limited to 'server/src')
-rw-r--r-- | server/src/com/vaadin/data/util/converter/DefaultConverterFactory.java | 2 | ||||
-rw-r--r-- | server/src/com/vaadin/data/util/converter/StringToLongConverter.java | 78 |
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 bbd3945a37..cadfdcc774 100644 --- a/server/src/com/vaadin/data/util/converter/DefaultConverterFactory.java +++ b/server/src/com/vaadin/data/util/converter/DefaultConverterFactory.java @@ -101,6 +101,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 (Boolean.class.isAssignableFrom(sourceType)) { return new StringToBooleanConverter(); } else if (Number.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; + } + +} |