From 41fef804f5fc161cc51256aa30e15fc048331ab4 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Mon, 11 Mar 2024 09:23:19 +0100 Subject: [PATCH] Refactor Argeo APIs --- .../org/argeo/api/app/geo/FeatureAdapter.java | 18 ++++++++++++++++++ .../{app/api => api/app}/geo/WfsKvp.java | 2 +- .../acr/AbstractFeatureAdapter.java} | 19 +++++++------------ .../argeo/app/geo/http/WfsHttpHandler.java | 4 ++-- 4 files changed, 28 insertions(+), 15 deletions(-) create mode 100644 org.argeo.app.geo/src/org/argeo/api/app/geo/FeatureAdapter.java rename org.argeo.app.geo/src/org/argeo/{app/api => api/app}/geo/WfsKvp.java (93%) rename org.argeo.app.geo/src/org/argeo/app/{api/geo/FeatureAdapter.java => geo/acr/AbstractFeatureAdapter.java} (61%) 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 index 0000000..e0449e1 --- /dev/null +++ b/org.argeo.app.geo/src/org/argeo/api/app/geo/FeatureAdapter.java @@ -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/app/api/geo/WfsKvp.java b/org.argeo.app.geo/src/org/argeo/api/app/geo/WfsKvp.java similarity index 93% rename from org.argeo.app.geo/src/org/argeo/app/api/geo/WfsKvp.java rename to org.argeo.app.geo/src/org/argeo/api/app/geo/WfsKvp.java index 166cdf0..a6eb5d7 100644 --- a/org.argeo.app.geo/src/org/argeo/app/api/geo/WfsKvp.java +++ b/org.argeo.app.geo/src/org/argeo/api/app/geo/WfsKvp.java @@ -1,4 +1,4 @@ -package org.argeo.app.api.geo; +package org.argeo.api.app.geo; /** Keys used for WFS KVP (key-value pair) encoding. */ public enum WfsKvp { diff --git a/org.argeo.app.geo/src/org/argeo/app/api/geo/FeatureAdapter.java b/org.argeo.app.geo/src/org/argeo/app/geo/acr/AbstractFeatureAdapter.java similarity index 61% rename from org.argeo.app.geo/src/org/argeo/app/api/geo/FeatureAdapter.java rename to org.argeo.app.geo/src/org/argeo/app/geo/acr/AbstractFeatureAdapter.java index 1dffbab..95e8216 100644 --- a/org.argeo.app.geo/src/org/argeo/app/api/geo/FeatureAdapter.java +++ b/org.argeo.app.geo/src/org/argeo/app/geo/acr/AbstractFeatureAdapter.java @@ -1,17 +1,15 @@ -package org.argeo.app.api.geo; +package org.argeo.app.geo.acr; 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.argeo.api.app.geo.FeatureAdapter; import org.locationtech.jts.geom.Geometry; -import jakarta.json.stream.JsonGenerator; - -public interface FeatureAdapter { - default Geometry getDefaultGeometry(Content c, QName targetFeature) { +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)) { @@ -20,11 +18,7 @@ public interface FeatureAdapter { return null; } - void writeProperties(JsonGenerator g, Content content, QName targetFeature); - - void addConstraintsForFeature(AndFilter filter, QName targetFeature); - - static Geometry getGeoPointGeometry(Content c) { + protected Geometry getGeoPointGeometry(Content c) { if (c.hasContentClass(EntityType.geopoint)) { return GeoEntityUtils.toPoint(c); // double latitude = c.get(WGS84PosName.lat, Double.class).get(); @@ -36,4 +30,5 @@ public interface FeatureAdapter { } return null; } + } diff --git a/org.argeo.app.geo/src/org/argeo/app/geo/http/WfsHttpHandler.java b/org.argeo.app.geo/src/org/argeo/app/geo/http/WfsHttpHandler.java index 9c0f8dc..21cc6c4 100644 --- a/org.argeo.app.geo/src/org/argeo/app/geo/http/WfsHttpHandler.java +++ b/org.argeo.app.geo/src/org/argeo/app/geo/http/WfsHttpHandler.java @@ -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; -- 2.30.2