1 package org
.argeo
.app
.servlet
.publish
;
3 import java
.io
.IOException
;
4 import java
.io
.InputStream
;
5 import java
.net
.URLDecoder
;
6 import java
.nio
.charset
.StandardCharsets
;
9 import javax
.servlet
.ServletException
;
10 import javax
.servlet
.http
.HttpServlet
;
11 import javax
.servlet
.http
.HttpServletRequest
;
12 import javax
.servlet
.http
.HttpServletResponse
;
14 import org
.argeo
.api
.acr
.Content
;
15 import org
.argeo
.api
.acr
.ContentRepository
;
16 import org
.argeo
.api
.acr
.ContentSession
;
17 import org
.argeo
.app
.geo
.GeoUtils
;
18 import org
.argeo
.app
.geo
.GpxUtils
;
19 import org
.argeo
.cms
.auth
.RemoteAuthUtils
;
20 import org
.argeo
.cms
.servlet
.ServletHttpRequest
;
21 import org
.geotools
.data
.collection
.ListFeatureCollection
;
22 import org
.geotools
.data
.simple
.SimpleFeatureCollection
;
23 import org
.opengis
.feature
.simple
.SimpleFeature
;
26 * A servlet transforming an geographical data to SVG.
28 public class GeoToSvgServlet
extends HttpServlet
{
29 private static final long serialVersionUID
= -6346379324580671894L;
30 private ContentRepository contentRepository
;
33 protected void doGet(HttpServletRequest req
, HttpServletResponse resp
) throws ServletException
, IOException
{
34 String servletPath
= req
.getServletPath();
36 servletPath
= servletPath
.substring(1, servletPath
.lastIndexOf('.'));
37 servletPath
= servletPath
.substring(servletPath
.indexOf('/'), servletPath
.length());
38 String path
= URLDecoder
.decode(servletPath
, StandardCharsets
.UTF_8
);
39 String ext
= servletPath
.substring(path
.lastIndexOf('.'));
41 resp
.setContentType("image/svg+xml");
43 ContentSession session
= RemoteAuthUtils
.doAs(() -> contentRepository
.get(), new ServletHttpRequest(req
));
44 Content content
= session
.get(path
);
45 if (".gpx".equals(ext
)) {
46 try (InputStream in
= content
.open(InputStream
.class)) {
47 SimpleFeature field
= GpxUtils
.parseGpxToPolygon(in
);
49 SimpleFeatureCollection features
= new ListFeatureCollection(field
.getType(), field
);
50 GeoUtils
.exportToSvg(features
, resp
.getWriter(), 100, 100);
51 // log.debug("SVG:\n" + writer.toString() + "\n");
56 public void start(Map
<String
, Object
> properties
) {
59 public void stop(Map
<String
, Object
> properties
) {
63 public void setContentRepository(ContentRepository contentRepository
) {
64 this.contentRepository
= contentRepository
;