aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/traccar/reports/EventsReportProvider.java
diff options
context:
space:
mode:
authorAnton Tananaev <anton@traccar.org>2022-06-10 07:56:49 -0700
committerAnton Tananaev <anton@traccar.org>2022-06-10 07:56:49 -0700
commitbbe84d6a751fdc840e4201ef9027a96527006049 (patch)
tree4165d09a134eb1c1c61438b17fe44f5a1fcd0654 /src/main/java/org/traccar/reports/EventsReportProvider.java
parentc03b4a2ace925e6a0d7c43ce59e14ddb9cbf18a9 (diff)
downloadtrackermap-server-bbe84d6a751fdc840e4201ef9027a96527006049.tar.gz
trackermap-server-bbe84d6a751fdc840e4201ef9027a96527006049.tar.bz2
trackermap-server-bbe84d6a751fdc840e4201ef9027a96527006049.zip
Inject report utils
Diffstat (limited to 'src/main/java/org/traccar/reports/EventsReportProvider.java')
-rw-r--r--src/main/java/org/traccar/reports/EventsReportProvider.java64
1 files changed, 28 insertions, 36 deletions
diff --git a/src/main/java/org/traccar/reports/EventsReportProvider.java b/src/main/java/org/traccar/reports/EventsReportProvider.java
index f0c8c31b6..6de313a13 100644
--- a/src/main/java/org/traccar/reports/EventsReportProvider.java
+++ b/src/main/java/org/traccar/reports/EventsReportProvider.java
@@ -16,19 +16,8 @@
*/
package org.traccar.reports;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-
import org.apache.poi.ss.util.WorkbookUtil;
import org.traccar.Context;
-import org.traccar.api.security.PermissionsService;
import org.traccar.model.Device;
import org.traccar.model.Event;
import org.traccar.model.Geofence;
@@ -36,28 +25,34 @@ import org.traccar.model.Group;
import org.traccar.model.Maintenance;
import org.traccar.reports.common.ReportUtils;
import org.traccar.reports.model.DeviceReportSection;
-import org.traccar.storage.Storage;
import org.traccar.storage.StorageException;
import javax.inject.Inject;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
public class EventsReportProvider {
- private final PermissionsService permissionsService;
- private final Storage storage;
+ private final ReportUtils reportUtils;
@Inject
- public EventsReportProvider(PermissionsService permissionsService, Storage storage) {
- this.permissionsService = permissionsService;
- this.storage = storage;
+ public EventsReportProvider(ReportUtils reportUtils) {
+ this.reportUtils = reportUtils;
}
public Collection<Event> getObjects(
long userId, Collection<Long> deviceIds, Collection<Long> groupIds,
Collection<String> types, Date from, Date to) throws StorageException {
- ReportUtils.checkPeriodLimit(from, to);
+ reportUtils.checkPeriodLimit(from, to);
ArrayList<Event> result = new ArrayList<>();
- for (long deviceId: ReportUtils.getDeviceList(deviceIds, groupIds)) {
+ for (long deviceId: reportUtils.getDeviceList(deviceIds, groupIds)) {
Context.getPermissionsManager().checkDevice(userId, deviceId);
Collection<Event> events = Context.getDataManager().getEvents(deviceId, from, to);
boolean all = types.isEmpty() || types.contains(Event.ALL_EVENTS);
@@ -65,9 +60,9 @@ public class EventsReportProvider {
if (all || types.contains(event.getType())) {
long geofenceId = event.getGeofenceId();
long maintenanceId = event.getMaintenanceId();
- if ((geofenceId == 0 || ReportUtils.getObject(storage, userId, Geofence.class, geofenceId) != null)
+ if ((geofenceId == 0 || reportUtils.getObject(userId, Geofence.class, geofenceId) != null)
&& (maintenanceId == 0
- || ReportUtils.getObject(storage, userId, Maintenance.class, maintenanceId) != null)) {
+ || reportUtils.getObject(userId, Maintenance.class, maintenanceId) != null)) {
result.add(event);
}
}
@@ -79,12 +74,12 @@ public class EventsReportProvider {
public void getExcel(
OutputStream outputStream, long userId, Collection<Long> deviceIds, Collection<Long> groupIds,
Collection<String> types, Date from, Date to) throws StorageException, IOException {
- ReportUtils.checkPeriodLimit(from, to);
+ reportUtils.checkPeriodLimit(from, to);
ArrayList<DeviceReportSection> devicesEvents = new ArrayList<>();
ArrayList<String> sheetNames = new ArrayList<>();
HashMap<Long, String> geofenceNames = new HashMap<>();
HashMap<Long, String> maintenanceNames = new HashMap<>();
- for (long deviceId: ReportUtils.getDeviceList(deviceIds, groupIds)) {
+ for (long deviceId: reportUtils.getDeviceList(deviceIds, groupIds)) {
Context.getPermissionsManager().checkDevice(userId, deviceId);
Collection<Event> events = Context.getDataManager().getEvents(deviceId, from, to);
boolean all = types.isEmpty() || types.contains(Event.ALL_EVENTS);
@@ -94,16 +89,14 @@ public class EventsReportProvider {
long geofenceId = event.getGeofenceId();
long maintenanceId = event.getMaintenanceId();
if (geofenceId != 0) {
- Geofence geofence = ReportUtils.getObject(
- storage, userId, Geofence.class, geofenceId);
+ Geofence geofence = reportUtils.getObject(userId, Geofence.class, geofenceId);
if (geofence != null) {
geofenceNames.put(geofenceId, geofence.getName());
} else {
iterator.remove();
}
} else if (maintenanceId != 0) {
- Maintenance maintenance = ReportUtils.getObject(
- storage, userId, Maintenance.class, maintenanceId);
+ Maintenance maintenance = reportUtils.getObject(userId, Maintenance.class, maintenanceId);
if (maintenance != null) {
maintenanceNames.put(maintenanceId, maintenance.getName());
} else {
@@ -130,15 +123,14 @@ public class EventsReportProvider {
String templatePath = Context.getConfig().getString("report.templatesPath",
"templates/export/");
try (InputStream inputStream = new FileInputStream(templatePath + "/events.xlsx")) {
- var jxlsContext = ReportUtils.initializeContext(
- permissionsService.getServer(), permissionsService.getUser(userId));
- jxlsContext.putVar("devices", devicesEvents);
- jxlsContext.putVar("sheetNames", sheetNames);
- jxlsContext.putVar("geofenceNames", geofenceNames);
- jxlsContext.putVar("maintenanceNames", maintenanceNames);
- jxlsContext.putVar("from", from);
- jxlsContext.putVar("to", to);
- ReportUtils.processTemplateWithSheets(inputStream, outputStream, jxlsContext);
+ var context = reportUtils.initializeContext(userId);
+ context.putVar("devices", devicesEvents);
+ context.putVar("sheetNames", sheetNames);
+ context.putVar("geofenceNames", geofenceNames);
+ context.putVar("maintenanceNames", maintenanceNames);
+ context.putVar("from", from);
+ context.putVar("to", to);
+ reportUtils.processTemplateWithSheets(inputStream, outputStream, context);
}
}
}