aboutsummaryrefslogtreecommitdiff
path: root/src/org/traccar
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2016-08-10 14:06:39 +0300
committerGitHub <noreply@github.com>2016-08-10 14:06:39 +0300
commit40e26cbf38a236f3c92e50dff619b1a29bd413de (patch)
tree450026b9cda50c8cafdf3a15ce07ed3bbccfbc3c /src/org/traccar
parent78f8d278276f0826eb302a08213609b083570760 (diff)
parentee5af32f8a9bc1edd7af02dfe3f243ebfdfb8641 (diff)
downloadtraccar-server-40e26cbf38a236f3c92e50dff619b1a29bd413de.tar.gz
traccar-server-40e26cbf38a236f3c92e50dff619b1a29bd413de.tar.bz2
traccar-server-40e26cbf38a236f3c92e50dff619b1a29bd413de.zip
Merge pull request #2197 from Abyss777/reports_web
Initial implementation Report API for web
Diffstat (limited to 'src/org/traccar')
-rw-r--r--src/org/traccar/api/resource/ReportResource.java31
-rw-r--r--src/org/traccar/reports/Events.java9
-rw-r--r--src/org/traccar/reports/Route.java9
-rw-r--r--src/org/traccar/reports/Summary.java9
-rw-r--r--src/org/traccar/reports/model/SummaryReport.java8
5 files changed, 44 insertions, 22 deletions
diff --git a/src/org/traccar/api/resource/ReportResource.java b/src/org/traccar/api/resource/ReportResource.java
index 8682070b1..e87d6401c 100644
--- a/src/org/traccar/api/resource/ReportResource.java
+++ b/src/org/traccar/api/resource/ReportResource.java
@@ -8,6 +8,8 @@ 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 org.traccar.api.BaseResource;
@@ -17,12 +19,15 @@ import org.traccar.reports.Route;
import org.traccar.web.JsonConverter;
@Path("reports")
-@Consumes("application/json")
+@Consumes(MediaType.APPLICATION_JSON)
public class ReportResource extends BaseResource {
+ public static final String TEXT_CSV = "text/csv";
+ public static final String CONTENT_DISPOSITION_VALUE = "attachment; filename=report.csv";
+
@Path("route")
@GET
- @Produces("application/json")
+ @Produces(MediaType.APPLICATION_JSON)
public Response getRouteJson(
@QueryParam("deviceId") final List<Long> deviceIds, @QueryParam("groupId") final List<Long> groupIds,
@QueryParam("from") String from, @QueryParam("to") String to) throws SQLException {
@@ -32,17 +37,19 @@ public class ReportResource extends BaseResource {
@Path("route")
@GET
- @Produces("application/ms-excel")
+ @Produces(TEXT_CSV)
public Response getRouteCsv(
@QueryParam("deviceId") final List<Long> deviceIds, @QueryParam("groupId") final List<Long> groupIds,
@QueryParam("from") String from, @QueryParam("to") String to) throws SQLException {
return Response.ok(Route.getCsv(getUserId(), deviceIds, groupIds,
- JsonConverter.parseDate(from), JsonConverter.parseDate(to))).build();
+ JsonConverter.parseDate(from), JsonConverter.parseDate(to)))
+ .header(HttpHeaders.CONTENT_DISPOSITION, CONTENT_DISPOSITION_VALUE)
+ .build();
}
@Path("events")
@GET
- @Produces("application/json")
+ @Produces(MediaType.APPLICATION_JSON)
public Response getEventsJson(
@QueryParam("deviceId") final List<Long> deviceIds, @QueryParam("groupId") final List<Long> groupIds,
@QueryParam("type") final List<String> types,
@@ -53,18 +60,20 @@ public class ReportResource extends BaseResource {
@Path("events")
@GET
- @Produces("application/ms-excel")
+ @Produces(TEXT_CSV)
public Response getEventsCsv(
@QueryParam("deviceId") final List<Long> deviceIds, @QueryParam("groupId") final List<Long> groupIds,
@QueryParam("type") final List<String> types,
@QueryParam("from") String from, @QueryParam("to") String to) throws SQLException {
return Response.ok(Events.getCsv(getUserId(), deviceIds, groupIds,
- types, JsonConverter.parseDate(from), JsonConverter.parseDate(to))).build();
+ types, JsonConverter.parseDate(from), JsonConverter.parseDate(to)))
+ .header(HttpHeaders.CONTENT_DISPOSITION, CONTENT_DISPOSITION_VALUE)
+ .build();
}
@Path("summary")
@GET
- @Produces("application/json")
+ @Produces(MediaType.APPLICATION_JSON)
public Response getSummaryJson(
@QueryParam("deviceId") final List<Long> deviceIds, @QueryParam("groupId") final List<Long> groupIds,
@QueryParam("from") String from, @QueryParam("to") String to) throws SQLException {
@@ -74,12 +83,14 @@ public class ReportResource extends BaseResource {
@Path("summary")
@GET
- @Produces("application/ms-excel")
+ @Produces(TEXT_CSV)
public Response getSummaryCsv(
@QueryParam("deviceId") final List<Long> deviceIds, @QueryParam("groupId") final List<Long> groupIds,
@QueryParam("from") String from, @QueryParam("to") String to) throws SQLException {
return Response.ok(Summary.getCsv(getUserId(), deviceIds, groupIds,
- JsonConverter.parseDate(from), JsonConverter.parseDate(to))).build();
+ JsonConverter.parseDate(from), JsonConverter.parseDate(to)))
+ .header(HttpHeaders.CONTENT_DISPOSITION, CONTENT_DISPOSITION_VALUE)
+ .build();
}
}
diff --git a/src/org/traccar/reports/Events.java b/src/org/traccar/reports/Events.java
index 9e14bd3db..fbbd3131b 100644
--- a/src/org/traccar/reports/Events.java
+++ b/src/org/traccar/reports/Events.java
@@ -5,7 +5,7 @@ import java.util.Collection;
import java.util.Date;
import javax.json.Json;
-import javax.json.JsonObjectBuilder;
+import javax.json.JsonArrayBuilder;
import org.traccar.Context;
import org.traccar.model.Event;
@@ -19,12 +19,13 @@ public final class Events {
public static String getJson(long userId, Collection<Long> deviceIds, Collection<Long> groupIds,
Collection<String> types, Date from, Date to) throws SQLException {
- JsonObjectBuilder json = Json.createObjectBuilder();
+ JsonArrayBuilder json = Json.createArrayBuilder();
for (long deviceId: ReportUtils.getDeviceList(deviceIds, groupIds)) {
Context.getPermissionsManager().checkDevice(userId, deviceId);
for (String type : types) {
- json.add(String.valueOf(deviceId), JsonConverter.arrayToJson(Context.getDataManager()
- .getEvents(deviceId, type, from, to)));
+ for (Event event : Context.getDataManager().getEvents(deviceId, type, from, to)) {
+ json.add(JsonConverter.objectToJson(event));
+ }
}
}
return json.build().toString();
diff --git a/src/org/traccar/reports/Route.java b/src/org/traccar/reports/Route.java
index 7abe5c194..9622151e7 100644
--- a/src/org/traccar/reports/Route.java
+++ b/src/org/traccar/reports/Route.java
@@ -5,7 +5,7 @@ import java.util.Collection;
import java.util.Date;
import javax.json.Json;
-import javax.json.JsonObjectBuilder;
+import javax.json.JsonArrayBuilder;
import org.traccar.Context;
import org.traccar.model.Position;
@@ -19,11 +19,12 @@ public final class Route {
public static String getJson(long userId, Collection<Long> deviceIds, Collection<Long> groupIds,
Date from, Date to) throws SQLException {
- JsonObjectBuilder json = Json.createObjectBuilder();
+ JsonArrayBuilder json = Json.createArrayBuilder();
for (long deviceId: ReportUtils.getDeviceList(deviceIds, groupIds)) {
Context.getPermissionsManager().checkDevice(userId, deviceId);
- json.add(String.valueOf(deviceId), JsonConverter.arrayToJson(Context.getDataManager()
- .getPositions(deviceId, from, to)));
+ for (Position position : Context.getDataManager().getPositions(deviceId, from, to)) {
+ json.add(JsonConverter.objectToJson(position));
+ }
}
return json.build().toString();
}
diff --git a/src/org/traccar/reports/Summary.java b/src/org/traccar/reports/Summary.java
index 474562002..e0da1c87e 100644
--- a/src/org/traccar/reports/Summary.java
+++ b/src/org/traccar/reports/Summary.java
@@ -7,7 +7,7 @@ import java.util.Collection;
import java.util.Date;
import javax.json.Json;
-import javax.json.JsonObjectBuilder;
+import javax.json.JsonArrayBuilder;
import org.traccar.Context;
import org.traccar.helper.DistanceCalculator;
@@ -23,9 +23,10 @@ public final class Summary {
private static SummaryReport calculateGeneralResult(long deviceId, Date from, Date to) throws SQLException {
SummaryReport result = new SummaryReport();
+ result.setDeviceId(deviceId);
+ result.setDeviceName(Context.getDeviceManager().getDeviceById(deviceId).getName());
Collection<Position> positions = Context.getDataManager().getPositions(deviceId, from, to);
if (positions != null && !positions.isEmpty()) {
- result.setDeviceName(Context.getDeviceManager().getDeviceById(deviceId).getName());
Position previousPosition = null;
double speedSum = 0;
for (Position position : positions) {
@@ -45,10 +46,10 @@ public final class Summary {
public static String getJson(long userId, Collection<Long> deviceIds, Collection<Long> groupIds,
Date from, Date to) throws SQLException {
- JsonObjectBuilder json = Json.createObjectBuilder();
+ JsonArrayBuilder json = Json.createArrayBuilder();
for (long deviceId: ReportUtils.getDeviceList(deviceIds, groupIds)) {
Context.getPermissionsManager().checkDevice(userId, deviceId);
- json.add(String.valueOf(deviceId), JsonConverter.objectToJson(calculateGeneralResult(deviceId, from, to)));
+ json.add(JsonConverter.objectToJson(calculateGeneralResult(deviceId, from, to)));
}
return json.build().toString();
}
diff --git a/src/org/traccar/reports/model/SummaryReport.java b/src/org/traccar/reports/model/SummaryReport.java
index aed3915f1..e42727eaf 100644
--- a/src/org/traccar/reports/model/SummaryReport.java
+++ b/src/org/traccar/reports/model/SummaryReport.java
@@ -2,6 +2,14 @@ package org.traccar.reports.model;
public class SummaryReport {
+ private long deviceId;
+ public long getDeviceId() {
+ return deviceId;
+ }
+ public void setDeviceId(long deviceId) {
+ this.deviceId = deviceId;
+ }
+
private String deviceName;
public String getDeviceName() {
return deviceName;