Skip to content

Commit 39487d5

Browse files
Interchange wait time and active dates validation
1 parent 41ee0e9 commit 39487d5

File tree

39 files changed

+6874
-223
lines changed

39 files changed

+6874
-223
lines changed

pom.xml

+5-5
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<parent>
88
<groupId>org.entur.ror</groupId>
99
<artifactId>superpom</artifactId>
10-
<version>3.2</version>
10+
<version>3.3</version>
1111
</parent>
1212

1313
<groupId>no.entur.antu</groupId>
@@ -26,13 +26,13 @@
2626
<java.version>17</java.version>
2727
<entur.google.pubsub.emulator.download.skip>false</entur.google.pubsub.emulator.download.skip>
2828
<camel.version>4.4.4</camel.version>
29-
<entur.helpers.version>4.7</entur.helpers.version>
30-
<netex-validator-java.version>9.0.0</netex-validator-java.version>
31-
<netex-parser-java.version>3.1.34</netex-parser-java.version>
29+
<entur.helpers.version>4.8</entur.helpers.version>
30+
<netex-validator-java.version>9.1.1</netex-validator-java.version>
31+
<netex-parser-java.version>3.1.36</netex-parser-java.version>
3232
<jts-core.version>1.20.0</jts-core.version>
3333
<commons-io.version>2.11.0</commons-io.version>
3434
<zt-zip.version>1.17</zt-zip.version>
35-
<redisson.version>3.40.2</redisson.version>
35+
<redisson.version>3.42.0</redisson.version>
3636
<kryo.version>5.6.2</kryo.version>
3737
<embedded-redis.version>0.9.1</embedded-redis.version>
3838
<prettier-java.version>2.1.0</prettier-java.version>

src/main/java/no/entur/antu/config/NetexDataConfig.java

+15
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package no.entur.antu.config;
22

3+
import static no.entur.antu.config.cache.CacheConfig.ACTIVE_DATES_CACHE;
34
import static no.entur.antu.config.cache.CacheConfig.LINE_INFO_CACHE;
5+
import static no.entur.antu.config.cache.CacheConfig.SERVICE_JOURNEY_DAY_TYPES_CACHE;
46
import static no.entur.antu.config.cache.CacheConfig.SERVICE_JOURNEY_INTERCHANGE_INFO_CACHE;
7+
import static no.entur.antu.config.cache.CacheConfig.SERVICE_JOURNEY_OPERATING_DAYS_CACHE;
58
import static no.entur.antu.config.cache.CacheConfig.SERVICE_JOURNEY_STOPS_CACHE;
69

710
import java.util.List;
@@ -25,6 +28,15 @@ NetexDataRepository netexDataRepository(
2528
@Qualifier(
2629
SERVICE_JOURNEY_STOPS_CACHE
2730
) Map<String, Map<String, List<String>>> serviceJourneyStopsCache,
31+
@Qualifier(
32+
SERVICE_JOURNEY_DAY_TYPES_CACHE
33+
) Map<String, Map<String, String>> serviceJourneyDayTypesCache,
34+
@Qualifier(
35+
ACTIVE_DATES_CACHE
36+
) Map<String, Map<String, String>> activeDatesCache,
37+
@Qualifier(
38+
SERVICE_JOURNEY_OPERATING_DAYS_CACHE
39+
) Map<String, Map<String, String>> serviceJourneyOperatingDaysCache,
2840
@Qualifier(
2941
SERVICE_JOURNEY_INTERCHANGE_INFO_CACHE
3042
) Map<String, List<String>> serviceJourneyInterchangeInfoCache
@@ -33,6 +45,9 @@ NetexDataRepository netexDataRepository(
3345
redissonClient,
3446
lineInfoCache,
3547
serviceJourneyStopsCache,
48+
serviceJourneyDayTypesCache,
49+
activeDatesCache,
50+
serviceJourneyOperatingDaysCache,
3651
serviceJourneyInterchangeInfoCache
3752
);
3853
}

src/main/java/no/entur/antu/config/TimetableDataValidatorConfig.java

+33-5
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,19 @@
1818

