fish.focus.uvms.plugins.ais.service.DownsamplingFishingService Maven / Gradle / Ivy
The newest version!
package fish.focus.uvms.plugins.ais.service;
import fish.focus.schema.exchange.movement.v1.MovementBaseType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.ejb.Schedule;
import javax.ejb.Singleton;
import javax.inject.Inject;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
@Singleton
public class DownsamplingFishingService {
private static final Logger LOG = LoggerFactory.getLogger(DownsamplingFishingService.class);
private final ConcurrentMap downSampledFishingVesselMovements = new ConcurrentHashMap<>();
@Inject
private ExchangeService exchangeService;
@Inject
private FailedMovementsService failedMovementsService;
@Schedule(minute = "*/1", hour = "*", persistent = false)
public void handleDownSampledFishingVesselMovements() {
if (downSampledFishingVesselMovements.isEmpty()) {
return;
}
LOG.info("Handle {} downSampledFishingVesselMovements", downSampledFishingVesselMovements.size());
List movements = new ArrayList<>(downSampledFishingVesselMovements.values());
downSampledFishingVesselMovements.clear();
List failedToSendMovements = exchangeService.sendMovements(movements);
failedMovementsService.add(failedToSendMovements);
}
public Map getDownSampledFishingVesselMovements() {
return downSampledFishingVesselMovements;
}
}