Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
228 commits
Select commit Hold shift + click to select a range
81fdfc9
refactor(Added explict GTFS-lib reference and editor controllers for …
Nov 15, 2021
6a9707e
refactor(Update to define if the loaded feed is flex): Update to set …
Nov 17, 2021
96d34c2
refactor(Added Bson ignore to flex param): Added Bson ignore to flex …
Nov 17, 2021
0328a0b
refactor(Moved the @BsonIngore from param to setter): Updated FeedSou…
Nov 18, 2021
857b4a6
refactor(FeedSource): Added getter and setter methods for flex param
Nov 18, 2021
5567737
refactor(FeedSource.java): Removed flex getter and setter
Nov 18, 2021
f919940
refactor(DataManager.java): Added editor controllers for location met…
Dec 9, 2021
e005c62
refactor(pom.xml): Bumped gtfs-lib version
Dec 10, 2021
15e7419
Merge branch 'dev' into flex-editor-updates
Dec 14, 2021
8728701
refactor(pom.xml): Bumped GTFS-lib version
Dec 14, 2021
da5e2f4
Merge branch 'dev' into flex-editor-updates
Dec 17, 2021
56f3bac
Merge branch 'dev' into flex-editor-updates
Jan 5, 2022
837174d
refactor(manager/DataManager): update tables to reflect gtfs-lib changes
miles-grant-ibigroup Jan 7, 2022
6d278d1
Merge branch 'flex-editor-updates' of https://github.com/ibi-group/da…
Jan 10, 2022
702c09a
Merge branch 'dev' into flex-editor-updates
Jan 14, 2022
7b8da96
chore(deps): upgrade to latest gtfs-lib
miles-grant-ibigroup Jan 21, 2022
5d851e1
Merge branch 'flex-editor-updates' of https://github.com/ibi-group/da…
Jan 24, 2022
f455b71
refactor(pom.xml): Bumped GTFS-lib version and updated snapshot match…
Jan 24, 2022
6bbe2f8
chore(deps): update gtfs-lib version
miles-grant-ibigroup Jan 25, 2022
d997b12
chore(deps): update gtfs-lib
miles-grant-ibigroup Jan 25, 2022
a9deba3
chore(deps): update gtfs-lib
miles-grant-ibigroup Jan 25, 2022
7ff41c7
Merge branch 'dev' into flex-editor-updates
Feb 4, 2022
62bd416
refactor(DataManager.java): Re-ordered editor controllers to group fl…
Feb 8, 2022
6f081c6
refactor(Fixed merge conflicts): Fixed merge conflicts
Feb 8, 2022
6520f40
refactor(FeedSource.java): Added flex UI features param
Feb 10, 2022
235d9a2
refactor(Included the latest commit of gtfs-lib and made a few change…
Feb 10, 2022
3ec018f
refactor(FeedVersion): Update feedSource flex setting on creation
miles-grant-ibigroup Feb 10, 2022
1b28d74
refactor(Updated snapshots to include null references): Update to wor…
Feb 11, 2022
330e914
refactor(Removed snapshots that should not have been commited): Remov…
Feb 11, 2022
532eccf
Merge branch 'flex-editor-updates' of https://github.com/ibi-group/da…
Feb 11, 2022
17c4b71
refactor(Update to include correct snapshot matcher and update to fai…
Feb 14, 2022
1b542ec
refactor(Bumped GTFS-lib version and address table ref name change): …
Feb 18, 2022
85773a8
refactor(Updated lib dependencies): Update snapshot and gtfs-lib vers…
Feb 21, 2022
e5f2afc
refactor(FeedSource.java): Reinstated null check on feedLoadResult
Feb 21, 2022
820353a
refactor(FeedVersion.java): Added null check
Feb 22, 2022
0984ef5
chore(deps): upgrade gtfs-lib
miles-grant-ibigroup Feb 25, 2022
75ff669
chore(deps): upgrade gtfs-lib
philip-cline Mar 1, 2022
b66c5bb
chore(repos): add snapshot repository for opengeo
philip-cline Mar 1, 2022
f7771da
chore(deps): update opengeo repository
miles-grant-ibigroup Mar 1, 2022
db89282
refactor(pom.xml): Removed redundant repo and bumped GTFS-lib version
Mar 8, 2022
18e5410
refactor(Fixed merged conflict): Fixed merged conflict with GTFS-lib …
Mar 8, 2022
6cfdbc0
refactor(FeedSource): persist flex check results
miles-grant-ibigroup Mar 17, 2022
a99e80b
refactor(Fixed merge conflict): Fixed merge conflict
Apr 19, 2022
18e19c6
refactor(pom.xml): Reverted gtfs-lib back to previously used version …
Apr 19, 2022
62d47db
refactor(pom.xml): Bumped GTFS-lib version
philip-cline Apr 27, 2022
0ada9b2
refactor(pom.xml): Bumped GTFS-Lib version
Apr 28, 2022
49db0e1
refactor(Defining feed source flex value): If a feed version is flex …
May 6, 2022
90654f9
chore(pom.xml): Updated the gtfs-lib version
May 6, 2022
6c38bef
Merge branch 'dev' into flex-editor-updates
May 6, 2022
9cc17b9
refactor(FeedSource.java): Removed removed extra blank line
May 6, 2022
26c5324
Merge branch 'dev' into flex-editor-updates
miles-grant-ibigroup May 20, 2022
ac21251
Merge branch 'dev' into flex-editor-updates
miles-grant-ibigroup Jun 1, 2022
695f452
Merge pull request #439 from ibi-group/flex-editor-updates
miles-grant-ibigroup Jun 14, 2022
99b43fb
Merge branch 'dev' into dev-flex
miles-grant-ibigroup Jun 23, 2022
ad960c9
Merge branch 'dev' into dev-flex
miles-grant-ibigroup Jul 1, 2022
2df1653
Merge branch 'dev' into dev-flex
miles-grant-ibigroup Jul 14, 2022
0da8d9f
chore(deps): upgrade gtfs-lib
miles-grant-ibigroup Aug 22, 2022
f4c9cb9
Merge pull request #480 from ibi-group/gtfs-lib-update
miles-grant-ibigroup Aug 30, 2022
a0d8455
refactor(pom.xml): Bumped gtfs-lib to a newer version
Sep 12, 2022
794f3cd
Merge branch 'dev' into dev-flex
miles-grant-ibigroup Sep 27, 2022
fa69dc7
chore: update gtfs-lib
miles-grant-ibigroup Sep 27, 2022
2b0166e
Merge branch 'dev' into dev-flex
miles-grant-ibigroup Oct 18, 2022
fe71571
Merge branch 'dev' into dev-flex
miles-grant-ibigroup Nov 11, 2022
e91d578
chore(Bumped gtfs-lib version): Update of gtfs-lib include better geo…
Nov 23, 2022
0535b71
refactor(Fixed merge conflict): Fixed merge conflict with gtfs-lib ve…
Nov 23, 2022
1407141
Merge pull request #494 from ibi-group/bump-gtfs-lib
philip-cline Nov 23, 2022
fff5a78
Merge branch 'dev' into dev-flex
miles-grant-ibigroup Nov 29, 2022
ee57290
refactor(pom.xml): Bumped gtfs-lib
Dec 16, 2022
2721b1c
Merge branch 'dev' into dev-flex
Dec 22, 2022
a0756de
Merge branch 'dev' into dev-flex
miles-grant-ibigroup Jan 11, 2023
54dd681
Merge branch 'dev' into dev-flex
Jan 19, 2023
1e0d750
Merge branch 'dev-flex' of https://github.com/ibi-group/datatools-ser…
Feb 1, 2023
a0aa2da
refactor(Fixed merge conflict): Went with dev flex over dev
Feb 6, 2023
f4558e4
Merge branch 'dev' into dev-flex
miles-grant-ibigroup Feb 7, 2023
4a0e862
chore(Bump gtfs-lib version): Updated to latest hash
Feb 10, 2023
919ae9b
Merge pull request #510 from ibi-group/update-gtfs-lib
Feb 14, 2023
acb367d
chore(flex): bump gtfs-lib version for flex
philip-cline Mar 14, 2023
2917bf3
Merge pull request #521 from ibi-group/update-gtfs-lib-march-2023
philip-cline Mar 14, 2023
72b9e90
chore(flex): bump gtfs-lib version for flex
philip-cline Mar 29, 2023
f177901
chore(flex): fix commit hash
philip-cline Apr 11, 2023
1745486
Merge pull request #526 from ibi-group/bump-gtfs-lib
philip-cline Apr 11, 2023
6e5d5b6
refactor(GTFS-lib version update): Update to use the location group r…
Apr 13, 2023
6c36fff
refactor(pom.xml): Updated gtfs-lib reference
Apr 19, 2023
4768345
refactor(pom.xml): Bumped GTFS-lib version
Apr 20, 2023
96c2532
Merge pull request #530 from ibi-group/refactor/DT-316-Change-prior-n…
philip-cline Apr 26, 2023
3883747
feat(DataManager): use stop_areas and areas rather than location_groups
philip-cline May 2, 2023
a26f075
chore(gtfs-lib): update gtfs-lib to include location group changes.
philip-cline May 16, 2023
aba44c8
Merge branch 'dev-flex' into feature/DT-294-Stop-areas-enhancement
philip-cline May 16, 2023
dc699a6
refactor(stop areas): update gtfs-lib reference
philip-cline Jun 28, 2023
77243f1
refactor(Fixed merge conflicts): Fixed merge conflicts within pom.xml…
Jul 10, 2023
2a2cf29
refactor(Fixed merge conflicts): Addressed GTFS-lib version conflict.…
Jul 10, 2023
93489c6
Merge pull request #537 from ibi-group/feature/DT-294-Stop-areas-enha…
Jul 10, 2023
40c39e2
refactor(Bumped GTFS-Lib version): Version now matches the latest GTF…
Jul 10, 2023
bef0c7e
Merge branch 'dev' into dev-flex
Jul 10, 2023
7361e0f
Merge branch 'dev' into dev-flex
Jul 14, 2023
3cff05e
refactor(Update to various transform classes to accommodate flex):
Jul 20, 2023
47d1636
refactor(EditorControllerTest.java): Changed feed source to one that …
Jul 20, 2023
946461f
refactor(Unit test and gtfs-lib update): Update to use refactored sto…
Jul 24, 2023
368b98a
refactor(pom.xml): Reverted gtfs-lib back to latest dev-flex commit
Jul 24, 2023
70d9554
refactor(pom.xml): Changed gtfs-lib to reference latest stop times no…
Jul 25, 2023
e0f19d3
refactor(Test data update): Added missing commas to test data which w…
Jul 26, 2023
c3a3a71
refactor(Updated unit test): Created distinct feed for normalizing fi…
Aug 10, 2023
379809c
refactor(Corrected feed config): Deleted stop areas and re-instated s…
Aug 10, 2023
dd91fb9
refactor(NormalizeFieldTransformJobTest.java): Refactored to create m…
Aug 10, 2023
efc0a40
refactor(Bumped gtfs lib to latest dev-flex version.): Updated test d…
Aug 11, 2023
6ffa121
refactor(Added additional trips file): unit test failing validation b…
Aug 11, 2023
7a1f101
refactor(Reduce normalize fields unit test to just routes):
Aug 11, 2023
3199283
refactor(Re-instated areas and stop areas normalize field transformat…
Aug 11, 2023
bfa99eb
refactor(NormalizeFieldTransformJobTest): Updated fields to be normal…
Aug 11, 2023
a42d8b6
refactor(Created separate feed source for normalizing field unit tests):
Aug 11, 2023
76a63e1
refactor(Bug fixed and parameterized normalizing of field tests):
Aug 14, 2023
ada194b
refactor(NormalizeFieldTransformJobTest): Changed back to using a sin…
Aug 15, 2023
fdac958
refactor(NormalizeFieldTransformJobTest): Changed assertion.
Aug 15, 2023
d0f5421
refactor(NormalizeFieldTransformJobTest): Added table name to feed so…
Aug 15, 2023
f768a78
refactor(NormalizeFieldTransformJobTest): Changed test data to take c…
Aug 15, 2023
4e8fa0c
refactor(pom.xml): Bumped gtfs-lib version to stop time normalization…
Aug 16, 2023
8b8ddbb
refactor(pom.xml): Bumped gtfs lib to include stop times normalizatio…
Aug 16, 2023
f503fae
refactor(NormalizeFieldTransformJobTest): Restored correct feed sourc…
Aug 16, 2023
f1c65c2
Fixed merge conflict
Aug 18, 2023
34545cb
refactor(Bumped GTFS-lib version): Version now matches the latest dev…
Aug 21, 2023
e895aca
Update src/main/java/com/conveyal/datatools/manager/jobs/ProcessSingl…
br648 Sep 1, 2023
ae95fb0
refactor(ProcessSingleFeedJob):
Sep 1, 2023
738abc2
refactor(Reverted grammer changes to unit tests): Notification messag…
br648 Sep 6, 2023
d5b3436
refactor(Initial work to merge flex feeds):
br648 Oct 24, 2023
f0890c7
refactor(Addressed PR feedback):
br648 Oct 25, 2023
85f57c9
refactor(Fixed merge conflicts):
br648 Oct 25, 2023
1d70389
refactor(Fixed merge conflicts):
br648 Oct 25, 2023
a98d056
refactor(pom.xml): Updated gtfs-lib version to that of dev-flex
br648 Oct 25, 2023
a74c545
refactor(pom.xml): Corrected gtfs-lib version
br648 Oct 25, 2023
128f14d
Merge pull request #550 from ibi-group/flex-transformation-updates
br648 Oct 25, 2023
66a9b42
refactor(Fixed merge conflict): Merged dev-flex into branch
br648 Oct 25, 2023
42fa3a1
refactor(Added geojson merging):
br648 Nov 3, 2023
93c3a3a
refactor(Corrected gtfs-lib reference):
br648 Nov 6, 2023
c809e83
refactor(Updated location merging and removed flex items from stop ti…
br648 Nov 7, 2023
d619b10
refactor(pom.xml): Removed commented out dependency
br648 Nov 7, 2023
518dcbe
refactor(Restored full flex feed files and bumped gtfs-lib version):
br648 Nov 8, 2023
c13559d
refactor(ExportSnapshotToGTFSJob.java): Temp fix for call to JdbcGtfs…
br648 Nov 8, 2023
0c53163
Merge branch 'dev' into dev-flex
br648 Nov 14, 2023
80fd154
Merge branch 'dev-flex' into flex-merge-feeds
br648 Nov 14, 2023
78bc0db
refactor(Fixed merge conflicts): Fixed conflicts merging dev into dev…
br648 Nov 17, 2023
2f93558
refactor(Fixed merge conflicts): Fixed conflicts with merging dev-fle…
br648 Nov 17, 2023
52b194f
refactor(Updates around foreign ref checks):
br648 Nov 20, 2023
75ad524
chore(Updated GTFS-lib reference to point at the new ibi group repo):
br648 Nov 22, 2023
3a5263f
refactor(Addressed PR feedback): Tidied up unit test
br648 Nov 29, 2023
9f4a338
refactor(Updated unit test and required test data):
br648 Nov 30, 2023
a6af53f
Merge branch 'dev' into dev-flex
miles-grant-ibigroup Jan 18, 2024
6279783
update gtfs-lib flex
miles-grant-ibigroup Jan 29, 2024
a332cfd
correctly update gtfs-lib
miles-grant-ibigroup Jan 29, 2024
f27fa2e
Merge branch 'dev' into flex-merge-feeds
miles-grant-ibigroup Feb 7, 2024
78f0710
refactor(Fixed merge conflicts):
br648 Feb 8, 2024
ac17bc2
refactor(Fixed merge conflicts):
br648 Feb 8, 2024
e77c9a1
Merge pull request #573 from ibi-group/flex-merge-feeds
miles-grant-ibigroup Feb 8, 2024
bcc2851
Merge branch 'dev' into dev-flex
miles-grant-ibigroup Mar 27, 2024
11e6ef8
Merge branch 'dev' into dev-flex
miles-grant-ibigroup Apr 3, 2024
6a764ff
refactor(Updates to include location groups and location group stops):
br648 May 15, 2024
777ba4e
refactor(Remove areas from gtfs test file and unit tests):
br648 May 15, 2024
3fa4d04
Merge branch 'dev' into dev-flex
br648 May 16, 2024
7dc1b5c
Merge branch 'dev-flex' into feature/DT-423-rename-stop-areas-locatio…
br648 May 16, 2024
80d44af
Merge branch 'dev' into dev-flex
miles-grant-ibigroup May 21, 2024
46cd62c
Merge branch 'dev-flex' into feature/DT-423-rename-stop-areas-locatio…
miles-grant-ibigroup May 21, 2024
4e17e9c
temp: enable docker build
miles-grant-ibigroup May 21, 2024
38f9fd8
refactor(Bumped GTFS-Lib version and fixed failing flex merge test):
br648 Jun 24, 2024
f3244cb
Merge branch 'feature/DT-423-rename-stop-areas-location-groups' of ht…
br648 Jun 24, 2024
874d08e
refactor(pom.xml): Bumped GTFS-lib version
br648 Jul 3, 2024
41de8f0
update gtfs.yml to latest spec
miles-grant-ibigroup Jul 5, 2024
1655d8f
refactor(pom.xml): Bumped GTFS-Lib version
br648 Jul 8, 2024
c2c14db
Merge branch 'feature/DT-423-rename-stop-areas-location-groups' of ht…
br648 Jul 8, 2024
04a9819
refactor(pom.xml): Bumped GTFS-Lib version
br648 Jul 9, 2024
0c490d6
refactor(Bumped gtfs-lib version):
br648 Jul 11, 2024
2233c01
Merge branch 'dev-flex' of https://github.com/ibi-group/datatools-ser…
br648 Jul 30, 2024
300c981
Merge branch 'dev' into dev-flex
br648 Jul 30, 2024
dbf3d04
Merge branch 'dev-flex' into feature/DT-423-rename-stop-areas-locatio…
br648 Jul 30, 2024
a62e3db
refactor(pom.xml): Bumped GTFS-Lib version
br648 Sep 9, 2024
45d7036
refactor(pom.xml): Included common-lang3 required by GTFS-Lib
br648 Sep 9, 2024
40dfe40
refactor(Refined reference table discovery):
br648 Sep 17, 2024
8e2d520
update gtfs-lib
miles-grant-ibigroup Sep 17, 2024
a892b31
refactor(pom.xml): Bumped GTFS-lib version
br648 Sep 18, 2024
2426091
refactor(Addressed PR feedback):
br648 Oct 22, 2024
10d924c
refactor(pom.xml): Bumped GTFS-lib version
br648 Oct 22, 2024
a7c4121
Merge pull request #599 from ibi-group/feature/DT-423-rename-stop-are…
br648 Oct 22, 2024
1e6769a
refactor(Update to make use of the new CSVReaderUtil):
br648 Nov 13, 2024
c29e369
Merge pull request #601 from ibi-group/feature/DT-464-loc-grp-numbering
br648 Nov 14, 2024
4e00d8b
improvement(pom.xml): Bumped GTFS lib version to include flex validat…
br648 Feb 24, 2025
8847f54
Merge branch 'dev' into dev-flex
miles-grant-ibigroup Feb 27, 2025
4abd3ff
Merge branch 'dev-flex' of https://github.com/ibi-group/datatools-ser…
br648 Mar 6, 2025
15d69db
improvement(Bumped GTFS Lib version): New version includes fix to Fle…
br648 Mar 27, 2025
97b4fa8
improvement(Bumped GTFS-Lib version):
br648 Mar 27, 2025
712ea04
improvement(Bumped GTFS-Lib version): Update includes GeoJson seriali…
br648 Mar 31, 2025
5fd8f84
fix(Fixed merging issue): booking rule reference incorrect in merged …
br648 Apr 4, 2025
72bf1f8
fix(Fixed NPE and updated GTFS lib to include reordering fix):
br648 Apr 8, 2025
a1b30db
Merge branch 'dev' into dev-flex
br648 Apr 8, 2025
a6f1f63
improvement(pom.xml): Bumped GTFS-Lib version
br648 Apr 23, 2025
eccacc6
Merge branch 'dev' into dev-flex
miles-grant-ibigroup May 14, 2025
45e0c70
improvement(Fix merge conflicts):
br648 Jul 4, 2025
4a48606
Merge branch 'dev' into dev-flex
br648 Jul 15, 2025
38eb9f1
improvement(Fixed merge conflicts):
br648 Aug 5, 2025
0af917a
Merge branch 'dev' into dev-flex
br648 Aug 7, 2025
f9dc434
Merge branch 'dev' into dev-flex
br648 Oct 17, 2025
d8feb7f
improvement(maven.yml): Bumped node version from 20.x to 22.x
br648 Oct 17, 2025
000c5f8
Merge branch 'dev' into dev-flex
br648 Dec 10, 2025
ef9ebb4
Merge branch 'dev' into dev-flex
br648 Dec 11, 2025
7bafa87
Merge branch 'dev' into dev-flex
br648 Dec 17, 2025
2cfa001
Merge branch 'dev' into dev-flex
br648 Mar 9, 2026
29ee2ed
Merge branch 'dev' into dev-flex
br648 Mar 30, 2026
f40e34f
improvement(Fixed merge conflicts):
br648 Jun 2, 2026
eeef16f
improvement(pom.xml): Updated GTFS-Lib version
br648 Jun 8, 2026
31e5320
chore(deps): Upgrade gtfs-lib
binh-dam-ibigroup Jun 10, 2026
f0873d8
chore(Bump gtfs-lib version):
br648 Jun 23, 2026
353ed21
chore(deps): Upgrade gtfs-lib
binh-dam-ibigroup Jul 6, 2026
8b54312
Merge pull request #655 from ibi-group/update-gtfs-lib-flex
binh-dam-ibigroup Jul 6, 2026
56d9064
Updated GTFS lib version
br648 Jul 13, 2026
1342649
chore(Config update): disabled mtc extension by default
br648 Jul 14, 2026
81d0288
chore(config update): enabled mtc extension by default
br648 Jul 14, 2026
3be8dbd
chore(Fixed merge conflict with gtfs-lib version):
br648 Jul 15, 2026
504d08c
improvement(Updated gtfs-lib version):
br648 Jul 15, 2026
ecce0f8
Merge pull request #651 from ibi-group/dev-flex-merge
br648 Jul 15, 2026
b92c1a4
Merge branch 'dev' into dev-flex
br648 Jul 21, 2026
efa510f
chore(deps): update gtfs-lib for CSV export fixes.
binh-dam-ibigroup Aug 7, 2026
12ca623
test(FeedMergeFeedsJob): Remove unused imports/modifiers.
binh-dam-ibigroup Aug 10, 2026
2c5d302
test(FeedMergeFeedsJob): Comment out test on merged locations.
binh-dam-ibigroup Aug 10, 2026
678728d
refactor(Fixed merge conflicts):
br648 Aug 13, 2026
e0990ae
test(FlexMergeFeedsJob): Update test comments regarding supported loc…
binh-dam-ibigroup Aug 14, 2026
02ac708
Merge branch 'dev-flex' into flex-update-gtfslib-csv
binh-dam-ibigroup Aug 14, 2026
d5012aa
Merge pull request #662 from ibi-group/flex-update-gtfslib-csv
binh-dam-ibigroup Aug 14, 2026
71a7bfe
Merge branch 'dev' into dev-flex
binh-dam-ibigroup Aug 18, 2026
1c545ee
improvement(build-docker.yml): Removed dev-flex branch trigger
br648 Sep 14, 2026
14e4bcc
refactor(Addressed merge conflicts):
br648 Sep 17, 2026
f9d0297
chore(Updated gtfs-lib version): Version now matches the commit hash …
br648 Sep 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build-docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Create and publish a Docker image

on:
push:
branches: ['dev', 'master', 'dev-flex', 'mtc-deploy']
branches: ['dev', 'master', 'mtc-deploy']

env:
REGISTRY: ghcr.io
Expand Down
11 changes: 8 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -296,7 +296,7 @@
<groupId>com.github.ibi-group</groupId>
<artifactId>gtfs-lib</artifactId>
<!-- Latest dev build on jitpack.io -->
<version>d39534084f9df5a798ae8d2b6f61cd8a6ab4947d</version>
<version>065d51c957dfdd6231b3f10e9fddef4dd867146a</version>
<!-- Exclusions added in order to silence SLF4J warnings about multiple bindings:
http://www.slf4j.org/codes.html#multiple_bindings
-->
Expand Down Expand Up @@ -424,9 +424,9 @@
</dependency>
<!-- Snapshotting library for testing -->
<dependency>
<groupId>com.github.conveyal</groupId>
<groupId>com.github.ibi-group</groupId>
<artifactId>java-snapshot-matcher</artifactId>
<version>3495b32f7b4d3f82590e0a2284029214070b6984</version>
<version>master</version>
<scope>test</scope>
</dependency>
<!-- wiremock is used to mock http requests -->
Expand Down Expand Up @@ -505,6 +505,11 @@
<artifactId>gson</artifactId>
<version>2.8.9</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.17.0</version>
</dependency>
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
Expand Down
7 changes: 7 additions & 0 deletions src/main/java/com/conveyal/datatools/manager/DataManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,13 @@ static void registerRoutes() throws IOException {
new EditorControllerImpl(EDITOR_API_PREFIX, Table.FARE_PRODUCTS, DataManager.GTFS_DATA_SOURCE);
new EditorControllerImpl(EDITOR_API_PREFIX, Table.FARE_TRANSFER_RULES, DataManager.GTFS_DATA_SOURCE);
new EditorControllerImpl(EDITOR_API_PREFIX, Table.FEED_INFO, DataManager.GTFS_DATA_SOURCE);

// NOTE: Booking rules, locations and location shapes are GTFS Flex additions.
new EditorControllerImpl(EDITOR_API_PREFIX, Table.BOOKING_RULES, DataManager.GTFS_DATA_SOURCE);
new EditorControllerImpl(EDITOR_API_PREFIX, Table.LOCATIONS, DataManager.GTFS_DATA_SOURCE);
new EditorControllerImpl(EDITOR_API_PREFIX, Table.LOCATION_GROUP, DataManager.GTFS_DATA_SOURCE);
new EditorControllerImpl(EDITOR_API_PREFIX, Table.LOCATION_GROUP_STOPS, DataManager.GTFS_DATA_SOURCE);
new EditorControllerImpl(EDITOR_API_PREFIX, Table.LOCATION_SHAPES, DataManager.GTFS_DATA_SOURCE);
new EditorControllerImpl(EDITOR_API_PREFIX, Table.NETWORKS, DataManager.GTFS_DATA_SOURCE);
new EditorControllerImpl(EDITOR_API_PREFIX, Table.RIDER_CATEGORIES, DataManager.GTFS_DATA_SOURCE);
new EditorControllerImpl(EDITOR_API_PREFIX, Table.ROUTES, DataManager.GTFS_DATA_SOURCE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,12 @@
import com.conveyal.datatools.manager.persistence.Persistence;
import com.conveyal.datatools.manager.utils.ErrorUtils;
import com.conveyal.gtfs.loader.Feed;
import com.conveyal.gtfs.loader.JdbcGtfsExporter;
import com.conveyal.gtfs.loader.Table;
import com.conveyal.gtfs.model.Location;
import com.conveyal.gtfs.model.LocationShape;
import com.conveyal.gtfs.model.StopTime;
import com.conveyal.gtfs.util.GeoJsonUtil;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.collect.Lists;
Expand All @@ -39,13 +43,17 @@
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

import static com.conveyal.datatools.manager.jobs.feedmerge.MergeFeedsType.SERVICE_PERIOD;
import static com.conveyal.datatools.manager.jobs.feedmerge.MergeFeedsType.REGIONAL;
import static com.conveyal.datatools.manager.jobs.feedmerge.MergeStrategy.CHECK_STOP_TIMES;
import static com.conveyal.datatools.manager.models.FeedRetrievalMethod.REGIONAL_MERGE;
import static com.conveyal.datatools.manager.utils.MergeFeedUtils.*;
import static com.conveyal.datatools.manager.utils.MergeFeedUtils.getMergedVersion;
import static com.conveyal.datatools.manager.utils.MergeFeedUtils.stopTimesMatchSimplified;
import static com.conveyal.datatools.manager.utils.StringUtils.getCleanName;
import static com.conveyal.gtfs.loader.Table.LOCATION_GEO_JSON_FILE_NAME;

/**
* This job handles merging two or more feed versions according to logic specific to the specified merge type.
Expand Down Expand Up @@ -205,6 +213,8 @@ public void jobLogic() {
}
}

mergeLocations(out);

// Loop over GTFS tables and merge each feed one table at a time.
for (int i = 0; i < numberOfTables; i++) {
Table table = tablesToMerge.get(i);
Expand All @@ -226,7 +236,7 @@ public void jobLogic() {
status.fail(message, e);
} finally {
try {
feedMergeContext.close();
if (feedMergeContext != null) feedMergeContext.close();
} catch (IOException e) {
logAndReportToBugsnag(e, "Error closing FeedMergeContext object");
}
Expand All @@ -246,6 +256,39 @@ public void jobLogic() {
}
}

/**
* Merge locations.geojson files. These files are not compatible with the CSV merging strategy. Instead, the
* location.geojson file is flattened into locations and locations shapes. The location id is then updated with the
* scope id to keep feed locations unique, converted back into geojson and written to the zip file.
*
* Locations must be processed prior to other CSV files so the location ids are available for foreign reference
* checks.
*/
void mergeLocations(ZipOutputStream out) throws IOException {
Set<Location> mergedLocations = new HashSet<>();
Set<LocationShape> mergedLocationShapes = new HashSet<>();
for (FeedToMerge feed : feedMergeContext.feedsToMerge) {
ZipEntry locationGeoJsonFile = feed.zipFile.getEntry(LOCATION_GEO_JSON_FILE_NAME);
if (locationGeoJsonFile != null) {
String idScope = getCleanName(feed.version.parentFeedSource().name) + feed.version.version;
List<Location> locations = GeoJsonUtil.getLocationsFromGeoJson(feed.zipFile, locationGeoJsonFile, null);
for (Location location : locations) {
location.location_id = String.join(":", idScope, location.location_id);
mergedLocations.add(location);
feedMergeContext.locationIds.add(location.location_id);
}
List<LocationShape> locationShapes = GeoJsonUtil.getLocationShapesFromGeoJson(feed.zipFile, locationGeoJsonFile, null);
for (LocationShape locationShape : locationShapes) {
locationShape.location_id = String.join(":", idScope, locationShape.location_id);
mergedLocationShapes.add(locationShape);
}
}
}
if (!mergedLocations.isEmpty()) {
JdbcGtfsExporter.writeLocationsToFile(out, new ArrayList<>(mergedLocations), new ArrayList<>(mergedLocationShapes));
}
}

/**
* Obtains trip ids whose entries in the stop_times table differ between the active and future feed.
*/
Expand Down Expand Up @@ -282,6 +325,10 @@ private boolean shouldSkipTable(String tableName) {
LOG.warn("Skipping editor-only table {}.", tableName);
return true;
}
if (tableName.equals(Table.LOCATIONS.name) || tableName.equals(Table.LOCATION_SHAPES.name)) {
LOG.warn("{} detected. Skipping traditional merge in favour of bespoke merge.", LOCATION_GEO_JSON_FILE_NAME);
return true;
}
return false;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import com.conveyal.datatools.manager.models.transform.FeedTransformZipTarget;
import com.conveyal.datatools.manager.models.transform.RemoveNonRevenueTripsTransformation;
import com.conveyal.datatools.manager.models.transform.ZipTransformation;
import com.conveyal.gtfs.validator.ValidationResult;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.slf4j.Logger;
Expand Down Expand Up @@ -227,15 +228,20 @@ private String getErrorReasonMessage() {
public String getNotificationMessage() {
StringBuilder message = new StringBuilder();
if (!status.error) {
message.append(String.format("New feed version created for %s (valid from %s - %s). ",
feedSource.name,
feedVersion.validationResult.firstCalendarDate,
feedVersion.validationResult.lastCalendarDate));
if (feedVersion.validationResult.errorCount > 0) {
message.append(String.format("During validation, we found %s issue(s)",
feedVersion.validationResult.errorCount));
ValidationResult validationResult = feedVersion.validationResult;
if (validationResult != null) {
message.append(String.format("New feed version created for %s (valid from %s - %s).",
feedSource.name,
validationResult.firstCalendarDate,
validationResult.lastCalendarDate
));
if (validationResult.errorCount > 0) {
message.append(String.format(" During validation, we found %s issue(s)", validationResult.errorCount));
} else {
message.append(" The validation check found no issues with this new dataset!");
}
} else {
message.append("The validation check found no issues with this new dataset!");
message.append(String.format("New feed version created for %s.", feedSource.name));
}
} else {
// Processing did not complete. Depending on which sub-task this occurred in,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import java.io.Closeable;
import java.io.IOException;
import java.time.LocalDate;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

Expand All @@ -23,6 +24,8 @@ public class FeedMergeContext implements Closeable {
public final boolean tripIdsMatch;
public final LocalDate futureFirstCalendarStartDate;
public final Set<String> sharedTripIds;
public Set<String> locationIds = new HashSet<>();


public FeedMergeContext(Set<FeedVersion> feedVersions, Auth0UserProfile owner) throws IOException {
feedsToMerge = MergeFeedUtils.collectAndSortFeeds(feedVersions, owner);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,12 @@ public class MergeFeedsResult implements Serializable {
*/
public Set<String> calendarDatesServiceIds = new HashSet<>();

/**
* Track various table ids for resolving foreign references.
*/
public Set<String> stopIds = new HashSet<>();
public Set<String> locationGroupStopIds = new HashSet<>();

/**
* Track the set of route IDs to end up in the merged feed in order to determine which route_attributes
* records should be retained in the merged result.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,7 @@ public void startNewRow() throws IOException {
// For this table, use all fields found in the feeds to merge.
sharedSpecFields = List.copyOf(allFields);
} else {
setForeignReferenceKeyValues();
// Get the spec fields and custom/proprietary fields to export
List<Field> specFields = table.specFields();
// Filter the spec fields on the set of fields found in all feeds to be merged.
Expand All @@ -250,8 +251,24 @@ public void startNewRow() throws IOException {
}

/**
* Determine which reference table to use. If there is only one reference use this. If there are multiple references
* determine the context and then the correct reference table to use.
* Build a list of table key id values to be used in foreign key field look-ups.
*/
private void setForeignReferenceKeyValues() {
switch (table.name) {
case "stops":
mergeFeedsResult.stopIds.add(getIdWithScope(keyValue));
break;
case "location_group_stops":
mergeFeedsResult.locationGroupStopIds.add(getIdWithScope(keyValue));
break;
default:
// nothing.
}
}

/**
* Determine which reference table to use. If there is only one reference use this. If there are multiple
* references, determine the context and then the correct reference table to use.
*/
private Table getReferenceTable(FieldContext fieldContext, Field field) {
if (field.referenceTables.size() == 1) {
Expand All @@ -266,7 +283,12 @@ private Table getReferenceTable(FieldContext fieldContext, Field field) {
getTableScopedValue(Table.CALENDAR, fieldContext.getValue()),
getTableScopedValue(Table.CALENDAR_DATES, fieldContext.getValue())
);
// Include other cases as multiple references are added e.g. flex!.
case STOP_TIMES_STOP_ID_KEY:
case LOCATION_GROUP_STOPS_STOP_ID_KEY:
return ReferenceTableDiscovery.getStopReferenceTable(
fieldContext.getValueToWrite(),
mergeFeedsResult
);
default:
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ public class ReferenceTableDiscovery {

public static final String REF_TABLE_SEPARATOR = "#~#";

/**
* Tables that have two or more foreign references.
*/
public enum ReferenceTableKey {

TRIP_SERVICE_ID_KEY(
Expand All @@ -22,6 +25,22 @@ public enum ReferenceTableKey {
Table.CALENDAR_DATES.name,
Table.SCHEDULE_EXCEPTIONS.name
)
),
LOCATION_GROUP_STOPS_STOP_ID_KEY(
String.join(
REF_TABLE_SEPARATOR,
Table.LOCATION_GROUP_STOPS.name,
"stop_id",
Table.STOPS.name
)
),
STOP_TIMES_STOP_ID_KEY(
String.join(
REF_TABLE_SEPARATOR,
Table.STOP_TIMES.name,
"stop_id",
Table.STOPS.name
)
);

private final String value;
Expand Down Expand Up @@ -87,4 +106,14 @@ public static Table getTripServiceIdReferenceTable(
}
return null;
}

/**
* Defines the reference table as a stop if the field value matches a stop id.
*/
public static Table getStopReferenceTable(String fieldValue, MergeFeedsResult mergeFeedsResult) {
if (mergeFeedsResult.stopIds.contains(fieldValue)) {
return Table.STOPS;
}
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import com.conveyal.datatools.manager.utils.connections.ConnectionResponse;
import com.conveyal.datatools.manager.utils.connections.HttpURLConnectionResponse;
import com.conveyal.gtfs.GTFS;
import com.conveyal.gtfs.loader.FeedLoadResult;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
Expand Down Expand Up @@ -180,6 +181,14 @@ public String organizationId () {

public String editorNamespace;

/**
* If this feed source references a feed version that is GTFS Flex, this value will permanently be set to true.
* This is evaluated every time a feed version is retrieved as different feed versions may or may not be flex.
*/
public boolean flex;

public boolean flexUIFeaturesEnabled;

/**
* Create a new feed.
*/
Expand Down Expand Up @@ -388,6 +397,7 @@ public FeedVersion processFetchResponse(
String message = String.format("Fetch complete for %s", this.name);
LOG.info(message);
status.completeSuccessfully(message);
presetFlex(version);
return version;
}
}
Expand Down Expand Up @@ -429,10 +439,16 @@ public String toString () {
*/
@JsonIgnore
public FeedVersion retrieveLatest() {
return Persistence.feedVersions.getOneFiltered(
FeedVersion newestVersion = Persistence.feedVersions.getOneFiltered(
eq("feedSourceId", this.id),
Sorts.descending("version")
);
if (newestVersion == null) {
// Is this what happens if there are none?
return null;
}
presetFlex(newestVersion);
return newestVersion;
}

/**
Expand All @@ -448,6 +464,7 @@ public FeedVersion retrievePublishedVersion() {
// Is this what happens if there are none?
return null;
}
presetFlex(publishedVersion);
return publishedVersion;
}

Expand Down Expand Up @@ -809,4 +826,19 @@ public <T extends FeedTransformation> List<T> getActiveTransformations(FeedVersi
.flatMap(Collection::stream)
.collect(Collectors.toList());
}

/**
* If a flex feed version is loaded, set this feed source to permanently be a flex feed source. Subsequent feed
* versions which are not flex will have no affected.
*/
public void presetFlex(FeedVersion feedVersion) {
boolean isFlexFeedVersion = false;
if (feedVersion.feedLoadResult != null) isFlexFeedVersion = feedVersion.feedLoadResult.isGTFSFlex();
if (!flex && isFlexFeedVersion) {
// If the feed version is flex (and the feed source was not flex) permanently enable flex.
flex = flexUIFeaturesEnabled = true;
Persistence.feedSources.updateField(this.id, "flexUIFeaturesEnabled", true);
Persistence.feedSources.updateField(this.id, "flex", true);
}
}
}
Loading
Loading