1919
import java.util.List;
2020
import java.util.Set;
21+
import no.entur.antu.netexdata.collectors.DatedServiceJourneysCollector;
2122
import no.entur.antu.netexdata.collectors.LineInfoCollector;
23+
import no.entur.antu.netexdata.collectors.ServiceJourneyDayTypesCollector;
2224
import no.entur.antu.netexdata.collectors.ServiceJourneyInterchangeInfoCollector;
2325
import no.entur.antu.netexdata.collectors.ServiceJourneyStopsCollector;
26+
import no.entur.antu.netexdata.collectors.activedatecollector.ActiveDatesCollector;
2427
import no.entur.antu.organisation.OrganisationRepository;
2528
import no.entur.antu.validation.validator.id.NetexIdValidator;
2629
import no.entur.antu.validation.validator.interchange.distance.UnexpectedInterchangeDistanceValidator;
2730
import no.entur.antu.validation.validator.interchange.duplicate.DuplicateInterchangesValidator;
2831
import no.entur.antu.validation.validator.interchange.mandatoryfields.MandatoryFieldsValidator;
2932
import no.entur.antu.validation.validator.interchange.stoppoints.StopPointsInVehicleJourneyValidator;
33+
import no.entur.antu.validation.validator.interchange.waittime.UnexpectedWaitTimeAndActiveDatesValidator;
3034
import no.entur.antu.validation.validator.journeypattern.stoppoint.distance.UnexpectedDistanceBetweenStopPointsValidator;
3135
import no.entur.antu.validation.validator.journeypattern.stoppoint.identicalstoppoints.IdenticalStopPointsValidator;
3236
import no.entur.antu.validation.validator.journeypattern.stoppoint.samequayref.SameQuayRefValidator;
@@ -42,7 +46,10 @@
4246
import no.entur.antu.validation.validator.servicelink.distance.UnexpectedDistanceInServiceLinkValidator;
4347
import no.entur.antu.validation.validator.servicelink.stoppoints.MismatchedStopPointsValidator;
4448
import no.entur.antu.validation.validator.xpath.EnturTimetableDataValidationTreeFactory;
45-
import org.entur.netex.validation.validator.*;
49+
import org.entur.netex.validation.validator.DatasetValidator;
50+
import org.entur.netex.validation.validator.NetexValidatorsRunner;
51+
import org.entur.netex.validation.validator.ValidationReportEntryFactory;
52+
import org.entur.netex.validation.validator.XPathValidator;
4653
import org.entur.netex.validation.validator.id.NetexIdUniquenessValidator;
4754
import org.entur.netex.validation.validator.id.NetexReferenceValidator;
4855
import org.entur.netex.validation.validator.id.ReferenceToValidEntityTypeValidator;
@@ -106,6 +113,19 @@ public DuplicateLineNameValidator duplicateLineNameValidator(
106113
);
107114
}
108115

