1
2
3
4
5
6
7
8
9
10
11
12
13
14 package org.exolab.castor.builder.types;
15
16 import org.exolab.javasource.JClass;
17 import org.exolab.javasource.JSourceCode;
18 import org.exolab.javasource.JType;
19
20
21
22
23
24
25
26
27 public final class XSFloat extends AbstractRangeFacet {
28
29
30
31 public static final String NAME = "float";
32
33
34 public static final short TYPE = XSType.FLOAT_TYPE;
35
36
37 public static final String MIN_VALUE = Float.toString(-Float.MAX_VALUE);
38
39
40 public static final String MAX_VALUE = Float.toString(Float.MAX_VALUE);
41
42
43
44
45 private final boolean _asWrapper;
46
47
48 private final JType _jType;
49
50
51
52
53
54
55 public XSFloat() {
56 this(false);
57 }
58
59
60
61
62
63
64 public XSFloat(final boolean asWrapper) {
65 super();
66
67 _asWrapper = asWrapper;
68 if (_asWrapper) {
69 _jType = new JClass("java.lang.Float");
70 } else {
71 _jType = JType.FLOAT;
72 }
73
74 setMinInclusive(MIN_VALUE);
75 setMaxInclusive(MAX_VALUE);
76 }
77
78
79
80
81
82
83 public String getName() {
84 return NAME;
85 }
86
87
88
89
90 public short getType() {
91 return TYPE;
92 }
93
94
95
96
97 public boolean isPrimitive() {
98 return true;
99 }
100
101
102
103
104 public boolean isDateTime() {
105 return false;
106 }
107
108
109
110
111 public JType getJType() {
112 return _jType;
113 }
114
115
116
117
118 public String newInstanceCode() {
119 return "new java.lang.Float(0.0);";
120 }
121
122
123
124
125 public String createToJavaObjectCode(final String variableName) {
126 if (_asWrapper) {
127 return variableName;
128 }
129 return "new java.lang.Float(" + variableName + ")";
130 }
131
132
133
134
135 public String createFromJavaObjectCode(final String variableName) {
136 if (_asWrapper) {
137 return "((java.lang.Float) " + variableName + ")";
138 }
139 return "((java.lang.Float) " + variableName + ").floatValue()";
140 }
141
142
143
144
145
146
147 public void validationCode(final JSourceCode jsc, final String fixedValue,
148 final String validatorInstanceName) {
149 jsc.add("org.exolab.castor.xml.validators.FloatValidator typeValidator;\n"
150 + "typeValidator = new org.exolab.castor.xml.validators.FloatValidator();\n"
151 + "{0}.setValidator(typeValidator);", validatorInstanceName);
152
153 if (fixedValue != null) {
154 jsc.add("typeValidator.setFixed((float) " + fixedValue + ");");
155 }
156
157 codePatternFacet(jsc, "typeValidator");
158 codeWhiteSpaceFacet(jsc, "typeValidator");
159
160 if (getMinExclusive() != null) {
161 jsc.add("typeValidator.setMinExclusive((float) " + getMinExclusive() + ");");
162 } else if (getMinInclusive() != null) {
163 jsc.add("typeValidator.setMinInclusive((float) " + getMinInclusive() + ");");
164 }
165
166 if (getMaxExclusive() != null) {
167 jsc.add("typeValidator.setMaxExclusive((float) " + getMaxExclusive() + ");");
168 } else if (getMaxInclusive() != null) {
169 jsc.add("typeValidator.setMaxInclusive((float) " + getMaxInclusive() + ");");
170 }
171 }
172
173
174
175
176 public String createDefaultValueWithString(final String variableName) {
177 if (_asWrapper) {
178 return "java.lang.Float.valueOf(" + variableName + ")";
179 }
180 return "java.lang.Float.valueOf(" + variableName + ").floatValue()";
181 }
182
183
184 }