1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.bremersee.geojson.converter.deserialization;
18
19 import java.io.Serial;
20 import java.io.Serializable;
21 import java.util.List;
22 import java.util.Objects;
23 import org.locationtech.jts.geom.Coordinate;
24
25
26
27
28
29
30 class ObjectToCoordinateConverter implements Serializable {
31
32 @Serial
33 private static final long serialVersionUID = 1L;
34
35 private final ObjectToDoubleConverter doubleConverter = new ObjectToDoubleConverter();
36
37
38
39
40
41
42
43 Coordinate convert(Object source) {
44 if (Objects.isNull(source)) {
45 throw new IllegalArgumentException("Coordinate must be present.");
46 }
47
48 List<Object> list = (List<Object>) source;
49 Coordinate coordinate;
50 if (list.size() >= 3) {
51 coordinate = new Coordinate(
52 doubleConverter.convert(list.get(0)),
53 doubleConverter.convert(list.get(1)),
54 doubleConverter.convert(list.get(2)));
55 } else if (list.size() == 2) {
56 coordinate = new Coordinate(
57 doubleConverter.convert(list.get(0)),
58 doubleConverter.convert(list.get(1)));
59 } else if (list.size() == 1) {
60 coordinate = new Coordinate(
61 doubleConverter.convert(list.get(0)),
62 Double.NaN);
63 } else {
64 coordinate = null;
65 }
66 return coordinate;
67 }
68
69 }