116+
@Bean
117+
public UnexpectedWaitTimeAndActiveDatesValidator unexpectedWaitTimeValidator(
118+
@Qualifier(
119+
"validationReportEntryFactory"
120+
) ValidationReportEntryFactory validationReportEntryFactory,
121+
NetexDataRepository netexDataRepository
122+
) {
123+
return new UnexpectedWaitTimeAndActiveDatesValidator(
124+
validationReportEntryFactory,
125+
netexDataRepository
126+
);
127+
}
128+
109129
@Bean
110130
public NetexValidatorsRunner timetableDataValidatorsRunner(
111131
@Qualifier(
@@ -125,10 +145,14 @@ public NetexValidatorsRunner timetableDataValidatorsRunner(
125145
) NetexIdUniquenessValidator netexIdUniquenessValidator,
126146
StopPointsInVehicleJourneyValidator stopPointsInVehicleJourneyValidator,
127147
DuplicateLineNameValidator duplicateLineNameValidator,
148+
UnexpectedWaitTimeAndActiveDatesValidator unexpectedWaitTimeAndActiveDatesValidator,
128149
LineInfoCollector lineInfoCollector,
129150
ServiceJourneyStopsCollector serviceJourneyStopsCollector,
130151
ServiceJourneyInterchangeInfoCollector serviceJourneyInterchangeInfoCollector,
131-
CommonDataRepositoryLoader commonDataRepository,
152+
ActiveDatesCollector activeDatesCollector,
153+
ServiceJourneyDayTypesCollector serviceJourneyDayTypesCollector,
154+
DatedServiceJourneysCollector datedServiceJourneysCollector,
155+
CommonDataRepositoryLoader commonDataRepositoryLoader,
132156
NetexDataRepository netexDataRepository,
133157
StopPlaceRepository stopPlaceRepository
134158
) {
@@ -165,13 +189,17 @@ public NetexValidatorsRunner timetableDataValidatorsRunner(
165189

166190
List<DatasetValidator> netexTimetableDatasetValidators = List.of(
167191
duplicateLineNameValidator,
168-
stopPointsInVehicleJourneyValidator
192+
stopPointsInVehicleJourneyValidator,
193+
unexpectedWaitTimeAndActiveDatesValidator
169194
);
170195

171196
List<NetexDataCollector> commonDataCollectors = List.of(
172197
lineInfoCollector,
173198
serviceJourneyInterchangeInfoCollector,
174-
serviceJourneyStopsCollector
199+
serviceJourneyStopsCollector,
200+
activeDatesCollector,
201+
serviceJourneyDayTypesCollector,
202+
datedServiceJourneysCollector
175203
);
176204

177205
return NetexValidatorsRunner
@@ -182,7 +210,7 @@ public NetexValidatorsRunner timetableDataValidatorsRunner(
182210
.withJaxbValidators(jaxbValidators)
183211
.withDatasetValidators(netexTimetableDatasetValidators)
184212
.withNetexDataCollectors(commonDataCollectors)
185-
.withCommonDataRepository(commonDataRepository)
213+
.withCommonDataRepository(commonDataRepositoryLoader)
186214
.withNetexDataRepository(netexDataRepository)
187215
.withStopPlaceRepository(stopPlaceRepository)
188216
.withValidationReportEntryFactory(validationReportEntryFactory)

src/main/java/no/entur/antu/config/cache/CacheConfig.java

+38
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,13 @@ public class CacheConfig {
4040
public static final String LINE_INFO_CACHE = "linesInfoCache";
4141
public static final String SERVICE_JOURNEY_INTERCHANGE_INFO_CACHE =
4242
"serviceJourneyInterchangeInfoCache";
43+
public static final String SERVICE_JOURNEY_DAY_TYPES_CACHE =
44+
"serviceJourneyDayTypesCache";
4345
public static final String SERVICE_JOURNEY_STOPS_CACHE =
4446
"serviceJourneyStopsCache";
47+
public static final String SERVICE_JOURNEY_OPERATING_DAYS_CACHE =
48+
"serviceJourneyOperatingDaysCache";
49+
public static final String ACTIVE_DATES_CACHE = "activeDatesCache";
4550
public static final String QUAY_ID_NOT_FOUND_CACHE = "quayIdNotFoundCache";
4651

4752
private static final Kryo5Codec DEFAULT_CODEC = new Kryo5Codec();
@@ -172,6 +177,17 @@ public Map<String, List<String>> serviceJourneyInterchangeInfoCache(
172177
);
173178
}
174179

180+
@Bean(name = SERVICE_JOURNEY_DAY_TYPES_CACHE)
181+
public Map<String, Map<String, String>> serviceJourneyDayTypesCache(
182+
RedissonClient redissonClient
183+
) {
184+
return getOrCreateReportScopedCache(
185+
redissonClient,
186+
SERVICE_JOURNEY_DAY_TYPES_CACHE,
187+
new CompositeCodec(new StringCodec(), new StringCodec())
188+
);
189+
}
190+
175191
@Bean(name = SERVICE_JOURNEY_STOPS_CACHE)
176192
public Map<String, Map<String, List<String>>> serviceJourneyStopsCache(
177193
RedissonClient redissonClient
@@ -183,6 +199,28 @@ public Map<String, Map<String, List<String>>> serviceJourneyStopsCache(
183199
);
184200
}
185201

202+
@Bean(name = ACTIVE_DATES_CACHE)
203+
public Map<String, Map<String, String>> activeDatesCache(
204+
RedissonClient redissonClient
205+
) {
206+
return getOrCreateReportScopedCache(
207+
redissonClient,
208+
ACTIVE_DATES_CACHE,
209+
new CompositeCodec(new StringCodec(), new StringCodec())
210+
);
211+
}
212+
213+
@Bean(name = SERVICE_JOURNEY_OPERATING_DAYS_CACHE)
214+
public Map<String, Map<String, String>> serviceJourneyOperatingDaysCache(
215+
RedissonClient redissonClient
216+
) {
217+
return getOrCreateReportScopedCache(
218+
redissonClient,
219+
SERVICE_JOURNEY_OPERATING_DAYS_CACHE,
220+
new CompositeCodec(new StringCodec(), new StringCodec())
221+
);
222+
}
223+
186224
@Bean
187225
public NetexIdRepository netexIdRepository(
188226
RedissonClient redissonClient,

src/main/java/no/entur/antu/config/cache/NetexDataCollectorConfig.java

+42
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
package no.entur.antu.config.cache;
22

3+
import static no.entur.antu.config.cache.CacheConfig.ACTIVE_DATES_CACHE;
34
import static no.entur.antu.config.cache.CacheConfig.LINE_INFO_CACHE;
5+
import static no.entur.antu.config.cache.CacheConfig.SERVICE_JOURNEY_DAY_TYPES_CACHE;
46
import static no.entur.antu.config.cache.CacheConfig.SERVICE_JOURNEY_INTERCHANGE_INFO_CACHE;
7+
import static no.entur.antu.config.cache.CacheConfig.SERVICE_JOURNEY_OPERATING_DAYS_CACHE;
58
import static no.entur.antu.config.cache.CacheConfig.SERVICE_JOURNEY_STOPS_CACHE;
69

710
import java.util.List;
811
import java.util.Map;
12+
import no.entur.antu.netexdata.collectors.DatedServiceJourneysCollector;
913
import no.entur.antu.netexdata.collectors.LineInfoCollector;
14+
import no.entur.antu.netexdata.collectors.ServiceJourneyDayTypesCollector;
1015
import no.entur.antu.netexdata.collectors.ServiceJourneyInterchangeInfoCollector;
1116
import no.entur.antu.netexdata.collectors.ServiceJourneyStopsCollector;
17+
import no.entur.antu.netexdata.collectors.activedatecollector.ActiveDatesCollector;
1218
import org.redisson.api.RedissonClient;
1319
import org.springframework.beans.factory.annotation.Qualifier;
1420
import org.springframework.context.annotation.Bean;
@@ -25,6 +31,29 @@ public LineInfoCollector lineInfoScraper(
2531
return new LineInfoCollector(redissonClient, lineInfoCache);
2632
}
2733

34+
@Bean
35+
public ActiveDatesCollector activeDatesCollector(
36+
RedissonClient redissonClient,
37+
@Qualifier(
38+
ACTIVE_DATES_CACHE
39+
) Map<String, Map<String, String>> activeDatesCache
40+
) {
41+
return new ActiveDatesCollector(redissonClient, activeDatesCache);
42+
}
43+
44+
@Bean
45+
public DatedServiceJourneysCollector datedServiceJourneysCollector(
46+
RedissonClient redissonClient,
47+
@Qualifier(
48+
SERVICE_JOURNEY_OPERATING_DAYS_CACHE
49+
) Map<String, Map<String, String>> serviceJourneyOperatingDaysCache
50+
) {
51+
return new DatedServiceJourneysCollector(
52+
redissonClient,
53+
serviceJourneyOperatingDaysCache
54+
);
55+
}
56+
2857
@Bean
2958
public ServiceJourneyInterchangeInfoCollector serviceJourneyInterchangeInfoCollector(
3059
RedissonClient redissonClient,
@@ -38,6 +67,19 @@ public ServiceJourneyInterchangeInfoCollector serviceJourneyInterchangeInfoColle
3867
);
3968
}
4069

70+
@Bean
71+
public ServiceJourneyDayTypesCollector serviceJourneyDayTypesCollector(
72+
RedissonClient redissonClient,
73+
@Qualifier(
74+
SERVICE_JOURNEY_DAY_TYPES_CACHE
75+
) Map<String, Map<String, String>> serviceJourneyDayTypesCache
76+
) {
77+
return new ServiceJourneyDayTypesCollector(
78+
redissonClient,
79+
serviceJourneyDayTypesCache
80+
);
81+
}
82+
4183
@Bean
4284
public ServiceJourneyStopsCollector serviceJourneyStopsCollector(
4385
RedissonClient redissonClient,

src/main/java/no/entur/antu/finland/validator/EnturTimetableDataFinlandValidationTreeFactory.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ public EnturTimetableDataFinlandValidationTreeFactory() {
2323

2424
@Override
2525
public ValidationTreeBuilder builder() {
26+
ValidationTreeBuilder builder = super.builder();
27+
2628
// accept SiteFrame, they are part of Finnish datasets
2729
siteFrameValidationTreeBuilder()
2830
.removeRuleForCommonFile(
@@ -44,6 +46,6 @@ public ValidationTreeBuilder builder() {
4446
.removeRule(
4547
DefaultServiceFrameValidationTreeFactory.CODE_PASSENGER_STOP_ASSIGNMENT_3
4648
);
47-
return super.builder();
49+
return builder;
4850
}
4951
}

0 commit comments

Comments
 (0)