]> git.argeo.org Git - gpl/argeo-suite.git/blobdiff - org.argeo.app.geo/src/org/argeo/app/geo/http/WfsHttpHandler.java
Deprecate JCR entity definition
[gpl/argeo-suite.git] / org.argeo.app.geo / src / org / argeo / app / geo / http / WfsHttpHandler.java
index 8b2d1597ca587b1ba2b0c0cf9941f02f00236ed6..6eb12796572279509400b7ee3a537ee25f842015 100644 (file)
@@ -18,7 +18,6 @@ import javax.xml.namespace.QName;
 
 import org.argeo.api.acr.Content;
 import org.argeo.api.acr.ContentSession;
-import org.argeo.api.acr.DName;
 import org.argeo.api.acr.NamespaceUtils;
 import org.argeo.api.acr.ldap.LdapAttr;
 import org.argeo.api.acr.search.AndFilter;
@@ -27,13 +26,16 @@ import org.argeo.api.cms.CmsLog;
 import org.argeo.app.api.EntityName;
 import org.argeo.app.api.EntityType;
 import org.argeo.app.api.WGS84PosName;
+import org.argeo.app.api.geo.FeatureAdapter;
 import org.argeo.app.geo.CqlUtils;
-import org.argeo.app.geo.GeoJSon;
+import org.argeo.app.geo.GeoJson;
 import org.argeo.app.geo.GpxUtils;
 import org.argeo.app.geo.JTS;
+import org.argeo.cms.acr.json.AcrJsonUtils;
 import org.argeo.cms.http.HttpHeader;
 import org.argeo.cms.http.server.HttpServerUtils;
 import org.argeo.cms.util.LangUtils;
+import org.argeo.cms.util.StreamUtils;
 import org.geotools.data.DataUtilities;
 import org.geotools.data.geojson.GeoJSONWriter;
 import org.geotools.feature.DefaultFeatureCollection;
@@ -116,8 +118,7 @@ public class WfsHttpHandler implements HttpHandler {
                        if (cql != null) {
                                CqlUtils.filter(search.from(path), cql);
                        } else {
-                               search.from(path).where((and) -> {
-                               });
+                               search.from(path);
                        }
 //                     search.getWhere().any((f) -> {
                        for (QName typeName : typeNames) {
@@ -192,23 +193,54 @@ public class WfsHttpHandler implements HttpHandler {
                                featureAdapter = featureAdapters.get(typeName);
                        }
 
-                       Geometry defaultGeometry = featureAdapter != null ? featureAdapter.getDefaultGeometry(c, typeName)
-                                       : getDefaultGeometry(c);
-                       if (defaultGeometry == null)
-                               return;
-                       generator.writeStartObject();
-                       generator.write("type", "Feature");
-                       String featureId = getFeatureId(c);
-                       if (featureId != null)
-                               generator.write("id", featureId);
-                       GeoJSon.writeBBox(generator, defaultGeometry);
-                       GeoJSon.writeGeometry(generator, defaultGeometry);
-
-                       generator.writeStartObject("properties");
-                       writeTimeProperties(generator, c);
-                       writeProperties(generator, c);
+                       boolean geometryWritten = false;
+//                     if (typeName.getLocalPart().equals("fieldSimpleFeature")) {
+//                             Content area = c.getContent("place.geom.json").orElse(null);
+//                             if (area != null) {
+//                                     generator.writeStartObject();
+//                                     generator.write("type", "Feature");
+//                                     String featureId = getFeatureId(c);
+//                                     if (featureId != null)
+//                                             generator.write("id", featureId);
+//
+//                                     generator.flush();
+//                                     try (InputStream in = area.open(InputStream.class)) {
+//                                             out.write(",\"geometry\":".getBytes());
+//                                             StreamUtils.copy(in, out);                                              
+//                                             //out.flush();
+//                                     } catch (Exception e) {
+//                                             log.error(c.getPath() + " : " + e.getMessage());
+//                                     } finally {
+//                                     }
+//                                     geometryWritten = true;
+//                             }else {
+//                                     return;
+//                             }
+//                     }
+
+                       if (!geometryWritten) {
+
+                               Geometry defaultGeometry = featureAdapter != null ? featureAdapter.getDefaultGeometry(c, typeName)
+                                               : getDefaultGeometry(c);
+                               if (defaultGeometry == null)
+                                       return;
+                               generator.writeStartObject();
+                               generator.write("type", "Feature");
+                               String featureId = getFeatureId(c);
+                               if (featureId != null)
+                                       generator.write("id", featureId);
+
+//                     GeoJson.writeBBox(generator, defaultGeometry);
+                               generator.writeStartObject(GeoJson.GEOMETRY);
+                               GeoJson.writeGeometry(generator, defaultGeometry);
+                               generator.writeEnd();// geometry object
+                       }
+                       generator.writeStartObject(GeoJson.PROPERTIES);
+                       AcrJsonUtils.writeTimeProperties(generator, c);
                        if (featureAdapter != null)
                                featureAdapter.writeProperties(generator, c, typeName);
+                       else
+                               writeProperties(generator, c);
                        generator.writeEnd();// properties object
 
                        generator.writeEnd();// feature object
@@ -243,24 +275,7 @@ public class WfsHttpHandler implements HttpHandler {
                return uuid;
        }
 
-       private final QName JCR_CREATED = NamespaceUtils.parsePrefixedName("jcr:created");
-
-       private final QName JCR_LAST_MODIFIED = NamespaceUtils.parsePrefixedName("jcr:lastModified");
-
-       protected void writeTimeProperties(JsonGenerator g, Content content) {
-               String creationDate = content.attr(DName.creationdate);
-               if (creationDate == null)
-                       creationDate = content.attr(JCR_CREATED);
-               if (creationDate != null)
-                       g.write(DName.creationdate.get(), creationDate);
-               String lastModified = content.attr(DName.getlastmodified);
-               if (lastModified == null)
-                       lastModified = content.attr(JCR_LAST_MODIFIED);
-               if (lastModified != null)
-                       g.write(DName.getlastmodified.get(), lastModified);
-       }
-
-       protected void writeProperties(JsonGenerator generator, Content content) {
+       public void writeProperties(JsonGenerator generator, Content content) {
                String path = content.getPath();
                generator.write("path", path);
                if (content.hasContentClass(EntityType.local)) {