CockpitFacilityGeometryResponse.java 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package com.zksy.cockpit.geometry;
  2. import com.fasterxml.jackson.annotation.JsonInclude;
  3. import com.zksy.cockpit.foundation.CockpitCoordinateValidation;
  4. import lombok.AllArgsConstructor;
  5. import lombok.Getter;
  6. import java.math.BigDecimal;
  7. import java.util.List;
  8. /** GeoJSON with explicit source coverage and coordinate eligibility as foreign members. */
  9. @Getter
  10. public class CockpitFacilityGeometryResponse {
  11. private final String type = "FeatureCollection";
  12. private final String generatedAt;
  13. private final List<Feature> features;
  14. private final List<Coverage> coverage;
  15. public CockpitFacilityGeometryResponse(String generatedAt, List<Feature> features, List<Coverage> coverage) {
  16. this.generatedAt = generatedAt;
  17. this.features = features;
  18. this.coverage = coverage;
  19. }
  20. @Getter
  21. @AllArgsConstructor
  22. public static class Feature {
  23. private final String type = "Feature";
  24. private final String id;
  25. @JsonInclude(JsonInclude.Include.ALWAYS)
  26. private final Geometry geometry;
  27. private final Properties properties;
  28. }
  29. @Getter
  30. @AllArgsConstructor
  31. public static class Geometry {
  32. private final String type;
  33. // Point: [lon, lat]; LineString: [[lon, lat], [lon, lat]].
  34. private final List<?> coordinates;
  35. }
  36. @Getter
  37. @AllArgsConstructor
  38. public static class Properties {
  39. private final String source;
  40. private final String sourceId;
  41. private final String code;
  42. private final String name;
  43. private final String industry;
  44. private final String typeCode;
  45. private final String networkType;
  46. @JsonInclude(JsonInclude.Include.ALWAYS)
  47. private final String pointType;
  48. @JsonInclude(JsonInclude.Include.ALWAYS)
  49. private final String networkId;
  50. // Raw pairs remain available for objects whose GeoJSON geometry must be null.
  51. private final List<List<BigDecimal>> sourceCoordinates;
  52. private final CockpitCoordinateValidation coordinateValidation;
  53. // In source order; one for Point, start/end for LineString.
  54. private final List<CockpitCoordinateValidation> coordinateValidations;
  55. }
  56. @Getter
  57. @AllArgsConstructor
  58. public static class Coverage {
  59. private final String industry;
  60. private final String source;
  61. private final String geometryType;
  62. private final String state;
  63. private final String reason;
  64. private final int recordCount;
  65. private final int geometryCount;
  66. private final int renderableCount;
  67. }
  68. }