aboutsummaryrefslogtreecommitdiff
path: root/src/org/traccar/api/resource/PositionResource.java
diff options
context:
space:
mode:
authorRenaud Allard <renaud@allard.it>2016-10-20 08:31:57 +0200
committerRenaud Allard <renaud@allard.it>2016-10-20 08:31:57 +0200
commit1104c2738e19579c5865db5c030388e1e320f0b4 (patch)
treea6571455b6f5d88581c8034bd1059968d506ed01 /src/org/traccar/api/resource/PositionResource.java
parent0d347cd7aac2ebfad01c1635f3893964be2e67ae (diff)
parent4f7356cc1c6962f46ca522246d5b63dc06a2d268 (diff)
downloadtrackermap-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.java24
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();
+ }
+
}