Refactor Argeo APIs
authorMathieu Baudier <mbaudier@argeo.org>
Mon, 11 Mar 2024 08:23:19 +0000 (09:23 +0100)
committerMathieu Baudier <mbaudier@argeo.org>
Mon, 11 Mar 2024 08:23:19 +0000 (09:23 +0100)
org.argeo.app.geo/src/org/argeo/api/app/geo/FeatureAdapter.java [new file with mode: 0644]
org.argeo.app.geo/src/org/argeo/api/app/geo/WfsKvp.java [new file with mode: 0644]
org.argeo.app.geo/src/org/argeo/app/api/geo/FeatureAdapter.java [deleted file]
org.argeo.app.geo/src/org/argeo/app/api/geo/WfsKvp.java [deleted file]
org.argeo.app.geo/src/org/argeo/app/geo/acr/AbstractFeatureAdapter.java [new file with mode: 0644]
org.argeo.app.geo/src/org/argeo/app/geo/http/WfsHttpHandler.java

diff --git a/org.argeo.app.geo/src/org/argeo/api/app/geo/FeatureAdapter.java b/org.argeo.app.geo/src/org/argeo/api/app/geo/FeatureAdapter.java
new file mode 100644 (file)
index 0000000..e0449e1
--- /dev/null
@@ -0,0 +1,18 @@
+package org.argeo.api.app.geo;
+
+import javax.xml.namespace.QName;
+
+import org.argeo.api.acr.Content;
+import org.argeo.api.acr.search.AndFilter;
+import org.locationtech.jts.geom.Geometry;
+
+import jakarta.json.stream.JsonGenerator;
+
+/** Transform a {@link Content} to an OGC feature. */
+public interface FeatureAdapter {
+       Geometry getDefaultGeometry(Content c, QName targetFeature);
+
+       void writeProperties(JsonGenerator g, Content content, QName targetFeature);
+
+       void addConstraintsForFeature(AndFilter filter, QName targetFeature);
+}
diff --git a/org.argeo.app.geo/src/org/argeo/api/app/geo/WfsKvp.java b/org.argeo.app.geo/src/org/argeo/api/app/geo/WfsKvp.java
new file mode 100644 (file)
index 0000000..a6eb5d7
--- /dev/null
@@ -0,0 +1,24 @@
+package org.argeo.api.app.geo;
+
+/** Keys used for WFS KVP (key-value pair) encoding. */
+public enum WfsKvp {
+       CQL_FILTER("cql_filter"), //
+       OUTPUT_FORMAT("outputFormat"), //
+       TYPE_NAMES("typeNames"), //
+       BBOX("bbox"), //
+       FORMAT_OPTIONS("format_options"), //
+       ;
+
+       public final static String FILENAME_ = "filename:";
+
+       private final String key;
+
+       private WfsKvp(String key) {
+               this.key = key;
+       }
+
+       public String getKey() {
+               return key;
+       }
+
+}
diff --git a/org.argeo.app.geo/src/org/argeo/app/api/geo/FeatureAdapter.java b/org.argeo.app.geo/src/org/argeo/app/api/geo/FeatureAdapter.java
deleted file mode 100644 (file)
index 1dffbab..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.argeo.app.api.geo;
-
-import javax.xml.namespace.QName;
-
-import org.argeo.api.acr.Content;
-import org.argeo.api.acr.search.AndFilter;
-import org.argeo.api.app.EntityType;
-import org.argeo.app.geo.acr.GeoEntityUtils;
-import org.locationtech.jts.geom.Geometry;
-
-import jakarta.json.stream.JsonGenerator;
-
-public interface FeatureAdapter {
-       default Geometry getDefaultGeometry(Content c, QName targetFeature) {
-               // TODO deal with more defaults
-               // TODO deal with target feature
-               if (c.hasContentClass(EntityType.geopoint)) {
-                       return getGeoPointGeometry(c);
-               }
-               return null;
-       }
-
-       void writeProperties(JsonGenerator g, Content content, QName targetFeature);
-
-       void addConstraintsForFeature(AndFilter filter, QName targetFeature);
-
-       static Geometry getGeoPointGeometry(Content c) {
-               if (c.hasContentClass(EntityType.geopoint)) {
-                       return GeoEntityUtils.toPoint(c);
-//                     double latitude = c.get(WGS84PosName.lat, Double.class).get();
-//                     double longitude = c.get(WGS84PosName.lon, Double.class).get();
-//
-//                     Coordinate coordinate = new Coordinate(longitude, latitude);
-//                     Point the_geom = JTS.GEOMETRY_FACTORY.createPoint(coordinate);
-//                     return the_geom;
-               }
-               return null;
-       }
-}
diff --git a/org.argeo.app.geo/src/org/argeo/app/api/geo/WfsKvp.java b/org.argeo.app.geo/src/org/argeo/app/api/geo/WfsKvp.java
deleted file mode 100644 (file)
index 166cdf0..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-package org.argeo.app.api.geo;
-
-/** Keys used for WFS KVP (key-value pair) encoding. */
-public enum WfsKvp {
-       CQL_FILTER("cql_filter"), //
-       OUTPUT_FORMAT("outputFormat"), //
-       TYPE_NAMES("typeNames"), //
-       BBOX("bbox"), //
-       FORMAT_OPTIONS("format_options"), //
-       ;
-
-       public final static String FILENAME_ = "filename:";
-
-       private final String key;
-
-       private WfsKvp(String key) {
-               this.key = key;
-       }
-
-       public String getKey() {
-               return key;
-       }
-
-}
diff --git a/org.argeo.app.geo/src/org/argeo/app/geo/acr/AbstractFeatureAdapter.java b/org.argeo.app.geo/src/org/argeo/app/geo/acr/AbstractFeatureAdapter.java
new file mode 100644 (file)
index 0000000..95e8216
--- /dev/null
@@ -0,0 +1,34 @@
+package org.argeo.app.geo.acr;
+
+import javax.xml.namespace.QName;
+
+import org.argeo.api.acr.Content;
+import org.argeo.api.app.EntityType;
+import org.argeo.api.app.geo.FeatureAdapter;
+import org.locationtech.jts.geom.Geometry;
+
+public abstract class AbstractFeatureAdapter implements FeatureAdapter {
+       @Override
+       public Geometry getDefaultGeometry(Content c, QName targetFeature) {
+               // TODO deal with more defaults
+               // TODO deal with target feature
+               if (c.hasContentClass(EntityType.geopoint)) {
+                       return getGeoPointGeometry(c);
+               }
+               return null;
+       }
+
+       protected Geometry getGeoPointGeometry(Content c) {
+               if (c.hasContentClass(EntityType.geopoint)) {
+                       return GeoEntityUtils.toPoint(c);
+//                     double latitude = c.get(WGS84PosName.lat, Double.class).get();
+//                     double longitude = c.get(WGS84PosName.lon, Double.class).get();
+//
+//                     Coordinate coordinate = new Coordinate(longitude, latitude);
+//                     Point the_geom = JTS.GEOMETRY_FACTORY.createPoint(coordinate);
+//                     return the_geom;
+               }
+               return null;
+       }
+
+}
index 9c0f8dc20153a48b925fd02100e0b20283985c30..21cc6c40062a10548c137dd182122af104e427a8 100644 (file)
@@ -25,9 +25,9 @@ import org.argeo.api.acr.spi.ProvidedRepository;
 import org.argeo.api.app.EntityName;
 import org.argeo.api.app.EntityType;
 import org.argeo.api.app.WGS84PosName;
+import org.argeo.api.app.geo.FeatureAdapter;
+import org.argeo.api.app.geo.WfsKvp;
 import org.argeo.api.cms.CmsLog;
-import org.argeo.app.api.geo.FeatureAdapter;
-import org.argeo.app.api.geo.WfsKvp;
 import org.argeo.app.geo.CqlUtils;
 import org.argeo.app.geo.GeoJson;
 import org.argeo.app.geo.GeoUtils;