Generalize runtime source-kind filtering
This commit is contained in:
parent
5cf0cedc41
commit
84922f6c44
|
|
@ -3,7 +3,6 @@ package at.procon.eventhub.processing.dto;
|
|||
import at.procon.eventhub.processing.model.UnifiedEventSourceFamily;
|
||||
import at.procon.eventhub.processing.model.UnifiedRuntimeEventBackend;
|
||||
import at.procon.eventhub.processing.model.UnifiedRuntimeProcessingRequest;
|
||||
import at.procon.eventhub.processing.model.UnifiedTachographSourceKind;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
|
@ -16,7 +15,7 @@ public record UnifiedRuntimeProcessingApiRequest(
|
|||
String tenantKey,
|
||||
Set<UnifiedEventSourceFamily> sourceFamilies,
|
||||
UnifiedRuntimeEventBackend eventBackend,
|
||||
Set<UnifiedTachographSourceKind> tachographSourceKinds,
|
||||
Set<String> sourceKinds,
|
||||
String driverKey,
|
||||
Set<String> driverKeys,
|
||||
Boolean includeAllDrivers,
|
||||
|
|
@ -43,7 +42,7 @@ public record UnifiedRuntimeProcessingApiRequest(
|
|||
String tenantKey,
|
||||
Set<UnifiedEventSourceFamily> sourceFamilies,
|
||||
UnifiedRuntimeEventBackend eventBackend,
|
||||
Set<UnifiedTachographSourceKind> tachographSourceKinds,
|
||||
Set<String> sourceKinds,
|
||||
String driverKey,
|
||||
Set<String> driverKeys,
|
||||
Boolean includeAllDrivers,
|
||||
|
|
@ -69,7 +68,7 @@ public record UnifiedRuntimeProcessingApiRequest(
|
|||
tenantKey,
|
||||
sourceFamilies,
|
||||
eventBackend,
|
||||
tachographSourceKinds,
|
||||
sourceKinds,
|
||||
driverKey,
|
||||
driverKeys,
|
||||
includeAllDrivers,
|
||||
|
|
@ -99,7 +98,7 @@ public record UnifiedRuntimeProcessingApiRequest(
|
|||
tenantKey,
|
||||
sourceFamilies,
|
||||
eventBackend,
|
||||
tachographSourceKinds,
|
||||
sourceKinds,
|
||||
driverKey,
|
||||
driverKeys,
|
||||
includeAllDrivers != null && includeAllDrivers,
|
||||
|
|
|
|||
|
|
@ -388,7 +388,7 @@ public class DriverWorkingTimeRuntimeProcessingPlan implements RuntimeProcessing
|
|||
sourceSelection.tenantKey(),
|
||||
sourceSelection.sourceFamilies(),
|
||||
sourceSelection.eventBackend(),
|
||||
sourceSelection.tachographSourceKinds(),
|
||||
sourceSelection.sourceKinds(),
|
||||
sourceSelection.driverKey(),
|
||||
driverKeys,
|
||||
includeAllDrivers,
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ package at.procon.eventhub.processing.model;
|
|||
import at.procon.eventhub.reference.DriverCardNumberNormalizer;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
|
@ -17,7 +16,7 @@ public record UnifiedRuntimeProcessingRequest(
|
|||
String tenantKey,
|
||||
Set<UnifiedEventSourceFamily> sourceFamilies,
|
||||
UnifiedRuntimeEventBackend eventBackend,
|
||||
Set<UnifiedTachographSourceKind> tachographSourceKinds,
|
||||
Set<String> sourceKinds,
|
||||
String driverKey,
|
||||
Set<String> driverKeys,
|
||||
boolean includeAllDrivers,
|
||||
|
|
@ -40,7 +39,7 @@ public record UnifiedRuntimeProcessingRequest(
|
|||
String tenantKey,
|
||||
Set<UnifiedEventSourceFamily> sourceFamilies,
|
||||
UnifiedRuntimeEventBackend eventBackend,
|
||||
Set<UnifiedTachographSourceKind> tachographSourceKinds,
|
||||
Set<String> sourceKinds,
|
||||
String driverKey,
|
||||
Set<String> driverKeys,
|
||||
boolean includeAllDrivers,
|
||||
|
|
@ -62,7 +61,7 @@ public record UnifiedRuntimeProcessingRequest(
|
|||
tenantKey,
|
||||
sourceFamilies,
|
||||
eventBackend,
|
||||
tachographSourceKinds,
|
||||
sourceKinds,
|
||||
driverKey,
|
||||
driverKeys,
|
||||
includeAllDrivers,
|
||||
|
|
@ -87,7 +86,7 @@ public record UnifiedRuntimeProcessingRequest(
|
|||
throw new IllegalArgumentException("sourceFamilies must not be empty");
|
||||
}
|
||||
eventBackend = eventBackend == null ? UnifiedRuntimeEventBackend.SOURCE_DB : eventBackend;
|
||||
tachographSourceKinds = normalizeTachographSourceKinds(tachographSourceKinds);
|
||||
sourceKinds = normalizeSourceKinds(sourceKinds);
|
||||
sessionIds = normalizeSessionIds(sessionId, sessionIds);
|
||||
if (sessionId == null && !sessionIds.isEmpty()) {
|
||||
sessionId = sessionIds.get(0);
|
||||
|
|
@ -448,7 +447,7 @@ public record UnifiedRuntimeProcessingRequest(
|
|||
tenantKey,
|
||||
Set.of(sourceInput.sourceFamily()),
|
||||
sourceInput.eventBackend(),
|
||||
tachographSourceKinds,
|
||||
sourceKinds,
|
||||
driverKey,
|
||||
driverKeys,
|
||||
includeAllDrivers,
|
||||
|
|
@ -485,7 +484,7 @@ public record UnifiedRuntimeProcessingRequest(
|
|||
tenantKey,
|
||||
sourceFamilies,
|
||||
eventBackend,
|
||||
tachographSourceKinds,
|
||||
sourceKinds,
|
||||
value,
|
||||
Set.of(),
|
||||
false,
|
||||
|
|
@ -507,21 +506,15 @@ public record UnifiedRuntimeProcessingRequest(
|
|||
return includeAllDrivers || driverKeys.size() > 1 || (driverKey == null && !driverKeys.isEmpty());
|
||||
}
|
||||
|
||||
public boolean includesTachographSourceKind(String sourceKind) {
|
||||
public boolean includesSourceKind(String sourceKind) {
|
||||
if (sourceKind == null || sourceKind.isBlank()) {
|
||||
return true;
|
||||
}
|
||||
try {
|
||||
return tachographSourceKinds.contains(UnifiedTachographSourceKind.valueOf(sourceKind.trim().toUpperCase()));
|
||||
} catch (IllegalArgumentException ex) {
|
||||
return false;
|
||||
}
|
||||
return sourceKinds.contains(sourceKind.trim().toUpperCase());
|
||||
}
|
||||
|
||||
public List<String> tachographSourceKindNames() {
|
||||
return tachographSourceKinds.stream()
|
||||
.map(UnifiedTachographSourceKind::name)
|
||||
.toList();
|
||||
public List<String> sourceKindNames() {
|
||||
return sourceKinds.stream().toList();
|
||||
}
|
||||
|
||||
private static Set<UnifiedEventSourceFamily> normalizeSourceFamilies(
|
||||
|
|
@ -600,13 +593,20 @@ public record UnifiedRuntimeProcessingRequest(
|
|||
return Set.copyOf(normalized);
|
||||
}
|
||||
|
||||
private static Set<UnifiedTachographSourceKind> normalizeTachographSourceKinds(
|
||||
Set<UnifiedTachographSourceKind> values
|
||||
private static Set<String> normalizeSourceKinds(
|
||||
Set<String> values
|
||||
) {
|
||||
if (values == null || values.isEmpty()) {
|
||||
return Set.copyOf(Arrays.asList(UnifiedTachographSourceKind.values()));
|
||||
return Set.of("DRIVER_CARD", "VEHICLE_UNIT");
|
||||
}
|
||||
return Set.copyOf(values);
|
||||
LinkedHashSet<String> normalized = new LinkedHashSet<>();
|
||||
for (String value : values) {
|
||||
String normalizedValue = normalizeUpper(value);
|
||||
if (normalizedValue != null) {
|
||||
normalized.add(normalizedValue);
|
||||
}
|
||||
}
|
||||
return normalized.isEmpty() ? Set.of("DRIVER_CARD", "VEHICLE_UNIT") : Set.copyOf(normalized);
|
||||
}
|
||||
|
||||
private static boolean isExternalDbFamily(UnifiedEventSourceFamily family) {
|
||||
|
|
|
|||
|
|
@ -1,6 +0,0 @@
|
|||
package at.procon.eventhub.processing.model;
|
||||
|
||||
public enum UnifiedTachographSourceKind {
|
||||
DRIVER_CARD,
|
||||
VEHICLE_UNIT
|
||||
}
|
||||
|
|
@ -71,7 +71,7 @@ public class EventHubRuntimeEventLoader implements RuntimeDriverEventLoader, Run
|
|||
request.driverCardNumber(),
|
||||
request.occurredFrom(),
|
||||
request.occurredTo(),
|
||||
request.tachographSourceKindNames(),
|
||||
request.sourceKindNames(),
|
||||
request.includeIntersectingIntervals()
|
||||
);
|
||||
case YELLOWFOX_DB -> UnifiedDriverEventsRequest.forYellowFoxDbDriver(
|
||||
|
|
@ -100,7 +100,7 @@ public class EventHubRuntimeEventLoader implements RuntimeDriverEventLoader, Run
|
|||
vehicleRef.registrationNumber(),
|
||||
request.vehicleOccurredFrom(),
|
||||
request.vehicleOccurredTo(),
|
||||
request.tachographSourceKindNames(),
|
||||
request.sourceKindNames(),
|
||||
request.includeIntersectingIntervals()
|
||||
);
|
||||
case YELLOWFOX_DB -> UnifiedVehicleEventsRequest.forYellowFoxDb(
|
||||
|
|
|
|||
|
|
@ -121,7 +121,7 @@ public class TachographDbRuntimeEventLoader implements RuntimeDriverEventLoader,
|
|||
) {
|
||||
return definitionRegistry.definitions().stream()
|
||||
.filter(definition -> !"VEHICLE".equals(definition.entityAxis()))
|
||||
.filter(definition -> request.includesTachographSourceKind(definition.sourceKind()))
|
||||
.filter(definition -> request.includesSourceKind(definition.sourceKind()))
|
||||
.toList();
|
||||
}
|
||||
|
||||
|
|
@ -130,7 +130,7 @@ public class TachographDbRuntimeEventLoader implements RuntimeDriverEventLoader,
|
|||
) {
|
||||
return definitionRegistry.definitions().stream()
|
||||
.filter(definition -> !"DRIVER".equals(definition.entityAxis()))
|
||||
.filter(definition -> request.includesTachographSourceKind(definition.sourceKind()))
|
||||
.filter(definition -> request.includesSourceKind(definition.sourceKind()))
|
||||
.toList();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -67,12 +67,12 @@ class UnifiedRuntimeProcessingRequestTest {
|
|||
OffsetDateTime.parse("2026-05-02T00:00:00Z")
|
||||
);
|
||||
|
||||
assertThat(defaultRequest.tachographSourceKinds()).containsExactlyInAnyOrder(
|
||||
UnifiedTachographSourceKind.DRIVER_CARD,
|
||||
UnifiedTachographSourceKind.VEHICLE_UNIT
|
||||
assertThat(defaultRequest.sourceKinds()).containsExactlyInAnyOrder(
|
||||
"DRIVER_CARD",
|
||||
"VEHICLE_UNIT"
|
||||
);
|
||||
assertThat(defaultRequest.includesTachographSourceKind("DRIVER_CARD")).isTrue();
|
||||
assertThat(defaultRequest.includesTachographSourceKind("VEHICLE_UNIT")).isTrue();
|
||||
assertThat(defaultRequest.includesSourceKind("DRIVER_CARD")).isTrue();
|
||||
assertThat(defaultRequest.includesSourceKind("VEHICLE_UNIT")).isTrue();
|
||||
|
||||
UnifiedRuntimeProcessingRequest driverCardOnlyRequest = new UnifiedRuntimeProcessingRequest(
|
||||
null,
|
||||
|
|
@ -81,7 +81,7 @@ class UnifiedRuntimeProcessingRequestTest {
|
|||
"default",
|
||||
Set.of(UnifiedEventSourceFamily.TACHOGRAPH_DB),
|
||||
UnifiedRuntimeEventBackend.SOURCE_DB,
|
||||
Set.of(UnifiedTachographSourceKind.DRIVER_CARD),
|
||||
Set.of("DRIVER_CARD"),
|
||||
null,
|
||||
Set.of(),
|
||||
false,
|
||||
|
|
@ -97,9 +97,9 @@ class UnifiedRuntimeProcessingRequestTest {
|
|||
true
|
||||
);
|
||||
|
||||
assertThat(driverCardOnlyRequest.tachographSourceKinds()).containsExactly(UnifiedTachographSourceKind.DRIVER_CARD);
|
||||
assertThat(driverCardOnlyRequest.includesTachographSourceKind("DRIVER_CARD")).isTrue();
|
||||
assertThat(driverCardOnlyRequest.includesTachographSourceKind("VEHICLE_UNIT")).isFalse();
|
||||
assertThat(driverCardOnlyRequest.sourceKinds()).containsExactly("DRIVER_CARD");
|
||||
assertThat(driverCardOnlyRequest.includesSourceKind("DRIVER_CARD")).isTrue();
|
||||
assertThat(driverCardOnlyRequest.includesSourceKind("VEHICLE_UNIT")).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
|||
Loading…
Reference in New Issue