|
|
@@ -7,6 +7,8 @@ import cz.senslog.analyzer.domain.Timestamp;
|
|
|
import cz.senslog.analyzer.provider.AnalyzerTask;
|
|
|
import cz.senslog.analyzer.storage.inmemory.TimestampStorage;
|
|
|
import cz.senslog.analyzer.storage.permanent.repository.SensLogRepository;
|
|
|
+import org.apache.logging.log4j.LogManager;
|
|
|
+import org.apache.logging.log4j.Logger;
|
|
|
|
|
|
import java.time.OffsetDateTime;
|
|
|
import java.util.*;
|
|
|
@@ -17,6 +19,8 @@ import static cz.senslog.analyzer.util.ListUtils.sublistToEnd;
|
|
|
|
|
|
public class ObservationAnalyzerTask extends AnalyzerTask<Observation> {
|
|
|
|
|
|
+ private static final Logger logger = LogManager.getLogger(ObservationAnalyzerTask.class);
|
|
|
+
|
|
|
private static final int MAX_OBSERVATIONS = 100;
|
|
|
|
|
|
private final TimestampStorage storage;
|
|
|
@@ -41,23 +45,16 @@ public class ObservationAnalyzerTask extends AnalyzerTask<Observation> {
|
|
|
Timestamp firstProvided = storage.get(FIRST_PROVIDED_INCLUSIVE, startDateTime);
|
|
|
Timestamp lastProvidedExclusive = storage.get(LAST_PROVIDED_EXCLUSIVE, Timestamp.MIN);
|
|
|
Timestamp lastProvidedInclusive = storage.get(LAST_PROVIDED_INCLUSIVE, Timestamp.MIN);
|
|
|
- Timestamp acceptedInclusive = storage.get(LAST_ACCEPTED_INCLUSIVE, Timestamp.MIN);
|
|
|
Timestamp committedInclusive = storage.get(LAST_COMMITTED_INCLUSIVE, Timestamp.MIN);
|
|
|
|
|
|
- boolean previousIterationWasProvided = firstProvided.isBefore(lastProvidedExclusive);
|
|
|
- boolean previousIterationStarted = previousIterationWasProvided && (firstProvided.isBefore(acceptedInclusive) || firstProvided.isEqual(acceptedInclusive));
|
|
|
boolean previousIterationWasFinished = firstProvided.isBefore(committedInclusive) || firstProvided.isEqual(committedInclusive);
|
|
|
- boolean previousIterationWasOk = previousIterationWasFinished && committedInclusive.isEqual(acceptedInclusive) && committedInclusive.isEqual(lastProvidedInclusive);
|
|
|
- boolean previousIterationWasInProgress = previousIterationStarted && !previousIterationWasFinished;
|
|
|
+ boolean previousIterationWasOk = previousIterationWasFinished && committedInclusive.isEqual(lastProvidedInclusive);
|
|
|
|
|
|
List<Observation> newObservations;
|
|
|
|
|
|
if (previousIterationWasOk) {
|
|
|
newObservations = repository.getObservationsFromTime(lastProvidedExclusive, true, MAX_OBSERVATIONS);
|
|
|
- } else if (previousIterationWasInProgress) {
|
|
|
- // TODO a problem of more observations at the same timestamp
|
|
|
- newObservations = repository.getObservationsFromTime(acceptedInclusive, false, MAX_OBSERVATIONS);
|
|
|
- } else {
|
|
|
+ } else {
|
|
|
newObservations = repository.getObservationsFromTime(startDateTime, true, MAX_OBSERVATIONS);
|
|
|
}
|
|
|
|