diff --git a/core/src/main/java/org/transitclock/core/avl/TraccarAVLModule.java b/core/src/main/java/org/transitclock/core/avl/TraccarAVLModule.java index 5afb5bbd..eaba08ff 100644 --- a/core/src/main/java/org/transitclock/core/avl/TraccarAVLModule.java +++ b/core/src/main/java/org/transitclock/core/avl/TraccarAVLModule.java @@ -16,22 +16,6 @@ */ package org.transitclock.core.avl; -import java.io.InputStream; -import java.math.BigDecimal; -import java.net.URISyntaxException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Objects; - -import org.transitclock.domain.structs.AvlReport; -import org.transitclock.extension.traccar.ApiClient; -import org.transitclock.extension.traccar.ApiException; -import org.transitclock.extension.traccar.api.DefaultApi; -import org.transitclock.extension.traccar.model.DeviceDto; -import org.transitclock.extension.traccar.model.PositionDto; -import org.transitclock.extension.traccar.model.UserDto; - import lombok.NonNull; import lombok.extern.slf4j.Slf4j; import org.apache.hc.client5.http.auth.AuthCache; @@ -42,11 +26,23 @@ import org.apache.hc.client5.http.impl.auth.BasicScheme; import org.apache.hc.client5.http.impl.classic.HttpClientBuilder; import org.apache.hc.core5.http.HttpHost; +import org.transitclock.domain.structs.AvlReport; +import org.transitclock.extension.traccar.ApiClient; +import org.transitclock.extension.traccar.ApiException; +import org.transitclock.extension.traccar.api.DefaultApi; +import org.transitclock.extension.traccar.model.DeviceDto; +import org.transitclock.extension.traccar.model.PositionDto; +import org.transitclock.extension.traccar.model.UserDto; + +import java.io.InputStream; +import java.math.BigDecimal; +import java.net.URISyntaxException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Objects; -import static org.transitclock.config.data.TraccarConfig.TRACCARBASEURL; -import static org.transitclock.config.data.TraccarConfig.TRACCAREMAIL; -import static org.transitclock.config.data.TraccarConfig.TRACCARPASSWORD; -import static org.transitclock.config.data.TraccarConfig.TRACCARSOURCE; +import static org.transitclock.config.data.TraccarConfig.*; /** @@ -68,20 +64,25 @@ public class TraccarAVLModule extends PollUrlAvlModule { public TraccarAVLModule(String agencyId) throws URISyntaxException { super(agencyId); useCompression = false; + ApiClient client; + try { + var host = HttpHost.create(TRACCARBASEURL.getValue()); + var httpClientBuilder = HttpClientBuilder.create(); - var host = HttpHost.create(TRACCARBASEURL.getValue()); - var httpClientBuilder = HttpClientBuilder.create(); - - final AuthCache authCache = new BasicAuthCache(); - authCache.put(host, new BasicScheme()); + final AuthCache authCache = new BasicAuthCache(); + authCache.put(host, new BasicScheme()); - var provider = new BasicCredentialsProvider(); - provider.setCredentials(new AuthScope(host), new UsernamePasswordCredentials(TRACCAREMAIL.getValue(), TRACCARPASSWORD.getValue().toCharArray())); - httpClientBuilder.setDefaultCredentialsProvider(provider); + var provider = new BasicCredentialsProvider(); + provider.setCredentials(new AuthScope(host), new UsernamePasswordCredentials(TRACCAREMAIL.getValue(), TRACCARPASSWORD.getValue().toCharArray())); + httpClientBuilder.setDefaultCredentialsProvider(provider); - ApiClient client = new ApiClient(httpClientBuilder.build()); + client = new ApiClient(httpClientBuilder.build()); + } catch (Exception ex) { + logger.warn("Unsuccessful traccar authorisation: {} ", ex.toString()); + client = new ApiClient(); + } client.setBasePath(TRACCARBASEURL.getValue()); - client.setUsername(TRACCARPASSWORD.getValue()); + client.setUsername(TRACCAREMAIL.getValue()); client.setPassword(TRACCARPASSWORD.getValue()); this.api = new DefaultApi(client); @@ -99,8 +100,8 @@ protected void getAndProcessData() throws Exception { Collection avlReportsReadIn = new ArrayList<>(); List devices = api.devicesGet(true, user.getId(), null, null); - List results = api.positionsGet(null, null, null, null); + for (PositionDto result : results) { DeviceDto device = findDeviceById(devices, result.getDeviceId()); @@ -110,12 +111,18 @@ protected void getAndProcessData() throws Exception { if (device != null && device.getUniqueId() != null && !device.getUniqueId().isEmpty()) { //Traccar return speed in kt avlReport = new AvlReport(device.getUniqueId(), device.getName(), - result.getDeviceTime().toEpochSecond(), result.getLatitude().doubleValue(), - result.getLongitude().doubleValue(), result.getSpeed().multiply(BigDecimal.valueOf(0.5144444)).floatValue(), result.getCourse().floatValue(), TRACCARSOURCE.toString()); + result.getDeviceTime().toEpochSecond() * 1000, + result.getLatitude().doubleValue(), + result.getLongitude().doubleValue(), + result.getSpeed().multiply(BigDecimal.valueOf(0.5144444)).floatValue(), + result.getCourse().floatValue(), TRACCARSOURCE.toString()); } else { avlReport = new AvlReport(result.getDeviceId().toString(), - result.getDeviceTime().toEpochSecond(), result.getLatitude().doubleValue(), - result.getLongitude().doubleValue(), result.getSpeed().multiply(BigDecimal.valueOf(0.5144444)).floatValue(), result.getCourse().floatValue(), TRACCARSOURCE.toString()); + result.getDeviceTime().toEpochSecond() * 1000, + result.getLatitude().doubleValue(), + result.getLongitude().doubleValue(), + result.getSpeed().multiply(BigDecimal.valueOf(0.5144444)).floatValue(), + result.getCourse().floatValue(), TRACCARSOURCE.toString()); } avlReportsReadIn.add(avlReport); }