aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/traccar/api
diff options
context:
space:
mode:
authorLeo Sadovsky <Snowbridge@users.noreply.github.com>2023-01-26 09:50:26 +0300
committerGitHub <noreply@github.com>2023-01-26 09:50:26 +0300
commitb4934e05aab6c875cd1c2d412102e041a79b9210 (patch)
treeb37feb2fc95f9de276f3d1f30252063f7e689c34 /src/main/java/org/traccar/api
parent080c289a8a29244bd46cf029eefabbe426ddd00b (diff)
parent5d572a11870b16668d2803481a2a687d3625abe0 (diff)
downloadtrackermap-server-b4934e05aab6c875cd1c2d412102e041a79b9210.tar.gz
trackermap-server-b4934e05aab6c875cd1c2d412102e041a79b9210.tar.bz2
trackermap-server-b4934e05aab6c875cd1c2d412102e041a79b9210.zip
Merge branch 'traccar:master' into master
Diffstat (limited to 'src/main/java/org/traccar/api')
-rw-r--r--src/main/java/org/traccar/api/resource/CommandResource.java1
-rw-r--r--src/main/java/org/traccar/api/resource/ReportResource.java39
2 files changed, 6 insertions, 34 deletions
diff --git a/src/main/java/org/traccar/api/resource/CommandResource.java b/src/main/java/org/traccar/api/resource/CommandResource.java
index 6ef6ee9c5..3460cf6e0 100644
--- a/src/main/java/org/traccar/api/resource/CommandResource.java
+++ b/src/main/java/org/traccar/api/resource/CommandResource.java
@@ -105,7 +105,6 @@ public class CommandResource extends ExtendedObjectResource<Command> {
@POST
@Path("send")
public Response send(Command entity) throws Exception {
- permissionsService.checkRestriction(getUserId(), UserRestrictions::getReadonly);
if (entity.getId() > 0) {
permissionsService.checkPermission(baseClass, getUserId(), entity.getId());
long deviceId = entity.getDeviceId();
diff --git a/src/main/java/org/traccar/api/resource/ReportResource.java b/src/main/java/org/traccar/api/resource/ReportResource.java
index 70177dd4d..6944de9cb 100644
--- a/src/main/java/org/traccar/api/resource/ReportResource.java
+++ b/src/main/java/org/traccar/api/resource/ReportResource.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2016 - 2022 Anton Tananaev (anton@traccar.org)
+ * Copyright 2016 - 2023 Anton Tananaev (anton@traccar.org)
* Copyright 2016 - 2018 Andrey Kunitsyn (andrey@traccar.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,27 +19,23 @@ package org.traccar.api.resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.traccar.api.BaseResource;
-import org.traccar.mail.MailManager;
import org.traccar.helper.LogAction;
import org.traccar.model.Event;
import org.traccar.model.Position;
-import org.traccar.model.User;
import org.traccar.model.UserRestrictions;
import org.traccar.reports.EventsReportProvider;
import org.traccar.reports.RouteReportProvider;
import org.traccar.reports.StopsReportProvider;
import org.traccar.reports.SummaryReportProvider;
import org.traccar.reports.TripsReportProvider;
+import org.traccar.reports.common.ReportExecutor;
+import org.traccar.reports.common.ReportMailer;
import org.traccar.reports.model.StopReportItem;
import org.traccar.reports.model.SummaryReportItem;
import org.traccar.reports.model.TripReportItem;
import org.traccar.storage.StorageException;
-import javax.activation.DataHandler;
import javax.inject.Inject;
-import javax.mail.MessagingException;
-import javax.mail.internet.MimeBodyPart;
-import javax.mail.util.ByteArrayDataSource;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
@@ -51,9 +47,6 @@ import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.StreamingOutput;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
import java.util.Collection;
import java.util.Date;
import java.util.List;
@@ -83,31 +76,11 @@ public class ReportResource extends BaseResource {
private TripsReportProvider tripsReportProvider;
@Inject
- private MailManager mailManager;
+ private ReportMailer reportMailer;
- private interface ReportExecutor {
- void execute(OutputStream stream) throws StorageException, IOException;
- }
-
- private Response executeReport(
- long userId, boolean mail, ReportExecutor executor) {
+ private Response executeReport(long userId, boolean mail, ReportExecutor executor) {
if (mail) {
- new Thread(() -> {
- try {
- var stream = new ByteArrayOutputStream();
- executor.execute(stream);
-
- MimeBodyPart attachment = new MimeBodyPart();
- attachment.setFileName("report.xlsx");
- attachment.setDataHandler(new DataHandler(new ByteArrayDataSource(
- stream.toByteArray(), "application/octet-stream")));
-
- User user = permissionsService.getUser(userId);
- mailManager.sendMessage(user, "Report", "The report is in the attachment.", attachment);
- } catch (StorageException | IOException | MessagingException e) {
- LOGGER.warn("Report failed", e);
- }
- }).start();
+ reportMailer.sendAsync(userId, executor);
return Response.noContent().build();
} else {
StreamingOutput stream = output -> {