Skip to content

Commit

Permalink
Fix traccar module (#20)
Browse files Browse the repository at this point in the history
  • Loading branch information
TsimurSh authored May 23, 2024
1 parent 672fd6c commit 4a2df88
Showing 1 changed file with 42 additions and 35 deletions.
77 changes: 42 additions & 35 deletions core/src/main/java/org/transitclock/core/avl/TraccarAVLModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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.*;


/**
Expand All @@ -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);

Expand All @@ -99,8 +100,8 @@ protected void getAndProcessData() throws Exception {
Collection<AvlReport> avlReportsReadIn = new ArrayList<>();

List<DeviceDto> devices = api.devicesGet(true, user.getId(), null, null);

List<PositionDto> results = api.positionsGet(null, null, null, null);

for (PositionDto result : results) {
DeviceDto device = findDeviceById(devices, result.getDeviceId());

Expand All @@ -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);
}
Expand Down

0 comments on commit 4a2df88

Please sign in to comment.