|
1 | 1 | package org.seasar.doma.jdbc.criteria.expression; |
2 | 2 |
|
| 3 | +import java.math.BigDecimal; |
| 4 | +import java.math.BigInteger; |
| 5 | +import java.time.LocalDate; |
| 6 | +import java.time.LocalDateTime; |
| 7 | +import java.time.LocalTime; |
3 | 8 | import java.util.Objects; |
4 | 9 | import java.util.Optional; |
5 | 10 | import java.util.function.BiFunction; |
|
11 | 16 | import org.seasar.doma.jdbc.entity.EntityPropertyType; |
12 | 17 | import org.seasar.doma.jdbc.entity.NamingType; |
13 | 18 | import org.seasar.doma.jdbc.entity.Property; |
| 19 | +import org.seasar.doma.wrapper.BigDecimalWrapper; |
| 20 | +import org.seasar.doma.wrapper.BigIntegerWrapper; |
| 21 | +import org.seasar.doma.wrapper.BooleanWrapper; |
| 22 | +import org.seasar.doma.wrapper.ByteWrapper; |
| 23 | +import org.seasar.doma.wrapper.DoubleWrapper; |
| 24 | +import org.seasar.doma.wrapper.FloatWrapper; |
14 | 25 | import org.seasar.doma.wrapper.IntegerWrapper; |
| 26 | +import org.seasar.doma.wrapper.LocalDateTimeWrapper; |
| 27 | +import org.seasar.doma.wrapper.LocalDateWrapper; |
| 28 | +import org.seasar.doma.wrapper.LocalTimeWrapper; |
15 | 29 | import org.seasar.doma.wrapper.LongWrapper; |
| 30 | +import org.seasar.doma.wrapper.ShortWrapper; |
16 | 31 | import org.seasar.doma.wrapper.StringWrapper; |
17 | 32 | import org.seasar.doma.wrapper.Wrapper; |
18 | 33 |
|
19 | 34 | abstract class BasicPropertyType<BASIC> implements EntityPropertyType<Object, BASIC> { |
20 | 35 |
|
| 36 | + protected final BASIC value; |
| 37 | + |
| 38 | + protected BasicPropertyType(BASIC value) { |
| 39 | + this.value = value; |
| 40 | + } |
| 41 | + |
21 | 42 | @Override |
22 | 43 | public String getName() { |
23 | 44 | throw new UnsupportedOperationException(); |
@@ -119,53 +140,249 @@ public Optional<Class<?>> getDomainClass() { |
119 | 140 | } |
120 | 141 | } |
121 | 142 |
|
122 | | -class StringPropertyType extends BasicPropertyType<String> { |
| 143 | +class BigDecimalPropertyType extends BasicPropertyType<BigDecimal> { |
123 | 144 |
|
124 | | - static final StringPropertyType INSTANCE = new StringPropertyType(); |
| 145 | + BigDecimalPropertyType(BigDecimal value) { |
| 146 | + super(value); |
| 147 | + } |
125 | 148 |
|
126 | 149 | @Override |
127 | | - public Property<Object, String> createProperty() { |
128 | | - return new StringProperty(); |
| 150 | + public Property<Object, BigDecimal> createProperty() { |
| 151 | + return new BigDecimalProperty(value); |
129 | 152 | } |
130 | 153 |
|
131 | | - static class StringProperty extends BasicProperty<String> { |
| 154 | + static class BigDecimalProperty extends BasicProperty<BigDecimal> { |
| 155 | + |
| 156 | + BigDecimalProperty(BigDecimal value) { |
| 157 | + super(new BasicScalar<>(new BigDecimalWrapper(value))); |
| 158 | + } |
| 159 | + } |
| 160 | +} |
| 161 | + |
| 162 | +class BigIntegerPropertyType extends BasicPropertyType<BigInteger> { |
| 163 | + |
| 164 | + BigIntegerPropertyType(BigInteger value) { |
| 165 | + super(value); |
| 166 | + } |
| 167 | + |
| 168 | + @Override |
| 169 | + public Property<Object, BigInteger> createProperty() { |
| 170 | + return new BigIntegerProperty(value); |
| 171 | + } |
| 172 | + |
| 173 | + static class BigIntegerProperty extends BasicProperty<BigInteger> { |
| 174 | + |
| 175 | + BigIntegerProperty(BigInteger value) { |
| 176 | + super(new BasicScalar<>(new BigIntegerWrapper(value))); |
| 177 | + } |
| 178 | + } |
| 179 | +} |
| 180 | + |
| 181 | +class BooleanPropertyType extends BasicPropertyType<Boolean> { |
| 182 | + |
| 183 | + BooleanPropertyType(Boolean value) { |
| 184 | + super(value); |
| 185 | + } |
| 186 | + |
| 187 | + @Override |
| 188 | + public Property<Object, Boolean> createProperty() { |
| 189 | + return new BooleanProperty(value); |
| 190 | + } |
| 191 | + |
| 192 | + static class BooleanProperty extends BasicProperty<Boolean> { |
| 193 | + |
| 194 | + BooleanProperty(Boolean value) { |
| 195 | + super(new BasicScalar<>(new BooleanWrapper(value))); |
| 196 | + } |
| 197 | + } |
| 198 | +} |
| 199 | + |
| 200 | +class BytePropertyType extends BasicPropertyType<Byte> { |
| 201 | + |
| 202 | + BytePropertyType(Byte value) { |
| 203 | + super(value); |
| 204 | + } |
| 205 | + |
| 206 | + @Override |
| 207 | + public Property<Object, Byte> createProperty() { |
| 208 | + return new ByteProperty(value); |
| 209 | + } |
| 210 | + |
| 211 | + static class ByteProperty extends BasicProperty<Byte> { |
| 212 | + |
| 213 | + ByteProperty(Byte value) { |
| 214 | + super(new BasicScalar<>(new ByteWrapper(value))); |
| 215 | + } |
| 216 | + } |
| 217 | +} |
| 218 | + |
| 219 | +class DoublePropertyType extends BasicPropertyType<Double> { |
| 220 | + |
| 221 | + DoublePropertyType(Double value) { |
| 222 | + super(value); |
| 223 | + } |
| 224 | + |
| 225 | + @Override |
| 226 | + public Property<Object, Double> createProperty() { |
| 227 | + return new DoubleProperty(value); |
| 228 | + } |
| 229 | + |
| 230 | + static class DoubleProperty extends BasicProperty<Double> { |
| 231 | + |
| 232 | + DoubleProperty(Double value) { |
| 233 | + super(new BasicScalar<>(new DoubleWrapper(value))); |
| 234 | + } |
| 235 | + } |
| 236 | +} |
| 237 | + |
| 238 | +class FloatPropertyType extends BasicPropertyType<Float> { |
| 239 | + |
| 240 | + FloatPropertyType(Float value) { |
| 241 | + super(value); |
| 242 | + } |
| 243 | + |
| 244 | + @Override |
| 245 | + public Property<Object, Float> createProperty() { |
| 246 | + return new FloatProperty(value); |
| 247 | + } |
132 | 248 |
|
133 | | - protected StringProperty() { |
134 | | - super(new BasicScalar<>(new StringWrapper())); |
| 249 | + static class FloatProperty extends BasicProperty<Float> { |
| 250 | + |
| 251 | + FloatProperty(Float value) { |
| 252 | + super(new BasicScalar<>(new FloatWrapper(value))); |
135 | 253 | } |
136 | 254 | } |
137 | 255 | } |
138 | 256 |
|
139 | 257 | class IntegerPropertyType extends BasicPropertyType<Integer> { |
140 | 258 |
|
141 | | - static final IntegerPropertyType INSTANCE = new IntegerPropertyType(); |
| 259 | + IntegerPropertyType(Integer value) { |
| 260 | + super(value); |
| 261 | + } |
142 | 262 |
|
143 | 263 | @Override |
144 | 264 | public Property<Object, Integer> createProperty() { |
145 | | - return new IntegerProperty(); |
| 265 | + return new IntegerProperty(value); |
146 | 266 | } |
147 | 267 |
|
148 | 268 | static class IntegerProperty extends BasicProperty<Integer> { |
149 | 269 |
|
150 | | - protected IntegerProperty() { |
151 | | - super(new BasicScalar<>(new IntegerWrapper())); |
| 270 | + IntegerProperty(Integer value) { |
| 271 | + super(new BasicScalar<>(new IntegerWrapper(value))); |
| 272 | + } |
| 273 | + } |
| 274 | +} |
| 275 | + |
| 276 | +class LocalDatePropertyType extends BasicPropertyType<LocalDate> { |
| 277 | + |
| 278 | + LocalDatePropertyType(LocalDate value) { |
| 279 | + super(value); |
| 280 | + } |
| 281 | + |
| 282 | + @Override |
| 283 | + public Property<Object, LocalDate> createProperty() { |
| 284 | + return new LocalDateProperty(value); |
| 285 | + } |
| 286 | + |
| 287 | + static class LocalDateProperty extends BasicProperty<LocalDate> { |
| 288 | + |
| 289 | + LocalDateProperty(LocalDate value) { |
| 290 | + super(new BasicScalar<>(new LocalDateWrapper(value))); |
| 291 | + } |
| 292 | + } |
| 293 | +} |
| 294 | + |
| 295 | +class LocalDateTimePropertyType extends BasicPropertyType<LocalDateTime> { |
| 296 | + |
| 297 | + LocalDateTimePropertyType(LocalDateTime value) { |
| 298 | + super(value); |
| 299 | + } |
| 300 | + |
| 301 | + @Override |
| 302 | + public Property<Object, LocalDateTime> createProperty() { |
| 303 | + return new LocalDateTimeProperty(value); |
| 304 | + } |
| 305 | + |
| 306 | + static class LocalDateTimeProperty extends BasicProperty<LocalDateTime> { |
| 307 | + |
| 308 | + LocalDateTimeProperty(LocalDateTime value) { |
| 309 | + super(new BasicScalar<>(new LocalDateTimeWrapper(value))); |
| 310 | + } |
| 311 | + } |
| 312 | +} |
| 313 | + |
| 314 | +class LocalTimePropertyType extends BasicPropertyType<LocalTime> { |
| 315 | + |
| 316 | + LocalTimePropertyType(LocalTime value) { |
| 317 | + super(value); |
| 318 | + } |
| 319 | + |
| 320 | + @Override |
| 321 | + public Property<Object, LocalTime> createProperty() { |
| 322 | + return new LocalTimeProperty(value); |
| 323 | + } |
| 324 | + |
| 325 | + static class LocalTimeProperty extends BasicProperty<LocalTime> { |
| 326 | + |
| 327 | + LocalTimeProperty(LocalTime value) { |
| 328 | + super(new BasicScalar<>(new LocalTimeWrapper(value))); |
152 | 329 | } |
153 | 330 | } |
154 | 331 | } |
155 | 332 |
|
156 | 333 | class LongPropertyType extends BasicPropertyType<Long> { |
157 | 334 |
|
158 | | - static final LongPropertyType INSTANCE = new LongPropertyType(); |
| 335 | + LongPropertyType(Long value) { |
| 336 | + super(value); |
| 337 | + } |
159 | 338 |
|
160 | 339 | @Override |
161 | 340 | public Property<Object, Long> createProperty() { |
162 | | - return new LongProperty(); |
| 341 | + return new LongProperty(value); |
163 | 342 | } |
164 | 343 |
|
165 | 344 | static class LongProperty extends BasicProperty<Long> { |
166 | 345 |
|
167 | | - protected LongProperty() { |
168 | | - super(new BasicScalar<>(new LongWrapper())); |
| 346 | + LongProperty(Long value) { |
| 347 | + super(new BasicScalar<>(new LongWrapper(value))); |
| 348 | + } |
| 349 | + } |
| 350 | +} |
| 351 | + |
| 352 | +class ShortPropertyType extends BasicPropertyType<Short> { |
| 353 | + |
| 354 | + ShortPropertyType(Short value) { |
| 355 | + super(value); |
| 356 | + } |
| 357 | + |
| 358 | + @Override |
| 359 | + public Property<Object, Short> createProperty() { |
| 360 | + return new ShortProperty(value); |
| 361 | + } |
| 362 | + |
| 363 | + static class ShortProperty extends BasicProperty<Short> { |
| 364 | + |
| 365 | + ShortProperty(Short value) { |
| 366 | + super(new BasicScalar<>(new ShortWrapper(value))); |
| 367 | + } |
| 368 | + } |
| 369 | +} |
| 370 | + |
| 371 | +class StringPropertyType extends BasicPropertyType<String> { |
| 372 | + |
| 373 | + StringPropertyType(String value) { |
| 374 | + super(value); |
| 375 | + } |
| 376 | + |
| 377 | + @Override |
| 378 | + public Property<Object, String> createProperty() { |
| 379 | + return new StringProperty(value); |
| 380 | + } |
| 381 | + |
| 382 | + static class StringProperty extends BasicProperty<String> { |
| 383 | + |
| 384 | + StringProperty(String value) { |
| 385 | + super(new BasicScalar<>(new StringWrapper(value))); |
169 | 386 | } |
170 | 387 | } |
171 | 388 | } |
0 commit comments