diff options
author | Renaud Allard <renaud@allard.it> | 2016-10-20 08:31:57 +0200 |
---|---|---|
committer | Renaud Allard <renaud@allard.it> | 2016-10-20 08:31:57 +0200 |
commit | 1104c2738e19579c5865db5c030388e1e320f0b4 (patch) | |
tree | a6571455b6f5d88581c8034bd1059968d506ed01 /src/org/traccar/api/resource/PositionResource.java | |
parent | 0d347cd7aac2ebfad01c1635f3893964be2e67ae (diff) | |
parent | 4f7356cc1c6962f46ca522246d5b63dc06a2d268 (diff) | |
download | trackermap-server-1104c2738e19579c5865db5c030388e1e320f0b4.tar.gz trackermap-server-1104c2738e19579c5865db5c030388e1e320f0b4.tar.bz2 trackermap-server-1104c2738e19579c5865db5c030388e1e320f0b4.zip |
Merge branch 'master' of https://github.com/tananaev/traccar
Diffstat (limited to 'src/org/traccar/api/resource/PositionResource.java')
-rw-r--r-- | src/org/traccar/api/resource/PositionResource.java | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/org/traccar/api/resource/PositionResource.java b/src/org/traccar/api/resource/PositionResource.java index e00e06e7a..92b62c0a6 100644 --- a/src/org/traccar/api/resource/PositionResource.java +++ b/src/org/traccar/api/resource/PositionResource.java @@ -18,6 +18,7 @@ package org.traccar.api.resource; import org.traccar.Context; import org.traccar.api.BaseResource; import org.traccar.model.Position; +import org.traccar.web.CsvBuilder; import org.traccar.web.JsonConverter; import javax.ws.rs.Consumes; @@ -25,17 +26,23 @@ import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; +import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + import java.sql.SQLException; import java.util.Collection; @Path("positions") -@Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public class PositionResource extends BaseResource { + public static final String TEXT_CSV = "text/csv"; + public static final String CONTENT_DISPOSITION_VALUE_CSV = "attachment; filename=positions.csv"; + @GET - public Collection<Position> get( + @Produces(MediaType.APPLICATION_JSON) + public Collection<Position> getJson( @QueryParam("deviceId") long deviceId, @QueryParam("from") String from, @QueryParam("to") String to) throws SQLException { if (deviceId == 0) { @@ -47,4 +54,17 @@ public class PositionResource extends BaseResource { } } + @GET + @Produces(TEXT_CSV) + public Response getCsv( + @QueryParam("deviceId") long deviceId, @QueryParam("from") String from, @QueryParam("to") String to) + throws SQLException { + Context.getPermissionsManager().checkDevice(getUserId(), deviceId); + CsvBuilder csv = new CsvBuilder(); + csv.addHeaderLine(new Position()); + csv.addArray(Context.getDataManager().getPositions( + deviceId, JsonConverter.parseDate(from), JsonConverter.parseDate(to))); + return Response.ok(csv.build()).header(HttpHeaders.CONTENT_DISPOSITION, CONTENT_DISPOSITION_VALUE_CSV).build(); + } + } |