1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.bremersee.geojson.model;
18
19 import static org.bremersee.geojson.GeoJsonConstants.GEOMETRIES;
20
21 import com.fasterxml.jackson.annotation.JsonIgnore;
22 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
23 import com.fasterxml.jackson.annotation.JsonProperty;
24 import io.swagger.v3.oas.annotations.media.Schema;
25 import java.io.Serial;
26 import java.io.Serializable;
27 import java.util.Collection;
28 import java.util.List;
29 import java.util.Optional;
30 import java.util.stream.Collectors;
31 import lombok.Builder;
32 import lombok.EqualsAndHashCode;
33 import lombok.Getter;
34 import lombok.Setter;
35 import lombok.ToString;
36
37
38
39
40
41
42 @Schema(description = "GeoJSON GeometryCollection.")
43 @JsonIgnoreProperties(ignoreUnknown = true)
44 @Getter
45 @Setter
46 @EqualsAndHashCode(callSuper = true)
47 @ToString(callSuper = true)
48 public class GeometryCollection extends Geometry implements Serializable {
49
50 @Serial
51 private static final long serialVersionUID = 1L;
52
53
54
55
56 @Schema(description = "The geometries.")
57 @JsonProperty(GEOMETRIES)
58 private List<Geometry> geometries;
59
60
61
62
63 public GeometryCollection() {
64 setType(TypeEnum.GEOMETRYCOLLECTION);
65 }
66
67
68
69
70
71
72
73 @Builder(toBuilder = true)
74 public GeometryCollection(BoundingBox bbox, List<Geometry> geometries) {
75 super(bbox);
76 setType(TypeEnum.GEOMETRYCOLLECTION);
77 this.geometries = geometries;
78 }
79
80 @Schema(hidden = true)
81 @JsonIgnore
82 @Override
83 Object getGeometryJsonValue() {
84 return Optional.ofNullable(getGeometries())
85 .stream()
86 .flatMap(Collection::stream)
87 .map(Geometry::toJson)
88 .collect(Collectors.toList());
89 }
90
91 }
92