Skip to content

Commit a1a47e2

Browse files
committed
Support the literal expression for the following data types
- Byte - Boolean - BigDecimal - BigInteger - Double - Float - LocalDate - LocalDateTime - LocalTime - Long - Short
1 parent eaa72c6 commit a1a47e2

File tree

7 files changed

+431
-117
lines changed

7 files changed

+431
-117
lines changed

doma-core/src/main/java/org/seasar/doma/jdbc/criteria/expression/AggregateFunction.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public Class<?> asClass() {
8989

9090
@Override
9191
public EntityPropertyType<?, Long> asType() {
92-
return LongPropertyType.INSTANCE;
92+
return new LongPropertyType(null);
9393
}
9494

9595
@Override
@@ -161,7 +161,7 @@ public Class<?> asClass() {
161161

162162
@Override
163163
public EntityPropertyType<?, ?> asType() {
164-
return LongPropertyType.INSTANCE;
164+
return new LongPropertyType(null);
165165
}
166166

167167
@Override

doma-core/src/main/java/org/seasar/doma/jdbc/criteria/expression/BasicPropertyTypes.java

Lines changed: 232 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
package org.seasar.doma.jdbc.criteria.expression;
22

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;
38
import java.util.Objects;
49
import java.util.Optional;
510
import java.util.function.BiFunction;
@@ -11,13 +16,29 @@
1116
import org.seasar.doma.jdbc.entity.EntityPropertyType;
1217
import org.seasar.doma.jdbc.entity.NamingType;
1318
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;
1425
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;
1529
import org.seasar.doma.wrapper.LongWrapper;
30+
import org.seasar.doma.wrapper.ShortWrapper;
1631
import org.seasar.doma.wrapper.StringWrapper;
1732
import org.seasar.doma.wrapper.Wrapper;
1833

1934
abstract class BasicPropertyType<BASIC> implements EntityPropertyType<Object, BASIC> {
2035

36+
protected final BASIC value;
37+
38+
protected BasicPropertyType(BASIC value) {
39+
this.value = value;
40+
}
41+
2142
@Override
2243
public String getName() {
2344
throw new UnsupportedOperationException();
@@ -119,53 +140,249 @@ public Optional<Class<?>> getDomainClass() {
119140
}
120141
}
121142

122-
class StringPropertyType extends BasicPropertyType<String> {
143+
class BigDecimalPropertyType extends BasicPropertyType<BigDecimal> {
123144

124-
static final StringPropertyType INSTANCE = new StringPropertyType();
145+
BigDecimalPropertyType(BigDecimal value) {
146+
super(value);
147+
}
125148

126149
@Override
127-
public Property<Object, String> createProperty() {
128-
return new StringProperty();
150+
public Property<Object, BigDecimal> createProperty() {
151+
return new BigDecimalProperty(value);
129152
}
130153

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+
}
132248

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)));
135253
}
136254
}
137255
}
138256

139257
class IntegerPropertyType extends BasicPropertyType<Integer> {
140258

141-
static final IntegerPropertyType INSTANCE = new IntegerPropertyType();
259+
IntegerPropertyType(Integer value) {
260+
super(value);
261+
}
142262

143263
@Override
144264
public Property<Object, Integer> createProperty() {
145-
return new IntegerProperty();
265+
return new IntegerProperty(value);
146266
}
147267

148268
static class IntegerProperty extends BasicProperty<Integer> {
149269

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)));
152329
}
153330
}
154331
}
155332

156333
class LongPropertyType extends BasicPropertyType<Long> {
157334

158-
static final LongPropertyType INSTANCE = new LongPropertyType();
335+
LongPropertyType(Long value) {
336+
super(value);
337+
}
159338

160339
@Override
161340
public Property<Object, Long> createProperty() {
162-
return new LongProperty();
341+
return new LongProperty(value);
163342
}
164343

165344
static class LongProperty extends BasicProperty<Long> {
166345

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)));
169386
}
170387
}
171388
}

0 commit comments

Comments
 (0)