1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.ui.form.field.converter;
35
36 import java.math.BigDecimal;
37 import java.text.NumberFormat;
38 import java.util.Locale;
39
40 import com.vaadin.v7.data.util.converter.Converter;
41 import com.vaadin.v7.data.util.converter.DefaultConverterFactory;
42 import com.vaadin.v7.data.util.converter.StringToBigDecimalConverter;
43 import com.vaadin.v7.data.util.converter.StringToDoubleConverter;
44 import com.vaadin.v7.data.util.converter.StringToFloatConverter;
45
46
47
48
49
50
51 @Deprecated
52 public class NonRoundingConverterFactory extends DefaultConverterFactory {
53 @Override
54 protected Converter<String, ?> createStringConverter(Class<?> sourceType) {
55
56 if (Double.class.isAssignableFrom(sourceType)) {
57 return new StringToDoubleConverter() {
58 @Override
59 protected NumberFormat getFormat(Locale locale) {
60 return amendMaximumFractionDigits(super.getFormat(locale));
61 }
62 };
63
64 } else if (Float.class.isAssignableFrom(sourceType)) {
65 return new StringToFloatConverter() {
66 @Override
67 protected NumberFormat getFormat(Locale locale) {
68 return amendMaximumFractionDigits(super.getFormat(locale));
69 }
70 };
71
72 } else if (BigDecimal.class.isAssignableFrom(sourceType)) {
73 return new StringToBigDecimalConverter() {
74 @Override
75 protected NumberFormat getFormat(Locale locale) {
76 return amendMaximumFractionDigits(super.getFormat(locale));
77 }
78 };
79 }
80
81 return super.createStringConverter(sourceType);
82 }
83
84 private NumberFormat amendMaximumFractionDigits(NumberFormat format) {
85
86 format.setMaximumFractionDigits(Integer.MAX_VALUE);
87 return format;
88 }
89 }