Skip to content

Commit d6853dc

Browse files
committed
Replace if with switch.
1 parent 07d37ff commit d6853dc

File tree

5 files changed

+73
-92
lines changed

5 files changed

+73
-92
lines changed

kilo-client/src/main/java/org/httprpc/kilo/io/CSVEncoder.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -200,17 +200,14 @@ private void encode(Object value, Writer writer) throws IOException {
200200
return;
201201
}
202202

203-
if (value instanceof CharSequence text) {
204-
encode(text, writer);
205-
} else if (value instanceof Number number) {
206-
encode(number, writer);
207-
} else if (value instanceof Boolean flag) {
208-
encode(flag, writer);
209-
} else if (value instanceof Date date) {
210-
encode(date, writer);
211-
} else {
212-
encode(value.toString(), writer);
203+
switch (value) {
204+
case CharSequence text -> encode(text, writer);
205+
case Number number -> encode(number, writer);
206+
case Boolean flag -> encode(flag, writer);
207+
case Date date -> encode(date, writer);
208+
default -> encode(value.toString(), writer);
213209
}
210+
214211
}
215212

216213
private void encode(CharSequence text, Writer writer) throws IOException {

kilo-client/src/main/java/org/httprpc/kilo/io/JSONEncoder.java

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -63,34 +63,29 @@ public void write(Object value, Writer writer) throws IOException {
6363
}
6464

6565
private void encode(Object value, Writer writer) throws IOException {
66-
if (value == null) {
67-
writer.append(null);
68-
} else if (value instanceof CharSequence text) {
69-
encode(text, writer);
70-
} else if (value instanceof Float number) {
71-
if (number.isNaN() || number.isInfinite()) {
72-
throw new IllegalArgumentException("Invalid float value.");
66+
switch (value) {
67+
case null -> writer.append(null);
68+
case CharSequence text -> encode(text, writer);
69+
case Float number -> {
70+
if (number.isNaN() || number.isInfinite()) {
71+
throw new IllegalArgumentException("Invalid float value.");
72+
}
73+
74+
encode(number, writer);
7375
}
76+
case Double number -> {
77+
if (number.isNaN() || number.isInfinite()) {
78+
throw new IllegalArgumentException("Invalid double value.");
79+
}
7480

75-
encode(number, writer);
76-
} else if (value instanceof Double number) {
77-
if (number.isNaN() || number.isInfinite()) {
78-
throw new IllegalArgumentException("Invalid double value.");
81+
encode(number, writer);
7982
}
80-
81-
encode(number, writer);
82-
} else if (value instanceof Number number) {
83-
encode(number, writer);
84-
} else if (value instanceof Boolean flag) {
85-
encode(flag, writer);
86-
} else if (value instanceof Date date) {
87-
encode(date, writer);
88-
} else if (value instanceof Iterable<?> iterable) {
89-
encode(iterable, writer);
90-
} else if (value instanceof Map<?, ?> map) {
91-
encode(map, writer);
92-
} else {
93-
encode(value.toString(), writer);
83+
case Number number -> encode(number, writer);
84+
case Boolean flag -> encode(flag, writer);
85+
case Date date -> encode(date, writer);
86+
case Iterable<?> iterable -> encode(iterable, writer);
87+
case Map<?, ?> map -> encode(map, writer);
88+
default -> encode(value.toString(), writer);
9489
}
9590
}
9691

kilo-client/src/main/java/org/httprpc/kilo/io/TemplateEncoder.java

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import java.time.ZonedDateTime;
3131
import java.time.format.DateTimeFormatter;
3232
import java.time.format.FormatStyle;
33-
import java.time.temporal.TemporalAccessor;
3433
import java.util.AbstractMap;
3534
import java.util.Arrays;
3635
import java.util.Date;
@@ -173,39 +172,34 @@ static String format(Object value, DateTimeType dateTimeType, FormatStyle format
173172

174173
var zoneId = timeZone.toZoneId();
175174

176-
TemporalAccessor temporalAccessor;
177-
if (value instanceof Instant instant) {
178-
temporalAccessor = ZonedDateTime.ofInstant(instant, zoneId);
179-
} else if (value instanceof LocalDate localDate) {
180-
temporalAccessor = ZonedDateTime.of(LocalDateTime.of(localDate, LocalTime.MIDNIGHT), zoneId);
181-
} else if (value instanceof LocalTime localTime) {
182-
temporalAccessor = ZonedDateTime.of(LocalDateTime.of(LocalDate.now(), localTime), zoneId);
183-
} else if (value instanceof LocalDateTime localDateTime) {
184-
temporalAccessor = ZonedDateTime.of(localDateTime, zoneId);
185-
} else {
186-
throw new UnsupportedOperationException("Value is not a temporal accessor.");
187-
}
175+
var temporalAccessor = switch (value) {
176+
case Instant instant -> ZonedDateTime.ofInstant(instant, zoneId);
177+
case LocalDate localDate -> ZonedDateTime.of(LocalDateTime.of(localDate, LocalTime.MIDNIGHT), zoneId);
178+
case LocalTime localTime -> ZonedDateTime.of(LocalDateTime.of(LocalDate.now(), localTime), zoneId);
179+
case LocalDateTime localDateTime -> ZonedDateTime.of(localDateTime, zoneId);
180+
case null, default -> throw new UnsupportedOperationException("Value is not a temporal accessor.");
181+
};
188182

189183
return switch (dateTimeType) {
190184
case DATE -> {
191185
if (formatStyle != null) {
192186
yield DateTimeFormatter.ofLocalizedDate(formatStyle).withLocale(locale).format(temporalAccessor);
193187
} else {
194-
yield DateTimeFormatter.ISO_OFFSET_DATE.format(ZonedDateTime.from(temporalAccessor));
188+
yield DateTimeFormatter.ISO_OFFSET_DATE.format(temporalAccessor);
195189
}
196190
}
197191
case TIME -> {
198192
if (formatStyle != null) {
199193
yield DateTimeFormatter.ofLocalizedTime(formatStyle).withLocale(locale).format(temporalAccessor);
200194
} else {
201-
yield DateTimeFormatter.ISO_OFFSET_TIME.format(ZonedDateTime.from(temporalAccessor));
195+
yield DateTimeFormatter.ISO_OFFSET_TIME.format(temporalAccessor);
202196
}
203197
}
204198
case DATE_TIME -> {
205199
if (formatStyle != null) {
206200
yield DateTimeFormatter.ofLocalizedDateTime(formatStyle).withLocale(locale).format(temporalAccessor);
207201
} else {
208-
yield DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.from(temporalAccessor));
202+
yield DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(temporalAccessor);
209203
}
210204
}
211205
};
@@ -630,16 +624,12 @@ private void encode(Object root, Writer writer, Reader reader) throws IOExceptio
630624

631625
var value = getMarkerValue(marker);
632626

633-
Iterator<?> iterator;
634-
if (value == null) {
635-
iterator = java.util.Collections.emptyIterator();
636-
} else if (value instanceof Iterable<?> iterable) {
637-
iterator = iterable.iterator();
638-
} else if (value instanceof Map<?, ?> map) {
639-
iterator = new MapIterator(map);
640-
} else {
641-
throw new IOException("Invalid section element.");
642-
}
627+
var iterator = switch (value) {
628+
case null -> java.util.Collections.emptyIterator();
629+
case Iterable<?> iterable -> iterable.iterator();
630+
case Map<?, ?> map -> new MapIterator(map);
631+
default -> throw new IOException("Invalid section element.");
632+
};
643633

644634
if (iterator.hasNext()) {
645635
var i = 0;

kilo-client/src/main/java/org/httprpc/kilo/sql/QueryBuilder.java

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1475,29 +1475,29 @@ private void apply(PreparedStatement statement, Map<String, ?> arguments) throws
14751475
} else {
14761476
value = argument.toString();
14771477
}
1478-
} else if (argument instanceof Date date) {
1479-
value = date.getTime();
1480-
} else if (argument instanceof LocalDate localDate) {
1481-
value = java.sql.Date.valueOf(localDate);
1482-
} else if (argument instanceof LocalTime localTime) {
1483-
value = java.sql.Time.valueOf(localTime);
1484-
} else if (argument instanceof Instant instant) {
1485-
value = java.sql.Timestamp.from(instant);
14861478
} else {
1487-
var transform = transforms.get(parameter);
1488-
1489-
if (transform != null && argument != null) {
1490-
value = transform.apply(argument);
1491-
} else {
1492-
if (!whitespaceAllowed && argument instanceof String text) {
1493-
var n = text.length();
1494-
1495-
if (n > 0 && (Character.isWhitespace(text.charAt(0)) || Character.isWhitespace(text.charAt(n - 1)))) {
1496-
throw new IllegalArgumentException("Value contains leading or trailing whitespace.");
1479+
switch (argument) {
1480+
case Date date -> value = date.getTime();
1481+
case LocalDate localDate -> value = java.sql.Date.valueOf(localDate);
1482+
case LocalTime localTime -> value = java.sql.Time.valueOf(localTime);
1483+
case Instant instant -> value = java.sql.Timestamp.from(instant);
1484+
case null, default -> {
1485+
var transform = transforms.get(parameter);
1486+
1487+
if (transform != null && argument != null) {
1488+
value = transform.apply(argument);
1489+
} else {
1490+
if (!whitespaceAllowed && argument instanceof String text) {
1491+
var n = text.length();
1492+
1493+
if (n > 0 && (Character.isWhitespace(text.charAt(0)) || Character.isWhitespace(text.charAt(n - 1)))) {
1494+
throw new IllegalArgumentException("Value contains leading or trailing whitespace.");
1495+
}
1496+
}
1497+
1498+
value = argument;
14971499
}
14981500
}
1499-
1500-
value = argument;
15011501
}
15021502
}
15031503

kilo-client/src/main/java/org/httprpc/kilo/sql/ResultSetAdapter.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -66,17 +66,16 @@ public Map<String, Object> next() {
6666

6767
var value = resultSet.getObject(i);
6868

69-
if (value instanceof java.sql.Date date) {
70-
value = date.toLocalDate();
71-
} else if (value instanceof java.sql.Time time) {
72-
value = time.toLocalTime();
73-
} else if (value instanceof java.sql.Timestamp timestamp) {
74-
value = timestamp.toInstant();
75-
} else {
76-
var transform = transforms.get(key);
77-
78-
if (transform != null && value != null) {
79-
value = transform.apply(value);
69+
switch (value) {
70+
case java.sql.Date date -> value = date.toLocalDate();
71+
case java.sql.Time time -> value = time.toLocalTime();
72+
case java.sql.Timestamp timestamp -> value = timestamp.toInstant();
73+
default -> {
74+
var transform = transforms.get(key);
75+
76+
if (transform != null && value != null) {
77+
value = transform.apply(value);
78+
}
8079
}
8180
}
8281

0 commit comments

Comments
 (0)