diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs
index 875f4fb67b8..c232ca6e3d3 100644
--- a/.git-blame-ignore-revs
+++ b/.git-blame-ignore-revs
@@ -9,3 +9,9 @@
# reorder and reformat GTFS GraphQL API schema file with graphql-java
14051fab312a67cae9a460aaf0bbc77223bec624
+
+# Make OTP a multi-module project
+ead33ffe280dd7caf72cae5ff7a41542e8427636
+
+# json file reformatting with prettier
+c287575df6798810a69fafc54c8c4e1867b71367
diff --git a/.github/workflows/cibuild.yml b/.github/workflows/cibuild.yml
index 89bc77b2b97..212c3934dc2 100644
--- a/.github/workflows/cibuild.yml
+++ b/.github/workflows/cibuild.yml
@@ -14,6 +14,12 @@ on:
- master
- dev-1.x
- dev-2.x
+env:
+ # Since version 3.9.0 of Maven it will automatically understand this environment variable.
+ # However, as of 2024-11 the latest versions of Ubuntu and Debian were on 3.8.8 so it will take some
+ # time until we can remove the $MAVEN_ARGS below.
+ MAVEN_ARGS: "--no-transfer-progress -Dstyle.color=always"
+
jobs:
build-linux:
runs-on: ubuntu-latest
@@ -46,22 +52,29 @@ jobs:
# https://github.com/actions/runner-images/issues/1499
# we set nodePath and npmPath to skip downloading the node binary, which frequently times out
run: |
- mvn --batch-mode jacoco:prepare-agent test jacoco:report -P prettierCheck -Dprettier.nodePath=node -Dprettier.npmPath=npm
- mvn --batch-mode package -Dmaven.test.skip -P prettierSkip
+ mvn $MAVEN_ARGS jacoco:prepare-agent test jacoco:report -P prettierCheck -Dprettier.nodePath=node -Dprettier.npmPath=npm
+ mvn $MAVEN_ARGS package -Dmaven.test.skip -P prettierSkip
- name: Send coverage data to codecov.io
if: github.repository_owner == 'opentripplanner'
uses: codecov/codecov-action@v4
with:
- files: target/site/jacoco/jacoco.xml
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
+ - name: Upload test results to Codecov
+ # always upload test results, even when failed
+ if: ${{ !cancelled() }}
+ uses: codecov/test-results-action@v1
+ with:
+ token: ${{ secrets.CODECOV_TOKEN }}
+ files: "*TEST-*.xml"
+
- name: Deploy to Github Package Registry
if: github.event_name == 'push' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/dev-1.x' || github.ref == 'refs/heads/dev-2.x')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: mvn --batch-mode deploy --settings maven-settings.xml -DskipTests -DGITHUB_REPOSITORY=$GITHUB_REPOSITORY -P prettierSkip -P deployGitHub
+ run: mvn $MAVEN_ARGS deploy --settings maven-settings.xml -DskipTests -DGITHUB_REPOSITORY=$GITHUB_REPOSITORY -P prettierSkip -P deployGitHub
build-windows:
timeout-minutes: 20
@@ -79,7 +92,7 @@ jobs:
- name: Configure Windows Pagefile
uses: al-cheb/configure-pagefile-action@v1.4
- name: Run tests
- run: mvn --batch-mode test -P prettierSkip
+ run: mvn $MAVEN_ARGS test -P prettierSkip
docs:
if: github.repository_owner == 'opentripplanner'
@@ -89,7 +102,7 @@ jobs:
LOCAL_BRANCH: local-pages
REMOTE_BRANCH: main
TOKEN: ${{ secrets.CHANGELOG_TOKEN }}
- MASTER_BRANCH_VERSION: 2.5.0
+ MASTER_BRANCH_VERSION: 2.6.0
steps:
@@ -121,7 +134,7 @@ jobs:
- name: Build GTFS GraphQL API documentation
run: |
- npm install -g @magidoc/cli@6.0.0
+ npm install -g @magidoc/cli@6.1.0
magidoc generate --stacktrace
- name: Deploy compiled HTML to Github pages
@@ -154,7 +167,7 @@ jobs:
# schema hasn't changed.
# example commit: https://github.com/opentripplanner/docs/commit/45e6ddf8e4a4
- SCHEMA_FILE_MODIFIED=`git log -n 1 --pretty=format:%ct src/main/resources/org/opentripplanner/apis/gtfs/schema.graphqls`
+ SCHEMA_FILE_MODIFIED=`git log -n 1 --pretty=format:%ct application/src/main/resources/org/opentripplanner/apis/gtfs/schema.graphqls`
echo "schema modified at ${SCHEMA_FILE_MODIFIED}"
git checkout $LOCAL_BRANCH
DOCS_MODIFIED=`git log -n 1 --pretty=format:%ct api/dev-2.x/graphql-gtfs/introduction.html`
@@ -179,9 +192,9 @@ jobs:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
- node-version: 16
+ node-version: 22
- name: Run code generator
- working-directory: src/main/java/org/opentripplanner/apis/gtfs/generated
+ working-directory: application/src/main/java/org/opentripplanner/apis/gtfs/generated
run: |
yarn install
yarn generate
@@ -192,7 +205,7 @@ jobs:
distribution: temurin
cache: maven
- name: Compile Java code
- run: mvn --batch-mode compile -DskipTests -P prettierSkip
+ run: mvn $MAVEN_ARGS compile -DskipTests -P prettierSkip
container-image:
if: github.repository_owner == 'opentripplanner' && github.event_name == 'push' && (github.ref == 'refs/heads/dev-2.x' || github.ref == 'refs/heads/master')
@@ -235,4 +248,6 @@ jobs:
echo "Maven version ${version_with_snapshot} contains SNAPSHOT, adding date to container image tag"
fi
- mvn --batch-mode -P prettierSkip compile com.google.cloud.tools:jib-maven-plugin:build -Djib.to.tags=latest,$image_version
+ MAVEN_SKIP_ARGS="-P prettierSkip -Dmaven.test.skip=true -Dmaven.source.skip=true"
+
+ mvn $MAVEN_ARGS $MAVEN_SKIP_ARGS package com.google.cloud.tools:jib-maven-plugin:build -Djib.to.tags=latest,$image_version
diff --git a/.github/workflows/debug-client.yml b/.github/workflows/debug-client.yml
index 6857b56b161..3c87e1c1b5c 100644
--- a/.github/workflows/debug-client.yml
+++ b/.github/workflows/debug-client.yml
@@ -76,8 +76,8 @@ jobs:
git checkout dev-2.x
git pull --rebase
- CLIENT_HTML_OUTPUT=src/client/index.html
- mkdir -p src/client/
+ CLIENT_HTML_OUTPUT=application/src/client/index.html
+ mkdir -p application/src/client/
cp client/output/index.html ${CLIENT_HTML_OUTPUT}
# just to debug
diff --git a/.github/workflows/performance-test.yml b/.github/workflows/performance-test.yml
index bfddea1b408..1ec537a0b4f 100644
--- a/.github/workflows/performance-test.yml
+++ b/.github/workflows/performance-test.yml
@@ -83,12 +83,12 @@ jobs:
if: matrix.profile == 'core' || github.ref == 'refs/heads/dev-2.x'
env:
MAVEN_OPTS: "-Dmaven.repo.local=/home/lenni/.m2/repository/"
- run: mvn -DskipTests --batch-mode package -P prettierSkip
+ run: mvn -DskipTests --batch-mode install -P prettierSkip
- name: Build graph
if: matrix.profile == 'core' || github.ref == 'refs/heads/dev-2.x'
run: |
- cp target/otp-*-SNAPSHOT-shaded.jar otp.jar
+ cp shaded-jar/target/otp-*-SNAPSHOT-shaded.jar otp.jar
java -Xmx32G -jar otp.jar --build --save test/performance/${{ matrix.location }}/
- name: Run speed test
@@ -98,18 +98,18 @@ jobs:
SPEEDTEST_LOCATION: ${{ matrix.location }}
MAVEN_OPTS: "-Xmx50g -XX:StartFlightRecording=delay=${{ matrix.jfr-delay }},duration=30m,filename=${{ matrix.location}}-speed-test.jfr -Dmaven.repo.local=/home/lenni/.m2/repository/"
run: |
- mvn exec:java -Dexec.mainClass="org.opentripplanner.transit.speed_test.SpeedTest" -Dexec.classpathScope=test -Dexec.args="--dir=test/performance/${{ matrix.location }} -p md -n ${{ matrix.iterations }} -i 3 -0" -P prettierSkip
+ mvn --projects application exec:java -Dexec.mainClass="org.opentripplanner.transit.speed_test.SpeedTest" -Dexec.classpathScope=test -Dexec.args="--dir=test/performance/${{ matrix.location }} -p md -n ${{ matrix.iterations }} -i 3 -0"
- name: Archive travel results file
if: matrix.profile == 'core' || github.ref == 'refs/heads/dev-2.x'
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.location }}-travelSearch-results.csv
- path: test/performance/${{ matrix.location }}/travelSearch-results.csv
+ path: test/performance/${{ matrix.location }}/travelSearch-results-md.csv
- name: Archive Flight Recorder instrumentation file
if: matrix.profile == 'core' || github.ref == 'refs/heads/dev-2.x'
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.location }}-flight-recorder
- path: ${{ matrix.location}}-speed-test.jfr
+ path: application/${{ matrix.location }}-speed-test.jfr
diff --git a/.gitignore b/.gitignore
index 6fac28d2178..d67b620f7b1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -29,6 +29,7 @@ o_o_standalone_config_IncludeFileDirectiveTest_part.json
.venv/
_site/
build/
+!/application/src/build/
dist/
doc/user/_build/
gen-java/
diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md
index 4bd313c7a06..36ab454789a 100644
--- a/ARCHITECTURE.md
+++ b/ARCHITECTURE.md
@@ -40,22 +40,22 @@ examples. The Transit model is more complex than the VehiclePosition model.
Below is a list of documented components in OTP. Not every component is documented at a high level,
but this is a start and we would like to expand this list in the future.
-### [OTP Configuration design](src/main/java/org/opentripplanner/standalone/config/package.md)
+### [OTP Configuration design](application/src/main/java/org/opentripplanner/standalone/config/package.md)
The Configuration module is responsible for loading and parsing OTP configuration files and map them
into Plan Old Java Objects (POJOs). These POJOs are injected into the other components.
-### [GTFS import module](src/main/java/org/opentripplanner/gtfs/package.md)
+### [GTFS import module](application/src/main/java/org/opentripplanner/gtfs/package.md)
Used to import GTFS transit data files.
-### [NeTEx import module](src/main/java/org/opentripplanner/netex/package.md)
+### [NeTEx import module](application/src/main/java/org/opentripplanner/netex/package.md)
Used to import NeTEx transit data files.
### Transit Routing
-#### [Raptor transit routing](src/main/java/org/opentripplanner/raptor/package.md)
+#### [Raptor transit routing](raptor/src/main/java/org/opentripplanner/raptor/package.md)
This is the OTP2 new transit routing engine implemented using the Raptor algorithm. It explains how
Raptor works, the important concepts and the design. It might be worth reading even if you are not a
@@ -68,35 +68,35 @@ dependencies from Raptor to other parts of OTP code, only to utility classes not
Also, the code follows a stricter object-oriented design, than most other parts of OTP. The Raptor
implementation is highly critical code, hence we set the bar higher with respect to code quality.
-OTP provides transit data to Raptor by implementing the _raptor/api/transit_ model. The
-[RoutingService](src/main/java/org/opentripplanner/routing/RoutingService.java)
+OTP provides transit data to Raptor by implementing the _raptor/spi_. The
+[RoutingService](application/src/main/java/org/opentripplanner/routing/service/DefaultRoutingService.java)
is responsible for mapping from the OTP context to a
-[RaptorRequest](src/main/java/org/opentripplanner/raptor/api/request/RaptorRequest.java)
+[RaptorRequest](raptor/src/main/java/org/opentripplanner/raptor/api/request/RaptorRequest.java)
and then map the
-result, [Raptor Path](src/main/java/org/opentripplanner/raptor/api/path/Path.java), back to
+result, [Raptor Path](raptor/src/main/java/org/opentripplanner/raptor/api/path/RaptorPath.java), back to
the OTP internal domain. This might seem like a lot of unnecessary mapping, but mapping is simple -
routing is not.
The performance of Raptor is important, and we care about every millisecond. All changes to the
existing Raptor coded should be tested with the
-[SpeedTest](src/test/java/org/opentripplanner/transit/raptor/speed_test/package.md) and compared
+[SpeedTest](application/src/test/java/org/opentripplanner/transit/speed_test/package.md) and compared
with an earlier version of the code to make sure the performance is NOT degraded.
-#### [Transfer path optimization](src/main/java/org/opentripplanner/routing/algorithm/transferoptimization/package.md)
+#### [Transfer path optimization](application/src/main/java/org/opentripplanner/routing/algorithm/transferoptimization/package.md)
Describes the transfer functionality, the design and the implementation. The logic for finding the
best transfer is distributed to the Raptor and
-the [OptimizeTransferService](src/main/java/org/opentripplanner/routing/algorithm/transferoptimization/OptimizeTransferService.java)
+the [OptimizeTransferService](application/src/main/java/org/opentripplanner/routing/algorithm/transferoptimization/OptimizeTransferService.java)
.
-#### [Itinerary list filter chain](src/main/java/org/opentripplanner/routing/algorithm/filterchain/package.md)
+#### [Itinerary list filter chain](application/src/main/java/org/opentripplanner/routing/algorithm/filterchain/package.md)
Describes the itinerary list filter chain, used to post-process the itineraries returned from the
-routers in [RoutingWorker](src/main/java/org/opentripplanner/routing/algorithm/RoutingWorker.java),
+routers in [RoutingWorker](application/src/main/java/org/opentripplanner/routing/algorithm/RoutingWorker.java),
in order to sort and reduce the number of returned itineraries. It can also be used to decorate the
returned itineraries, especially if it requires more complex calculations, which would be unfeasible
to do during the routing process.
-### [Service](src/main/java/org/opentripplanner/service/package.md)
+### [Service](application/src/main/java/org/opentripplanner/service/package.md)
The service package contains small services usually specific to one or a few use-cases. In contrast
-to a domain model they may use one or many domain models and other services.
\ No newline at end of file
+to a domain model they may use one or many domain models and other services.
diff --git a/DEVELOPMENT_DECISION_RECORDS.md b/DEVELOPMENT_DECISION_RECORDS.md
index a0e0554d4de..333ac88e1db 100644
--- a/DEVELOPMENT_DECISION_RECORDS.md
+++ b/DEVELOPMENT_DECISION_RECORDS.md
@@ -16,7 +16,13 @@ tests. Expect to include some code cleanup as part of all PRs.
## Follow-Naming-Conventions
Use established terminology from GTFS, NeTEx or the existing OTP code. Make sure the code is easy
-to read and understand. [Follow naming conventions](CODE_CONVENTIONS.md#naming-conventions) .
+to read and understand. [Follow naming conventions](doc/dev/decisionrecords/NamingConventions.md#naming-conventions) .
+
+
+## Do Analysis-and-design if needed
+
+Be prepared to provide [analyses and/or design documentation](doc/dev/decisionrecords/AnalysesAndDesign.md)
+if a task is complex, changes the core model and/or the main APIs.
## Write-Code-Documentation - Use JavaDoc
@@ -32,7 +38,7 @@ notes on `private` members and as inline comments.
**See also**
- [Developers-Guide > Code comments](doc/user/Developers-Guide.md#code-comments).
- - [Codestyle > Javadoc Guidlines](doc/dev/decisionrecords/Codestyle.md#javadoc-guidlines) - JavaDoc checklist
+ - [Codestyle > Javadoc Guidelines](doc/dev/decisionrecords/Codestyle.md#javadoc-guidlines) - JavaDoc checklist
## Document-Config-and-APIs
diff --git a/README.md b/README.md
index 129771f9bdf..ec66e694e8c 100644
--- a/README.md
+++ b/README.md
@@ -31,11 +31,10 @@ We run a speed test (included in the code) to measure the performance for every
## Repository layout
-The main Java server code is in `src/main/`. OTP also includes a Javascript client based on the
-Leaflet mapping library in `src/client/`. This client is now primarily used for testing, with most
-major deployments building custom clients from reusable components. The Maven build produces a
-unified ("shaded") JAR file at `target/otp-VERSION.jar` containing all necessary code and
-dependencies to run OpenTripPlanner.
+The main Java server code is in `application/src/main/`. OTP also includes a Javascript client based on the
+MapLibre mapping library in `client/src/`. This client is now used for testing, with most major
+deployments building custom clients from reusable components. The Maven build produces a unified ("shaded")
+JAR file at `shaded-jar/target/otp-VERSION.jar` containing all necessary code and dependencies to run OpenTripPlanner.
Additional information and instructions are available in
the [main documentation](http://docs.opentripplanner.org/en/dev-2.x/), including a
diff --git a/application/pom.xml b/application/pom.xml
new file mode 100644
index 00000000000..c3b4a6ee582
--- /dev/null
+++ b/application/pom.xml
@@ -0,0 +1,484 @@
+
+
+ 4.0.0
+
+ org.opentripplanner
+ otp-root
+ 2.7.0-SNAPSHOT
+
+ application
+ OpenTripPlanner - Application
+
+
+
+
+ ${project.groupId}
+ gtfs-realtime-protobuf
+ ${project.version}
+
+
+ ${project.groupId}
+ utils
+ ${project.version}
+
+
+ ${project.groupId}
+ raptor
+ ${project.version}
+
+
+
+
+ net.sf.trove4j
+ trove4j
+
+
+
+ org.slf4j
+ slf4j-api
+
+
+
+ org.slf4j
+ jul-to-slf4j
+ ${slf4j.version}
+
+
+
+ ch.qos.logback
+ logback-classic
+ ${logback.version}
+
+
+
+ net.logstash.logback
+ logstash-logback-encoder
+ 8.0
+
+
+
+
+ com.google.dagger
+ dagger
+ ${google.dagger.version}
+
+
+
+
+
+ org.geotools
+ gt-coverage
+
+
+ org.geotools
+ gt-geotiff
+
+
+ org.geotools
+ gt-api
+
+
+ org.geotools
+ gt-geojson-core
+
+
+
+
+ org.apache.lucene
+ lucene-core
+ ${lucene.version}
+
+
+ org.apache.lucene
+ lucene-queryparser
+ ${lucene.version}
+
+
+ org.apache.lucene
+ lucene-suggest
+ ${lucene.version}
+
+
+
+ io.micrometer
+ micrometer-registry-prometheus
+ ${micrometer.version}
+
+
+ io.micrometer
+ micrometer-registry-influx
+ ${micrometer.version}
+ test
+
+
+
+
+
+ edu.ucar
+ netcdf4
+ ${netcdf4.version}
+
+
+
+ org.entur
+ netex-java-model
+ ${netex-java-model.version}
+
+
+
+
+ org.entur
+ siri-java-model
+ ${siri-java-model.version}
+
+
+
+
+ org.entur
+ siri-protobuf-mapper
+ 1.0.3
+
+
+
+ org.mobilitydata
+ gbfs-java-model
+ 1.0.9
+
+
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ ${junit.version}
+ test
+
+
+ org.junit.jupiter
+ junit-jupiter-params
+ ${junit.version}
+ test
+
+
+ com.google.truth
+ truth
+ 1.4.4
+ test
+
+
+ com.tngtech.archunit
+ archunit
+ 1.3.0
+ test
+
+
+ org.mockito
+ mockito-core
+ 5.14.2
+ test
+
+
+ io.github.origin-energy
+ java-snapshot-testing-junit5
+ 2.3.0
+ test
+
+
+
+
+ com.conveyal
+ kryo-tools
+ 1.6.0
+
+
+
+ de.javakaffee
+ kryo-serializers
+ 0.45
+
+
+
+ com.google.guava
+ guava
+
+
+
+ org.glassfish.jersey.core
+ jersey-server
+ ${jersey.version}
+
+
+
+ org.glassfish.jersey.containers
+ jersey-container-grizzly2-http
+ ${jersey.version}
+
+
+
+ org.glassfish.jersey.media
+ jersey-media-json-jackson
+ ${jersey.version}
+
+
+
+ org.glassfish.jersey.inject
+ jersey-hk2
+ ${jersey.version}
+
+
+
+
+ org.glassfish.jaxb
+ jaxb-runtime
+ ${jaxb-runtime.version}
+
+
+
+
+ com.fasterxml.jackson.core
+ jackson-core
+ ${jackson.version}
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ ${jackson.version}
+
+
+ com.fasterxml.jackson.datatype
+ jackson-datatype-jdk8
+ ${jackson.version}
+
+
+ com.fasterxml.jackson.datatype
+ jackson-datatype-jsr310
+ ${jackson.version}
+
+
+
+ com.fasterxml.jackson.core
+ jackson-annotations
+ ${jackson.version}
+
+
+
+
+
+
+ com.google.cloud
+ google-cloud-storage
+
+
+
+
+ com.google.cloud
+ google-cloud-pubsub
+
+
+
+
+ com.google.protobuf
+ protobuf-java
+
+
+
+
+ org.onebusaway
+ onebusaway-gtfs
+ 4.3.0
+
+
+
+ org.processing
+ core
+ 2.2.1
+
+
+
+ net.java.dev.jets3t
+ jets3t
+ 0.9.4
+
+
+
+ org.openstreetmap.osmosis
+ osmosis-osm-binary
+ 0.48.3
+
+
+
+ com.beust
+ jcommander
+ 1.82
+
+
+ com.graphql-java
+ graphql-java
+ 22.3
+
+
+ com.graphql-java
+ graphql-java-extended-scalars
+ 22.0
+
+
+ org.apache.httpcomponents.client5
+ httpclient5
+ 5.4.1
+
+
+ commons-cli
+ commons-cli
+ 1.5.0
+ test
+
+
+ net.sourceforge.javacsv
+ javacsv
+ 2.0
+
+
+ org.eclipse.paho
+ org.eclipse.paho.client.mqttv3
+ 1.2.5
+
+
+ io.github.ci-cmg
+ mapbox-vector-tile
+ 4.0.6
+
+
+ net.objecthunter
+ exp4j
+ 0.4.8
+
+
+ com.azure
+ azure-core
+ 1.46.0
+
+
+ com.azure
+ azure-messaging-servicebus
+ 7.15.0
+
+
+ com.azure
+ azure-identity
+ 1.11.2
+ compile
+
+
+ ch.poole
+ OpeningHoursParser
+ 0.28.2
+
+
+
+
+ org.apache.commons
+ commons-compress
+ 1.27.1
+ test
+
+
+
+
+
+
+
+ src/main/resources
+ true
+
+
+ src/ext/resources
+ true
+
+
+ src/client
+ client
+ false
+
+
+
+
+ src/test/resources
+
+
+ src/ext-test/resources
+
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+ 3.6.0
+
+
+ build-helper-generate-sources
+ generate-sources
+
+ add-source
+
+
+
+
+
+
+
+
+
+ build-helper-generate-test-sources
+ generate-test-sources
+
+ add-test-source
+
+
+
+
+
+
+
+
+
+
+
+ com.github.bohnman
+ package-info-maven-plugin
+ 1.1.0
+
+
+ ${project.basedir}/src/main/java
+ ${project.basedir}/target/generated-sources
+
+
+ **
+ ${project.basedir}/src/build/templates/package-info-template.java
+
+
+
+
+
+
+ generate
+
+
+
+
+
+
+
diff --git a/application/src/build/templates/package-info-template.java b/application/src/build/templates/package-info-template.java
new file mode 100644
index 00000000000..7cbb693f540
--- /dev/null
+++ b/application/src/build/templates/package-info-template.java
@@ -0,0 +1,4 @@
+@ParametersAreNonnullByDefault
+package org.opentripplanner;
+
+import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/src/client/META-INF/MANIFEST.MF b/application/src/client/META-INF/MANIFEST.MF
similarity index 100%
rename from src/client/META-INF/MANIFEST.MF
rename to application/src/client/META-INF/MANIFEST.MF
diff --git a/src/client/WEB-INF/web_client.xml b/application/src/client/WEB-INF/web_client.xml
similarity index 100%
rename from src/client/WEB-INF/web_client.xml
rename to application/src/client/WEB-INF/web_client.xml
diff --git a/src/client/classic-debug/i18n/babel.cfg b/application/src/client/classic-debug/i18n/babel.cfg
similarity index 100%
rename from src/client/classic-debug/i18n/babel.cfg
rename to application/src/client/classic-debug/i18n/babel.cfg
diff --git a/src/client/classic-debug/i18n/ca_ES.po b/application/src/client/classic-debug/i18n/ca_ES.po
similarity index 100%
rename from src/client/classic-debug/i18n/ca_ES.po
rename to application/src/client/classic-debug/i18n/ca_ES.po
diff --git a/src/client/classic-debug/i18n/de.po b/application/src/client/classic-debug/i18n/de.po
similarity index 100%
rename from src/client/classic-debug/i18n/de.po
rename to application/src/client/classic-debug/i18n/de.po
diff --git a/src/client/classic-debug/i18n/en.po b/application/src/client/classic-debug/i18n/en.po
similarity index 100%
rename from src/client/classic-debug/i18n/en.po
rename to application/src/client/classic-debug/i18n/en.po
diff --git a/src/client/classic-debug/i18n/es.po b/application/src/client/classic-debug/i18n/es.po
similarity index 100%
rename from src/client/classic-debug/i18n/es.po
rename to application/src/client/classic-debug/i18n/es.po
diff --git a/src/client/classic-debug/i18n/fr.po b/application/src/client/classic-debug/i18n/fr.po
similarity index 100%
rename from src/client/classic-debug/i18n/fr.po
rename to application/src/client/classic-debug/i18n/fr.po
diff --git a/src/client/classic-debug/i18n/hu.po b/application/src/client/classic-debug/i18n/hu.po
similarity index 100%
rename from src/client/classic-debug/i18n/hu.po
rename to application/src/client/classic-debug/i18n/hu.po
diff --git a/src/client/classic-debug/i18n/it.po b/application/src/client/classic-debug/i18n/it.po
similarity index 100%
rename from src/client/classic-debug/i18n/it.po
rename to application/src/client/classic-debug/i18n/it.po
diff --git a/src/client/classic-debug/i18n/messages.pot b/application/src/client/classic-debug/i18n/messages.pot
similarity index 100%
rename from src/client/classic-debug/i18n/messages.pot
rename to application/src/client/classic-debug/i18n/messages.pot
diff --git a/src/client/classic-debug/i18n/no.po b/application/src/client/classic-debug/i18n/no.po
similarity index 100%
rename from src/client/classic-debug/i18n/no.po
rename to application/src/client/classic-debug/i18n/no.po
diff --git a/src/client/classic-debug/i18n/pl.po b/application/src/client/classic-debug/i18n/pl.po
similarity index 100%
rename from src/client/classic-debug/i18n/pl.po
rename to application/src/client/classic-debug/i18n/pl.po
diff --git a/src/client/classic-debug/i18n/pt.po b/application/src/client/classic-debug/i18n/pt.po
similarity index 100%
rename from src/client/classic-debug/i18n/pt.po
rename to application/src/client/classic-debug/i18n/pt.po
diff --git a/src/client/classic-debug/i18n/sl.po b/application/src/client/classic-debug/i18n/sl.po
similarity index 100%
rename from src/client/classic-debug/i18n/sl.po
rename to application/src/client/classic-debug/i18n/sl.po
diff --git a/src/client/classic-debug/images/agency_logo.png b/application/src/client/classic-debug/images/agency_logo.png
similarity index 100%
rename from src/client/classic-debug/images/agency_logo.png
rename to application/src/client/classic-debug/images/agency_logo.png
diff --git a/src/client/classic-debug/images/alert.png b/application/src/client/classic-debug/images/alert.png
similarity index 100%
rename from src/client/classic-debug/images/alert.png
rename to application/src/client/classic-debug/images/alert.png
diff --git a/src/client/classic-debug/images/bicycle_green.png b/application/src/client/classic-debug/images/bicycle_green.png
similarity index 100%
rename from src/client/classic-debug/images/bicycle_green.png
rename to application/src/client/classic-debug/images/bicycle_green.png
diff --git a/src/client/classic-debug/images/bicycle_green_small.png b/application/src/client/classic-debug/images/bicycle_green_small.png
similarity index 100%
rename from src/client/classic-debug/images/bicycle_green_small.png
rename to application/src/client/classic-debug/images/bicycle_green_small.png
diff --git a/src/client/classic-debug/images/bicycle_red.png b/application/src/client/classic-debug/images/bicycle_red.png
similarity index 100%
rename from src/client/classic-debug/images/bicycle_red.png
rename to application/src/client/classic-debug/images/bicycle_red.png
diff --git a/src/client/classic-debug/images/bicycle_red_small.png b/application/src/client/classic-debug/images/bicycle_red_small.png
similarity index 100%
rename from src/client/classic-debug/images/bicycle_red_small.png
rename to application/src/client/classic-debug/images/bicycle_red_small.png
diff --git a/src/client/classic-debug/images/directions/circle_clockwise.png b/application/src/client/classic-debug/images/directions/circle_clockwise.png
similarity index 100%
rename from src/client/classic-debug/images/directions/circle_clockwise.png
rename to application/src/client/classic-debug/images/directions/circle_clockwise.png
diff --git a/src/client/classic-debug/images/directions/circle_counterclockwise.png b/application/src/client/classic-debug/images/directions/circle_counterclockwise.png
similarity index 100%
rename from src/client/classic-debug/images/directions/circle_counterclockwise.png
rename to application/src/client/classic-debug/images/directions/circle_counterclockwise.png
diff --git a/src/client/classic-debug/images/directions/clear.png b/application/src/client/classic-debug/images/directions/clear.png
similarity index 100%
rename from src/client/classic-debug/images/directions/clear.png
rename to application/src/client/classic-debug/images/directions/clear.png
diff --git a/src/client/classic-debug/images/directions/continue.png b/application/src/client/classic-debug/images/directions/continue.png
similarity index 100%
rename from src/client/classic-debug/images/directions/continue.png
rename to application/src/client/classic-debug/images/directions/continue.png
diff --git a/src/client/classic-debug/images/directions/depart.png b/application/src/client/classic-debug/images/directions/depart.png
similarity index 100%
rename from src/client/classic-debug/images/directions/depart.png
rename to application/src/client/classic-debug/images/directions/depart.png
diff --git a/src/client/classic-debug/images/directions/direction_icons.svg b/application/src/client/classic-debug/images/directions/direction_icons.svg
similarity index 100%
rename from src/client/classic-debug/images/directions/direction_icons.svg
rename to application/src/client/classic-debug/images/directions/direction_icons.svg
diff --git a/src/client/classic-debug/images/directions/elevator.png b/application/src/client/classic-debug/images/directions/elevator.png
similarity index 100%
rename from src/client/classic-debug/images/directions/elevator.png
rename to application/src/client/classic-debug/images/directions/elevator.png
diff --git a/src/client/classic-debug/images/directions/enter_station.png b/application/src/client/classic-debug/images/directions/enter_station.png
similarity index 100%
rename from src/client/classic-debug/images/directions/enter_station.png
rename to application/src/client/classic-debug/images/directions/enter_station.png
diff --git a/src/client/classic-debug/images/directions/exit_left.png b/application/src/client/classic-debug/images/directions/exit_left.png
similarity index 100%
rename from src/client/classic-debug/images/directions/exit_left.png
rename to application/src/client/classic-debug/images/directions/exit_left.png
diff --git a/src/client/classic-debug/images/directions/exit_right.png b/application/src/client/classic-debug/images/directions/exit_right.png
similarity index 100%
rename from src/client/classic-debug/images/directions/exit_right.png
rename to application/src/client/classic-debug/images/directions/exit_right.png
diff --git a/src/client/classic-debug/images/directions/exit_station.png b/application/src/client/classic-debug/images/directions/exit_station.png
similarity index 100%
rename from src/client/classic-debug/images/directions/exit_station.png
rename to application/src/client/classic-debug/images/directions/exit_station.png
diff --git a/src/client/classic-debug/images/directions/follow_signs.png b/application/src/client/classic-debug/images/directions/follow_signs.png
similarity index 100%
rename from src/client/classic-debug/images/directions/follow_signs.png
rename to application/src/client/classic-debug/images/directions/follow_signs.png
diff --git a/src/client/classic-debug/images/directions/hard_left.png b/application/src/client/classic-debug/images/directions/hard_left.png
similarity index 100%
rename from src/client/classic-debug/images/directions/hard_left.png
rename to application/src/client/classic-debug/images/directions/hard_left.png
diff --git a/src/client/classic-debug/images/directions/hard_right.png b/application/src/client/classic-debug/images/directions/hard_right.png
similarity index 100%
rename from src/client/classic-debug/images/directions/hard_right.png
rename to application/src/client/classic-debug/images/directions/hard_right.png
diff --git a/src/client/classic-debug/images/directions/left.png b/application/src/client/classic-debug/images/directions/left.png
similarity index 100%
rename from src/client/classic-debug/images/directions/left.png
rename to application/src/client/classic-debug/images/directions/left.png
diff --git a/src/client/classic-debug/images/directions/merge.png b/application/src/client/classic-debug/images/directions/merge.png
similarity index 100%
rename from src/client/classic-debug/images/directions/merge.png
rename to application/src/client/classic-debug/images/directions/merge.png
diff --git a/src/client/classic-debug/images/directions/right.png b/application/src/client/classic-debug/images/directions/right.png
similarity index 100%
rename from src/client/classic-debug/images/directions/right.png
rename to application/src/client/classic-debug/images/directions/right.png
diff --git a/src/client/classic-debug/images/directions/slightly_left.png b/application/src/client/classic-debug/images/directions/slightly_left.png
similarity index 100%
rename from src/client/classic-debug/images/directions/slightly_left.png
rename to application/src/client/classic-debug/images/directions/slightly_left.png
diff --git a/src/client/classic-debug/images/directions/slightly_right.png b/application/src/client/classic-debug/images/directions/slightly_right.png
similarity index 100%
rename from src/client/classic-debug/images/directions/slightly_right.png
rename to application/src/client/classic-debug/images/directions/slightly_right.png
diff --git a/src/client/classic-debug/images/directions/turn_left.png b/application/src/client/classic-debug/images/directions/turn_left.png
similarity index 100%
rename from src/client/classic-debug/images/directions/turn_left.png
rename to application/src/client/classic-debug/images/directions/turn_left.png
diff --git a/src/client/classic-debug/images/directions/turn_right.png b/application/src/client/classic-debug/images/directions/turn_right.png
similarity index 100%
rename from src/client/classic-debug/images/directions/turn_right.png
rename to application/src/client/classic-debug/images/directions/turn_right.png
diff --git a/src/client/classic-debug/images/directions/uturn_left.png b/application/src/client/classic-debug/images/directions/uturn_left.png
similarity index 100%
rename from src/client/classic-debug/images/directions/uturn_left.png
rename to application/src/client/classic-debug/images/directions/uturn_left.png
diff --git a/src/client/classic-debug/images/directions/uturn_right.png b/application/src/client/classic-debug/images/directions/uturn_right.png
similarity index 100%
rename from src/client/classic-debug/images/directions/uturn_right.png
rename to application/src/client/classic-debug/images/directions/uturn_right.png
diff --git a/src/client/classic-debug/images/flag_marker_green.png b/application/src/client/classic-debug/images/flag_marker_green.png
similarity index 100%
rename from src/client/classic-debug/images/flag_marker_green.png
rename to application/src/client/classic-debug/images/flag_marker_green.png
diff --git a/src/client/classic-debug/images/flag_marker_red.png b/application/src/client/classic-debug/images/flag_marker_red.png
similarity index 100%
rename from src/client/classic-debug/images/flag_marker_red.png
rename to application/src/client/classic-debug/images/flag_marker_red.png
diff --git a/src/client/classic-debug/images/gear.svg b/application/src/client/classic-debug/images/gear.svg
similarity index 100%
rename from src/client/classic-debug/images/gear.svg
rename to application/src/client/classic-debug/images/gear.svg
diff --git a/src/client/classic-debug/images/language_icon.png b/application/src/client/classic-debug/images/language_icon.png
similarity index 100%
rename from src/client/classic-debug/images/language_icon.png
rename to application/src/client/classic-debug/images/language_icon.png
diff --git a/src/client/classic-debug/images/language_icon.svg b/application/src/client/classic-debug/images/language_icon.svg
similarity index 100%
rename from src/client/classic-debug/images/language_icon.svg
rename to application/src/client/classic-debug/images/language_icon.svg
diff --git a/src/client/classic-debug/images/marker-0pct.png b/application/src/client/classic-debug/images/marker-0pct.png
similarity index 100%
rename from src/client/classic-debug/images/marker-0pct.png
rename to application/src/client/classic-debug/images/marker-0pct.png
diff --git a/src/client/classic-debug/images/marker-100pct.png b/application/src/client/classic-debug/images/marker-100pct.png
similarity index 100%
rename from src/client/classic-debug/images/marker-100pct.png
rename to application/src/client/classic-debug/images/marker-100pct.png
diff --git a/src/client/classic-debug/images/marker-25pct.png b/application/src/client/classic-debug/images/marker-25pct.png
similarity index 100%
rename from src/client/classic-debug/images/marker-25pct.png
rename to application/src/client/classic-debug/images/marker-25pct.png
diff --git a/src/client/classic-debug/images/marker-50pct.png b/application/src/client/classic-debug/images/marker-50pct.png
similarity index 100%
rename from src/client/classic-debug/images/marker-50pct.png
rename to application/src/client/classic-debug/images/marker-50pct.png
diff --git a/src/client/classic-debug/images/marker-75pct.png b/application/src/client/classic-debug/images/marker-75pct.png
similarity index 100%
rename from src/client/classic-debug/images/marker-75pct.png
rename to application/src/client/classic-debug/images/marker-75pct.png
diff --git a/src/client/classic-debug/images/marker-bike-green-shadowed.png b/application/src/client/classic-debug/images/marker-bike-green-shadowed.png
similarity index 100%
rename from src/client/classic-debug/images/marker-bike-green-shadowed.png
rename to application/src/client/classic-debug/images/marker-bike-green-shadowed.png
diff --git a/src/client/classic-debug/images/marker-bike-green.png b/application/src/client/classic-debug/images/marker-bike-green.png
similarity index 100%
rename from src/client/classic-debug/images/marker-bike-green.png
rename to application/src/client/classic-debug/images/marker-bike-green.png
diff --git a/src/client/classic-debug/images/marker-bike-red-shadowed.png b/application/src/client/classic-debug/images/marker-bike-red-shadowed.png
similarity index 100%
rename from src/client/classic-debug/images/marker-bike-red-shadowed.png
rename to application/src/client/classic-debug/images/marker-bike-red-shadowed.png
diff --git a/src/client/classic-debug/images/marker-bike-red.png b/application/src/client/classic-debug/images/marker-bike-red.png
similarity index 100%
rename from src/client/classic-debug/images/marker-bike-red.png
rename to application/src/client/classic-debug/images/marker-bike-red.png
diff --git a/src/client/classic-debug/images/marker-bike-shadow.png b/application/src/client/classic-debug/images/marker-bike-shadow.png
similarity index 100%
rename from src/client/classic-debug/images/marker-bike-shadow.png
rename to application/src/client/classic-debug/images/marker-bike-shadow.png
diff --git a/src/client/classic-debug/images/marker-blue-med.png b/application/src/client/classic-debug/images/marker-blue-med.png
similarity index 100%
rename from src/client/classic-debug/images/marker-blue-med.png
rename to application/src/client/classic-debug/images/marker-blue-med.png
diff --git a/src/client/classic-debug/images/marker-blue-nub.png b/application/src/client/classic-debug/images/marker-blue-nub.png
similarity index 100%
rename from src/client/classic-debug/images/marker-blue-nub.png
rename to application/src/client/classic-debug/images/marker-blue-nub.png
diff --git a/src/client/classic-debug/images/marker-blue-sm.png b/application/src/client/classic-debug/images/marker-blue-sm.png
similarity index 100%
rename from src/client/classic-debug/images/marker-blue-sm.png
rename to application/src/client/classic-debug/images/marker-blue-sm.png
diff --git a/src/client/classic-debug/images/marker-flag-end-shadowed.png b/application/src/client/classic-debug/images/marker-flag-end-shadowed.png
similarity index 100%
rename from src/client/classic-debug/images/marker-flag-end-shadowed.png
rename to application/src/client/classic-debug/images/marker-flag-end-shadowed.png
diff --git a/src/client/classic-debug/images/marker-flag-end.png b/application/src/client/classic-debug/images/marker-flag-end.png
similarity index 100%
rename from src/client/classic-debug/images/marker-flag-end.png
rename to application/src/client/classic-debug/images/marker-flag-end.png
diff --git a/src/client/classic-debug/images/marker-flag-shadow.png b/application/src/client/classic-debug/images/marker-flag-shadow.png
similarity index 100%
rename from src/client/classic-debug/images/marker-flag-shadow.png
rename to application/src/client/classic-debug/images/marker-flag-shadow.png
diff --git a/src/client/classic-debug/images/marker-flag-start-shadowed.png b/application/src/client/classic-debug/images/marker-flag-start-shadowed.png
similarity index 100%
rename from src/client/classic-debug/images/marker-flag-start-shadowed.png
rename to application/src/client/classic-debug/images/marker-flag-start-shadowed.png
diff --git a/src/client/classic-debug/images/marker-flag-start.png b/application/src/client/classic-debug/images/marker-flag-start.png
similarity index 100%
rename from src/client/classic-debug/images/marker-flag-start.png
rename to application/src/client/classic-debug/images/marker-flag-start.png
diff --git a/src/client/classic-debug/images/marker-med-0pct.png b/application/src/client/classic-debug/images/marker-med-0pct.png
similarity index 100%
rename from src/client/classic-debug/images/marker-med-0pct.png
rename to application/src/client/classic-debug/images/marker-med-0pct.png
diff --git a/src/client/classic-debug/images/marker-med-100pct.png b/application/src/client/classic-debug/images/marker-med-100pct.png
similarity index 100%
rename from src/client/classic-debug/images/marker-med-100pct.png
rename to application/src/client/classic-debug/images/marker-med-100pct.png
diff --git a/src/client/classic-debug/images/marker-med-25pct.png b/application/src/client/classic-debug/images/marker-med-25pct.png
similarity index 100%
rename from src/client/classic-debug/images/marker-med-25pct.png
rename to application/src/client/classic-debug/images/marker-med-25pct.png
diff --git a/src/client/classic-debug/images/marker-med-50pct.png b/application/src/client/classic-debug/images/marker-med-50pct.png
similarity index 100%
rename from src/client/classic-debug/images/marker-med-50pct.png
rename to application/src/client/classic-debug/images/marker-med-50pct.png
diff --git a/src/client/classic-debug/images/marker-med-75pct.png b/application/src/client/classic-debug/images/marker-med-75pct.png
similarity index 100%
rename from src/client/classic-debug/images/marker-med-75pct.png
rename to application/src/client/classic-debug/images/marker-med-75pct.png
diff --git a/src/client/classic-debug/images/marker-sm-0pct.png b/application/src/client/classic-debug/images/marker-sm-0pct.png
similarity index 100%
rename from src/client/classic-debug/images/marker-sm-0pct.png
rename to application/src/client/classic-debug/images/marker-sm-0pct.png
diff --git a/src/client/classic-debug/images/marker-sm-100pct.png b/application/src/client/classic-debug/images/marker-sm-100pct.png
similarity index 100%
rename from src/client/classic-debug/images/marker-sm-100pct.png
rename to application/src/client/classic-debug/images/marker-sm-100pct.png
diff --git a/src/client/classic-debug/images/marker-sm-25pct.png b/application/src/client/classic-debug/images/marker-sm-25pct.png
similarity index 100%
rename from src/client/classic-debug/images/marker-sm-25pct.png
rename to application/src/client/classic-debug/images/marker-sm-25pct.png
diff --git a/src/client/classic-debug/images/marker-sm-50pct.png b/application/src/client/classic-debug/images/marker-sm-50pct.png
similarity index 100%
rename from src/client/classic-debug/images/marker-sm-50pct.png
rename to application/src/client/classic-debug/images/marker-sm-50pct.png
diff --git a/src/client/classic-debug/images/marker-sm-75pct.png b/application/src/client/classic-debug/images/marker-sm-75pct.png
similarity index 100%
rename from src/client/classic-debug/images/marker-sm-75pct.png
rename to application/src/client/classic-debug/images/marker-sm-75pct.png
diff --git a/src/client/classic-debug/images/mode/airplane.png b/application/src/client/classic-debug/images/mode/airplane.png
similarity index 100%
rename from src/client/classic-debug/images/mode/airplane.png
rename to application/src/client/classic-debug/images/mode/airplane.png
diff --git a/src/client/classic-debug/images/mode/arrow-left.png b/application/src/client/classic-debug/images/mode/arrow-left.png
similarity index 100%
rename from src/client/classic-debug/images/mode/arrow-left.png
rename to application/src/client/classic-debug/images/mode/arrow-left.png
diff --git a/src/client/classic-debug/images/mode/arrow.png b/application/src/client/classic-debug/images/mode/arrow.png
similarity index 100%
rename from src/client/classic-debug/images/mode/arrow.png
rename to application/src/client/classic-debug/images/mode/arrow.png
diff --git a/src/client/classic-debug/images/mode/bicycle.png b/application/src/client/classic-debug/images/mode/bicycle.png
similarity index 100%
rename from src/client/classic-debug/images/mode/bicycle.png
rename to application/src/client/classic-debug/images/mode/bicycle.png
diff --git a/src/client/classic-debug/images/mode/bicycle_darkbg.png b/application/src/client/classic-debug/images/mode/bicycle_darkbg.png
similarity index 100%
rename from src/client/classic-debug/images/mode/bicycle_darkbg.png
rename to application/src/client/classic-debug/images/mode/bicycle_darkbg.png
diff --git a/src/client/classic-debug/images/mode/bus.png b/application/src/client/classic-debug/images/mode/bus.png
similarity index 100%
rename from src/client/classic-debug/images/mode/bus.png
rename to application/src/client/classic-debug/images/mode/bus.png
diff --git a/src/client/classic-debug/images/mode/bus_darkbg.png b/application/src/client/classic-debug/images/mode/bus_darkbg.png
similarity index 100%
rename from src/client/classic-debug/images/mode/bus_darkbg.png
rename to application/src/client/classic-debug/images/mode/bus_darkbg.png
diff --git a/src/client/classic-debug/images/mode/cable_car.png b/application/src/client/classic-debug/images/mode/cable_car.png
similarity index 100%
rename from src/client/classic-debug/images/mode/cable_car.png
rename to application/src/client/classic-debug/images/mode/cable_car.png
diff --git a/src/client/classic-debug/images/mode/car.png b/application/src/client/classic-debug/images/mode/car.png
similarity index 100%
rename from src/client/classic-debug/images/mode/car.png
rename to application/src/client/classic-debug/images/mode/car.png
diff --git a/src/client/classic-debug/images/mode/car_darkbg.png b/application/src/client/classic-debug/images/mode/car_darkbg.png
similarity index 100%
rename from src/client/classic-debug/images/mode/car_darkbg.png
rename to application/src/client/classic-debug/images/mode/car_darkbg.png
diff --git a/src/client/classic-debug/images/mode/carpool.png b/application/src/client/classic-debug/images/mode/carpool.png
similarity index 100%
rename from src/client/classic-debug/images/mode/carpool.png
rename to application/src/client/classic-debug/images/mode/carpool.png
diff --git a/src/client/classic-debug/images/mode/carpool_darkbg.png b/application/src/client/classic-debug/images/mode/carpool_darkbg.png
similarity index 100%
rename from src/client/classic-debug/images/mode/carpool_darkbg.png
rename to application/src/client/classic-debug/images/mode/carpool_darkbg.png
diff --git a/src/client/classic-debug/images/mode/coach.png b/application/src/client/classic-debug/images/mode/coach.png
similarity index 100%
rename from src/client/classic-debug/images/mode/coach.png
rename to application/src/client/classic-debug/images/mode/coach.png
diff --git a/src/client/classic-debug/images/mode/ferry.png b/application/src/client/classic-debug/images/mode/ferry.png
similarity index 100%
rename from src/client/classic-debug/images/mode/ferry.png
rename to application/src/client/classic-debug/images/mode/ferry.png
diff --git a/src/client/classic-debug/images/mode/ferry_darkbg.png b/application/src/client/classic-debug/images/mode/ferry_darkbg.png
similarity index 100%
rename from src/client/classic-debug/images/mode/ferry_darkbg.png
rename to application/src/client/classic-debug/images/mode/ferry_darkbg.png
diff --git a/src/client/classic-debug/images/mode/funicular.png b/application/src/client/classic-debug/images/mode/funicular.png
similarity index 100%
rename from src/client/classic-debug/images/mode/funicular.png
rename to application/src/client/classic-debug/images/mode/funicular.png
diff --git a/src/client/classic-debug/images/mode/gondola.png b/application/src/client/classic-debug/images/mode/gondola.png
similarity index 100%
rename from src/client/classic-debug/images/mode/gondola.png
rename to application/src/client/classic-debug/images/mode/gondola.png
diff --git a/src/client/classic-debug/images/mode/gondola_darkbg.png b/application/src/client/classic-debug/images/mode/gondola_darkbg.png
similarity index 100%
rename from src/client/classic-debug/images/mode/gondola_darkbg.png
rename to application/src/client/classic-debug/images/mode/gondola_darkbg.png
diff --git a/src/client/classic-debug/images/mode/mode_bubble.psd b/application/src/client/classic-debug/images/mode/mode_bubble.psd
similarity index 100%
rename from src/client/classic-debug/images/mode/mode_bubble.psd
rename to application/src/client/classic-debug/images/mode/mode_bubble.psd
diff --git a/src/client/classic-debug/images/mode/mode_bubble_ne.png b/application/src/client/classic-debug/images/mode/mode_bubble_ne.png
similarity index 100%
rename from src/client/classic-debug/images/mode/mode_bubble_ne.png
rename to application/src/client/classic-debug/images/mode/mode_bubble_ne.png
diff --git a/src/client/classic-debug/images/mode/mode_bubble_ne_highlight.png b/application/src/client/classic-debug/images/mode/mode_bubble_ne_highlight.png
similarity index 100%
rename from src/client/classic-debug/images/mode/mode_bubble_ne_highlight.png
rename to application/src/client/classic-debug/images/mode/mode_bubble_ne_highlight.png
diff --git a/src/client/classic-debug/images/mode/mode_bubble_nw.png b/application/src/client/classic-debug/images/mode/mode_bubble_nw.png
similarity index 100%
rename from src/client/classic-debug/images/mode/mode_bubble_nw.png
rename to application/src/client/classic-debug/images/mode/mode_bubble_nw.png
diff --git a/src/client/classic-debug/images/mode/mode_bubble_nw_highlight.png b/application/src/client/classic-debug/images/mode/mode_bubble_nw_highlight.png
similarity index 100%
rename from src/client/classic-debug/images/mode/mode_bubble_nw_highlight.png
rename to application/src/client/classic-debug/images/mode/mode_bubble_nw_highlight.png
diff --git a/src/client/classic-debug/images/mode/mode_bubble_se.png b/application/src/client/classic-debug/images/mode/mode_bubble_se.png
similarity index 100%
rename from src/client/classic-debug/images/mode/mode_bubble_se.png
rename to application/src/client/classic-debug/images/mode/mode_bubble_se.png
diff --git a/src/client/classic-debug/images/mode/mode_bubble_se_highlight.png b/application/src/client/classic-debug/images/mode/mode_bubble_se_highlight.png
similarity index 100%
rename from src/client/classic-debug/images/mode/mode_bubble_se_highlight.png
rename to application/src/client/classic-debug/images/mode/mode_bubble_se_highlight.png
diff --git a/src/client/classic-debug/images/mode/mode_bubble_sw.png b/application/src/client/classic-debug/images/mode/mode_bubble_sw.png
similarity index 100%
rename from src/client/classic-debug/images/mode/mode_bubble_sw.png
rename to application/src/client/classic-debug/images/mode/mode_bubble_sw.png
diff --git a/src/client/classic-debug/images/mode/mode_bubble_sw_highlight.png b/application/src/client/classic-debug/images/mode/mode_bubble_sw_highlight.png
similarity index 100%
rename from src/client/classic-debug/images/mode/mode_bubble_sw_highlight.png
rename to application/src/client/classic-debug/images/mode/mode_bubble_sw_highlight.png
diff --git a/src/client/classic-debug/images/mode/monorail.png b/application/src/client/classic-debug/images/mode/monorail.png
similarity index 100%
rename from src/client/classic-debug/images/mode/monorail.png
rename to application/src/client/classic-debug/images/mode/monorail.png
diff --git a/src/client/classic-debug/images/mode/rail.png b/application/src/client/classic-debug/images/mode/rail.png
similarity index 100%
rename from src/client/classic-debug/images/mode/rail.png
rename to application/src/client/classic-debug/images/mode/rail.png
diff --git a/src/client/classic-debug/images/mode/rail_darkbg.png b/application/src/client/classic-debug/images/mode/rail_darkbg.png
similarity index 100%
rename from src/client/classic-debug/images/mode/rail_darkbg.png
rename to application/src/client/classic-debug/images/mode/rail_darkbg.png
diff --git a/src/client/classic-debug/images/mode/scooter.png b/application/src/client/classic-debug/images/mode/scooter.png
similarity index 100%
rename from src/client/classic-debug/images/mode/scooter.png
rename to application/src/client/classic-debug/images/mode/scooter.png
diff --git a/src/client/classic-debug/images/mode/subway.png b/application/src/client/classic-debug/images/mode/subway.png
similarity index 100%
rename from src/client/classic-debug/images/mode/subway.png
rename to application/src/client/classic-debug/images/mode/subway.png
diff --git a/src/client/classic-debug/images/mode/subway_darkbg.png b/application/src/client/classic-debug/images/mode/subway_darkbg.png
similarity index 100%
rename from src/client/classic-debug/images/mode/subway_darkbg.png
rename to application/src/client/classic-debug/images/mode/subway_darkbg.png
diff --git a/src/client/classic-debug/images/mode/taxi.png b/application/src/client/classic-debug/images/mode/taxi.png
similarity index 100%
rename from src/client/classic-debug/images/mode/taxi.png
rename to application/src/client/classic-debug/images/mode/taxi.png
diff --git a/src/client/classic-debug/images/mode/tram.png b/application/src/client/classic-debug/images/mode/tram.png
similarity index 100%
rename from src/client/classic-debug/images/mode/tram.png
rename to application/src/client/classic-debug/images/mode/tram.png
diff --git a/src/client/classic-debug/images/mode/tram_darkbg.png b/application/src/client/classic-debug/images/mode/tram_darkbg.png
similarity index 100%
rename from src/client/classic-debug/images/mode/tram_darkbg.png
rename to application/src/client/classic-debug/images/mode/tram_darkbg.png
diff --git a/src/client/classic-debug/images/mode/trolleybus.png b/application/src/client/classic-debug/images/mode/trolleybus.png
similarity index 100%
rename from src/client/classic-debug/images/mode/trolleybus.png
rename to application/src/client/classic-debug/images/mode/trolleybus.png
diff --git a/src/client/classic-debug/images/mode/walk.png b/application/src/client/classic-debug/images/mode/walk.png
similarity index 100%
rename from src/client/classic-debug/images/mode/walk.png
rename to application/src/client/classic-debug/images/mode/walk.png
diff --git a/src/client/classic-debug/images/mode/walk_darkbg.png b/application/src/client/classic-debug/images/mode/walk_darkbg.png
similarity index 100%
rename from src/client/classic-debug/images/mode/walk_darkbg.png
rename to application/src/client/classic-debug/images/mode/walk_darkbg.png
diff --git a/src/client/classic-debug/images/openplans-logo-20x20.png b/application/src/client/classic-debug/images/openplans-logo-20x20.png
similarity index 100%
rename from src/client/classic-debug/images/openplans-logo-20x20.png
rename to application/src/client/classic-debug/images/openplans-logo-20x20.png
diff --git a/src/client/classic-debug/images/openplans-logo-40x40.png b/application/src/client/classic-debug/images/openplans-logo-40x40.png
similarity index 100%
rename from src/client/classic-debug/images/openplans-logo-40x40.png
rename to application/src/client/classic-debug/images/openplans-logo-40x40.png
diff --git a/src/client/classic-debug/images/openplans-logo-gray.gif b/application/src/client/classic-debug/images/openplans-logo-gray.gif
similarity index 100%
rename from src/client/classic-debug/images/openplans-logo-gray.gif
rename to application/src/client/classic-debug/images/openplans-logo-gray.gif
diff --git a/src/client/classic-debug/images/otp_logo_40px.png b/application/src/client/classic-debug/images/otp_logo_40px.png
similarity index 100%
rename from src/client/classic-debug/images/otp_logo_40px.png
rename to application/src/client/classic-debug/images/otp_logo_40px.png
diff --git a/src/client/classic-debug/images/otp_logo_darkbg_40px.png b/application/src/client/classic-debug/images/otp_logo_darkbg_40px.png
similarity index 100%
rename from src/client/classic-debug/images/otp_logo_darkbg_40px.png
rename to application/src/client/classic-debug/images/otp_logo_darkbg_40px.png
diff --git a/src/client/classic-debug/images/reverse.png b/application/src/client/classic-debug/images/reverse.png
similarity index 100%
rename from src/client/classic-debug/images/reverse.png
rename to application/src/client/classic-debug/images/reverse.png
diff --git a/src/client/classic-debug/images/shadow.png b/application/src/client/classic-debug/images/shadow.png
similarity index 100%
rename from src/client/classic-debug/images/shadow.png
rename to application/src/client/classic-debug/images/shadow.png
diff --git a/src/client/classic-debug/images/spinner.gif b/application/src/client/classic-debug/images/spinner.gif
similarity index 100%
rename from src/client/classic-debug/images/spinner.gif
rename to application/src/client/classic-debug/images/spinner.gif
diff --git a/src/client/classic-debug/images/stop20.png b/application/src/client/classic-debug/images/stop20.png
similarity index 100%
rename from src/client/classic-debug/images/stop20.png
rename to application/src/client/classic-debug/images/stop20.png
diff --git a/src/client/classic-debug/images/widget-trip-stop-first.png b/application/src/client/classic-debug/images/widget-trip-stop-first.png
similarity index 100%
rename from src/client/classic-debug/images/widget-trip-stop-first.png
rename to application/src/client/classic-debug/images/widget-trip-stop-first.png
diff --git a/src/client/classic-debug/images/widget-trip-stop-last.png b/application/src/client/classic-debug/images/widget-trip-stop-last.png
similarity index 100%
rename from src/client/classic-debug/images/widget-trip-stop-last.png
rename to application/src/client/classic-debug/images/widget-trip-stop-last.png
diff --git a/src/client/classic-debug/images/widget-trip-stop-middle.png b/application/src/client/classic-debug/images/widget-trip-stop-middle.png
similarity index 100%
rename from src/client/classic-debug/images/widget-trip-stop-middle.png
rename to application/src/client/classic-debug/images/widget-trip-stop-middle.png
diff --git a/src/client/classic-debug/index.html b/application/src/client/classic-debug/index.html
similarity index 100%
rename from src/client/classic-debug/index.html
rename to application/src/client/classic-debug/index.html
diff --git a/src/client/classic-debug/js/lib/ICanHaz.js b/application/src/client/classic-debug/js/lib/ICanHaz.js
similarity index 100%
rename from src/client/classic-debug/js/lib/ICanHaz.js
rename to application/src/client/classic-debug/js/lib/ICanHaz.js
diff --git a/src/client/classic-debug/js/lib/backbone-min.js b/application/src/client/classic-debug/js/lib/backbone-min.js
similarity index 100%
rename from src/client/classic-debug/js/lib/backbone-min.js
rename to application/src/client/classic-debug/js/lib/backbone-min.js
diff --git a/src/client/classic-debug/js/lib/backbone.js b/application/src/client/classic-debug/js/lib/backbone.js
similarity index 100%
rename from src/client/classic-debug/js/lib/backbone.js
rename to application/src/client/classic-debug/js/lib/backbone.js
diff --git a/src/client/classic-debug/js/lib/i18next-1.7.3.min.js b/application/src/client/classic-debug/js/lib/i18next-1.7.3.min.js
similarity index 100%
rename from src/client/classic-debug/js/lib/i18next-1.7.3.min.js
rename to application/src/client/classic-debug/js/lib/i18next-1.7.3.min.js
diff --git a/src/client/classic-debug/js/lib/jquery-ui/addons/jquery-ui-timepicker.css b/application/src/client/classic-debug/js/lib/jquery-ui/addons/jquery-ui-timepicker.css
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/addons/jquery-ui-timepicker.css
rename to application/src/client/classic-debug/js/lib/jquery-ui/addons/jquery-ui-timepicker.css
diff --git a/src/client/classic-debug/js/lib/jquery-ui/addons/jquery-ui-timepicker.js b/application/src/client/classic-debug/js/lib/jquery-ui/addons/jquery-ui-timepicker.js
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/addons/jquery-ui-timepicker.js
rename to application/src/client/classic-debug/js/lib/jquery-ui/addons/jquery-ui-timepicker.js
diff --git a/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png b/application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
rename to application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
diff --git a/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png b/application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
rename to application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
diff --git a/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png b/application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
rename to application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
diff --git a/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png b/application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
rename to application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
diff --git a/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png b/application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png
rename to application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png
diff --git a/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png b/application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
rename to application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
diff --git a/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png b/application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
rename to application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
diff --git a/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
rename to application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
diff --git a/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-icons_222222_256x240.png b/application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-icons_222222_256x240.png
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-icons_222222_256x240.png
rename to application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-icons_222222_256x240.png
diff --git a/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-icons_2e83ff_256x240.png b/application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-icons_2e83ff_256x240.png
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-icons_2e83ff_256x240.png
rename to application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-icons_2e83ff_256x240.png
diff --git a/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-icons_454545_256x240.png b/application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-icons_454545_256x240.png
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-icons_454545_256x240.png
rename to application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-icons_454545_256x240.png
diff --git a/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-icons_888888_256x240.png b/application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-icons_888888_256x240.png
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-icons_888888_256x240.png
rename to application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-icons_888888_256x240.png
diff --git a/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png b/application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png
rename to application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png
diff --git a/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/jquery-ui-1.9.1.custom.css b/application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/jquery-ui-1.9.1.custom.css
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/css/smoothness/jquery-ui-1.9.1.custom.css
rename to application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/jquery-ui-1.9.1.custom.css
diff --git a/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/jquery-ui-1.9.1.custom.min.css b/application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/jquery-ui-1.9.1.custom.min.css
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/css/smoothness/jquery-ui-1.9.1.custom.min.css
rename to application/src/client/classic-debug/js/lib/jquery-ui/css/smoothness/jquery-ui-1.9.1.custom.min.css
diff --git a/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-ca.js b/application/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-ca.js
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-ca.js
rename to application/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-ca.js
diff --git a/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-de.js b/application/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-de.js
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-de.js
rename to application/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-de.js
diff --git a/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-es.js b/application/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-es.js
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-es.js
rename to application/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-es.js
diff --git a/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-fr.js b/application/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-fr.js
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-fr.js
rename to application/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-fr.js
diff --git a/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-hu.js b/application/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-hu.js
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-hu.js
rename to application/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-hu.js
diff --git a/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-it.js b/application/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-it.js
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-it.js
rename to application/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-it.js
diff --git a/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-no.js b/application/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-no.js
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-no.js
rename to application/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-no.js
diff --git a/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-pl.js b/application/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-pl.js
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-pl.js
rename to application/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-pl.js
diff --git a/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-pt.js b/application/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-pt.js
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-pt.js
rename to application/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-pt.js
diff --git a/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-sl.js b/application/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-sl.js
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-sl.js
rename to application/src/client/classic-debug/js/lib/jquery-ui/i18n/jquery.ui.datepicker-sl.js
diff --git a/src/client/classic-debug/js/lib/jquery-ui/js/jquery-1.8.2.js b/application/src/client/classic-debug/js/lib/jquery-ui/js/jquery-1.8.2.js
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/js/jquery-1.8.2.js
rename to application/src/client/classic-debug/js/lib/jquery-ui/js/jquery-1.8.2.js
diff --git a/src/client/classic-debug/js/lib/jquery-ui/js/jquery-ui-1.9.1.custom.js b/application/src/client/classic-debug/js/lib/jquery-ui/js/jquery-ui-1.9.1.custom.js
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/js/jquery-ui-1.9.1.custom.js
rename to application/src/client/classic-debug/js/lib/jquery-ui/js/jquery-ui-1.9.1.custom.js
diff --git a/src/client/classic-debug/js/lib/jquery-ui/js/jquery-ui-1.9.1.custom.min.js b/application/src/client/classic-debug/js/lib/jquery-ui/js/jquery-ui-1.9.1.custom.min.js
similarity index 100%
rename from src/client/classic-debug/js/lib/jquery-ui/js/jquery-ui-1.9.1.custom.min.js
rename to application/src/client/classic-debug/js/lib/jquery-ui/js/jquery-ui-1.9.1.custom.min.js
diff --git a/src/client/classic-debug/js/otp/config.js b/application/src/client/classic-debug/js/otp/config.js
similarity index 100%
rename from src/client/classic-debug/js/otp/config.js
rename to application/src/client/classic-debug/js/otp/config.js
diff --git a/src/client/classic-debug/js/otp/core/ContextMenu.js b/application/src/client/classic-debug/js/otp/core/ContextMenu.js
similarity index 100%
rename from src/client/classic-debug/js/otp/core/ContextMenu.js
rename to application/src/client/classic-debug/js/otp/core/ContextMenu.js
diff --git a/src/client/classic-debug/js/otp/core/Geocoder.js b/application/src/client/classic-debug/js/otp/core/Geocoder.js
similarity index 100%
rename from src/client/classic-debug/js/otp/core/Geocoder.js
rename to application/src/client/classic-debug/js/otp/core/Geocoder.js
diff --git a/src/client/classic-debug/js/otp/core/GeocoderBag.js b/application/src/client/classic-debug/js/otp/core/GeocoderBag.js
similarity index 100%
rename from src/client/classic-debug/js/otp/core/GeocoderBag.js
rename to application/src/client/classic-debug/js/otp/core/GeocoderBag.js
diff --git a/src/client/classic-debug/js/otp/core/GeocoderBuiltin.js b/application/src/client/classic-debug/js/otp/core/GeocoderBuiltin.js
similarity index 100%
rename from src/client/classic-debug/js/otp/core/GeocoderBuiltin.js
rename to application/src/client/classic-debug/js/otp/core/GeocoderBuiltin.js
diff --git a/src/client/classic-debug/js/otp/core/IndexApi.js b/application/src/client/classic-debug/js/otp/core/IndexApi.js
similarity index 100%
rename from src/client/classic-debug/js/otp/core/IndexApi.js
rename to application/src/client/classic-debug/js/otp/core/IndexApi.js
diff --git a/src/client/classic-debug/js/otp/core/Map.js b/application/src/client/classic-debug/js/otp/core/Map.js
similarity index 100%
rename from src/client/classic-debug/js/otp/core/Map.js
rename to application/src/client/classic-debug/js/otp/core/Map.js
diff --git a/src/client/classic-debug/js/otp/core/MapContextMenu.js b/application/src/client/classic-debug/js/otp/core/MapContextMenu.js
similarity index 100%
rename from src/client/classic-debug/js/otp/core/MapContextMenu.js
rename to application/src/client/classic-debug/js/otp/core/MapContextMenu.js
diff --git a/src/client/classic-debug/js/otp/core/PopupMenu.js b/application/src/client/classic-debug/js/otp/core/PopupMenu.js
similarity index 100%
rename from src/client/classic-debug/js/otp/core/PopupMenu.js
rename to application/src/client/classic-debug/js/otp/core/PopupMenu.js
diff --git a/src/client/classic-debug/js/otp/core/QueryLogger.js b/application/src/client/classic-debug/js/otp/core/QueryLogger.js
similarity index 100%
rename from src/client/classic-debug/js/otp/core/QueryLogger.js
rename to application/src/client/classic-debug/js/otp/core/QueryLogger.js
diff --git a/src/client/classic-debug/js/otp/core/SOLRGeocoder.js b/application/src/client/classic-debug/js/otp/core/SOLRGeocoder.js
similarity index 100%
rename from src/client/classic-debug/js/otp/core/SOLRGeocoder.js
rename to application/src/client/classic-debug/js/otp/core/SOLRGeocoder.js
diff --git a/src/client/classic-debug/js/otp/core/TransitIndex.js b/application/src/client/classic-debug/js/otp/core/TransitIndex.js
similarity index 100%
rename from src/client/classic-debug/js/otp/core/TransitIndex.js
rename to application/src/client/classic-debug/js/otp/core/TransitIndex.js
diff --git a/src/client/classic-debug/js/otp/core/TripPlan.js b/application/src/client/classic-debug/js/otp/core/TripPlan.js
similarity index 100%
rename from src/client/classic-debug/js/otp/core/TripPlan.js
rename to application/src/client/classic-debug/js/otp/core/TripPlan.js
diff --git a/src/client/classic-debug/js/otp/core/Webapp.js b/application/src/client/classic-debug/js/otp/core/Webapp.js
similarity index 100%
rename from src/client/classic-debug/js/otp/core/Webapp.js
rename to application/src/client/classic-debug/js/otp/core/Webapp.js
diff --git a/src/client/classic-debug/js/otp/core/WidgetManagerMenu.js b/application/src/client/classic-debug/js/otp/core/WidgetManagerMenu.js
similarity index 100%
rename from src/client/classic-debug/js/otp/core/WidgetManagerMenu.js
rename to application/src/client/classic-debug/js/otp/core/WidgetManagerMenu.js
diff --git a/src/client/classic-debug/js/otp/debug.js b/application/src/client/classic-debug/js/otp/debug.js
similarity index 100%
rename from src/client/classic-debug/js/otp/debug.js
rename to application/src/client/classic-debug/js/otp/debug.js
diff --git a/src/client/classic-debug/js/otp/layers/AreaStopsLayer.js b/application/src/client/classic-debug/js/otp/layers/AreaStopsLayer.js
similarity index 100%
rename from src/client/classic-debug/js/otp/layers/AreaStopsLayer.js
rename to application/src/client/classic-debug/js/otp/layers/AreaStopsLayer.js
diff --git a/src/client/classic-debug/js/otp/layers/GeofencingZonesLayer.js b/application/src/client/classic-debug/js/otp/layers/GeofencingZonesLayer.js
similarity index 100%
rename from src/client/classic-debug/js/otp/layers/GeofencingZonesLayer.js
rename to application/src/client/classic-debug/js/otp/layers/GeofencingZonesLayer.js
diff --git a/src/client/classic-debug/js/otp/layers/StopsLayer.js b/application/src/client/classic-debug/js/otp/layers/StopsLayer.js
similarity index 100%
rename from src/client/classic-debug/js/otp/layers/StopsLayer.js
rename to application/src/client/classic-debug/js/otp/layers/StopsLayer.js
diff --git a/src/client/classic-debug/js/otp/layers/layers-templates.html b/application/src/client/classic-debug/js/otp/layers/layers-templates.html
similarity index 100%
rename from src/client/classic-debug/js/otp/layers/layers-templates.html
rename to application/src/client/classic-debug/js/otp/layers/layers-templates.html
diff --git a/src/client/classic-debug/js/otp/locale/Catalan.js b/application/src/client/classic-debug/js/otp/locale/Catalan.js
similarity index 100%
rename from src/client/classic-debug/js/otp/locale/Catalan.js
rename to application/src/client/classic-debug/js/otp/locale/Catalan.js
diff --git a/src/client/classic-debug/js/otp/locale/English.js b/application/src/client/classic-debug/js/otp/locale/English.js
similarity index 100%
rename from src/client/classic-debug/js/otp/locale/English.js
rename to application/src/client/classic-debug/js/otp/locale/English.js
diff --git a/src/client/classic-debug/js/otp/locale/French.js b/application/src/client/classic-debug/js/otp/locale/French.js
similarity index 100%
rename from src/client/classic-debug/js/otp/locale/French.js
rename to application/src/client/classic-debug/js/otp/locale/French.js
diff --git a/src/client/classic-debug/js/otp/locale/German.js b/application/src/client/classic-debug/js/otp/locale/German.js
similarity index 100%
rename from src/client/classic-debug/js/otp/locale/German.js
rename to application/src/client/classic-debug/js/otp/locale/German.js
diff --git a/src/client/classic-debug/js/otp/locale/Hungarian.js b/application/src/client/classic-debug/js/otp/locale/Hungarian.js
similarity index 100%
rename from src/client/classic-debug/js/otp/locale/Hungarian.js
rename to application/src/client/classic-debug/js/otp/locale/Hungarian.js
diff --git a/src/client/classic-debug/js/otp/locale/Italian.js b/application/src/client/classic-debug/js/otp/locale/Italian.js
similarity index 100%
rename from src/client/classic-debug/js/otp/locale/Italian.js
rename to application/src/client/classic-debug/js/otp/locale/Italian.js
diff --git a/src/client/classic-debug/js/otp/locale/Norwegian.js b/application/src/client/classic-debug/js/otp/locale/Norwegian.js
similarity index 100%
rename from src/client/classic-debug/js/otp/locale/Norwegian.js
rename to application/src/client/classic-debug/js/otp/locale/Norwegian.js
diff --git a/src/client/classic-debug/js/otp/locale/Polish.js b/application/src/client/classic-debug/js/otp/locale/Polish.js
similarity index 100%
rename from src/client/classic-debug/js/otp/locale/Polish.js
rename to application/src/client/classic-debug/js/otp/locale/Polish.js
diff --git a/src/client/classic-debug/js/otp/locale/Portuguese.js b/application/src/client/classic-debug/js/otp/locale/Portuguese.js
similarity index 100%
rename from src/client/classic-debug/js/otp/locale/Portuguese.js
rename to application/src/client/classic-debug/js/otp/locale/Portuguese.js
diff --git a/src/client/classic-debug/js/otp/locale/Slovenian.js b/application/src/client/classic-debug/js/otp/locale/Slovenian.js
similarity index 100%
rename from src/client/classic-debug/js/otp/locale/Slovenian.js
rename to application/src/client/classic-debug/js/otp/locale/Slovenian.js
diff --git a/src/client/classic-debug/js/otp/locale/Spanish.js b/application/src/client/classic-debug/js/otp/locale/Spanish.js
similarity index 100%
rename from src/client/classic-debug/js/otp/locale/Spanish.js
rename to application/src/client/classic-debug/js/otp/locale/Spanish.js
diff --git a/application/src/client/classic-debug/js/otp/locale/ca_ES.json b/application/src/client/classic-debug/js/otp/locale/ca_ES.json
new file mode 100644
index 00000000000..e730a986359
--- /dev/null
+++ b/application/src/client/classic-debug/js/otp/locale/ca_ES.json
@@ -0,0 +1,238 @@
+{
+ "Transit": "Transport públic",
+ "Bus Only": "Només bus",
+ "Rail Only": "Només tren",
+ "Airplane Only": "",
+ "Transit, No Airplane": "",
+ "Bicycle Only": "Bicicleta",
+ "Bicycle & Transit": "Transport públic i bicicleta",
+ "Walk Only": "Només a peu",
+ "Car Only": "",
+ "Taxi": "",
+ "Park and Ride": "",
+ "Ride and Kiss (Car Pickup)": "",
+ "Kiss and Ride (Car Dropoff)": "",
+ "Bike and Ride": "",
+ "Rented Bicycle": "",
+ "Transit & Rented Bicycle": "",
+ "Rented Scooter": "",
+ "Transit & Rented Scooter": "",
+ "Transit with flex access": "",
+ "Transit with flex egress": "",
+ "Transit with flex access and egress": "",
+ "Direct flex search": "",
+ "Recenter Map Here": "Centrar mapa aquí",
+ "Zoom In": "Apropar",
+ "Zoom Out": "Allunyar",
+ "Minimize all": "",
+ "Unminimize all": "",
+ "Stop Viewer": "",
+ "Plan Trip": "",
+ "From Stop": "",
+ "To Stop": "",
+ "Routes Serving Stop": "",
+ "Bike Share Planner": "",
+ "Trip Options": "",
+ "PICK UP BIKE": "",
+ "ALTERNATE PICKUP": "",
+ "DROP OFF BIKE": "",
+ "ALTERNATE DROP OFF": "",
+ "BIKE STATION": "",
+ "Station:": "",
+ "%d bike available": "",
+ "%d bike available_plural": "",
+ "%d dock available": "",
+ "%d dock available_plural": "",
+ "Recommended Pick Up:": "",
+ "Bicycle rental": "",
+ "Recommended Drop Off:": "",
+ "Multimodal Trip Planner": "",
+ "Itineraries": "",
+ "This itinerary departs on a different day from the previous one": "",
+ "%d Itinerary Returned": "",
+ "%d Itinerary Returned_plural": "",
+ "Link to search": "",
+ "Previous Page": "",
+ "Next Page": "",
+ "CONTINUES AS": "",
+ "%d min late": "",
+ "%d min late_plural": "",
+ "%d min early": "",
+ "%d min early_plural": "",
+ "on time": "",
+ "This itinerary departs on a different day than the one searched for": "",
+ "Arrived at destination with a rented bicycle!": "",
+ "End": "",
+ "Trip Summary": "",
+ "Travel": "Hora de sortida",
+ "Time": "Temps",
+ "GenCost": "",
+ "Total Walk": "",
+ "Total Bike": "",
+ "Total drive": "",
+ "Elevation Gained": "",
+ "Elevation Lost": "",
+ "Transfers": "transbords",
+ "Fare": "Tarifa",
+ "Valid": "Hora actual",
+ "Link to Itinerary": "",
+ "Print": "Imprimir",
+ "Your Trip": "",
+ "Email": "",
+ "every %d min": "",
+ "every %d min_plural": "",
+ "Board at ": "",
+ "Stop": "",
+ "Time in transit": "",
+ "Route ID": "",
+ "Trip ID": "",
+ "Service Date": "",
+ "Trip Viewer": "",
+ "late as": "",
+ "Stay on board": "stay on board",
+ "Alight": "",
+ "at": "a",
+ "%(currency)s %(price)s": "",
+ "Start: %(location)s at %(time_date)s": "",
+ "Board": "",
+ "(%(agency_id)s Stop ID #%(stop_id)s),": "",
+ "End: %(location)s at %(time_date)s": "",
+ "(%(agencyId)s Stop ID #%(id)s),": "",
+ "\nView itinerary online:\n%(itinerary_link)s\n": "",
+ "We're sorry. The trip planner is temporarily unavailable. Please try again later.": "",
+ "Trip is not possible. You might be trying to plan a trip outside the map data boundary.": "",
+ "No trip found. There may be no transit service within the maximum specified distance or at the specified time, or your start or end point might not be safely accessible.": "",
+ "No transit times available. The date may be past or too far in the future or there may not be transit service for your trip at the time you chose.": "",
+ "The trip planner is taking way too long to process your request. Please try again later.": "",
+ "The request has errors that the server is not willing or able to process.": "",
+ "Origin is unknown. Can you be a bit more descriptive?": "",
+ "Destination is unknown. Can you be a bit more descriptive?": "",
+ "Both origin and destination are unknown. Can you be a bit more descriptive?": "",
+ "Both origin and destination are not wheelchair accessible": "",
+ "Origin is within a trivial distance of the destination.": "",
+ "The trip planner is unsure of the location you want to start from. Please select from the following options, or be more specific.": "",
+ "The trip planner is unsure of the destination you want to go to. Please select from the following options, or be more specific.": "",
+ "Both origin and destination are ambiguous. Please select from the following options, or be more specific.": "",
+ "All of triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must be set if any are": "",
+ "The values of triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must sum to 1": "",
+ "If triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor are provided, OptimizeType must be TRIANGLE": "",
+ "If OptimizeType is TRIANGLE, triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must be set": "",
+ "Set as Start Location": "",
+ "Set as End Location": "",
+ "Destination": "",
+ "Error %(error_id)d": "",
+ "No Trip Found": "",
+ "Your %(bike_share_name)s route": "",
+ "Your bike route": "",
+ "Walk to the %(bike_share_name)s dock.": "",
+ "Walk from the %(bike_share_name)s dock to your destination.": "",
+ "Your walk route": "",
+ "Your route using the scooter": "",
+ "Your driving route": "",
+ "north": "nord",
+ "northeast": "nord-est",
+ "east": "est",
+ "southeast": "sud-est",
+ "south": "sud",
+ "southwest": "sud-oest",
+ "west": "oest",
+ "northwest": "nord-oest",
+ "hard left": "gira completament a la esquerra",
+ "left": "gira a la esquerra",
+ "slight left": "gira lleugerament a la esquerra",
+ "continue": "",
+ "slight right": "gira lleugerament a la dreta",
+ "right": "gira a la dreta",
+ "hard right": "gira completament a la dreta",
+ "elevator": "",
+ "U-turn left": "",
+ "U-turn right": "",
+ "Walk": "A peu",
+ "Cycle": "Bicicleta",
+ "Car": "Cotxe",
+ "Bus": "AUTOBÚS",
+ "Subway": "METRO",
+ "Train": "Tren",
+ "Ferry": "BOT",
+ "Light Rail": "",
+ "Cable Car": "PONT PENJANT",
+ "Funicular": "FUNICULAR",
+ "Aerial Tram": "",
+ "Airplane": "",
+ "Bicycle rental station": "",
+ "Take roundabout counterclockwise to %(ordinal_exit_number)s exit on %(street_name)s": "",
+ "Take roundabout counterclockwise to %(ordinal_exit_number)s exit on %(street_name)s": "",
+ "Take roundabout clockwise to %(ordinal_exit_number)s exit on %(street_name)s": "",
+ "Take roundabout clockwise to %(ordinal_exit_number)s exit on %(street_name)s": "",
+ "Start on": "",
+ " heading ": "",
+ "to continue on": "per a continuar a",
+ "on to": "",
+ "first": "",
+ "second": "",
+ "third": "",
+ "fourth": "",
+ "fifth": "",
+ "sixth": "",
+ "seventh": "",
+ "eight": "",
+ "ninth": "",
+ "tenth": "",
+ "%d hr": "",
+ "%d hr_plural": "",
+ "%d min": "",
+ "%d min_plural": "",
+ "%d sec": "",
+ "%d sec_plural": "",
+ "OK": "OK",
+ "Minimize": "",
+ "Bring to front": "",
+ "Send to back": "",
+ "Route:": "",
+ "Variant:": "",
+ "Stop Finder": "",
+ "Feed": "Agency",
+ "By ID": "",
+ "By Name": "",
+ "Search": "",
+ "No Stops Found": "",
+ "Date": "Data",
+ "Find Stops": "",
+ "(No Stop Selected)": "",
+ "Block": "",
+ "Recenter": "",
+ "Viewer": "",
+ "Quick": "",
+ "Flat": "",
+ "Bike Friendly": "",
+ "B": "",
+ "F": "",
+ "Q": "",
+ "All Routes": "",
+ "Save": "",
+ "Close": "",
+ "Travel Options": "",
+ "Geocoder": "",
+ "Arrive": "Arribada a",
+ "Now": "",
+ "Wheelchair accessible trip:": "Viatge amb accessibilitat:",
+ "Show Filtered Itineraries:": "",
+ "Travel by": "Mode de viatge",
+ "Preferred Routes": "",
+ "Edit": "Editar",
+ "None": "",
+ "Weight": "",
+ "Banned routes": "",
+ "Use": "",
+ "My Own Bike": "",
+ "A Shared Bike": "",
+ "Plan Your Trip": "Planificar el viatge",
+ "Additional parameters": "",
+ " to _direction": "",
+ " to _bus_direction": "",
+ "Start_template": "",
+ "Depart_itinerary": "Sortida des de",
+ "depart_itinerary": "Sortida des de",
+ "Start_popup": "",
+ "Depart_tripoptions": "Sortida des de"
+}
diff --git a/application/src/client/classic-debug/js/otp/locale/de.json b/application/src/client/classic-debug/js/otp/locale/de.json
new file mode 100644
index 00000000000..56d08ab778a
--- /dev/null
+++ b/application/src/client/classic-debug/js/otp/locale/de.json
@@ -0,0 +1,238 @@
+{
+ "Transit": "ÖPNV",
+ "Bus Only": "nur Bus",
+ "Rail Only": "nur Bahn",
+ "Airplane Only": "",
+ "Transit, No Airplane": "",
+ "Bicycle Only": "Fahrrad",
+ "Bicycle & Transit": "ÖPNV und Fahrrad",
+ "Walk Only": "zu Fuß",
+ "Car Only": "",
+ "Taxi": "",
+ "Park and Ride": "Parken und Reisen",
+ "Ride and Kiss (Car Pickup)": "",
+ "Kiss and Ride (Car Dropoff)": "",
+ "Bike and Ride": "",
+ "Rented Bicycle": "Fahrradverleih",
+ "Transit & Rented Bicycle": "ÖPNV und Fahrradverleih",
+ "Rented Scooter": "",
+ "Transit & Rented Scooter": "ÖPNV und Fahrradverleih",
+ "Transit with flex access": "",
+ "Transit with flex egress": "",
+ "Transit with flex access and egress": "",
+ "Direct flex search": "",
+ "Recenter Map Here": "Karte hier zentrieren",
+ "Zoom In": "hineinzoomen",
+ "Zoom Out": "herauszoomen",
+ "Minimize all": "Alle Dialoge minimieren",
+ "Unminimize all": "Dialoge wiederanzeigen",
+ "Stop Viewer": "",
+ "Plan Trip": "",
+ "From Stop": "",
+ "To Stop": "",
+ "Routes Serving Stop": "",
+ "Bike Share Planner": "",
+ "Trip Options": "Einstellungen für Routensuche",
+ "PICK UP BIKE": "",
+ "ALTERNATE PICKUP": "",
+ "DROP OFF BIKE": "",
+ "ALTERNATE DROP OFF": "",
+ "BIKE STATION": "",
+ "Station:": "",
+ "%d bike available": "",
+ "%d bike available_plural": "",
+ "%d dock available": "",
+ "%d dock available_plural": "",
+ "Recommended Pick Up:": "",
+ "Bicycle rental": "Fahrradverleih",
+ "Recommended Drop Off:": "",
+ "Multimodal Trip Planner": "Multimodaler Routenplaner",
+ "Itineraries": "Routenvorschläge",
+ "This itinerary departs on a different day from the previous one": "",
+ "%d Itinerary Returned": "",
+ "%d Itinerary Returned_plural": "",
+ "Link to search": "Link für diese Suche erstellen",
+ "Previous Page": "Vorheriger",
+ "Next Page": "",
+ "CONTINUES AS": "Weiterfahren",
+ "%d min late": "%d min Verspätung",
+ "%d min late_plural": "%d min Verspätung",
+ "%d min early": "%d min zu früh",
+ "%d min early_plural": "%d min zu früh",
+ "on time": "pünktlich",
+ "This itinerary departs on a different day than the one searched for": "",
+ "Arrived at destination with a rented bicycle!": "",
+ "End": "Ankunft",
+ "Trip Summary": "",
+ "Travel": "Reise",
+ "Time": "Dauer",
+ "GenCost": "",
+ "Total Walk": "",
+ "Total Bike": "",
+ "Total drive": "",
+ "Elevation Gained": "",
+ "Elevation Lost": "",
+ "Transfers": "Umsteigepunkt",
+ "Fare": "Tarif",
+ "Valid": "Gültig bis",
+ "Link to Itinerary": "",
+ "Print": "drucken",
+ "Your Trip": "",
+ "Email": "",
+ "every %d min": "",
+ "every %d min_plural": "",
+ "Board at ": "",
+ "Stop": "",
+ "Time in transit": "",
+ "Route ID": "",
+ "Trip ID": "",
+ "Service Date": "",
+ "Trip Viewer": "",
+ "late as": "",
+ "Stay on board": "an Bord bleiben",
+ "Alight": "",
+ "at": "um",
+ "%(currency)s %(price)s": "",
+ "Start: %(location)s at %(time_date)s": "",
+ "Board": "",
+ "(%(agency_id)s Stop ID #%(stop_id)s),": "",
+ "End: %(location)s at %(time_date)s": "",
+ "(%(agencyId)s Stop ID #%(id)s),": "",
+ "\nView itinerary online:\n%(itinerary_link)s\n": "",
+ "We're sorry. The trip planner is temporarily unavailable. Please try again later.": "",
+ "Trip is not possible. You might be trying to plan a trip outside the map data boundary.": "",
+ "No trip found. There may be no transit service within the maximum specified distance or at the specified time, or your start or end point might not be safely accessible.": "",
+ "No transit times available. The date may be past or too far in the future or there may not be transit service for your trip at the time you chose.": "",
+ "The trip planner is taking way too long to process your request. Please try again later.": "",
+ "The request has errors that the server is not willing or able to process.": "",
+ "Origin is unknown. Can you be a bit more descriptive?": "",
+ "Destination is unknown. Can you be a bit more descriptive?": "",
+ "Both origin and destination are unknown. Can you be a bit more descriptive?": "",
+ "Both origin and destination are not wheelchair accessible": "",
+ "Origin is within a trivial distance of the destination.": "",
+ "The trip planner is unsure of the location you want to start from. Please select from the following options, or be more specific.": "",
+ "The trip planner is unsure of the destination you want to go to. Please select from the following options, or be more specific.": "",
+ "Both origin and destination are ambiguous. Please select from the following options, or be more specific.": "",
+ "All of triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must be set if any are": "",
+ "The values of triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must sum to 1": "",
+ "If triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor are provided, OptimizeType must be TRIANGLE": "",
+ "If OptimizeType is TRIANGLE, triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must be set": "",
+ "Set as Start Location": "",
+ "Set as End Location": "",
+ "Destination": "",
+ "Error %(error_id)d": "",
+ "No Trip Found": "",
+ "Your %(bike_share_name)s route": "",
+ "Your bike route": "",
+ "Walk to the %(bike_share_name)s dock.": "",
+ "Walk from the %(bike_share_name)s dock to your destination.": "",
+ "Your walk route": "",
+ "Your route using the scooter": "",
+ "Your driving route": "",
+ "north": "nord",
+ "northeast": "nordost",
+ "east": "ost",
+ "southeast": "südost",
+ "south": "süd",
+ "southwest": "südwest",
+ "west": "west",
+ "northwest": "nordwest",
+ "hard left": "scharf links",
+ "left": "links",
+ "slight left": "links halten",
+ "continue": "",
+ "slight right": "rechts halten",
+ "right": "rechts",
+ "hard right": "scharf rechts",
+ "elevator": "",
+ "U-turn left": "",
+ "U-turn right": "",
+ "Walk": "zu Fuß gehen",
+ "Cycle": "Fahrrad",
+ "Car": "Auto",
+ "Bus": "Bus",
+ "Subway": "U-Bahn",
+ "Train": "Bahn",
+ "Ferry": "Fähre",
+ "Light Rail": "",
+ "Cable Car": "Standseilbahn",
+ "Funicular": "Seilbahn",
+ "Aerial Tram": "",
+ "Airplane": "",
+ "Bicycle rental station": "Fahrradverleihstation",
+ "Take roundabout counterclockwise to %(ordinal_exit_number)s exit on %(street_name)s": "",
+ "Take roundabout counterclockwise to %(ordinal_exit_number)s exit on %(street_name)s": "",
+ "Take roundabout clockwise to %(ordinal_exit_number)s exit on %(street_name)s": "",
+ "Take roundabout clockwise to %(ordinal_exit_number)s exit on %(street_name)s": "",
+ "Start on": "",
+ " heading ": "",
+ "to continue on": "weiter auf",
+ "on to": "",
+ "first": "Erster",
+ "second": "",
+ "third": "",
+ "fourth": "",
+ "fifth": "",
+ "sixth": "",
+ "seventh": "",
+ "eight": "",
+ "ninth": "",
+ "tenth": "",
+ "%d hr": "",
+ "%d hr_plural": "",
+ "%d min": "",
+ "%d min_plural": "",
+ "%d sec": "",
+ "%d sec_plural": "",
+ "OK": "OK",
+ "Minimize": "Minimieren",
+ "Bring to front": "in den Vordergrund",
+ "Send to back": "in den Hintergrund",
+ "Route:": "",
+ "Variant:": "",
+ "Stop Finder": "",
+ "Feed": "Agency",
+ "By ID": "",
+ "By Name": "",
+ "Search": "",
+ "No Stops Found": "",
+ "Date": "Datum",
+ "Find Stops": "",
+ "(No Stop Selected)": "",
+ "Block": "",
+ "Recenter": "",
+ "Viewer": "",
+ "Quick": "Schnellste",
+ "Flat": "Flach",
+ "Bike Friendly": "Fahrradgeeignet",
+ "B": "F",
+ "F": "Fl",
+ "Q": "S",
+ "All Routes": "alle Routen",
+ "Save": "Speichern",
+ "Close": "Schließen",
+ "Travel Options": "Routeneinstellungen",
+ "Geocoder": "Geocoder",
+ "Arrive": "Ankunft",
+ "Now": "Jetzt",
+ "Wheelchair accessible trip:": "barrierefreie Route:",
+ "Show Filtered Itineraries:": "",
+ "Travel by": "Fortbewegungsart/Verkehrsmittel",
+ "Preferred Routes": "bevorzugte Routen",
+ "Edit": "anpassen",
+ "None": "keine",
+ "Weight": "Gewichtung",
+ "Banned routes": "ausgeschlossene Routen",
+ "Use": "",
+ "My Own Bike": "",
+ "A Shared Bike": "",
+ "Plan Your Trip": "Route berechnen",
+ "Additional parameters": "",
+ " to _direction": "",
+ " to _bus_direction": "",
+ "Start_template": "Abfahrt",
+ "Depart_itinerary": "Abfahrt",
+ "depart_itinerary": "Abfahrt",
+ "Start_popup": "Abfahrt",
+ "Depart_tripoptions": "Abfahrt"
+}
diff --git a/application/src/client/classic-debug/js/otp/locale/en.json b/application/src/client/classic-debug/js/otp/locale/en.json
new file mode 100644
index 00000000000..a4d3f1efa9d
--- /dev/null
+++ b/application/src/client/classic-debug/js/otp/locale/en.json
@@ -0,0 +1,238 @@
+{
+ "Transit": "Transit",
+ "Bus Only": "Bus Only",
+ "Rail Only": "Rail Only",
+ "Airplane Only": "Airplane Only",
+ "Transit, No Airplane": "",
+ "Bicycle Only": "Bicycle Only",
+ "Bicycle & Transit": "Bicycle & Transit",
+ "Walk Only": "Walk Only",
+ "Car Only": "Car Only",
+ "Taxi": "",
+ "Park and Ride": "Park and Ride",
+ "Ride and Kiss (Car Pickup)": "",
+ "Kiss and Ride (Car Dropoff)": "",
+ "Bike and Ride": "Bike and Ride",
+ "Rented Bicycle": "Rented Bicycle",
+ "Transit & Rented Bicycle": "Transit & Rented Bicycle",
+ "Rented Scooter": "",
+ "Transit & Rented Scooter": "Transit & Rented Bicycle",
+ "Transit with flex access": "",
+ "Transit with flex egress": "",
+ "Transit with flex access and egress": "",
+ "Direct flex search": "",
+ "Recenter Map Here": "Recenter Map Here",
+ "Zoom In": "Zoom In",
+ "Zoom Out": "Zoom Out",
+ "Minimize all": "Minimize all",
+ "Unminimize all": "Unminimize all",
+ "Stop Viewer": "Stop Viewer",
+ "Plan Trip": "Plan Trip",
+ "From Stop": "From Stop",
+ "To Stop": "To Stop",
+ "Routes Serving Stop": "Routes Serving Stop",
+ "Bike Share Planner": "Bike Share Planner",
+ "Trip Options": "Trip Options",
+ "PICK UP BIKE": "PICK UP BIKE",
+ "ALTERNATE PICKUP": "ALTERNATE PICKUP",
+ "DROP OFF BIKE": "DROP OFF BIKE",
+ "ALTERNATE DROP OFF": "ALTERNATE DROP OFF",
+ "BIKE STATION": "BIKE STATION",
+ "Station:": "Station:",
+ "%d bike available": "%d bike available",
+ "%d bike available_plural": "%d bikes available",
+ "%d dock available": "%d dock available",
+ "%d dock available_plural": "%d docks available",
+ "Recommended Pick Up:": "Recommended Pick Up:",
+ "Bicycle rental": "Bicycle rental",
+ "Recommended Drop Off:": "Recommended Drop Off:",
+ "Multimodal Trip Planner": "Multimodal Trip Planner",
+ "Itineraries": "Itineraries",
+ "This itinerary departs on a different day from the previous one": "",
+ "%d Itinerary Returned": "%d Itinerary Returned",
+ "%d Itinerary Returned_plural": "%d Itineraries Returned",
+ "Link to search": "Link to search",
+ "Previous Page": "Previous",
+ "Next Page": "",
+ "CONTINUES AS": "CONTINUES AS",
+ "%d min late": "%d min late",
+ "%d min late_plural": "%d mins late",
+ "%d min early": "%d min early",
+ "%d min early_plural": "%d mins early",
+ "on time": "on time",
+ "This itinerary departs on a different day than the one searched for": "",
+ "Arrived at destination with a rented bicycle!": "",
+ "End": "End",
+ "Trip Summary": "Trip Summary",
+ "Travel": "Travel",
+ "Time": "Time",
+ "GenCost": "Weight/Cost",
+ "Total Walk": "Total Walk",
+ "Total Bike": "Total Bike",
+ "Total drive": "Total drive",
+ "Elevation Gained": "",
+ "Elevation Lost": "Elevation Lost",
+ "Transfers": "Transfers",
+ "Fare": "Fare",
+ "Valid": "Valid",
+ "Link to Itinerary": "Link to Itinerary",
+ "Print": "Print",
+ "Your Trip": "Your Trip",
+ "Email": "Email",
+ "every %d min": "every %d min",
+ "every %d min_plural": "every %d mins",
+ "Board at ": "Board at ",
+ "Stop": "Stop",
+ "Time in transit": "Time in transit",
+ "Route ID": "",
+ "Trip ID": "",
+ "Service Date": "",
+ "Trip Viewer": "Trip Viewer",
+ "late as": "late as",
+ "Stay on board": "Stay on board",
+ "Alight": "Alight",
+ "at": "at",
+ "%(currency)s %(price)s": "%(currency)s %(price)s",
+ "Start: %(location)s at %(time_date)s": "Start: %(location)s at %(time_date)s",
+ "Board": "Board",
+ "(%(agency_id)s Stop ID #%(stop_id)s),": "(%(agency_id)s Stop ID #%(stop_id)s),",
+ "End: %(location)s at %(time_date)s": "End: %(location)s at %(time_date)s",
+ "(%(agencyId)s Stop ID #%(id)s),": "",
+ "\nView itinerary online:\n%(itinerary_link)s\n": "\nView itinerary online:\n%(itinerary_link)s\n",
+ "We're sorry. The trip planner is temporarily unavailable. Please try again later.": "We're sorry. The trip planner is temporarily unavailable. Please try again later.",
+ "Trip is not possible. You might be trying to plan a trip outside the map data boundary.": "Trip is not possible. You might be trying to plan a trip outside the map data boundary.",
+ "No trip found. There may be no transit service within the maximum specified distance or at the specified time, or your start or end point might not be safely accessible.": "",
+ "No transit times available. The date may be past or too far in the future or there may not be transit service for your trip at the time you chose.": "No transit times available. The date may be past or too far in the future or there may not be transit service for your trip at the time you chose.",
+ "The trip planner is taking way too long to process your request. Please try again later.": "The trip planner is taking way too long to process your request. Please try again later.",
+ "The request has errors that the server is not willing or able to process.": "The request has errors that the server is not willing or able to process.",
+ "Origin is unknown. Can you be a bit more descriptive?": "Origin is unknown. Can you be a bit more descriptive?",
+ "Destination is unknown. Can you be a bit more descriptive?": "Destination is unknown. Can you be a bit more descriptive?",
+ "Both origin and destination are unknown. Can you be a bit more descriptive?": "Both origin and destination are unknown. Can you be a bit more descriptive?",
+ "Both origin and destination are not wheelchair accessible": "Both origin and destination are not wheelchair accessible",
+ "Origin is within a trivial distance of the destination.": "Origin is within a trivial distance of the destination.",
+ "The trip planner is unsure of the location you want to start from. Please select from the following options, or be more specific.": "The trip planner is unsure of the location you want to start from. Please select from the following options, or be more specific.",
+ "The trip planner is unsure of the destination you want to go to. Please select from the following options, or be more specific.": "The trip planner is unsure of the destination you want to go to. Please select from the following options, or be more specific.",
+ "Both origin and destination are ambiguous. Please select from the following options, or be more specific.": "Both origin and destination are ambiguous. Please select from the following options, or be more specific.",
+ "All of triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must be set if any are": "All of triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must be set if any are",
+ "The values of triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must sum to 1": "The values of triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must sum to 1",
+ "If triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor are provided, OptimizeType must be TRIANGLE": "If triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor are provided, OptimizeType must be TRIANGLE",
+ "If OptimizeType is TRIANGLE, triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must be set": "If OptimizeType is TRIANGLE, triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must be set",
+ "Set as Start Location": "Set as Start Location",
+ "Set as End Location": "Set as End Location",
+ "Destination": "Destination",
+ "Error %(error_id)d": "Error %(error_id)d",
+ "No Trip Found": "No Trip Found",
+ "Your %(bike_share_name)s route": "Your %(bike_share_name)s route",
+ "Your bike route": "Your bike route",
+ "Walk to the %(bike_share_name)s dock.": "Walk to the %(bike_share_name)s dock.",
+ "Walk from the %(bike_share_name)s dock to your destination.": "Walk from the %(bike_share_name)s dock to your destination.",
+ "Your walk route": "Your walk route",
+ "Your route using the scooter": "",
+ "Your driving route": "Your bike route",
+ "north": "north",
+ "northeast": "northeast",
+ "east": "east",
+ "southeast": "southeast",
+ "south": "south",
+ "southwest": "southwest",
+ "west": "west",
+ "northwest": "northwest",
+ "hard left": "hard left",
+ "left": "left",
+ "slight left": "slight left",
+ "continue": "continue",
+ "slight right": "slight right",
+ "right": "right",
+ "hard right": "hard right",
+ "elevator": "elevator",
+ "U-turn left": "U-turn left",
+ "U-turn right": "U-turn right",
+ "Walk": "Walk",
+ "Cycle": "Cycle",
+ "Car": "Car",
+ "Bus": "Bus",
+ "Subway": "Subway",
+ "Train": "Train",
+ "Ferry": "Ferry",
+ "Light Rail": "Light Rail",
+ "Cable Car": "Cable Car",
+ "Funicular": "Funicular",
+ "Aerial Tram": "Aerial Tram",
+ "Airplane": "",
+ "Bicycle rental station": "Bicycle rental station",
+ "Take roundabout counterclockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Take roundabout counterclockwise to %(ordinal_exit_number)s exit on %(street_name)s",
+ "Take roundabout counterclockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Take roundabout counterclockwise to %(ordinal_exit_number)s exit on %(street_name)s",
+ "Take roundabout clockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Take roundabout clockwise to %(ordinal_exit_number)s exit on %(street_name)s",
+ "Take roundabout clockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Take roundabout clockwise to %(ordinal_exit_number)s exit on %(street_name)s",
+ "Start on": "Start on",
+ " heading ": " heading ",
+ "to continue on": "to continue on",
+ "on to": "on to",
+ "first": "first",
+ "second": "second",
+ "third": "third",
+ "fourth": "fourth",
+ "fifth": "fifth",
+ "sixth": "sixth",
+ "seventh": "seventh",
+ "eight": "eight",
+ "ninth": "ninth",
+ "tenth": "tenth",
+ "%d hr": "%d hr",
+ "%d hr_plural": "%d hrs",
+ "%d min": "%d min",
+ "%d min_plural": "%d mins",
+ "%d sec": "%d sec",
+ "%d sec_plural": "%d secs",
+ "OK": "OK",
+ "Minimize": "Minimize",
+ "Bring to front": "Bring to front",
+ "Send to back": "Send to back",
+ "Route:": "Route:",
+ "Variant:": "Variant:",
+ "Stop Finder": "Stop Finder",
+ "Feed": "Agency",
+ "By ID": "By ID",
+ "By Name": "By Name",
+ "Search": "Search",
+ "No Stops Found": "No Stops Found",
+ "Date": "Date",
+ "Find Stops": "Find Stops",
+ "(No Stop Selected)": "(No Stop Selected)",
+ "Block": "Block",
+ "Recenter": "Recenter",
+ "Viewer": "Viewer",
+ "Quick": "Quick",
+ "Flat": "Flat",
+ "Bike Friendly": "Bike Friendly",
+ "B": "B",
+ "F": "F",
+ "Q": "Q",
+ "All Routes": "All Routes",
+ "Save": "Save",
+ "Close": "Close",
+ "Travel Options": "Travel Options",
+ "Geocoder": "Geocoder",
+ "Arrive": "Arrive",
+ "Now": "Now",
+ "Wheelchair accessible trip:": "Wheelchair accessible trip:",
+ "Show Filtered Itineraries:": "",
+ "Travel by": "Travel by",
+ "Preferred Routes": "Preferred Routes",
+ "Edit": "Edit",
+ "None": "None",
+ "Weight": "Weight",
+ "Banned routes": "Banned routes",
+ "Use": "Use",
+ "My Own Bike": "My Own Bike",
+ "A Shared Bike": "A Shared Bike",
+ "Plan Your Trip": "Plan Your Trip",
+ "Additional parameters": "",
+ " to _direction": " to ",
+ " to _bus_direction": " to ",
+ "Start_template": "Start",
+ "Depart_itinerary": "Depart",
+ "depart_itinerary": "depart",
+ "Start_popup": "Start",
+ "Depart_tripoptions": "Depart"
+}
diff --git a/application/src/client/classic-debug/js/otp/locale/es.json b/application/src/client/classic-debug/js/otp/locale/es.json
new file mode 100644
index 00000000000..7909780d938
--- /dev/null
+++ b/application/src/client/classic-debug/js/otp/locale/es.json
@@ -0,0 +1,238 @@
+{
+ "Transit": "Transporte Público",
+ "Bus Only": "Sólo autobús",
+ "Rail Only": "Sólo tren",
+ "Airplane Only": "",
+ "Transit, No Airplane": "",
+ "Bicycle Only": "Sólo bicicletas",
+ "Bicycle & Transit": "Bicicleta y Transporte Público",
+ "Walk Only": "Sólo a pie",
+ "Car Only": "Comienza en",
+ "Taxi": "",
+ "Park and Ride": "Aparcar y Transporte Público",
+ "Ride and Kiss (Car Pickup)": "",
+ "Kiss and Ride (Car Dropoff)": "",
+ "Bike and Ride": "Bicicleta y Transporte Público",
+ "Rented Bicycle": "Alquiler bicicleta",
+ "Transit & Rented Bicycle": "Transporte Público y Alquiler de bicicleta",
+ "Rented Scooter": "",
+ "Transit & Rented Scooter": "Transporte Público y Alquiler de bicicleta",
+ "Transit with flex access": "",
+ "Transit with flex egress": "",
+ "Transit with flex access and egress": "",
+ "Direct flex search": "",
+ "Recenter Map Here": "Centrar Mapa Aquí",
+ "Zoom In": "Acercar",
+ "Zoom Out": "Alejar",
+ "Minimize all": "Minimizar todo",
+ "Unminimize all": "Ampliar todo",
+ "Stop Viewer": "Visor de parada",
+ "Plan Trip": "Calcular viaje",
+ "From Stop": "Desde parada",
+ "To Stop": "Hasta parada",
+ "Routes Serving Stop": "Rutas por la parada",
+ "Bike Share Planner": "Planificador de Bicicleta Compartida",
+ "Trip Options": "Opciones de viaje",
+ "PICK UP BIKE": "Recogida de bicicleta",
+ "ALTERNATE PICKUP": "Recogida alternativa",
+ "DROP OFF BIKE": "DEVOLUCIÓN DE BICICLETA",
+ "ALTERNATE DROP OFF": "DEVOLUCIÓN DE BICICLETA ALTERNATIVA",
+ "BIKE STATION": "Estación de bicicleta",
+ "Station:": "Estación:",
+ "%d bike available": "%d bike available",
+ "%d bike available_plural": "%d bikes available",
+ "%d dock available": "%d dock available",
+ "%d dock available_plural": "%d docks available",
+ "Recommended Pick Up:": "Recogida recomendada:",
+ "Bicycle rental": "alquiler de bicicleta",
+ "Recommended Drop Off:": "Devolución recomendada:",
+ "Multimodal Trip Planner": "Planificador multimodo",
+ "Itineraries": "Rutas",
+ "This itinerary departs on a different day from the previous one": "",
+ "%d Itinerary Returned": "%d Ruta encontrada",
+ "%d Itinerary Returned_plural": "%d Rutas encontradas",
+ "Link to search": "Enlace a búsqueda",
+ "Previous Page": "Anterior",
+ "Next Page": "",
+ "CONTINUES AS": "CONTINÚA COMO",
+ "%d min late": "%d min tarde",
+ "%d min late_plural": "%d mins tarde",
+ "%d min early": "%d min early",
+ "%d min early_plural": "%d mins early",
+ "on time": "puntual",
+ "This itinerary departs on a different day than the one searched for": "",
+ "Arrived at destination with a rented bicycle!": "",
+ "End": "Fin",
+ "Trip Summary": "Resumen de la ruta",
+ "Travel": "Viaje",
+ "Time": "Duración",
+ "GenCost": "",
+ "Total Walk": "Total a pie",
+ "Total Bike": "Total en bicicleta",
+ "Total drive": "",
+ "Elevation Gained": "",
+ "Elevation Lost": "",
+ "Transfers": "Transbordos",
+ "Fare": "Ticket",
+ "Valid": "Válido",
+ "Link to Itinerary": "Enlace a ruta",
+ "Print": "Imprimir",
+ "Your Trip": "Tu Viaje",
+ "Email": "Email",
+ "every %d min": "cada %d min",
+ "every %d min_plural": "cada %d mins",
+ "Board at ": "Desde ",
+ "Stop": "Parada",
+ "Time in transit": "Durante",
+ "Route ID": "",
+ "Trip ID": "",
+ "Service Date": "",
+ "Trip Viewer": "Visor de ruta",
+ "late as": "no más tarde que",
+ "Stay on board": "mantente montado",
+ "Alight": "hasta ",
+ "at": "en",
+ "%(currency)s %(price)s": "%(currency)s %(price)s",
+ "Start: %(location)s at %(time_date)s": "Comienza: %(location)s a las %(time_date)s",
+ "Board": "Toma",
+ "(%(agency_id)s Stop ID #%(stop_id)s),": "(%(agency_id)s ID Parada #%(stop_id)s),",
+ "End: %(location)s at %(time_date)s": "Finaliza: %(location)s a las %(time_date)s",
+ "(%(agencyId)s Stop ID #%(id)s),": "",
+ "\nView itinerary online:\n%(itinerary_link)s\n": "\nVer ruta online:\n%(itinerary_link)s\n",
+ "We're sorry. The trip planner is temporarily unavailable. Please try again later.": "Lo sentimos. El planificador de ruta está fuera de servicio temporalmente. Inténtelo más tarde.",
+ "Trip is not possible. You might be trying to plan a trip outside the map data boundary.": "",
+ "No trip found. There may be no transit service within the maximum specified distance or at the specified time, or your start or end point might not be safely accessible.": "",
+ "No transit times available. The date may be past or too far in the future or there may not be transit service for your trip at the time you chose.": "Tiempos no disponibles. La información disponible podría no ser válida para la fecha actual o no hay rutas disponibles para tu viaje.",
+ "The trip planner is taking way too long to process your request. Please try again later.": "El planificador de rutas está tardando demasiado. Por favor, inténtalo más tarde.",
+ "The request has errors that the server is not willing or able to process.": "Error en la petición, el server no puede procesar la información.",
+ "Origin is unknown. Can you be a bit more descriptive?": "Origen desconocido. ¿Puedes ser un poco más descriptivo?",
+ "Destination is unknown. Can you be a bit more descriptive?": "Destino desconocido. ¿Puedes ser un poco más descriptivo?",
+ "Both origin and destination are unknown. Can you be a bit more descriptive?": "Origen y destino desconocidos ¿Puedes ser un poco más descriptivo?",
+ "Both origin and destination are not wheelchair accessible": "Origen y destino no son accesibles a silla de ruedas.",
+ "Origin is within a trivial distance of the destination.": "Origen y destino están demasiado cerca.",
+ "The trip planner is unsure of the location you want to start from. Please select from the following options, or be more specific.": "El planificador de rutas no está seguro de tu origen. Por favor, seleccione una de las siguientes opciones o introduzca un origen más exacto.",
+ "The trip planner is unsure of the destination you want to go to. Please select from the following options, or be more specific.": "El planificador de rutas no está seguro de tu destino. Por favor, seleccione una de las siguientes opciones o introduzca un destino más exacto.",
+ "Both origin and destination are ambiguous. Please select from the following options, or be more specific.": "Origen y destino son ambiguos. Por favor, seleccione una de las siguientes opciones o introduzca un destino más exacto.",
+ "All of triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must be set if any are": "El triángulo de Seguridad, Llano y Tiempo debe ser seleccionado si está disponible.",
+ "The values of triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must sum to 1": "El valor del triángulo de Seguridad, Llano y Tiempo debe sumar 1.",
+ "If triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor are provided, OptimizeType must be TRIANGLE": "Si el triángulo de Seguridad, Llano y Tiempo está disponible, debe ser un TRIÁNGULO.",
+ "If OptimizeType is TRIANGLE, triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must be set": "Si el tipo de optimización es triángulo, los factores de Seguridad, Llano y Tiempo tienen que estar seleccionados.",
+ "Set as Start Location": "Ruta desde aquí",
+ "Set as End Location": "Ruta hacia aquí",
+ "Destination": "Fin",
+ "Error %(error_id)d": "Error %(error_id)d",
+ "No Trip Found": "Viaje no encontrado",
+ "Your %(bike_share_name)s route": "Tu ruta %(bike_share_name)s",
+ "Your bike route": "Tu ruta en bicicleta",
+ "Walk to the %(bike_share_name)s dock.": "Camina hacia la estación %(bike_share_name)s.",
+ "Walk from the %(bike_share_name)s dock to your destination.": "Camina desde la estación %(bike_share_name)s hacia tu destino.",
+ "Your walk route": "Tu ruta a pie",
+ "Your route using the scooter": "",
+ "Your driving route": "Tu ruta en bicicleta",
+ "north": "Norte",
+ "northeast": "Nordeste",
+ "east": "Este",
+ "southeast": "Sureste",
+ "south": "Sur",
+ "southwest": "Suroeste",
+ "west": "Oeste",
+ "northwest": "Noroeste",
+ "hard left": "Izquierda fuerte",
+ "left": "izquierda",
+ "slight left": "Izquierda suave",
+ "continue": "continúa",
+ "slight right": "Derecha suave",
+ "right": "derecha",
+ "hard right": "Derecha fuerte",
+ "elevator": "ascensor",
+ "U-turn left": "Gira a la izquierda",
+ "U-turn right": "Gira a la derecha",
+ "Walk": "Camina",
+ "Cycle": "Bicicleta",
+ "Car": "Coche",
+ "Bus": "Autobús",
+ "Subway": "Metro",
+ "Train": "Tren",
+ "Ferry": "Barco",
+ "Light Rail": "Tranvía",
+ "Cable Car": "Bus Tranvía",
+ "Funicular": "Funicular",
+ "Aerial Tram": "Funicular",
+ "Airplane": "",
+ "Bicycle rental station": "estación de alquiler de bicicleta",
+ "Take roundabout counterclockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Toma la rotonda sentido contrario a las agujas del reloj hasta la %(ordinal_exit_number)s salida dirección %(street_name)s",
+ "Take roundabout counterclockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Toma la rotonda sentido contrario a las agujas del reloj hasta la %(ordinal_exit_number)s salida hacia %(street_name)s",
+ "Take roundabout clockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Toma la rotonda sentido a las agujas del reloj hasta la %(ordinal_exit_number)s salida dirección %(street_name)s",
+ "Take roundabout clockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Toma la rotonda sentido a las agujas del reloj hasta la %(ordinal_exit_number)s salida hacia %(street_name)s",
+ "Start on": "Comienza en",
+ " heading ": " dirección ",
+ "to continue on": "hacia",
+ "on to": "dirección",
+ "first": "primera",
+ "second": "segunda",
+ "third": "tercera",
+ "fourth": "cuarta",
+ "fifth": "quinta",
+ "sixth": "sexta",
+ "seventh": "séptima",
+ "eight": "octava",
+ "ninth": "novena",
+ "tenth": "décima",
+ "%d hr": "%d hr",
+ "%d hr_plural": "%d hrs",
+ "%d min": "%d min",
+ "%d min_plural": "%d mins",
+ "%d sec": "%d seg",
+ "%d sec_plural": "%d segs",
+ "OK": "Vale",
+ "Minimize": "Minimizar",
+ "Bring to front": "Traer al frente",
+ "Send to back": "Mandar al fondo",
+ "Route:": "Línea:",
+ "Variant:": "Variante:",
+ "Stop Finder": "Buscador de paradas",
+ "Feed": "Compañía",
+ "By ID": "Número:",
+ "By Name": "Nombre:",
+ "Search": "Buscar",
+ "No Stops Found": "Paradas no encontradas",
+ "Date": "Fecha",
+ "Find Stops": "Buscar paradas",
+ "(No Stop Selected)": "(Sin parada seleccionada)",
+ "Block": "Transbordo sin cambio de vehículo",
+ "Recenter": "Centrar",
+ "Viewer": "Visor",
+ "Quick": "Rápido",
+ "Flat": "Sin cuestas",
+ "Bike Friendly": "Adaptado a bicicleta",
+ "B": "B",
+ "F": "P",
+ "Q": "R",
+ "All Routes": "Todas las líneas",
+ "Save": "Guardar",
+ "Close": "Cerrar",
+ "Travel Options": "Opciones de viaje",
+ "Geocoder": "Geocoder",
+ "Arrive": "Llegar a las",
+ "Now": "Ahora",
+ "Wheelchair accessible trip:": "Ruta accesible a silla de ruedas:",
+ "Show Filtered Itineraries:": "",
+ "Travel by": "Viajar en",
+ "Preferred Routes": "Líneas favoritas",
+ "Edit": "Editar",
+ "None": "Niguna",
+ "Weight": "Prioridad",
+ "Banned routes": "Líneas prohibidas",
+ "Use": "Usar",
+ "My Own Bike": "Mi propia bicileta",
+ "A Shared Bike": "Una bicicleta compartida",
+ "Plan Your Trip": "Calcular Viaje",
+ "Additional parameters": "",
+ " to _direction": " dirección ",
+ " to _bus_direction": " dirección ",
+ "Start_template": "Inicio",
+ "Depart_itinerary": "Comienza",
+ "depart_itinerary": "Comienza",
+ "Start_popup": "Inicio",
+ "Depart_tripoptions": "Salir a las"
+}
diff --git a/application/src/client/classic-debug/js/otp/locale/fr.json b/application/src/client/classic-debug/js/otp/locale/fr.json
new file mode 100644
index 00000000000..ced9f30440d
--- /dev/null
+++ b/application/src/client/classic-debug/js/otp/locale/fr.json
@@ -0,0 +1,238 @@
+{
+ "Transit": "Transports en commun",
+ "Bus Only": "Bus uniquement",
+ "Rail Only": "Ferré uniquement",
+ "Airplane Only": "",
+ "Transit, No Airplane": "",
+ "Bicycle Only": "Vélo uniquement",
+ "Bicycle & Transit": "Transports en commun + Vélo",
+ "Walk Only": "Marche seulement",
+ "Car Only": "Partir de",
+ "Taxi": "",
+ "Park and Ride": "Parc Relais",
+ "Ride and Kiss (Car Pickup)": "",
+ "Kiss and Ride (Car Dropoff)": "",
+ "Bike and Ride": "Parc Relais Vélo",
+ "Rented Bicycle": "Vélo Libre Service",
+ "Transit & Rented Bicycle": "Transports en commun et Vélo Libre Service",
+ "Rented Scooter": "",
+ "Transit & Rented Scooter": "Transports en commun et Vélo Libre Service",
+ "Transit with flex access": "",
+ "Transit with flex egress": "",
+ "Transit with flex access and egress": "",
+ "Direct flex search": "",
+ "Recenter Map Here": "Centrer la carte ici",
+ "Zoom In": "Zoomer",
+ "Zoom Out": "Dézoomer",
+ "Minimize all": "Tout minimiser",
+ "Unminimize all": "Tout restaurer",
+ "Stop Viewer": "Visualisateur d'arrêt",
+ "Plan Trip": "Organiser un voyage",
+ "From Stop": "De l'arrêt",
+ "To Stop": "À l'arrêt",
+ "Routes Serving Stop": "Lignes desservant l'arrêt",
+ "Bike Share Planner": "Organisation en Vélo Libre Service",
+ "Trip Options": "Paramètres de l'itinéraire",
+ "PICK UP BIKE": "Récupérer un vélo",
+ "ALTERNATE PICKUP": "Alternative de récupération de vélo",
+ "DROP OFF BIKE": "Déposer le vélo",
+ "ALTERNATE DROP OFF": "Alternative de dépôt de vélo",
+ "BIKE STATION": "Station de vélos",
+ "Station:": "Station :",
+ "%d bike available": "%d vélo disponible",
+ "%d bike available_plural": "%d vélos disponibles",
+ "%d dock available": "%d emplacements disponibles",
+ "%d dock available_plural": "%d emplacements disponibles",
+ "Recommended Pick Up:": "Station de récupération de vélo recommandée :",
+ "Bicycle rental": "Station de vélo libre service",
+ "Recommended Drop Off:": "Station de dépôt de vélo recommandée",
+ "Multimodal Trip Planner": "Planificateur d'itinéraires multimodal",
+ "Itineraries": "Itinéraires",
+ "This itinerary departs on a different day from the previous one": "",
+ "%d Itinerary Returned": "%d itinéraire trouvé",
+ "%d Itinerary Returned_plural": "%d itinéraires trouvés",
+ "Link to search": "Lien vers cette recherche",
+ "Previous Page": "Précédent",
+ "Next Page": "",
+ "CONTINUES AS": "Continue comme",
+ "%d min late": "en retard de %d min",
+ "%d min late_plural": "en retard de %d mins",
+ "%d min early": "en avance de %d min",
+ "%d min early_plural": "en avance de %d mins",
+ "on time": "à l'heure",
+ "This itinerary departs on a different day than the one searched for": "",
+ "Arrived at destination with a rented bicycle!": "",
+ "End": "Arrivée",
+ "Trip Summary": "Résumé du voyage",
+ "Travel": "Voyage",
+ "Time": "Durée",
+ "GenCost": "",
+ "Total Walk": "Total de marche",
+ "Total Bike": "Total de vélo",
+ "Total drive": "",
+ "Elevation Gained": "",
+ "Elevation Lost": "",
+ "Transfers": "correspondances",
+ "Fare": "Tarif",
+ "Valid": "Valide le",
+ "Link to Itinerary": "Lien vers l'itinéraire",
+ "Print": "Imprimer",
+ "Your Trip": "Votre voyage",
+ "Email": "Courriel",
+ "every %d min": "toutes les %d min",
+ "every %d min_plural": "toutes les %d mins",
+ "Board at ": "Montez à ",
+ "Stop": "Arrêt",
+ "Time in transit": "Temps de correspondance",
+ "Route ID": "",
+ "Trip ID": "",
+ "Service Date": "",
+ "Trip Viewer": "Visualisateur de voyage",
+ "late as": "en retard à",
+ "Stay on board": "rester à bord",
+ "Alight": "Descendre",
+ "at": "à",
+ "%(currency)s %(price)s": "%(price)s %(currency)s",
+ "Start: %(location)s at %(time_date)s": "Départ : %(location)s à %(time_date)s",
+ "Board": "Monter",
+ "(%(agency_id)s Stop ID #%(stop_id)s),": "arrêt #%(stop_id)s) de (%(agency_id)s,",
+ "End: %(location)s at %(time_date)s": "Arrivée : %(location)s à %(time_date)s",
+ "(%(agencyId)s Stop ID #%(id)s),": "",
+ "\nView itinerary online:\n%(itinerary_link)s\n": "\nVoir l'itinéraire en ligne :\n%(itinerary_link)s\n",
+ "We're sorry. The trip planner is temporarily unavailable. Please try again later.": "Nous sommes désolé. Le planificateur de voyage est temporairement indisponible. Merci de réessayer plus tard.",
+ "Trip is not possible. You might be trying to plan a trip outside the map data boundary.": "",
+ "No trip found. There may be no transit service within the maximum specified distance or at the specified time, or your start or end point might not be safely accessible.": "",
+ "No transit times available. The date may be past or too far in the future or there may not be transit service for your trip at the time you chose.": "Aucune durée de voyage disponible. La date est peut être passée ou trop loin dans le futur, ou il n'y a peut être pas de transports en service pour votre trajet à l'heure choisie.",
+ "The trip planner is taking way too long to process your request. Please try again later.": "Le planificateur de voyage prend largement trop de temps à étudier votre demande. Merci de réessayer plus tard.",
+ "The request has errors that the server is not willing or able to process.": "La requête renvoie des erreurs que le serveur ne souhaite ou ne peut pas traiter.",
+ "Origin is unknown. Can you be a bit more descriptive?": "L'origine est inconnue. Pouvez-vous être plus précis ?",
+ "Destination is unknown. Can you be a bit more descriptive?": "La destination est inconnue. Pouvez-vous être plus précis ?",
+ "Both origin and destination are unknown. Can you be a bit more descriptive?": "L'origine et la destination sont toutes deux inconnues. Pouvez-vous être plus précis ?",
+ "Both origin and destination are not wheelchair accessible": "Ni l'origine ni la destination ne sont accessibles en fauteuil roulant",
+ "Origin is within a trivial distance of the destination.": "L'origine est à une distance trop courte de la destination.",
+ "The trip planner is unsure of the location you want to start from. Please select from the following options, or be more specific.": "Le planificateur de voyage n'est pas sûr du lieu d'où vous voulez partir. Merci de le sélectionner parmi les options suivantes, ou d'être plus précis.",
+ "The trip planner is unsure of the destination you want to go to. Please select from the following options, or be more specific.": "Le planificateur de voyage n'est pas sûr du lieu où vous désirez vous rendre. Merci de le sélectionner parmi les options suivantes, ou d'être plus précis.",
+ "Both origin and destination are ambiguous. Please select from the following options, or be more specific.": "L'origine et la destination sont toutes deux ambigües. Merci de les sélectionner parmi les options suivantes, ou d'être plus précis.",
+ "All of triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must be set if any are": "Toutes les options triangleSafetyFactor, triangleSlopeFactor, et triangleTimeFactor doivent être paramétrées si l'une d'elles l'est",
+ "The values of triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must sum to 1": "Les valeurs de triangleSafetyFactor, triangleSlopeFactor, et triangleTimeFactor doivent avoir pour addition 1",
+ "If triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor are provided, OptimizeType must be TRIANGLE": "Si triangleSafetyFactor, triangleSlopeFactor, et triangleTimeFactor sont fournis, OptimizeType doit être TRIANGLE",
+ "If OptimizeType is TRIANGLE, triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must be set": "Si OptimizeType est TRIANGLE, triangleSafetyFactor, triangleSlopeFactor, et triangleTimeFactor doivent être paramétrées",
+ "Set as Start Location": "Définir comme point de départ",
+ "Set as End Location": "Définir comme point d'arrivée",
+ "Destination": "Destination",
+ "Error %(error_id)d": "Erreur %(error_id)d",
+ "No Trip Found": "Aucun voyage trouvé",
+ "Your %(bike_share_name)s route": "Votre itinéraire en %(bike_share_name)s",
+ "Your bike route": "Votre itinéraire en vélo",
+ "Walk to the %(bike_share_name)s dock.": "Marcher jusqu'à l'emplacement %(bike_share_name)s.",
+ "Walk from the %(bike_share_name)s dock to your destination.": "Marcher de l'emplacement %(bike_share_name)s jusqu'à votre destination",
+ "Your walk route": "Votre itinéraire à pieds",
+ "Your route using the scooter": "",
+ "Your driving route": "Votre itinéraire en vélo",
+ "north": "nord",
+ "northeast": "nord-est",
+ "east": "est",
+ "southeast": "sud-est",
+ "south": "sud",
+ "southwest": "sud-ouest",
+ "west": "ouest",
+ "northwest": "nord-ouest",
+ "hard left": "complètement à gauche",
+ "left": "à gauche",
+ "slight left": "légèrement à gauche",
+ "continue": "continuer",
+ "slight right": "légèrement à droite",
+ "right": "à droite",
+ "hard right": "complètement à droite",
+ "elevator": "ascenseur",
+ "U-turn left": "virage en U à gauche",
+ "U-turn right": "virage en U à droite",
+ "Walk": "Marche à pied",
+ "Cycle": "Vélo",
+ "Car": "Voiture",
+ "Bus": "Bus",
+ "Subway": "Métro",
+ "Train": "Train",
+ "Ferry": "Ferry",
+ "Light Rail": "Tram ou Trolley",
+ "Cable Car": "Tramway funiculaire",
+ "Funicular": "Funiculaire",
+ "Aerial Tram": "Téléphérique",
+ "Airplane": "",
+ "Bicycle rental station": "Station de vélo libre service",
+ "Take roundabout counterclockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Prendre le rond-point dans le sens contraire des aiguilles d'une montre jusqu'à la %(ordinal_exit_number)s sortie sur %(street_name)s",
+ "Take roundabout counterclockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Prendre le rond-point dans le sens contraire des aiguilles d'une montre jusqu'à la %(ordinal_exit_number)s sortie sur %(street_name)s",
+ "Take roundabout clockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Prendre le rond-point dans le sens des aiguilles d'une montre jusqu'à la %(ordinal_exit_number)s sortie sur %(street_name)s",
+ "Take roundabout clockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Prendre le rond-point dans le sens des aiguilles d'une montre jusqu'à la %(ordinal_exit_number)s sortie sur %(street_name)s",
+ "Start on": "Partir de",
+ " heading ": " vers le ",
+ "to continue on": "pour continuer sur",
+ "on to": "sur",
+ "first": "première",
+ "second": "seconde",
+ "third": "troisième",
+ "fourth": "quatrième",
+ "fifth": "cinquième",
+ "sixth": "sixième",
+ "seventh": "septième",
+ "eight": "huitième",
+ "ninth": "neuvième",
+ "tenth": "dixième",
+ "%d hr": "%d h",
+ "%d hr_plural": "%d h",
+ "%d min": "%d min",
+ "%d min_plural": "%d mins",
+ "%d sec": "%d s",
+ "%d sec_plural": "%d s",
+ "OK": "OK",
+ "Minimize": "Minimiser",
+ "Bring to front": "Placer au dessus",
+ "Send to back": "Placer en dessous",
+ "Route:": "Ligne :",
+ "Variant:": "Variante :",
+ "Stop Finder": "Recherche d'arrêt",
+ "Feed": "Transporteur",
+ "By ID": "Par identifiant",
+ "By Name": "Par nom",
+ "Search": "Recherche",
+ "No Stops Found": "Aucun arrêt trouvé",
+ "Date": "Date",
+ "Find Stops": "Trouver les arrêts",
+ "(No Stop Selected)": "(Aucun arrêt sélectionné)",
+ "Block": "Bloc",
+ "Recenter": "Recentrer",
+ "Viewer": "Visualisateur",
+ "Quick": "Le plus Rapide",
+ "Flat": "Le plus Plat",
+ "Bike Friendly": "Adapté au vélo",
+ "B": "A",
+ "F": "P",
+ "Q": "R",
+ "All Routes": "Tous les itinéraires",
+ "Save": "Sauvegarder",
+ "Close": "Fermer",
+ "Travel Options": "Paramètres de voyage",
+ "Geocoder": "Géocodeur",
+ "Arrive": "Arrivée",
+ "Now": "Maintenant",
+ "Wheelchair accessible trip:": "Accessible aux fauteuils roulants:",
+ "Show Filtered Itineraries:": "",
+ "Travel by": "Voyager par",
+ "Preferred Routes": "Itinéraires préférés",
+ "Edit": "Modifier",
+ "None": "Aucune",
+ "Weight": "Pondération",
+ "Banned routes": "Itinéraires à éviter",
+ "Use": "Utiliser",
+ "My Own Bike": "mon propre vélo",
+ "A Shared Bike": "un Vélo Libre Service",
+ "Plan Your Trip": "Calculer votre itinéraire",
+ "Additional parameters": "",
+ " to _direction": " jusqu'à ",
+ " to _bus_direction": " vers ",
+ "Start_template": "Départ",
+ "Depart_itinerary": "Départ",
+ "depart_itinerary": "Départ",
+ "Start_popup": "Départ",
+ "Depart_tripoptions": "Départ"
+}
diff --git a/application/src/client/classic-debug/js/otp/locale/hu.json b/application/src/client/classic-debug/js/otp/locale/hu.json
new file mode 100644
index 00000000000..518dc407bc2
--- /dev/null
+++ b/application/src/client/classic-debug/js/otp/locale/hu.json
@@ -0,0 +1,238 @@
+{
+ "Transit": "Tömegközlekedés",
+ "Bus Only": "Csak busz",
+ "Rail Only": "Csak vasút",
+ "Airplane Only": "Csak repülőgép",
+ "Transit, No Airplane": "Tömegközlekedés, repülés nélkül",
+ "Bicycle Only": "Csak kerékpár",
+ "Bicycle & Transit": "Kerékpár & tömegközlekedés",
+ "Walk Only": "Csak séta",
+ "Car Only": "Csak autó",
+ "Taxi": "Taxi",
+ "Park and Ride": "P+R (Park & Ride)",
+ "Ride and Kiss (Car Pickup)": "",
+ "Kiss and Ride (Car Dropoff)": "",
+ "Bike and Ride": "B+R (Bike & Ride)",
+ "Rented Bicycle": "Bérelt kerékpár",
+ "Transit & Rented Bicycle": "Tömegközlekedés és bérelt kerékpár",
+ "Rented Scooter": "",
+ "Transit & Rented Scooter": "Tömegközlekedés és bérelt kerékpár",
+ "Transit with flex access": "Tömegközlekedés rugalmas indulással",
+ "Transit with flex egress": "Tömegközlekedés rugalmas érkezéssel",
+ "Transit with flex access and egress": "Tömegközlekedés rugalmas indulással és érkezéssel",
+ "Direct flex search": "Közvetlen rugalmas keresés",
+ "Recenter Map Here": "Legyen itt a térkép középpontja",
+ "Zoom In": "Közelítés",
+ "Zoom Out": "Távolítás",
+ "Minimize all": "Minden kis méretűvé tétele",
+ "Unminimize all": "Minden kis méretűvé tételének megszüntetése",
+ "Stop Viewer": "Megállómegjelenítő",
+ "Plan Trip": "Utazás tervezése",
+ "From Stop": "Ettől a megállótól",
+ "To Stop": "Eddig a megállóig",
+ "Routes Serving Stop": "A megállót érintő járatok",
+ "Bike Share Planner": "Kerékpármegosztó-tervező",
+ "Trip Options": "Utazási beállítások",
+ "PICK UP BIKE": "KERÉKPÁR FELVÉTELE",
+ "ALTERNATE PICKUP": "MÁSIK FELVÉTELI HELY",
+ "DROP OFF BIKE": "KERÉKPÁR LEADÁSA",
+ "ALTERNATE DROP OFF": "MÁSIK LEADÁSI HELY",
+ "BIKE STATION": "KERÉKPÁRÁLLOMÁS",
+ "Station:": "Gyűjtőállomás:",
+ "%d bike available": "%d kerékpár elérhető",
+ "%d bike available_plural": "%d kerékpár elérhető",
+ "%d dock available": "%d dokkolóállás",
+ "%d dock available_plural": "%d dokkolállás",
+ "Recommended Pick Up:": "Ajánlott felvétel:",
+ "Bicycle rental": "Kerékpárbérlési hely",
+ "Recommended Drop Off:": "Ajánlott leadás:",
+ "Multimodal Trip Planner": "Multimodális utazástervező",
+ "Itineraries": "Útvonaltervek",
+ "This itinerary departs on a different day from the previous one": "Ez a útvonalterv az előző naptól eltérő napon kezdődik",
+ "%d Itinerary Returned": "%d útvonalatervet találtunk",
+ "%d Itinerary Returned_plural": "%d útvonaltervet találtunk",
+ "Link to search": "Link a kereséshez",
+ "Previous Page": "Előző",
+ "Next Page": "Következő",
+ "CONTINUES AS": "FOLYTATÁS MINT",
+ "%d min late": "%d perc késés",
+ "%d min late_plural": "%d perc késés",
+ "%d min early": "%d perccel korábban",
+ "%d min early_plural": "%d perccel korábban",
+ "on time": "pontos",
+ "This itinerary departs on a different day than the one searched for": "Ez az útvonalterv a tervezési naptól eltérő napon kezdődik",
+ "Arrived at destination with a rented bicycle!": "Bérelt kerékpárral való érkezés a célba!",
+ "End": "Érkezés",
+ "Trip Summary": "Utazás összefoglalója",
+ "Travel": "Utazás",
+ "Time": "Idő",
+ "GenCost": "Súly/Költség",
+ "Total Walk": "Séta összesen",
+ "Total Bike": "Kerékpárral összesen",
+ "Total drive": "Autóval összesen",
+ "Elevation Gained": "",
+ "Elevation Lost": "",
+ "Transfers": "Átszállások",
+ "Fare": "Viteldíj",
+ "Valid": "Érvényesség",
+ "Link to Itinerary": "Link az útvonaltervhez",
+ "Print": "Nyomtatás",
+ "Your Trip": "Az Ön utazása",
+ "Email": "E-mail",
+ "every %d min": "%d percenként",
+ "every %d min_plural": "%d percenként",
+ "Board at ": "Felszállás: ",
+ "Stop": "Megálló",
+ "Time in transit": "Közlekedési idő",
+ "Route ID": "",
+ "Trip ID": "",
+ "Service Date": "",
+ "Trip Viewer": "Utazásmegjelenítő",
+ "late as": "",
+ "Stay on board": "Maradjon a járművön",
+ "Alight": "Leszállás",
+ "at": "itt:",
+ "%(currency)s %(price)s": "%(currency)s %(price)s",
+ "Start: %(location)s at %(time_date)s": "Indulás: %(location)s (%(time_date)s)",
+ "Board": "Felszállás",
+ "(%(agency_id)s Stop ID #%(stop_id)s),": "(%(agency_id)s megállóazonosító: #%(stop_id)s),",
+ "End: %(location)s at %(time_date)s": "Érkezés: %(location)s (%(time_date)s)",
+ "(%(agencyId)s Stop ID #%(id)s),": "(%(agencyId)s megállóazonosító: #%(id)s),",
+ "\nView itinerary online:\n%(itinerary_link)s\n": "\nOnline útvonalterv megtekintése:\n%(itinerary_link)s\n",
+ "We're sorry. The trip planner is temporarily unavailable. Please try again later.": "Sajnáljuk, az útvonaltervező átmenetileg nem elérhető. Kérjük, próbálja újra később.",
+ "Trip is not possible. You might be trying to plan a trip outside the map data boundary.": "Az utazás nem lehetséges. Lehet, hogy a térképadatok határain kívüli utat próbál tervezni.",
+ "No trip found. There may be no transit service within the maximum specified distance or at the specified time, or your start or end point might not be safely accessible.": "Nem található ilyen utazás. Előfordulhat, hogy nincs tömegközlekedési szolgáltatás a megadott legnagyobb távolságon belül vagy a megadott időpontban, vagy a kezdő- vagy végpont nem érhető el biztonságosan.",
+ "No transit times available. The date may be past or too far in the future or there may not be transit service for your trip at the time you chose.": "Nem áll rendelkezésre közlekedési idő. Előfordulhat, hogy a dátum elmúlt vagy túl messze van a jövőben, vagy az Ön által választott időpontban nincs tömegközlekedési szolgáltatás.",
+ "The trip planner is taking way too long to process your request. Please try again later.": "Az utazástervezőnek túl sokáig tart a kérés feldolgozása. Kérjük, próbálja újra később.",
+ "The request has errors that the server is not willing or able to process.": "A kérés olyan hibát tartalmaz, amelyet a szerver nem hajlandó vagy nem képes feldolgozni.",
+ "Origin is unknown. Can you be a bit more descriptive?": "A kiindulás pont ismeretlen. Le tudná írni egy kicsit gondosabban?",
+ "Destination is unknown. Can you be a bit more descriptive?": "Az úti cél ismeretlen. Le tudná írni egy kicsit gondosabban?",
+ "Both origin and destination are unknown. Can you be a bit more descriptive?": "A kiindulási és a célpont egyaránt ismeretlen. Le tudná-e írni egy kicsit gondosabban?",
+ "Both origin and destination are not wheelchair accessible": "Sem a kiindulási, sem a célpont nem akadálymentes",
+ "Origin is within a trivial distance of the destination.": "A kiindulási hely túl közel van a célponthoz.",
+ "The trip planner is unsure of the location you want to start from. Please select from the following options, or be more specific.": "Az útvonaltervező bizonytalan abban, hogy honnan szeretne indulni. Kérjük, válasszon az alábbi lehetőségek közül, vagy legyen pontosabb.",
+ "The trip planner is unsure of the destination you want to go to. Please select from the following options, or be more specific.": "Az útvonaltervező bizonytalan abban, hogy hová szeretne érkezni. Kérjük, válasszon az alábbi lehetőségek közül, vagy legyen pontosabb.",
+ "Both origin and destination are ambiguous. Please select from the following options, or be more specific.": "Sem a kiindulási, sem a célpont nem egyértelmű. Kérjük, válasszon az alábbi lehetőségek közül, vagy legyen pontosabb.",
+ "All of triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must be set if any are": "A triangleSafetyFactor, a triangleSlopeFactor és a triangleTimeFactor értékeit egyaránt be kell állítani, ha vannak ilyenek",
+ "The values of triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must sum to 1": "A triangleSafetyFactor, triangleSlopeFactor és triangleTimeFactor értékei összegének 1-nek kell lennie",
+ "If triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor are provided, OptimizeType must be TRIANGLE": "Ha a triangleSafetyFactor, a triangleSlopeFactor és a triangleTimeFactor meg van adva, akkor az OptimizeType értékének TRIANGLE-nek kell lennie",
+ "If OptimizeType is TRIANGLE, triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must be set": "Ha az OptimizeType értéke TRIANGLE, akkor be kell állítani a triangleSafetyFactor, a triangleSlopeFactor és a triangleTimeFactor értékeit",
+ "Set as Start Location": "Beállítás kiindulási helyként",
+ "Set as End Location": "Beállítás érkezési helyként",
+ "Destination": "Célpont",
+ "Error %(error_id)d": "Hiba: %(error_id)d",
+ "No Trip Found": "Nem található utazás",
+ "Your %(bike_share_name)s route": "Az Ön %(bike_share_name)s-útvonala",
+ "Your bike route": "Az Ön kerékpáros útvonala",
+ "Walk to the %(bike_share_name)s dock.": "Séta a dokkolóálláshoz (%(bike_share_name)s)",
+ "Walk from the %(bike_share_name)s dock to your destination.": "Séta a dokkolóállástól (%(bike_share_name)s) a célponthoz.",
+ "Your walk route": "Az Ön gyalogos útvonala",
+ "Your route using the scooter": "",
+ "Your driving route": "Az Ön kerékpáros útvonala",
+ "north": "észak",
+ "northeast": "északkelet",
+ "east": "kelet",
+ "southeast": "délkelet",
+ "south": "dél",
+ "southwest": "délnyugat",
+ "west": "nyugat",
+ "northwest": "északnyugat",
+ "hard left": "élesen balra",
+ "left": "balra",
+ "slight left": "enyhén balra",
+ "continue": "tovább",
+ "slight right": "enyhén jobbra",
+ "right": "jobbra",
+ "hard right": "élesen jobbra",
+ "elevator": "lift",
+ "U-turn left": "megfordulás balra",
+ "U-turn right": "megfordulás jobbra",
+ "Walk": "Séta",
+ "Cycle": "Kerékpározás",
+ "Car": "Autós útvonal",
+ "Bus": "Busz",
+ "Subway": "Metró",
+ "Train": "Vonat",
+ "Ferry": "Komp",
+ "Light Rail": "Villamos, könnyűvasút",
+ "Cable Car": "",
+ "Funicular": "Sikló",
+ "Aerial Tram": "Libegő",
+ "Airplane": "Repülőgép",
+ "Bicycle rental station": "Kerékpárkölcsönző állomás",
+ "Take roundabout counterclockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Hajtson be a körforgalomba az óramutató járásával ellentétesen, majd hajtson ki a(z) %(ordinal_exit_number)s kijáraton erre: %(street_name)s",
+ "Take roundabout counterclockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Hajtson be a körforgalomba az óramutató járásával ellentétesen, majd hajtson ki a(z) %(ordinal_exit_number)s kijáraton erre: %(street_name)s",
+ "Take roundabout clockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Hajtson be a körforgalomba az óramutató járása szerinti irányba, majd hajtson ki a(z) %(ordinal_exit_number)s kijáraton erre: %(street_name)s",
+ "Take roundabout clockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Hajtson be a körforgalomba az óramutató járása szerinti irányba, majd hajtson ki a(z) %(ordinal_exit_number)s kijáraton erre: %(street_name)s",
+ "Start on": "Induljon ezen:",
+ " heading ": " erre: ",
+ "to continue on": "menjen tovább ezen:",
+ "on to": "ezen:",
+ "first": "első",
+ "second": "második",
+ "third": "harmadik",
+ "fourth": "negyedik",
+ "fifth": "ötödik",
+ "sixth": "hatodik",
+ "seventh": "hetedik",
+ "eight": "nyolcadik",
+ "ninth": "kilencedik",
+ "tenth": "tizedik",
+ "%d hr": "%d óra",
+ "%d hr_plural": "%d óra",
+ "%d min": "%d perc",
+ "%d min_plural": "%d perc",
+ "%d sec": "%d másodperc",
+ "%d sec_plural": "%d másodperc",
+ "OK": "OK",
+ "Minimize": "Kis méretűvé tétel",
+ "Bring to front": "Előrehozás",
+ "Send to back": "Hátraküldés",
+ "Route:": "Útvonal:",
+ "Variant:": "Változat:",
+ "Stop Finder": "Megállókereső",
+ "Feed": "Feed",
+ "By ID": "Azonosító alapján",
+ "By Name": "Név alapján",
+ "Search": "Keresés",
+ "No Stops Found": "Nem található megálló",
+ "Date": "Dátum",
+ "Find Stops": "Megállóhelyek keresése",
+ "(No Stop Selected)": "(Nincs megálló kijelölve)",
+ "Block": "Blokk",
+ "Recenter": "Legyen ez a térkép középpontja",
+ "Viewer": "Megállómegtekintő",
+ "Quick": "Gyors",
+ "Flat": "Lapos",
+ "Bike Friendly": "Kerékpárosbarát",
+ "B": "K",
+ "F": "L",
+ "Q": "G",
+ "All Routes": "Minden útvonal",
+ "Save": "Mentés",
+ "Close": "Bezárás",
+ "Travel Options": "Utazás beállításai",
+ "Geocoder": "Geokóder",
+ "Arrive": "Érkezés",
+ "Now": "Most",
+ "Wheelchair accessible trip:": "Akadálymentes utazás:",
+ "Show Filtered Itineraries:": "Szűrt útvonaltervek megjelenítése:",
+ "Travel by": "Közlekedési eszköz:",
+ "Preferred Routes": "Előnyben részesített útvonalak",
+ "Edit": "Szerkesztés",
+ "None": "Nincs",
+ "Weight": "Súly",
+ "Banned routes": "Kerülendő útvonalak",
+ "Use": "Használt kerékpár:",
+ "My Own Bike": "saját",
+ "A Shared Bike": "bérelt",
+ "Plan Your Trip": "Tervezze meg utazását",
+ "Additional parameters": "További beállítások",
+ " to _direction": " eddig: ",
+ " to _bus_direction": " ide: ",
+ "Start_template": "Indulás",
+ "Depart_itinerary": "Indulás",
+ "depart_itinerary": "indulás",
+ "Start_popup": "Indulás",
+ "Depart_tripoptions": "Indulás"
+}
diff --git a/application/src/client/classic-debug/js/otp/locale/it.json b/application/src/client/classic-debug/js/otp/locale/it.json
new file mode 100644
index 00000000000..81489b8d82c
--- /dev/null
+++ b/application/src/client/classic-debug/js/otp/locale/it.json
@@ -0,0 +1,238 @@
+{
+ "Transit": "Mezzi pubblici",
+ "Bus Only": "Solo Bus",
+ "Rail Only": "Solo Treno",
+ "Airplane Only": "",
+ "Transit, No Airplane": "",
+ "Bicycle Only": "In bici",
+ "Bicycle & Transit": "Bici & mezzi pubblici",
+ "Walk Only": "A piedi",
+ "Car Only": "Partenza su",
+ "Taxi": "",
+ "Park and Ride": "Park & Ride",
+ "Ride and Kiss (Car Pickup)": "",
+ "Kiss and Ride (Car Dropoff)": "",
+ "Bike and Ride": "Bike & Ride",
+ "Rented Bicycle": "Bike sharing",
+ "Transit & Rented Bicycle": "Bike sharing & Ride",
+ "Rented Scooter": "",
+ "Transit & Rented Scooter": "Bike sharing & Ride",
+ "Transit with flex access": "",
+ "Transit with flex egress": "",
+ "Transit with flex access and egress": "",
+ "Direct flex search": "",
+ "Recenter Map Here": "Centra",
+ "Zoom In": "Zoom in",
+ "Zoom Out": "Zoom out",
+ "Minimize all": "Minimizza tutto",
+ "Unminimize all": "Ripristina tutto",
+ "Stop Viewer": "Orari",
+ "Plan Trip": "Calcola percorso",
+ "From Stop": "Da questa fermata",
+ "To Stop": "A questa fermata",
+ "Routes Serving Stop": "Linee",
+ "Bike Share Planner": "Bike Sharing",
+ "Trip Options": "Opzioni di viaggio",
+ "PICK UP BIKE": "Prendi la bici qui",
+ "ALTERNATE PICKUP": "Puoi prendere la bici anche qui",
+ "DROP OFF BIKE": "Lascia la bici qui",
+ "ALTERNATE DROP OFF": "Puoi lasciare la bici anche qui",
+ "BIKE STATION": "Stazione di Bike Sharing",
+ "Station:": "Stazione:",
+ "%d bike available": "%d bici disponibile",
+ "%d bike available_plural": "%d bici disponibili",
+ "%d dock available": "%d posto disponibile",
+ "%d dock available_plural": "%d posti disponibili",
+ "Recommended Pick Up:": "Prendi la bici:",
+ "Bicycle rental": "",
+ "Recommended Drop Off:": "Lascia la bici:",
+ "Multimodal Trip Planner": "Calcolo percorso multimodale",
+ "Itineraries": "Percorsi",
+ "This itinerary departs on a different day from the previous one": "",
+ "%d Itinerary Returned": "%d percorso trovato",
+ "%d Itinerary Returned_plural": "%d percorsi trovati",
+ "Link to search": "Link a questa ricerca",
+ "Previous Page": "Precedente",
+ "Next Page": "",
+ "CONTINUES AS": "Rimani a bordo",
+ "%d min late": "%d minuto di ritardo",
+ "%d min late_plural": "%d minuti di ritardo",
+ "%d min early": "%d minuto in anticipo",
+ "%d min early_plural": "%d minuti in anticipo",
+ "on time": "in orario",
+ "This itinerary departs on a different day than the one searched for": "",
+ "Arrived at destination with a rented bicycle!": "",
+ "End": "Arrivo",
+ "Trip Summary": "Riepilogo",
+ "Travel": "Partenza",
+ "Time": "Durata",
+ "GenCost": "",
+ "Total Walk": "A piedi",
+ "Total Bike": "In bici",
+ "Total drive": "",
+ "Elevation Gained": "",
+ "Elevation Lost": "",
+ "Transfers": "Cambi",
+ "Fare": "Costo",
+ "Valid": "Calcolato il ",
+ "Link to Itinerary": "Link a questo percorso",
+ "Print": "Stampa",
+ "Your Trip": "Il tuo percorso",
+ "Email": "Invia mail",
+ "every %d min": "ogni minuto",
+ "every %d min_plural": "ogni %d minuti",
+ "Board at ": "Parti da ",
+ "Stop": "Fermata",
+ "Time in transit": "Tempo a bordo",
+ "Route ID": "",
+ "Trip ID": "",
+ "Service Date": "",
+ "Trip Viewer": "Percorso",
+ "late as": "al più",
+ "Stay on board": "Rimani a bordo",
+ "Alight": "Scendi",
+ "at": "a",
+ "%(currency)s %(price)s": "%(currency)s %(price)s",
+ "Start: %(location)s at %(time_date)s": "Partenza: %(location)s alle %(time_date)s",
+ "Board": "Sali a bordo",
+ "(%(agency_id)s Stop ID #%(stop_id)s),": "(%(agency_id)s fermata n.%(stop_id)s),",
+ "End: %(location)s at %(time_date)s": "Arrivo: %(location)s alle %(time_date)s",
+ "(%(agencyId)s Stop ID #%(id)s),": "",
+ "\nView itinerary online:\n%(itinerary_link)s\n": "\nConsulta il percorso online:\n%(itinerary_link)s\n",
+ "We're sorry. The trip planner is temporarily unavailable. Please try again later.": "Siamo spiacenti. Il servizio è momentaneamente indisponibile.Riprova più tardi.",
+ "Trip is not possible. You might be trying to plan a trip outside the map data boundary.": "",
+ "No trip found. There may be no transit service within the maximum specified distance or at the specified time, or your start or end point might not be safely accessible.": "",
+ "No transit times available. The date may be past or too far in the future or there may not be transit service for your trip at the time you chose.": "Nessun servizio di Trasporto Pubblico trovato. La data indicata potrebbe essere al di fuori del periodo preso in considerazione dal Calcolo Percorso.",
+ "The trip planner is taking way too long to process your request. Please try again later.": "Il servizio di Calcolo percorsi sta impiegando troppo tempo per processare la tua richiesta. Riprova più tardi.",
+ "The request has errors that the server is not willing or able to process.": "La richiesta contiene errori che il server non è in grado di trattare.",
+ "Origin is unknown. Can you be a bit more descriptive?": "Origine non riconosciuta. Puoi essere più esplicito?",
+ "Destination is unknown. Can you be a bit more descriptive?": "Destinazione non riconosciuta. Puoi essere più esplicito?",
+ "Both origin and destination are unknown. Can you be a bit more descriptive?": "Origine e destinazione non riconosciute. Puoi essere più esplicito?",
+ "Both origin and destination are not wheelchair accessible": "Origine e destinazione non accessibili in carrozzina",
+ "Origin is within a trivial distance of the destination.": "Origine troppo vicina alla destinazione.",
+ "The trip planner is unsure of the location you want to start from. Please select from the following options, or be more specific.": "Origine non riconosciuta. Seleziona fra le seguenti opzioni o specifica meglio l'origine.",
+ "The trip planner is unsure of the destination you want to go to. Please select from the following options, or be more specific.": "Destinazione non riconosciuta. Seleziona fra le seguenti opzioni o specifica meglio la destinazione.",
+ "Both origin and destination are ambiguous. Please select from the following options, or be more specific.": "Origine e destinazione non riconosciute. Seleziona fra le seguenti opzioni o specifica meglio l'origine e la destinazione.",
+ "All of triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must be set if any are": "Specificare tutti e 3 i fattori: triangleSafetyFactor, triangleSlopeFactor e triangleTimeFactor",
+ "The values of triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must sum to 1": "La somma dai fattori triangleSafetyFactor, triangleSlopeFactor e triangleTimeFactor dev'essere pari a 1",
+ "If triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor are provided, OptimizeType must be TRIANGLE": "Se si forniscono i fattori triangleSafetyFactor, triangleSlopeFactor e triangleTimeFactor il parametro OptimizeType dev'essere settato a TRIANGLE",
+ "If OptimizeType is TRIANGLE, triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must be set": "Se il parametro OptimizeType è settato a TRIANGLE, si devono fornire i fattori triangleSafetyFactor, triangleSlopeFactor e triangleTimeFactor ",
+ "Set as Start Location": "Imposta Partenza",
+ "Set as End Location": "Imposta Arrivo",
+ "Destination": "Destinazione",
+ "Error %(error_id)d": "Errore %(error_id)d",
+ "No Trip Found": "nessun percoro trovato",
+ "Your %(bike_share_name)s route": "Percorso con %(bike_share_name)s ",
+ "Your bike route": "Percorso in bici",
+ "Walk to the %(bike_share_name)s dock.": "A piedi verso la stazione %(bike_share_name)s",
+ "Walk from the %(bike_share_name)s dock to your destination.": "A piedi dalla stazione %(bike_share_name)s a destinazione",
+ "Your walk route": "Percorso a piedi",
+ "Your route using the scooter": "",
+ "Your driving route": "Percorso in bici",
+ "north": "nord",
+ "northeast": "nord-est",
+ "east": "est",
+ "southeast": "sud-est",
+ "south": "sud",
+ "southwest": "sud-ovest",
+ "west": "ovest",
+ "northwest": "nod-ovest",
+ "hard left": "a sinistra",
+ "left": "a sinistra",
+ "slight left": "tenere la sinistra",
+ "continue": "continuare",
+ "slight right": "tenere la destra",
+ "right": "a destra",
+ "hard right": "a destra",
+ "elevator": "ascensore",
+ "U-turn left": "inversione di marcia",
+ "U-turn right": "inversione di marcia",
+ "Walk": "A piedi",
+ "Cycle": "bici",
+ "Car": "auto",
+ "Bus": "bus",
+ "Subway": "metro",
+ "Train": "treno",
+ "Ferry": "Ferry",
+ "Light Rail": "tram",
+ "Cable Car": "tram",
+ "Funicular": "funivia",
+ "Aerial Tram": "tram",
+ "Airplane": "",
+ "Bicycle rental station": "",
+ "Take roundabout counterclockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Prendere la rotonda in senso antiorario, %(ordinal_exit_number)s uscita, %(street_name)s",
+ "Take roundabout counterclockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Prendere la rotonda in senso antiorario, %(ordinal_exit_number)s uscita, %(street_name)s",
+ "Take roundabout clockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Prendere la rotonda in senso orario, %(ordinal_exit_number)s uscita, %(street_name)s",
+ "Take roundabout clockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Prendere la rotonda in senso orario, %(ordinal_exit_number)s uscita, %(street_name)s",
+ "Start on": "Partenza su",
+ " heading ": " in direzione ",
+ "to continue on": "continua su",
+ "on to": "su",
+ "first": "prima",
+ "second": "seconda",
+ "third": "terza",
+ "fourth": "quarta",
+ "fifth": "quinta",
+ "sixth": "sesta",
+ "seventh": "settima",
+ "eight": "ottava",
+ "ninth": "nona",
+ "tenth": "decima",
+ "%d hr": "%d h",
+ "%d hr_plural": "%d h",
+ "%d min": "%d m",
+ "%d min_plural": "%d m",
+ "%d sec": "%d s",
+ "%d sec_plural": "%d s",
+ "OK": "OK",
+ "Minimize": "Riduci a icona",
+ "Bring to front": "Porta in primo piano",
+ "Send to back": "Porta in secondo piano",
+ "Route:": "Linea:",
+ "Variant:": "Percorso:",
+ "Stop Finder": "Ricerca Fermata",
+ "Feed": "Azienda TPL",
+ "By ID": "Numero",
+ "By Name": "Nome",
+ "Search": "Cerca",
+ "No Stops Found": "Nessuna fermata trovata",
+ "Date": "Data",
+ "Find Stops": "Cerca fermata",
+ "(No Stop Selected)": "(nessuna fermata selezionata)",
+ "Block": "Turno",
+ "Recenter": "Centra",
+ "Viewer": "Passaggi",
+ "Quick": "Veloce",
+ "Flat": "Pianeggiante",
+ "Bike Friendly": "Sicuro",
+ "B": "S",
+ "F": "P",
+ "Q": "V",
+ "All Routes": "Linee",
+ "Save": "Salva",
+ "Close": "Chiudi",
+ "Travel Options": "Opzioni di viaggio",
+ "Geocoder": "Geocoder",
+ "Arrive": "Arrivo",
+ "Now": "Ora",
+ "Wheelchair accessible trip:": "Percorso accessibile:",
+ "Show Filtered Itineraries:": "",
+ "Travel by": "Modalità",
+ "Preferred Routes": "Linee preferite",
+ "Edit": "Modifica",
+ "None": "Nessuna",
+ "Weight": "Peso",
+ "Banned routes": "Linee da evitare",
+ "Use": "Usa",
+ "My Own Bike": "bici propria",
+ "A Shared Bike": "bike sharing",
+ "Plan Your Trip": "Calcola",
+ "Additional parameters": "",
+ " to _direction": " fino a ",
+ " to _bus_direction": " in direzione ",
+ "Start_template": "Partenza",
+ "Depart_itinerary": "Parti da",
+ "depart_itinerary": "Partenza",
+ "Start_popup": "Partenza",
+ "Depart_tripoptions": "Partenza"
+}
diff --git a/application/src/client/classic-debug/js/otp/locale/no.json b/application/src/client/classic-debug/js/otp/locale/no.json
new file mode 100644
index 00000000000..e26b87d5e22
--- /dev/null
+++ b/application/src/client/classic-debug/js/otp/locale/no.json
@@ -0,0 +1,238 @@
+{
+ "Transit": "Kollektivtransport",
+ "Bus Only": "Buss",
+ "Rail Only": "Tog",
+ "Airplane Only": "Fly",
+ "Transit, No Airplane": "",
+ "Bicycle Only": "Sykkel",
+ "Bicycle & Transit": "Sykkel & Kollektivtransport",
+ "Walk Only": "Gå",
+ "Car Only": "Start fra",
+ "Taxi": "",
+ "Park and Ride": "Park and Ride",
+ "Ride and Kiss (Car Pickup)": "",
+ "Kiss and Ride (Car Dropoff)": "",
+ "Bike and Ride": "Bike and Ride",
+ "Rented Bicycle": "Bysykkel",
+ "Transit & Rented Bicycle": "Kollektivtransport & Bysykkel",
+ "Rented Scooter": "",
+ "Transit & Rented Scooter": "Kollektivtransport & Bysykkel",
+ "Transit with flex access": "",
+ "Transit with flex egress": "",
+ "Transit with flex access and egress": "",
+ "Direct flex search": "",
+ "Recenter Map Here": "Sentrer kart her",
+ "Zoom In": "Zoom inn",
+ "Zoom Out": "Zoom ut",
+ "Minimize all": "Minimer vinduer",
+ "Unminimize all": "Vis vinduer",
+ "Stop Viewer": "Vis Stoppested",
+ "Plan Trip": "Reiseplanlegger",
+ "From Stop": "Fra stoppested",
+ "To Stop": "Til stoppested",
+ "Routes Serving Stop": "Ruter fra stoppested",
+ "Bike Share Planner": "Bike Share Planner",
+ "Trip Options": "Reise søk",
+ "PICK UP BIKE": "PICK UP BIKE",
+ "ALTERNATE PICKUP": "ALTERNATE PICKUP",
+ "DROP OFF BIKE": "DROP OFF BIKE",
+ "ALTERNATE DROP OFF": "ALTERNATE DROP OFF",
+ "BIKE STATION": "BIKE STATION",
+ "Station:": "Stasjon:",
+ "%d bike available": "%d sykkel tilgjengelig",
+ "%d bike available_plural": "%d sykler tilgjengelig",
+ "%d dock available": "%d plass ledig",
+ "%d dock available_plural": "%d plasser ledig",
+ "Recommended Pick Up:": "Anbefalt Pick Up:",
+ "Bicycle rental": "Bysykkel",
+ "Recommended Drop Off:": "Anbefalt Drop Off:",
+ "Multimodal Trip Planner": "Reiseplanlegger",
+ "Itineraries": "Vis Reiseplaner",
+ "This itinerary departs on a different day from the previous one": "",
+ "%d Itinerary Returned": "%d Reise alternativ",
+ "%d Itinerary Returned_plural": "%d Reise alternativer",
+ "Link to search": "Link til søk",
+ "Previous Page": "Forrige",
+ "Next Page": "",
+ "CONTINUES AS": "FORTSETTER SOM",
+ "%d min late": "%d minutt forsinket",
+ "%d min late_plural": "%d minutter forsinket",
+ "%d min early": "%d minutt fortidlig",
+ "%d min early_plural": "%d minutter fortidlig",
+ "on time": "i rute",
+ "This itinerary departs on a different day than the one searched for": "",
+ "Arrived at destination with a rented bicycle!": "",
+ "End": "Til",
+ "Trip Summary": "Reise oversikt",
+ "Travel": "Start",
+ "Time": "Reisetid",
+ "GenCost": "Kost",
+ "Total Walk": "Gangeavstand",
+ "Total Bike": "Sykkel distanse",
+ "Total drive": "Bil distanse",
+ "Elevation Gained": "",
+ "Elevation Lost": "",
+ "Transfers": "Bytter",
+ "Fare": "Pris",
+ "Valid": "Gyldig",
+ "Link to Itinerary": "Link til reise",
+ "Print": "Skriv ut",
+ "Your Trip": "Din reise",
+ "Email": "e-post",
+ "every %d min": "hvert minutt",
+ "every %d min_plural": "hvert %d minutt",
+ "Board at ": "Påstigning ",
+ "Stop": "Stoppested",
+ "Time in transit": "Tid kollektivtransport",
+ "Route ID": "",
+ "Trip ID": "",
+ "Service Date": "",
+ "Trip Viewer": "Vis Rute",
+ "late as": "sent som",
+ "Stay on board": "Bli om bord",
+ "Alight": "Avstigning",
+ "at": "på",
+ "%(currency)s %(price)s": "%(currency)s %(price)s",
+ "Start: %(location)s at %(time_date)s": "Fra: %(location)s klokka %(time_date)s",
+ "Board": "Påstigning",
+ "(%(agency_id)s Stop ID #%(stop_id)s),": "(%(agency_id)s Stoppested ID #%(stop_id)s),",
+ "End: %(location)s at %(time_date)s": "Ankomst: %(location)s klokka %(time_date)s",
+ "(%(agencyId)s Stop ID #%(id)s),": "",
+ "\nView itinerary online:\n%(itinerary_link)s\n": "\nVis reiseplan:\n%(itinerary_link)s\n",
+ "We're sorry. The trip planner is temporarily unavailable. Please try again later.": "Beklager. Reiseplanleggeren er midlertidig utilgjengelig. Venligst forsøk igjen senere.",
+ "Trip is not possible. You might be trying to plan a trip outside the map data boundary.": "",
+ "No trip found. There may be no transit service within the maximum specified distance or at the specified time, or your start or end point might not be safely accessible.": "Ingen reise funnet. Sjekk at fra/til sted er innenfor angitt gangavstand til destinasjon, stopested, bysykkel-stativ og/eller påstigningspunkt for bil.",
+ "No transit times available. The date may be past or too far in the future or there may not be transit service for your trip at the time you chose.": "Ingen kolektivreiser funnet for denne dagen.",
+ "The trip planner is taking way too long to process your request. Please try again later.": "Reiseplanleggeren svarer ikke på forspørsel. Prøv igjen senere.",
+ "The request has errors that the server is not willing or able to process.": "Ugyldig input data. Server er ikke i stand til å behandle 'RouteRequest'.",
+ "Origin is unknown. Can you be a bit more descriptive?": "Avreisested er ukjent. Kan du spesifisere nærmere?",
+ "Destination is unknown. Can you be a bit more descriptive?": "Reisemålet er ukjent. Kan du spesifisere nærmere?",
+ "Both origin and destination are unknown. Can you be a bit more descriptive?": "Både fra/til sted er ukjent. Kan du spesifisere nærmere?",
+ "Both origin and destination are not wheelchair accessible": "Både fra/til sted er utilgjengelig for rullestolukjent.",
+ "Origin is within a trivial distance of the destination.": "Du kan klare å gå? Det er bare noen få meter.",
+ "The trip planner is unsure of the location you want to start from. Please select from the following options, or be more specific.": "The trip planner is unsure of the location you want to start from. Please select from the following options, or be more specific.",
+ "The trip planner is unsure of the destination you want to go to. Please select from the following options, or be more specific.": "The trip planner is unsure of the destination you want to go to. Please select from the following options, or be more specific.",
+ "Both origin and destination are ambiguous. Please select from the following options, or be more specific.": "Both origin and destination are ambiguous. Please select from the following options, or be more specific.",
+ "All of triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must be set if any are": "All of triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must be set if any are",
+ "The values of triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must sum to 1": "The values of triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must sum to 1",
+ "If triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor are provided, OptimizeType must be TRIANGLE": "If triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor are provided, OptimizeType must be TRIANGLE",
+ "If OptimizeType is TRIANGLE, triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must be set": "If OptimizeType is TRIANGLE, triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must be set",
+ "Set as Start Location": "Reis herfra",
+ "Set as End Location": "Reis hit",
+ "Destination": "Destinasjon",
+ "Error %(error_id)d": "Feil %(error_id)d",
+ "No Trip Found": "Ingen tur tilgjenglig",
+ "Your %(bike_share_name)s route": "Din %(bike_share_name)s rute",
+ "Your bike route": "Din sykkel rute",
+ "Walk to the %(bike_share_name)s dock.": "Gå til %(bike_share_name)s sykkelstativ.",
+ "Walk from the %(bike_share_name)s dock to your destination.": "Walk from the %(bike_share_name)s dock to your destination.",
+ "Your walk route": "Your walk route",
+ "Your route using the scooter": "",
+ "Your driving route": "Din sykkel rute",
+ "north": "nord",
+ "northeast": "nordøst",
+ "east": "øst",
+ "southeast": "sørøst",
+ "south": "sør",
+ "southwest": "sørvest",
+ "west": "vest",
+ "northwest": "nordvest",
+ "hard left": "skart venstre",
+ "left": "venstre",
+ "slight left": "svakt venstre",
+ "continue": "fortsett",
+ "slight right": "svakt høyre",
+ "right": "høyre",
+ "hard right": "skart høyre",
+ "elevator": "heis",
+ "U-turn left": "U-sving venstre",
+ "U-turn right": "U-sving høyre",
+ "Walk": "Gå",
+ "Cycle": "Sykkel",
+ "Car": "Bil",
+ "Bus": "Buss",
+ "Subway": "T-bane",
+ "Train": "Tog",
+ "Ferry": "Ferje",
+ "Light Rail": "Trikk",
+ "Cable Car": "Cable Car",
+ "Funicular": "Kabelbane",
+ "Aerial Tram": "Tau bane",
+ "Airplane": "Fly",
+ "Bicycle rental station": "Bysykkelstativ",
+ "Take roundabout counterclockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Følg rundkjøringen mot klokka ta %(ordinal_exit_number)s avkjøring til %(street_name)s",
+ "Take roundabout counterclockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Følg rundkjøring mot klokka, ta %(ordinal_exit_number)s avkjøring til %(street_name)s",
+ "Take roundabout clockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Følg rundkjøring med klokka, ta %(ordinal_exit_number)s avkjøring til %(street_name)s",
+ "Take roundabout clockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Følg rundkjøring med klokka, ta %(ordinal_exit_number)s avkjøring til %(street_name)s",
+ "Start on": "Start fra",
+ " heading ": " mot ",
+ "to continue on": "fortsett på",
+ "on to": "på",
+ "first": "første",
+ "second": "andre",
+ "third": "tredje",
+ "fourth": "fjerde",
+ "fifth": "femte",
+ "sixth": "sjette",
+ "seventh": "syvende",
+ "eight": "åttende",
+ "ninth": "niende",
+ "tenth": "tidende",
+ "%d hr": "%d time",
+ "%d hr_plural": "%d timer",
+ "%d min": "%d minutt",
+ "%d min_plural": "%d minutter",
+ "%d sec": "%d sekund",
+ "%d sec_plural": "%d sekunder",
+ "OK": "OK",
+ "Minimize": "Minimer vinduer",
+ "Bring to front": "Flytt fremst",
+ "Send to back": "Flytt bakerst",
+ "Route:": "Rute:",
+ "Variant:": "Alternativ:",
+ "Stop Finder": "Søk Stoppested",
+ "Feed": "Agency",
+ "By ID": "Med ID",
+ "By Name": "Med Navn",
+ "Search": "Søk",
+ "No Stops Found": "Stoppested ikke funnet",
+ "Date": "Date",
+ "Find Stops": "Søk Stoppested",
+ "(No Stop Selected)": "(Ingen Stoppested valgt)",
+ "Block": "Block",
+ "Recenter": "Sentrer",
+ "Viewer": "Vis",
+ "Quick": "Rask",
+ "Flat": "Flat",
+ "Bike Friendly": "Sykkel vennlig",
+ "B": "B",
+ "F": "F",
+ "Q": "R",
+ "All Routes": "Alle Ruter",
+ "Save": "Lagre",
+ "Close": "Lukk",
+ "Travel Options": "Reise Resultater",
+ "Geocoder": "Geocoder",
+ "Arrive": "Ankomst",
+ "Now": "Nå",
+ "Wheelchair accessible trip:": "Tilgjenelig for rullestol:",
+ "Show Filtered Itineraries:": "",
+ "Travel by": "Reis med",
+ "Preferred Routes": "Foretrukket rute",
+ "Edit": "Endre",
+ "None": "Ingen",
+ "Weight": "Weight",
+ "Banned routes": "Untatt rute",
+ "Use": "Bruk",
+ "My Own Bike": "Egen Sykkel",
+ "A Shared Bike": "Bysykkel",
+ "Plan Your Trip": "Planlegg Reise",
+ "Additional parameters": "",
+ " to _direction": " til ",
+ " to _bus_direction": " til ",
+ "Start_template": "Fra",
+ "Depart_itinerary": "Avgang",
+ "depart_itinerary": "Avreise",
+ "Start_popup": "Start",
+ "Depart_tripoptions": "Avgang"
+}
diff --git a/application/src/client/classic-debug/js/otp/locale/pl.json b/application/src/client/classic-debug/js/otp/locale/pl.json
new file mode 100644
index 00000000000..33cf622f930
--- /dev/null
+++ b/application/src/client/classic-debug/js/otp/locale/pl.json
@@ -0,0 +1,247 @@
+{
+ "Transit": "komunikacją publiczną",
+ "Bus Only": "wyłącznie autobusami",
+ "Rail Only": "wyłącznie koleją",
+ "Airplane Only": "",
+ "Transit, No Airplane": "",
+ "Bicycle Only": "wyłącznie rowerem",
+ "Bicycle & Transit": "rowerem & komunikacją publiczną",
+ "Walk Only": "wyłącznie pieszo",
+ "Car Only": "Rozpocznij na ulicy",
+ "Taxi": "",
+ "Park and Ride": "schemat P+R (Park and Ride)",
+ "Ride and Kiss (Car Pickup)": "",
+ "Kiss and Ride (Car Dropoff)": "",
+ "Bike and Ride": "schemat B+R (Bike and Ride)",
+ "Rented Bicycle": "wypożyczonym rowerem",
+ "Transit & Rented Bicycle": "kom. publiczną & wypoż. rowerem",
+ "Rented Scooter": "",
+ "Transit & Rented Scooter": "kom. publiczną & wypoż. rowerem",
+ "Transit with flex access": "",
+ "Transit with flex egress": "",
+ "Transit with flex access and egress": "",
+ "Direct flex search": "",
+ "Recenter Map Here": "Wyśrodkuj mapę w tym miejscu",
+ "Zoom In": "Przybliż",
+ "Zoom Out": "Oddal",
+ "Minimize all": "Minimalizuj wszystko",
+ "Unminimize all": "Maskymalizuj wszystko",
+ "Stop Viewer": "Zatrzymaj podgląd",
+ "Plan Trip": "Zaplanuj podróż",
+ "From Stop": "Z przystanku",
+ "To Stop": "Do przystanku",
+ "Routes Serving Stop": "Trasy obsługujące dany przystanek",
+ "Bike Share Planner": "Planner wypożyczenia roweru",
+ "Trip Options": "Trasa",
+ "PICK UP BIKE": "WYPOŻYCZ ROWER",
+ "ALTERNATE PICKUP": "ALTERNATYWNY PUNKT WYPOŻYCZENIA",
+ "DROP OFF BIKE": "ODDAJ ROWER",
+ "ALTERNATE DROP OFF": "ALTERNATYWNY PUNKT ODDANIA ROWERU",
+ "BIKE STATION": "STACJA ROWEROWA",
+ "Station:": "Stacja:",
+ "%d bike available_0": "%d dostępny rower",
+ "%d bike available_1": "%d dostępne rowery",
+ "%d bike available_2": "%d dostępnych rowerów",
+ "%d dock available_0": "%d dostępna stacja",
+ "%d dock available_1": "%d dostępne stacje",
+ "%d dock available_2": "%d dostępnych stacji",
+ "Recommended Pick Up:": "Rekomendowane miejsce wypożyczenia roweru:",
+ "Bicycle rental": "Wypożyczalnia rowerów",
+ "Recommended Drop Off:": "Rekomendowane miejsce oddania roweru:",
+ "Multimodal Trip Planner": "Planner Podróży",
+ "Itineraries": "Trasy",
+ "This itinerary departs on a different day from the previous one": "",
+ "%d Itinerary Returned_0": "%d zwrócona trasa",
+ "%d Itinerary Returned_1": "%d zwrócone trasy",
+ "%d Itinerary Returned_2": "%d zwróconych tras",
+ "Link to search": "Link do wyszukiwania",
+ "Previous Page": "Poprzednia",
+ "Next Page": "",
+ "CONTINUES AS": "POZOSTAŃ",
+ "%d min late_0": "%d minuta opóźnienia",
+ "%d min late_1": "%d minuty opóźnienia",
+ "%d min late_2": "%d minut opóźnienia",
+ "%d min early_0": "%d minuta przed czasem",
+ "%d min early_1": "%d minuty przed czasem",
+ "%d min early_2": "%d minut przed czasem",
+ "on time": "na czas",
+ "This itinerary departs on a different day than the one searched for": "",
+ "Arrived at destination with a rented bicycle!": "",
+ "End": "Koniec",
+ "Trip Summary": "Podsumowanie podróży",
+ "Travel": "Podróż",
+ "Time": "Czas trwania podróży",
+ "GenCost": "",
+ "Total Walk": "Długość trasy do pokonania pieszo",
+ "Total Bike": "Długośc trasy do pokonania rowerem",
+ "Total drive": "",
+ "Elevation Gained": "",
+ "Elevation Lost": "",
+ "Transfers": "Przesiadki",
+ "Fare": "Koszt",
+ "Valid": "Aktualna",
+ "Link to Itinerary": "Link do trasy",
+ "Print": "Drukuj",
+ "Your Trip": "Zaplanowana podróż",
+ "Email": "Adres e-mail",
+ "every %d min_0": "co %d minutę",
+ "every %d min_1": "co %d minuty",
+ "every %d min_2": "co %d minut",
+ "Board at ": "Wyjazd o",
+ "Stop": "Przystanek",
+ "Time in transit": "Czas spędzony w komunikacji publicznej",
+ "Route ID": "",
+ "Trip ID": "",
+ "Service Date": "",
+ "Trip Viewer": "Podgląd podróży",
+ "late as": "dopiero jak",
+ "Stay on board": "Kontynuuj podróż",
+ "Alight": "Wysiądź",
+ "at": "na przystanku",
+ "%(currency)s %(price)s": "%(currency)s %(price)s",
+ "Start: %(location)s at %(time_date)s": "Początek: %(location)s o %(time_date)s",
+ "Board": "Wyjazd",
+ "(%(agency_id)s Stop ID #%(stop_id)s),": "(%(agency_id)s ID przystanku #%(stop_id)s),",
+ "End: %(location)s at %(time_date)s": "Koniec: %(location)s o %(time_date)s",
+ "(%(agencyId)s Stop ID #%(id)s),": "",
+ "\nView itinerary online:\n%(itinerary_link)s\n": "\nWyświetl trasę w trybie online:\n%(itinerary_link)s\n",
+ "We're sorry. The trip planner is temporarily unavailable. Please try again later.": "Przepraszamy. Planer podróży jest obecnie niedostępny. Prosimy o ponowienie próby w późniejszym czasie.",
+ "Trip is not possible. You might be trying to plan a trip outside the map data boundary.": "",
+ "No trip found. There may be no transit service within the maximum specified distance or at the specified time, or your start or end point might not be safely accessible.": "",
+ "No transit times available. The date may be past or too far in the future or there may not be transit service for your trip at the time you chose.": "Brak informacji o rozkładzie komunikacji publicznej. Obowiązujące dane mogą być nieaktualne, bądź niekompatybilne w wybranym czasie z zaplanowaną trasą.",
+ "The trip planner is taking way too long to process your request. Please try again later.": "Planer podróży nie jest w stanie przetwożyć powierzonego mu zadania. Prosimy o ponowienie próby w późniejszym czasie.",
+ "The request has errors that the server is not willing or able to process.": "Wybrane zapytanie posiada błędy, których serwer nie jest w stanie obsłużyć.",
+ "Origin is unknown. Can you be a bit more descriptive?": "Wystąpił problem z określeniem lokalizacji startowej. Czy mógłbyś sprecyzować zapytanie?",
+ "Destination is unknown. Can you be a bit more descriptive?": "Wystąpił problem z określeniem lokalizacji końcowej. Czy mógłbyś sprecyzować zapytanie?",
+ "Both origin and destination are unknown. Can you be a bit more descriptive?": "Wystąpił problem z określeniem lokalizacji startowej oraz końcowej. Czy mógłbyś sprecyzować zapytanie?",
+ "Both origin and destination are not wheelchair accessible": "Zarówno lokalizacja startowa, jak i końcowa, nie oferuje udogodnień dla osób niepełnosprawnych.",
+ "Origin is within a trivial distance of the destination.": "Lokalizacja początkowa jest zlokalizowana w nieznacznej odległości od miejsca docelowego.",
+ "The trip planner is unsure of the location you want to start from. Please select from the following options, or be more specific.": "Planer podróży nie może zinterpretować lokalizacji początkowej. Prosimy o wybranie jednej z poniższych opcji, bądź sprecyzować zapytanie.",
+ "The trip planner is unsure of the destination you want to go to. Please select from the following options, or be more specific.": "Planer podróży nie może zinterpretować lokalizacji końcowej. Prosimy o wybranie jednej z poniższych opcji, bądź sprecyzować zapytanie.",
+ "Both origin and destination are ambiguous. Please select from the following options, or be more specific.": "Zarówno lokalizacja początkowa, jak i końcowa nie została poprawnie ziterpretowana przez planer podróży. Prosimy o wybranie pozycji dostępnych na liście poniżej, bądź sprecyzować zapytanie.",
+ "All of triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must be set if any are": "Każdy z parametrów triangleSafetyFactor (bezpieczeństwo), triangleSlopeFactor (nachylenie) i triangleTimeFactor (czas) musi zostać ustawiony, jeśli na trasie znajdują się dane punkty.",
+ "The values of triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must sum to 1": "Suma wartości w parametrach triangleSafetyFactor, triangleSlopeFactor i triangleTimeFactor musi wynieśc równo 1.",
+ "If triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor are provided, OptimizeType must be TRIANGLE": "Jeśli zostały wprowadzone parametry triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor, wartość OptimizeType musi wskazywać na TRIANGLE (TRÓJKĄT)",
+ "If OptimizeType is TRIANGLE, triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must be set": "Jeśli wartość pola OptimizeType wskazuje na TRIANGLE (TRÓJKĄT), należy podać parametry zmiennych triangleSafetyFactor, triangleSlopeFactor oraz triangleTimeFactor.",
+ "Set as Start Location": "Wybierz jako punkt początkowy",
+ "Set as End Location": "Wybierz jako punkt końcowy",
+ "Destination": "Cel",
+ "Error %(error_id)d": "Błąd %(error_id)d",
+ "No Trip Found": "Trasa nie została wyznaczona",
+ "Your %(bike_share_name)s route": "Twoja trasa : %(bike_share_name)s",
+ "Your bike route": "Trasa pokonana rowerem",
+ "Walk to the %(bike_share_name)s dock.": "Przejdź do doku %(bike_share_name)s",
+ "Walk from the %(bike_share_name)s dock to your destination.": "Przejdź z doku %(bike_share_name)s do punktu docelowego",
+ "Your walk route": "Trasa pokonana pieszo",
+ "Your route using the scooter": "",
+ "Your driving route": "Trasa pokonana rowerem",
+ "north": "północ",
+ "northeast": "północny wschód",
+ "east": "wschód",
+ "southeast": "południowy wschód",
+ "south": "południe",
+ "southwest": "południowy zachód",
+ "west": "zachód",
+ "northwest": "północny zachód",
+ "hard left": "ostro w lewo",
+ "left": "lewo",
+ "slight left": "łagodnie w lewo",
+ "continue": "utrzymuj kierunek",
+ "slight right": "łagodnie w prawo",
+ "right": "prawo",
+ "hard right": "ostro w prawo",
+ "elevator": "wzniesienie",
+ "U-turn left": "nawrót w lewo",
+ "U-turn right": "nawrót w prawo",
+ "Walk": "Spacer",
+ "Cycle": "Rower",
+ "Car": "Samochód",
+ "Bus": "Autobus",
+ "Subway": "Metro",
+ "Train": "Pociąg",
+ "Ferry": "Prom",
+ "Light Rail": "Light Rail",
+ "Cable Car": "Kolejka linowa",
+ "Funicular": "Kolej linowo-terenowa",
+ "Aerial Tram": "Kolej linowa",
+ "Airplane": "",
+ "Bicycle rental station": "Stacja wypożyczalni rowerów",
+ "Take roundabout counterclockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Przejedź przez rondo przeciwnie do ruchów wskazówki zegara do %(ordinal_exit_number)s wyjazdu na ulicę %(street_name)s",
+ "Take roundabout counterclockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Przejedź przez rondo przeciwnie do ruchów wskazówki zegara do %(ordinal_exit_number)s wyjazdu na ulicę %(street_name)s",
+ "Take roundabout clockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Przejedź przez rondo zgodnie z ruchem wskazówki zegara do %(ordinal_exit_number)s wyjazdu na ulicę %(street_name)s",
+ "Take roundabout clockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Przejedź przez rondo zgodnie z ruchem wskazówki zegara do %(ordinal_exit_number)s wyjazdu na ulicę %(street_name)s",
+ "Start on": "Rozpocznij na ulicy",
+ " heading ": "kierując się na",
+ "to continue on": "kieruj się w stronę",
+ "on to": "ulicy",
+ "first": "pierwszego",
+ "second": "drugiego",
+ "third": "trzeciego",
+ "fourth": "czwartego",
+ "fifth": "piątego",
+ "sixth": "szóstego",
+ "seventh": "siódmego",
+ "eight": "ósmego",
+ "ninth": "dziewiątego",
+ "tenth": "dziesiątego",
+ "%d hr_0": "%d h",
+ "%d hr_1": "%d h",
+ "%d hr_2": "%d h",
+ "%d min_0": "%d min",
+ "%d min_1": "%d min",
+ "%d min_2": "%d min",
+ "%d sec_0": "%d sek",
+ "%d sec_1": "%d sek",
+ "%d sec_2": "%d sek",
+ "OK": "OK",
+ "Minimize": "Minimalizuj",
+ "Bring to front": "Przenieś na wierzch",
+ "Send to back": "Przesuń na spód",
+ "Route:": "Trasa przejazdu:",
+ "Variant:": "Wariant:",
+ "Stop Finder": "Wyszukiwarka przystanków",
+ "Feed": "Agencja",
+ "By ID": "ID",
+ "By Name": "Nazwa",
+ "Search": "Szukaj",
+ "No Stops Found": "Nie znaleziono przystanków",
+ "Date": "Data",
+ "Find Stops": "Wyszukaj przystanki",
+ "(No Stop Selected)": "Nie wybrano przystanków",
+ "Block": "Zablokuj",
+ "Recenter": "Wyśrodkuj",
+ "Viewer": "Podgląd",
+ "Quick": "Szybki",
+ "Flat": "Równy teren",
+ "Bike Friendly": "Przyjazny dla rowerzystów",
+ "B": "B",
+ "F": "F",
+ "Q": "Q",
+ "All Routes": "Wszystkie trasy",
+ "Save": "Zapisz",
+ "Close": "Zamknij",
+ "Travel Options": "Opcje podróży",
+ "Geocoder": "Geocoder",
+ "Arrive": "Czas przyjazdu",
+ "Now": "Teraz",
+ "Wheelchair accessible trip:": "Wycieczka zawierająca udogodnienia dla osób niepełnosprawnych",
+ "Show Filtered Itineraries:": "",
+ "Travel by": "Podróżuj",
+ "Preferred Routes": "Preferowane trasy",
+ "Edit": "Edytuj",
+ "None": "Brak",
+ "Weight": "Waga",
+ "Banned routes": "Wyłączone trasy",
+ "Use": "Użyj",
+ "My Own Bike": "własnego roweru",
+ "A Shared Bike": "wypożyczonego roweru",
+ "Plan Your Trip": "Zaplanuj swoją podróż",
+ "Additional parameters": "",
+ " to _direction": "w kierunku",
+ " to _bus_direction": "w kierunku",
+ "Start_template": "Start",
+ "Depart_itinerary": "Wyjazd ze stacji",
+ "depart_itinerary": "odjazd",
+ "Start_popup": "Początek",
+ "Depart_tripoptions": "Czas wyjazdu"
+}
diff --git a/application/src/client/classic-debug/js/otp/locale/pt.json b/application/src/client/classic-debug/js/otp/locale/pt.json
new file mode 100644
index 00000000000..bf2e4a78732
--- /dev/null
+++ b/application/src/client/classic-debug/js/otp/locale/pt.json
@@ -0,0 +1,238 @@
+{
+ "Transit": "Vários",
+ "Bus Only": "Autocarro apenas",
+ "Rail Only": "Só ferroviário",
+ "Airplane Only": "",
+ "Transit, No Airplane": "",
+ "Bicycle Only": "Bicicleta apenas",
+ "Bicycle & Transit": "Bicicleta & vários",
+ "Walk Only": "Só a pé",
+ "Car Only": "Origem em",
+ "Taxi": "",
+ "Park and Ride": "Estacionar e conduzir",
+ "Ride and Kiss (Car Pickup)": "",
+ "Kiss and Ride (Car Dropoff)": "",
+ "Bike and Ride": "Bicicleta e conduzir",
+ "Rented Bicycle": "Bicicleta alugada",
+ "Transit & Rented Bicycle": "Vários & bicicletas alugadas",
+ "Rented Scooter": "",
+ "Transit & Rented Scooter": "Vários & bicicletas alugadas",
+ "Transit with flex access": "",
+ "Transit with flex egress": "",
+ "Transit with flex access and egress": "",
+ "Direct flex search": "",
+ "Recenter Map Here": "Mapa mais recente aqui",
+ "Zoom In": "Zoom In",
+ "Zoom Out": "Zoom Out",
+ "Minimize all": "Minimizar tudo",
+ "Unminimize all": "Maximizar tudo",
+ "Stop Viewer": "Visualizardor de paragens",
+ "Plan Trip": "Planear rota",
+ "From Stop": "Da paragem",
+ "To Stop": "Para a paragem",
+ "Routes Serving Stop": "Paragens servindo as linhas",
+ "Bike Share Planner": "Planeador de partilha de bicicletas",
+ "Trip Options": "Opções de viagem",
+ "PICK UP BIKE": "APANHAR UMA BICICLETA",
+ "ALTERNATE PICKUP": "APANHAR DE BICICLETA ALTERNATIVO",
+ "DROP OFF BIKE": "LARGAR A BICICLETA",
+ "ALTERNATE DROP OFF": "LARGAR DE BICICLETA ALTERNATIVO",
+ "BIKE STATION": "ESTAÇÃO DE BICICLETAS",
+ "Station:": "Estação:",
+ "%d bike available": "%d bicicleta disponível",
+ "%d bike available_plural": "%d bicicletas disponíveis",
+ "%d dock available": "%d dock disponível",
+ "%d dock available_plural": "%d docks disponíveis",
+ "Recommended Pick Up:": "Apanhar de bicicleta recomendado:",
+ "Bicycle rental": "Aluguer de bicicletas",
+ "Recommended Drop Off:": "Largar de bicicleta recomendado:",
+ "Multimodal Trip Planner": "Planeador de rotas multi-modal",
+ "Itineraries": "Itinerários",
+ "This itinerary departs on a different day from the previous one": "",
+ "%d Itinerary Returned": "%d Itinerário devolvido",
+ "%d Itinerary Returned_plural": "%d Itinerários devolvidos",
+ "Link to search": "Link para pesquisa",
+ "Previous Page": "Anterior",
+ "Next Page": "",
+ "CONTINUES AS": "CONTINUAR COMO",
+ "%d min late": "%d min mais tarde",
+ "%d min late_plural": "%d mins mais tarde",
+ "%d min early": "%d min mais cedo",
+ "%d min early_plural": "%d mins mais cedo",
+ "on time": "a tempo",
+ "This itinerary departs on a different day than the one searched for": "",
+ "Arrived at destination with a rented bicycle!": "",
+ "End": "Destino",
+ "Trip Summary": "Sumário da rota",
+ "Travel": "Viagem",
+ "Time": "Tempo",
+ "GenCost": "",
+ "Total Walk": "Total a pé",
+ "Total Bike": "Total de bicicleta",
+ "Total drive": "",
+ "Elevation Gained": "",
+ "Elevation Lost": "",
+ "Transfers": "Transferências",
+ "Fare": "Tarifa",
+ "Valid": "Válido",
+ "Link to Itinerary": "Link para o itenerário",
+ "Print": "Imprimir",
+ "Your Trip": "A tua rota",
+ "Email": "Email",
+ "every %d min": "A cada %d min",
+ "every %d min_plural": " A cada %d mins",
+ "Board at ": "Entrar às",
+ "Stop": "Paragem",
+ "Time in transit": "Tempo em viagem",
+ "Route ID": "",
+ "Trip ID": "",
+ "Service Date": "",
+ "Trip Viewer": "Visualizador de rotas",
+ "late as": "tão tarde como",
+ "Stay on board": "Mantenha-se em viagem",
+ "Alight": "Iluminado",
+ "at": "às",
+ "%(currency)s %(price)s": "%(currency)s %(price)s",
+ "Start: %(location)s at %(time_date)s": "Partida: %(location)s às %(time_date)s",
+ "Board": "Entrar",
+ "(%(agency_id)s Stop ID #%(stop_id)s),": "(%(agency_id)s ID Paragem #%(stop_id)s),",
+ "End: %(location)s at %(time_date)s": "Destino: %(location)s at %(time_date)s",
+ "(%(agencyId)s Stop ID #%(id)s),": "",
+ "\nView itinerary online:\n%(itinerary_link)s\n": "\nVer itinerário online:\n%(itinerary_link)s\n",
+ "We're sorry. The trip planner is temporarily unavailable. Please try again later.": "Pedimos desculpa. O planeador de rotas está temporariamente indisponível. Tente mais tarde.",
+ "Trip is not possible. You might be trying to plan a trip outside the map data boundary.": "",
+ "No trip found. There may be no transit service within the maximum specified distance or at the specified time, or your start or end point might not be safely accessible.": "",
+ "No transit times available. The date may be past or too far in the future or there may not be transit service for your trip at the time you chose.": "Não há tempos de trânsito disponíveis. Não há informação acerca dos transportes para esta data.",
+ "The trip planner is taking way too long to process your request. Please try again later.": "O planeador de rotas está a demorar demasiado tempo para processar o seu pedido. Tente mais tarde.",
+ "The request has errors that the server is not willing or able to process.": "O seu pedido tem erros e o servidor não está a conseguir processá-lo.",
+ "Origin is unknown. Can you be a bit more descriptive?": "Origem desconhecida. Pode ser mais descritivo?",
+ "Destination is unknown. Can you be a bit more descriptive?": "Destino indisponível. Pode ser mais descritivo?",
+ "Both origin and destination are unknown. Can you be a bit more descriptive?": "Origem e destino desconhecidos. Pode ser mais descritivo?",
+ "Both origin and destination are not wheelchair accessible": "Origem e destino não acessível a cadeiras de rodas.",
+ "Origin is within a trivial distance of the destination.": "Origem a uma distância demasiado pequena do destino.",
+ "The trip planner is unsure of the location you want to start from. Please select from the following options, or be more specific.": "O planeador de rotas está inseguro em relação à localização da sua origem. Selecione uma das seguintes opções ou seja mais específico.",
+ "The trip planner is unsure of the destination you want to go to. Please select from the following options, or be more specific.": "O planeador de rotas está inseguro em relação à localização do seu destino. Selecione uma das seguintes opções ou seja mais específico.",
+ "Both origin and destination are ambiguous. Please select from the following options, or be more specific.": "Origem e destino ambíguos. Selecione uma das seguintes opções ou seja mais específico.",
+ "All of triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must be set if any are": "Todo o triangleSafetyFactor, triangleSlopeFactor, e triangleTimeFactor deve ser definido se algum for",
+ "The values of triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must sum to 1": "Os valores de triangleSafetyFactor, triangleSlopeFactor, e triangleTimeFactor devem somar com valor 1",
+ "If triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor are provided, OptimizeType must be TRIANGLE": "Se o triangleSafetyFactor, triangleSlopeFactor, e triangleTimeFactor forem fornecidos, OptimizeType deve ser um TRIANGLE",
+ "If OptimizeType is TRIANGLE, triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must be set": "Se OptimizeType é TRIANGLE, triangleSafetyFactor, triangleSlopeFactor, e triangleTimeFactor devem ser definidos",
+ "Set as Start Location": "Definir como local de origem",
+ "Set as End Location": "Definir como local de destino",
+ "Destination": "Destino",
+ "Error %(error_id)d": "Erro %(error_id)d",
+ "No Trip Found": "Nenhuma rota encontrada",
+ "Your %(bike_share_name)s route": "A sua rota %(bike_share_name)s ",
+ "Your bike route": "A sua rota de bicicleta",
+ "Walk to the %(bike_share_name)s dock.": "Andar para a dock %(bike_share_name)s .",
+ "Walk from the %(bike_share_name)s dock to your destination.": "Andar da dock %(bike_share_name)s para o seu destino.",
+ "Your walk route": "A sua rota a pé",
+ "Your route using the scooter": "",
+ "Your driving route": "A sua rota de bicicleta",
+ "north": "norte",
+ "northeast": "nordeste",
+ "east": "este",
+ "southeast": "sudeste",
+ "south": "sul",
+ "southwest": "sudoeste",
+ "west": "oeste",
+ "northwest": "nordeste",
+ "hard left": "esquerda apertada",
+ "left": "esquerda",
+ "slight left": "esquerda ligeira",
+ "continue": "continuar",
+ "slight right": "direita ligeira",
+ "right": "direita",
+ "hard right": "direita apertada",
+ "elevator": "elevador",
+ "U-turn left": "cotovelo à esquerda",
+ "U-turn right": "cotovelo à direita",
+ "Walk": "A pé",
+ "Cycle": "Bicicleta",
+ "Car": "Carro",
+ "Bus": "Autocarro",
+ "Subway": "Metro",
+ "Train": "Comboio",
+ "Ferry": "Ferry",
+ "Light Rail": "Ferroviário leve",
+ "Cable Car": "Eléctrico",
+ "Funicular": "Teleférico",
+ "Aerial Tram": "Teleférico",
+ "Airplane": "",
+ "Bicycle rental station": "Estação de aluguer de bicicletas",
+ "Take roundabout counterclockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Entrar na rotuda no sentido contrário aos ponteiros do relógio na %(ordinal_exit_number)s saída em direção a %(street_name)s",
+ "Take roundabout counterclockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Entrar na rotunda no sentido contrário aos ponteiros do relógio, na %(ordinal_exit_number)s saída em direcção a %(street_name)s",
+ "Take roundabout clockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Entrar na rotuda no sentido dos ponteiros do relógio na %(ordinal_exit_number)s saída em direção a %(street_name)s",
+ "Take roundabout clockwise to %(ordinal_exit_number)s exit on %(street_name)s": "Entrar na rotunda no sentido dos ponteiros do relógio, na %(ordinal_exit_number)s saída em direcção a %(street_name)s",
+ "Start on": "Origem em",
+ " heading ": "em direcção a",
+ "to continue on": "a continuar em",
+ "on to": "para",
+ "first": "primeiro",
+ "second": "segundo",
+ "third": "terceiro",
+ "fourth": "quarto",
+ "fifth": "quinto",
+ "sixth": "sexto",
+ "seventh": "sétimo",
+ "eight": "oitavo",
+ "ninth": "nono",
+ "tenth": "décimo",
+ "%d hr": "%d hr",
+ "%d hr_plural": "%d hrs",
+ "%d min": "%d min",
+ "%d min_plural": "%d mins",
+ "%d sec": "%d sec",
+ "%d sec_plural": "%d secs",
+ "OK": "OK",
+ "Minimize": "Minimzar",
+ "Bring to front": "Trazer prá frente",
+ "Send to back": "Mandar para trás",
+ "Route:": "Rota:",
+ "Variant:": "Variante:",
+ "Stop Finder": "Pesquisar paragem",
+ "Feed": "Companhia",
+ "By ID": "Por ID",
+ "By Name": "Por Nome",
+ "Search": "Pesquisar",
+ "No Stops Found": "Nenhuma paragem encontrada",
+ "Date": "Data",
+ "Find Stops": "Procurar paragens",
+ "(No Stop Selected)": "(Nenhuma paragem selecionada)",
+ "Block": "Bloquear",
+ "Recenter": "Mais recente",
+ "Viewer": "Visualizador",
+ "Quick": "Rápido",
+ "Flat": "Plano",
+ "Bike Friendly": "Amigo às bicicletas",
+ "B": "B",
+ "F": "F",
+ "Q": "Q",
+ "All Routes": "Todas as rotas",
+ "Save": "Guardar",
+ "Close": "Fechar",
+ "Travel Options": "Opções de viagem",
+ "Geocoder": "Geocoder",
+ "Arrive": "Chegada",
+ "Now": "Agora",
+ "Wheelchair accessible trip:": "Rota acessível a cadeira de rodas",
+ "Show Filtered Itineraries:": "",
+ "Travel by": "Viagem por",
+ "Preferred Routes": "Rotas favoritas",
+ "Edit": "Editar",
+ "None": "Nenhum",
+ "Weight": "Peso",
+ "Banned routes": "Rotas banidas",
+ "Use": "Utilizar",
+ "My Own Bike": "A minha bicicleta",
+ "A Shared Bike": "Uma bicicleta partilhada",
+ "Plan Your Trip": "Planear a sua viagem",
+ "Additional parameters": "",
+ " to _direction": "Para",
+ " to _bus_direction": "Para",
+ "Start_template": "Começar",
+ "Depart_itinerary": "Partida",
+ "depart_itinerary": "partida",
+ "Start_popup": "Origem",
+ "Depart_tripoptions": "Partir"
+}
diff --git a/application/src/client/classic-debug/js/otp/locale/sl.json b/application/src/client/classic-debug/js/otp/locale/sl.json
new file mode 100644
index 00000000000..8991e9451d8
--- /dev/null
+++ b/application/src/client/classic-debug/js/otp/locale/sl.json
@@ -0,0 +1,256 @@
+{
+ "Transit": "Javni prevoz",
+ "Bus Only": "Avtobus",
+ "Rail Only": "Vlak",
+ "Airplane Only": "",
+ "Transit, No Airplane": "",
+ "Bicycle Only": "Kolo",
+ "Bicycle & Transit": "Kolo & Javni prevoz",
+ "Walk Only": "Pešačenje",
+ "Car Only": "Začnite na",
+ "Taxi": "",
+ "Park and Ride": "Parkiraj in se pelji",
+ "Ride and Kiss (Car Pickup)": "",
+ "Kiss and Ride (Car Dropoff)": "",
+ "Bike and Ride": "",
+ "Rented Bicycle": "Izposojeno kolo",
+ "Transit & Rented Bicycle": "Izposojeno kolo & Javni prevoz",
+ "Rented Scooter": "",
+ "Transit & Rented Scooter": "Izposojeno kolo & Javni prevoz",
+ "Transit with flex access": "",
+ "Transit with flex egress": "",
+ "Transit with flex access and egress": "",
+ "Direct flex search": "",
+ "Recenter Map Here": "Prikaži karto tukaj",
+ "Zoom In": "Približaj",
+ "Zoom Out": "Oddalji",
+ "Minimize all": "Skrči vse",
+ "Unminimize all": "Razširi vse",
+ "Stop Viewer": "Pregledovalnik postaj",
+ "Plan Trip": "Načrtuj pot",
+ "From Stop": "Začetna postaja",
+ "To Stop": "Končna postaja",
+ "Routes Serving Stop": "Avtobusi, ki ustavljajo na postaji",
+ "Bike Share Planner": "Planer za izposojena kolesa",
+ "Trip Options": "Nastavitve poti",
+ "PICK UP BIKE": "IZPOSOJA KOLESA",
+ "ALTERNATE PICKUP": "ALTERNATIVNO MESTO IZPOSOJE",
+ "DROP OFF BIKE": "VRNITEV KOLESA",
+ "ALTERNATE DROP OFF": "ALTERNATIVNO MESTO VRNITVE KOLESA",
+ "BIKE STATION": "IZPOSOJEVALNA POSTAJA",
+ "Station:": "Postaja:",
+ "%d bike available_0": "%d koles na voljo",
+ "%d bike available_1": "%d kolo na voljo",
+ "%d bike available_2": "%d kolesi na voljo",
+ "%d bike available_3": "%d kolesa na voljo",
+ "%d dock available_0": "%d prostorov na voljo",
+ "%d dock available_1": "%d prostor na voljo",
+ "%d dock available_2": "%d prostora na voljo",
+ "%d dock available_3": "%d prostori na voljo",
+ "Recommended Pick Up:": "Predlagana postaja za izposojo kolesa:",
+ "Bicycle rental": "postaje za izposojo koles",
+ "Recommended Drop Off:": "Predlagana postaja za vrnitev kolesa:",
+ "Multimodal Trip Planner": "Načrtovalnik poti",
+ "Itineraries": "Načrti poti",
+ "This itinerary departs on a different day from the previous one": "",
+ "%d Itinerary Returned_0": "%d vrnjenih načrtov poti",
+ "%d Itinerary Returned_1": "%d vrnjen načrt poti",
+ "%d Itinerary Returned_2": "%d vrnjena načrta poti",
+ "%d Itinerary Returned_3": "%d vrnjeni načrti poti",
+ "Link to search": "Iskanje",
+ "Previous Page": "Prejšnja",
+ "Next Page": "",
+ "CONTINUES AS": "SE NADALJUJE KOT",
+ "%d min late_0": "%d min. zamude",
+ "%d min late_1": "%d min. zamude",
+ "%d min late_2": "%d min. zamude",
+ "%d min late_3": "%d min. zamude",
+ "%d min early_0": "%d min. prehitro",
+ "%d min early_1": "%d min. prehitro",
+ "%d min early_2": "%d min. prehitro",
+ "%d min early_3": "%d min. prehitro",
+ "on time": "pravočasno",
+ "This itinerary departs on a different day than the one searched for": "",
+ "Arrived at destination with a rented bicycle!": "",
+ "End": "Konec",
+ "Trip Summary": "Povzetek poti",
+ "Travel": "Potuj ob",
+ "Time": "Trajanje",
+ "GenCost": "",
+ "Total Walk": "Skupno hoje",
+ "Total Bike": "Skupno kolesarjenja",
+ "Total drive": "",
+ "Elevation Gained": "",
+ "Elevation Lost": "",
+ "Transfers": "Št. prestopov",
+ "Fare": "Cena",
+ "Valid": "Veljavno",
+ "Link to Itinerary": "Načrt poti",
+ "Print": "Natisni",
+ "Your Trip": "Vaša pot",
+ "Email": "E-pošta",
+ "every %d min_0": "vsakih %d min",
+ "every %d min_1": "vsako %d min",
+ "every %d min_2": "vsaki %d min",
+ "every %d min_3": "vsake %d min",
+ "Board at ": "Vstop na ",
+ "Stop": "Postaja",
+ "Time in transit": "Časa na vožnji",
+ "Route ID": "",
+ "Trip ID": "",
+ "Service Date": "",
+ "Trip Viewer": "Pregledovalnik poti",
+ "late as": "",
+ "Stay on board": "Ostanite v vozilu",
+ "Alight": "Izstop",
+ "at": "na",
+ "%(currency)s %(price)s": "%(price)s %(currency)s",
+ "Start: %(location)s at %(time_date)s": "Začetek: %(location)s ob %(time_date)s",
+ "Board": "Vstop",
+ "(%(agency_id)s Stop ID #%(stop_id)s),": "(%(agency_id)s),",
+ "End: %(location)s at %(time_date)s": "Konec: %(location)s ob %(time_date)s",
+ "(%(agencyId)s Stop ID #%(id)s),": "",
+ "\nView itinerary online:\n%(itinerary_link)s\n": "\nOglejte si načrt poti na spletu:\n%(itinerary_link)s\n",
+ "We're sorry. The trip planner is temporarily unavailable. Please try again later.": "Opravičujemo se. Daljinar trenutno ni na voljo. Prosimo poskusite kasneje.",
+ "Trip is not possible. You might be trying to plan a trip outside the map data boundary.": "",
+ "No trip found. There may be no transit service within the maximum specified distance or at the specified time, or your start or end point might not be safely accessible.": "",
+ "No transit times available. The date may be past or too far in the future or there may not be transit service for your trip at the time you chose.": "Podatki o voznih redih niso na voljo. Mogoče je datum preveč v preteklosti ali prihodnosti ali pa javni prevoz ne obstaja za pot, ki jo načrtujete.",
+ "The trip planner is taking way too long to process your request. Please try again later.": "Daljinar potrebuje preveč časa za obdelavo vašega zahtevka. Prosimo poskusite znova kasneje.",
+ "The request has errors that the server is not willing or able to process.": "Zahtevek ima napake, ki jih strežnik ne more obdelati.",
+ "Origin is unknown. Can you be a bit more descriptive?": "Začetek poti ni znan. Prosimo bodite bolj natančni.",
+ "Destination is unknown. Can you be a bit more descriptive?": "Konec poti ni znan. Prosimo bodite bolj natančni.",
+ "Both origin and destination are unknown. Can you be a bit more descriptive?": "Začetek in konec sta neznana. Prosimo bodite bolj natančni.",
+ "Both origin and destination are not wheelchair accessible": "Do začetka in konca ni mogoče priti z vozičkom.",
+ "Origin is within a trivial distance of the destination.": "Začetek je trivialno oddaljen od konec.",
+ "The trip planner is unsure of the location you want to start from. Please select from the following options, or be more specific.": "",
+ "The trip planner is unsure of the destination you want to go to. Please select from the following options, or be more specific.": "",
+ "Both origin and destination are ambiguous. Please select from the following options, or be more specific.": "",
+ "All of triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must be set if any are": "",
+ "The values of triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must sum to 1": "",
+ "If triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor are provided, OptimizeType must be TRIANGLE": "",
+ "If OptimizeType is TRIANGLE, triangleSafetyFactor, triangleSlopeFactor, and triangleTimeFactor must be set": "",
+ "Set as Start Location": "Začetek poti",
+ "Set as End Location": "Konec poti",
+ "Destination": "Konec",
+ "Error %(error_id)d": "Napaka %(error_id)d",
+ "No Trip Found": "Ne najdemo poti",
+ "Your %(bike_share_name)s route": "Kolesarjenje s kolesom izposojenim pri %(bike_share_name)s",
+ "Your bike route": "Kolesarska pot",
+ "Walk to the %(bike_share_name)s dock.": "Hodite do postaje podjetja %(bike_share_name)s.",
+ "Walk from the %(bike_share_name)s dock to your destination.": "Hodite od postaje podjetja %(bike_share_name)s do vašega cilja.",
+ "Your walk route": "Pot peš",
+ "Your route using the scooter": "",
+ "Your driving route": "Kolesarska pot",
+ "north": "sever",
+ "northeast": "severovzhod",
+ "east": "vzhod",
+ "southeast": "jugovzhod",
+ "south": "jug",
+ "southwest": "jugozahod",
+ "west": "zahod",
+ "northwest": "severozahod",
+ "hard left": "ostro levo",
+ "left": "levo",
+ "slight left": "rahlo levo",
+ "continue": "nadaljujte",
+ "slight right": "rahlo desno",
+ "right": "desno",
+ "hard right": "ostro desno",
+ "elevator": "pojdite z dvigalom",
+ "U-turn left": "Polkrožno obrnite v levo",
+ "U-turn right": "Polkrožno obrnite v desno",
+ "Walk": "Pešačite",
+ "Cycle": "Kolesarite",
+ "Car": "Avto",
+ "Bus": "Avtobus",
+ "Subway": "Podzemna železnica",
+ "Train": "Vlak",
+ "Ferry": "",
+ "Light Rail": "Tramvaj",
+ "Cable Car": "",
+ "Funicular": "",
+ "Aerial Tram": "Gondola",
+ "Airplane": "",
+ "Bicycle rental station": "postaje za izposojo koles",
+ "Take roundabout counterclockwise to %(ordinal_exit_number)s exit on %(street_name)s": "V krožišču vozite v nasprotni smeri urinega kazalca in pri %(ordinal_exit_number)s izvozu zavijte na %(street_name)s",
+ "Take roundabout counterclockwise to %(ordinal_exit_number)s exit on %(street_name)s": "V krožišču vozite v nasprotni smeri urinega kazalca in pri %(ordinal_exit_number)s izvozu zavijte na %(street_name)s",
+ "Take roundabout clockwise to %(ordinal_exit_number)s exit on %(street_name)s": "V krožišču vozite v smeri urinega kazalca in pri %(ordinal_exit_number)s izvozu zavijte na %(street_name)s",
+ "Take roundabout clockwise to %(ordinal_exit_number)s exit on %(street_name)s": "V krožišču vozite v smeri urinega kazalca in pri %(ordinal_exit_number)s izvozu zavijte na %(street_name)s",
+ "Start on": "Začnite na",
+ " heading ": " v smeri ",
+ "to continue on": "nadaljujte na",
+ "on to": "na",
+ "first": "prvem",
+ "second": "drugem",
+ "third": "tretjem",
+ "fourth": "četrtem",
+ "fifth": "petem",
+ "sixth": "šestem",
+ "seventh": "sedmem",
+ "eight": "osmem",
+ "ninth": "devetem",
+ "tenth": "desetem",
+ "%d hr_0": "%d ur",
+ "%d hr_1": "%d ura",
+ "%d hr_2": "%d uri",
+ "%d hr_3": "%d ure",
+ "%d min_0": "%d min.",
+ "%d min_1": "%d min.",
+ "%d min_2": "%d min.",
+ "%d min_3": "%d min.",
+ "%d sec_0": "%d sek.",
+ "%d sec_1": "%d sek.",
+ "%d sec_2": "%d sek.",
+ "%d sec_3": "%d sek.",
+ "OK": "V redu",
+ "Minimize": "Skrči",
+ "Bring to front": "Postavi v ospredje",
+ "Send to back": "Pošlji v ozadje",
+ "Route:": "Linija:",
+ "Variant:": "Različica:",
+ "Stop Finder": "Iskalnik postaj",
+ "Feed": "",
+ "By ID": "Po ID-ju",
+ "By Name": "Po imenu",
+ "Search": "Poišči",
+ "No Stops Found": "Ni najdenih postaj",
+ "Date": "Datum",
+ "Find Stops": "Poišči postaje",
+ "(No Stop Selected)": "(Nobena postaja ni bila izbrana)",
+ "Block": "Blok",
+ "Recenter": "Prikaži na karti",
+ "Viewer": "Pregledovalnik",
+ "Quick": "Hitro",
+ "Flat": "Položno",
+ "Bike Friendly": "Kolesarju prijazno",
+ "B": "K",
+ "F": "P",
+ "Q": "H",
+ "All Routes": "Vse linije",
+ "Save": "Shrani",
+ "Close": "Zapri",
+ "Travel Options": "Možnosti potovanja",
+ "Geocoder": "",
+ "Arrive": "Prihod do",
+ "Now": "Zdaj",
+ "Wheelchair accessible trip:": "Primerno za invalidske vozičke:",
+ "Show Filtered Itineraries:": "",
+ "Travel by": "Način potovanja ",
+ "Preferred Routes": "Priljubljene linije",
+ "Edit": "Uredi",
+ "None": "Brez",
+ "Weight": "Utež",
+ "Banned routes": "Neželene linije",
+ "Use": "Uporabi",
+ "My Own Bike": "Lastno kolo",
+ "A Shared Bike": "Izposojeno kolo",
+ "Plan Your Trip": "Načrtuj pot",
+ "Additional parameters": "",
+ " to _direction": " do ",
+ " to _bus_direction": " smer ",
+ "Start_template": "Začetek",
+ "Depart_itinerary": "Odhod",
+ "depart_itinerary": "začni pot",
+ "Start_popup": "Začetek",
+ "Depart_tripoptions": "Odhod ob"
+}
diff --git a/src/client/classic-debug/js/otp/modules/Module.js b/application/src/client/classic-debug/js/otp/modules/Module.js
similarity index 100%
rename from src/client/classic-debug/js/otp/modules/Module.js
rename to application/src/client/classic-debug/js/otp/modules/Module.js
diff --git a/src/client/classic-debug/js/otp/modules/bikeshare/BikeShareModule.js b/application/src/client/classic-debug/js/otp/modules/bikeshare/BikeShareModule.js
similarity index 100%
rename from src/client/classic-debug/js/otp/modules/bikeshare/BikeShareModule.js
rename to application/src/client/classic-debug/js/otp/modules/bikeshare/BikeShareModule.js
diff --git a/src/client/classic-debug/js/otp/modules/bikeshare/BikeStationsWidget.js b/application/src/client/classic-debug/js/otp/modules/bikeshare/BikeStationsWidget.js
similarity index 100%
rename from src/client/classic-debug/js/otp/modules/bikeshare/BikeStationsWidget.js
rename to application/src/client/classic-debug/js/otp/modules/bikeshare/BikeStationsWidget.js
diff --git a/src/client/classic-debug/js/otp/modules/bikeshare/bikeshare-style.css b/application/src/client/classic-debug/js/otp/modules/bikeshare/bikeshare-style.css
similarity index 100%
rename from src/client/classic-debug/js/otp/modules/bikeshare/bikeshare-style.css
rename to application/src/client/classic-debug/js/otp/modules/bikeshare/bikeshare-style.css
diff --git a/src/client/classic-debug/js/otp/modules/multimodal/MultimodalPlannerModule.js b/application/src/client/classic-debug/js/otp/modules/multimodal/MultimodalPlannerModule.js
similarity index 100%
rename from src/client/classic-debug/js/otp/modules/multimodal/MultimodalPlannerModule.js
rename to application/src/client/classic-debug/js/otp/modules/multimodal/MultimodalPlannerModule.js
diff --git a/src/client/classic-debug/js/otp/modules/multimodal/multimodal-style.css b/application/src/client/classic-debug/js/otp/modules/multimodal/multimodal-style.css
similarity index 100%
rename from src/client/classic-debug/js/otp/modules/multimodal/multimodal-style.css
rename to application/src/client/classic-debug/js/otp/modules/multimodal/multimodal-style.css
diff --git a/src/client/classic-debug/js/otp/modules/planner/IconFactory.js b/application/src/client/classic-debug/js/otp/modules/planner/IconFactory.js
similarity index 100%
rename from src/client/classic-debug/js/otp/modules/planner/IconFactory.js
rename to application/src/client/classic-debug/js/otp/modules/planner/IconFactory.js
diff --git a/src/client/classic-debug/js/otp/modules/planner/ItinerariesWidget.js b/application/src/client/classic-debug/js/otp/modules/planner/ItinerariesWidget.js
similarity index 100%
rename from src/client/classic-debug/js/otp/modules/planner/ItinerariesWidget.js
rename to application/src/client/classic-debug/js/otp/modules/planner/ItinerariesWidget.js
diff --git a/src/client/classic-debug/js/otp/modules/planner/Itinerary.js b/application/src/client/classic-debug/js/otp/modules/planner/Itinerary.js
similarity index 100%
rename from src/client/classic-debug/js/otp/modules/planner/Itinerary.js
rename to application/src/client/classic-debug/js/otp/modules/planner/Itinerary.js
diff --git a/src/client/classic-debug/js/otp/modules/planner/PlannerModule.js b/application/src/client/classic-debug/js/otp/modules/planner/PlannerModule.js
similarity index 100%
rename from src/client/classic-debug/js/otp/modules/planner/PlannerModule.js
rename to application/src/client/classic-debug/js/otp/modules/planner/PlannerModule.js
diff --git a/src/client/classic-debug/js/otp/modules/planner/TripPlan.js b/application/src/client/classic-debug/js/otp/modules/planner/TripPlan.js
similarity index 100%
rename from src/client/classic-debug/js/otp/modules/planner/TripPlan.js
rename to application/src/client/classic-debug/js/otp/modules/planner/TripPlan.js
diff --git a/src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble.psd b/application/src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble.psd
similarity index 100%
rename from src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble.psd
rename to application/src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble.psd
diff --git a/src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_ne.png b/application/src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_ne.png
similarity index 100%
rename from src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_ne.png
rename to application/src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_ne.png
diff --git a/src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_ne_highlight.png b/application/src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_ne_highlight.png
similarity index 100%
rename from src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_ne_highlight.png
rename to application/src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_ne_highlight.png
diff --git a/src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_nw.png b/application/src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_nw.png
similarity index 100%
rename from src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_nw.png
rename to application/src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_nw.png
diff --git a/src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_nw_highlight.png b/application/src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_nw_highlight.png
similarity index 100%
rename from src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_nw_highlight.png
rename to application/src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_nw_highlight.png
diff --git a/src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_se.png b/application/src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_se.png
similarity index 100%
rename from src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_se.png
rename to application/src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_se.png
diff --git a/src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_se_highlight.png b/application/src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_se_highlight.png
similarity index 100%
rename from src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_se_highlight.png
rename to application/src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_se_highlight.png
diff --git a/src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_sw.png b/application/src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_sw.png
similarity index 100%
rename from src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_sw.png
rename to application/src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_sw.png
diff --git a/src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_sw_highlight.png b/application/src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_sw_highlight.png
similarity index 100%
rename from src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_sw_highlight.png
rename to application/src/client/classic-debug/js/otp/modules/planner/images/mode/mode_bubble_sw_highlight.png
diff --git a/src/client/classic-debug/js/otp/modules/planner/images/user_icon.png b/application/src/client/classic-debug/js/otp/modules/planner/images/user_icon.png
similarity index 100%
rename from src/client/classic-debug/js/otp/modules/planner/images/user_icon.png
rename to application/src/client/classic-debug/js/otp/modules/planner/images/user_icon.png
diff --git a/src/client/classic-debug/js/otp/modules/planner/planner-style.css b/application/src/client/classic-debug/js/otp/modules/planner/planner-style.css
similarity index 100%
rename from src/client/classic-debug/js/otp/modules/planner/planner-style.css
rename to application/src/client/classic-debug/js/otp/modules/planner/planner-style.css
diff --git a/src/client/classic-debug/js/otp/modules/planner/planner-templates.html b/application/src/client/classic-debug/js/otp/modules/planner/planner-templates.html
similarity index 100%
rename from src/client/classic-debug/js/otp/modules/planner/planner-templates.html
rename to application/src/client/classic-debug/js/otp/modules/planner/planner-templates.html
diff --git a/src/client/classic-debug/js/otp/otp.js b/application/src/client/classic-debug/js/otp/otp.js
similarity index 100%
rename from src/client/classic-debug/js/otp/otp.js
rename to application/src/client/classic-debug/js/otp/otp.js
diff --git a/src/client/classic-debug/js/otp/templates.js b/application/src/client/classic-debug/js/otp/templates.js
similarity index 100%
rename from src/client/classic-debug/js/otp/templates.js
rename to application/src/client/classic-debug/js/otp/templates.js
diff --git a/src/client/classic-debug/js/otp/util/DataStorage.js b/application/src/client/classic-debug/js/otp/util/DataStorage.js
similarity index 100%
rename from src/client/classic-debug/js/otp/util/DataStorage.js
rename to application/src/client/classic-debug/js/otp/util/DataStorage.js
diff --git a/src/client/classic-debug/js/otp/util/Geo.js b/application/src/client/classic-debug/js/otp/util/Geo.js
similarity index 100%
rename from src/client/classic-debug/js/otp/util/Geo.js
rename to application/src/client/classic-debug/js/otp/util/Geo.js
diff --git a/src/client/classic-debug/js/otp/util/Imperial.js b/application/src/client/classic-debug/js/otp/util/Imperial.js
similarity index 100%
rename from src/client/classic-debug/js/otp/util/Imperial.js
rename to application/src/client/classic-debug/js/otp/util/Imperial.js
diff --git a/src/client/classic-debug/js/otp/util/Itin.js b/application/src/client/classic-debug/js/otp/util/Itin.js
similarity index 100%
rename from src/client/classic-debug/js/otp/util/Itin.js
rename to application/src/client/classic-debug/js/otp/util/Itin.js
diff --git a/src/client/classic-debug/js/otp/util/Logger.js b/application/src/client/classic-debug/js/otp/util/Logger.js
similarity index 100%
rename from src/client/classic-debug/js/otp/util/Logger.js
rename to application/src/client/classic-debug/js/otp/util/Logger.js
diff --git a/src/client/classic-debug/js/otp/util/Text.js b/application/src/client/classic-debug/js/otp/util/Text.js
similarity index 100%
rename from src/client/classic-debug/js/otp/util/Text.js
rename to application/src/client/classic-debug/js/otp/util/Text.js
diff --git a/src/client/classic-debug/js/otp/util/Time.js b/application/src/client/classic-debug/js/otp/util/Time.js
similarity index 100%
rename from src/client/classic-debug/js/otp/util/Time.js
rename to application/src/client/classic-debug/js/otp/util/Time.js
diff --git a/src/client/classic-debug/js/otp/widgets/Dialogs.js b/application/src/client/classic-debug/js/otp/widgets/Dialogs.js
similarity index 100%
rename from src/client/classic-debug/js/otp/widgets/Dialogs.js
rename to application/src/client/classic-debug/js/otp/widgets/Dialogs.js
diff --git a/src/client/classic-debug/js/otp/widgets/InfoWidget.js b/application/src/client/classic-debug/js/otp/widgets/InfoWidget.js
similarity index 100%
rename from src/client/classic-debug/js/otp/widgets/InfoWidget.js
rename to application/src/client/classic-debug/js/otp/widgets/InfoWidget.js
diff --git a/src/client/classic-debug/js/otp/widgets/Widget.js b/application/src/client/classic-debug/js/otp/widgets/Widget.js
similarity index 100%
rename from src/client/classic-debug/js/otp/widgets/Widget.js
rename to application/src/client/classic-debug/js/otp/widgets/Widget.js
diff --git a/src/client/classic-debug/js/otp/widgets/WidgetManager.js b/application/src/client/classic-debug/js/otp/widgets/WidgetManager.js
similarity index 100%
rename from src/client/classic-debug/js/otp/widgets/WidgetManager.js
rename to application/src/client/classic-debug/js/otp/widgets/WidgetManager.js
diff --git a/src/client/classic-debug/js/otp/widgets/transit/RouteBasedWidget.js b/application/src/client/classic-debug/js/otp/widgets/transit/RouteBasedWidget.js
similarity index 100%
rename from src/client/classic-debug/js/otp/widgets/transit/RouteBasedWidget.js
rename to application/src/client/classic-debug/js/otp/widgets/transit/RouteBasedWidget.js
diff --git a/src/client/classic-debug/js/otp/widgets/transit/StopFinderWidget.js b/application/src/client/classic-debug/js/otp/widgets/transit/StopFinderWidget.js
similarity index 100%
rename from src/client/classic-debug/js/otp/widgets/transit/StopFinderWidget.js
rename to application/src/client/classic-debug/js/otp/widgets/transit/StopFinderWidget.js
diff --git a/src/client/classic-debug/js/otp/widgets/transit/StopViewerWidget.js b/application/src/client/classic-debug/js/otp/widgets/transit/StopViewerWidget.js
similarity index 100%
rename from src/client/classic-debug/js/otp/widgets/transit/StopViewerWidget.js
rename to application/src/client/classic-debug/js/otp/widgets/transit/StopViewerWidget.js
diff --git a/src/client/classic-debug/js/otp/widgets/transit/TripViewerWidget.js b/application/src/client/classic-debug/js/otp/widgets/transit/TripViewerWidget.js
similarity index 100%
rename from src/client/classic-debug/js/otp/widgets/transit/TripViewerWidget.js
rename to application/src/client/classic-debug/js/otp/widgets/transit/TripViewerWidget.js
diff --git a/src/client/classic-debug/js/otp/widgets/transit/widgets-transit-style.css b/application/src/client/classic-debug/js/otp/widgets/transit/widgets-transit-style.css
similarity index 100%
rename from src/client/classic-debug/js/otp/widgets/transit/widgets-transit-style.css
rename to application/src/client/classic-debug/js/otp/widgets/transit/widgets-transit-style.css
diff --git a/src/client/classic-debug/js/otp/widgets/transit/widgets-transit-templates.html b/application/src/client/classic-debug/js/otp/widgets/transit/widgets-transit-templates.html
similarity index 100%
rename from src/client/classic-debug/js/otp/widgets/transit/widgets-transit-templates.html
rename to application/src/client/classic-debug/js/otp/widgets/transit/widgets-transit-templates.html
diff --git a/src/client/classic-debug/js/otp/widgets/tripoptions/BikeTrianglePanel.js b/application/src/client/classic-debug/js/otp/widgets/tripoptions/BikeTrianglePanel.js
similarity index 100%
rename from src/client/classic-debug/js/otp/widgets/tripoptions/BikeTrianglePanel.js
rename to application/src/client/classic-debug/js/otp/widgets/tripoptions/BikeTrianglePanel.js
diff --git a/src/client/classic-debug/js/otp/widgets/tripoptions/RoutesSelectorWidget.js b/application/src/client/classic-debug/js/otp/widgets/tripoptions/RoutesSelectorWidget.js
similarity index 100%
rename from src/client/classic-debug/js/otp/widgets/tripoptions/RoutesSelectorWidget.js
rename to application/src/client/classic-debug/js/otp/widgets/tripoptions/RoutesSelectorWidget.js
diff --git a/src/client/classic-debug/js/otp/widgets/tripoptions/TripOptionsWidget.js b/application/src/client/classic-debug/js/otp/widgets/tripoptions/TripOptionsWidget.js
similarity index 100%
rename from src/client/classic-debug/js/otp/widgets/tripoptions/TripOptionsWidget.js
rename to application/src/client/classic-debug/js/otp/widgets/tripoptions/TripOptionsWidget.js
diff --git a/src/client/classic-debug/js/otp/widgets/tripoptions/tripoptions-style.css b/application/src/client/classic-debug/js/otp/widgets/tripoptions/tripoptions-style.css
similarity index 100%
rename from src/client/classic-debug/js/otp/widgets/tripoptions/tripoptions-style.css
rename to application/src/client/classic-debug/js/otp/widgets/tripoptions/tripoptions-style.css
diff --git a/src/client/classic-debug/js/otp/widgets/tripoptions/tripoptions-templates.html b/application/src/client/classic-debug/js/otp/widgets/tripoptions/tripoptions-templates.html
similarity index 100%
rename from src/client/classic-debug/js/otp/widgets/tripoptions/tripoptions-templates.html
rename to application/src/client/classic-debug/js/otp/widgets/tripoptions/tripoptions-templates.html
diff --git a/src/client/classic-debug/js/otp/widgets/widget-style.css b/application/src/client/classic-debug/js/otp/widgets/widget-style.css
similarity index 100%
rename from src/client/classic-debug/js/otp/widgets/widget-style.css
rename to application/src/client/classic-debug/js/otp/widgets/widget-style.css
diff --git a/src/client/classic-debug/js/otp/widgets/widget-templates.html b/application/src/client/classic-debug/js/otp/widgets/widget-templates.html
similarity index 100%
rename from src/client/classic-debug/js/otp/widgets/widget-templates.html
rename to application/src/client/classic-debug/js/otp/widgets/widget-templates.html
diff --git a/src/client/classic-debug/style.css b/application/src/client/classic-debug/style.css
similarity index 100%
rename from src/client/classic-debug/style.css
rename to application/src/client/classic-debug/style.css
diff --git a/src/client/graphiql/index.html b/application/src/client/graphiql/index.html
similarity index 100%
rename from src/client/graphiql/index.html
rename to application/src/client/graphiql/index.html
diff --git a/src/client/index.html b/application/src/client/index.html
similarity index 62%
rename from src/client/index.html
rename to application/src/client/index.html
index 5b969aed83e..b34591918d8 100644
--- a/src/client/index.html
+++ b/application/src/client/index.html
@@ -4,9 +4,9 @@
-
OTP Debug Client
-
-
+ OTP Debug
+
+
diff --git a/src/client/legacygraphql/graphiql/index.html b/application/src/client/legacygraphql/graphiql/index.html
similarity index 100%
rename from src/client/legacygraphql/graphiql/index.html
rename to application/src/client/legacygraphql/graphiql/index.html
diff --git a/src/ext-test/java/org/opentripplanner/ext/SandboxExtensionResourceTest.java b/application/src/ext-test/java/org/opentripplanner/ext/SandboxExtensionResourceTest.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/SandboxExtensionResourceTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/SandboxExtensionResourceTest.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/accessibilityscore/DecorateWithAccessibilityScoreTest.java b/application/src/ext-test/java/org/opentripplanner/ext/accessibilityscore/DecorateWithAccessibilityScoreTest.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/accessibilityscore/DecorateWithAccessibilityScoreTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/accessibilityscore/DecorateWithAccessibilityScoreTest.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/datastore/gs/GsDataSourceRepositoryTest.java b/application/src/ext-test/java/org/opentripplanner/ext/datastore/gs/GsDataSourceRepositoryTest.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/datastore/gs/GsDataSourceRepositoryTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/datastore/gs/GsDataSourceRepositoryTest.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/datastore/gs/GsHelperTest.java b/application/src/ext-test/java/org/opentripplanner/ext/datastore/gs/GsHelperTest.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/datastore/gs/GsHelperTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/datastore/gs/GsHelperTest.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/datastore/gs/GsIntegrationTest.java b/application/src/ext-test/java/org/opentripplanner/ext/datastore/gs/GsIntegrationTest.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/datastore/gs/GsIntegrationTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/datastore/gs/GsIntegrationTest.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/emissions/Co2EmissionsDataReaderTest.java b/application/src/ext-test/java/org/opentripplanner/ext/emissions/Co2EmissionsDataReaderTest.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/emissions/Co2EmissionsDataReaderTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/emissions/Co2EmissionsDataReaderTest.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/emissions/EmissionsModuleTest.java b/application/src/ext-test/java/org/opentripplanner/ext/emissions/EmissionsModuleTest.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/emissions/EmissionsModuleTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/emissions/EmissionsModuleTest.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/emissions/EmissionsTest.java b/application/src/ext-test/java/org/opentripplanner/ext/emissions/EmissionsTest.java
similarity index 75%
rename from src/ext-test/java/org/opentripplanner/ext/emissions/EmissionsTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/emissions/EmissionsTest.java
index ff8a65ab494..c26ec7c636a 100644
--- a/src/ext-test/java/org/opentripplanner/ext/emissions/EmissionsTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/emissions/EmissionsTest.java
@@ -2,7 +2,8 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.opentripplanner.transit.model._data.TransitModelForTest.id;
+import static org.opentripplanner.model.plan.Itinerary.createScheduledTransitItinerary;
+import static org.opentripplanner.transit.model._data.TimetableRepositoryForTest.id;
import java.time.OffsetDateTime;
import java.time.ZonedDateTime;
@@ -20,7 +21,7 @@
import org.opentripplanner.model.plan.ScheduledTransitLegBuilder;
import org.opentripplanner.model.plan.StreetLeg;
import org.opentripplanner.street.search.TraverseMode;
-import org.opentripplanner.transit.model._data.TransitModelForTest;
+import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
import org.opentripplanner.transit.model.basic.TransitMode;
import org.opentripplanner.transit.model.framework.Deduplicator;
import org.opentripplanner.transit.model.framework.FeedScopedId;
@@ -45,9 +46,13 @@ class EmissionsTest {
.withEndTime(TIME.plusHours(1))
.build();
- private static final Route ROUTE_WITH_EMISSIONS = TransitModelForTest.route(id("1")).build();
- private static final Route ROUTE_WITH_ZERO_EMISSIONS = TransitModelForTest.route(id("2")).build();
- private static final Route ROUTE_WITHOUT_EMISSIONS_CONFIGURED = TransitModelForTest
+ private static final Route ROUTE_WITH_EMISSIONS = TimetableRepositoryForTest
+ .route(id("1"))
+ .build();
+ private static final Route ROUTE_WITH_ZERO_EMISSIONS = TimetableRepositoryForTest
+ .route(id("2"))
+ .build();
+ private static final Route ROUTE_WITHOUT_EMISSIONS_CONFIGURED = TimetableRepositoryForTest
.route(id("3"))
.build();
@@ -63,42 +68,48 @@ static void SetUp() {
@Test
void testGetEmissionsForItinerary() {
- Itinerary i = new Itinerary(List.of(createTransitLeg(ROUTE_WITH_EMISSIONS)));
+ Itinerary i = createScheduledTransitItinerary(List.of(createTransitLeg(ROUTE_WITH_EMISSIONS)));
decorateWithEmission.decorate(i);
assertEquals(new Grams(2223.902), i.getEmissionsPerPerson().getCo2());
}
@Test
void testGetEmissionsForCarRoute() {
- Itinerary i = new Itinerary(List.of(STREET_LEG));
+ Itinerary i = createScheduledTransitItinerary(List.of(STREET_LEG));
decorateWithEmission.decorate(i);
assertEquals(new Grams(28.0864), i.getEmissionsPerPerson().getCo2());
}
@Test
void testNoEmissionsForFeedWithoutEmissionsConfigured() {
- Itinerary i = new Itinerary(List.of(createTransitLeg(ROUTE_WITHOUT_EMISSIONS_CONFIGURED)));
+ Itinerary i = createScheduledTransitItinerary(
+ List.of(createTransitLeg(ROUTE_WITHOUT_EMISSIONS_CONFIGURED))
+ );
decorateWithEmission.decorate(i);
assertNull(i.getEmissionsPerPerson());
}
@Test
void testZeroEmissionsForItineraryWithZeroEmissions() {
- Itinerary i = new Itinerary(List.of(createTransitLeg(ROUTE_WITH_ZERO_EMISSIONS)));
+ Itinerary i = createScheduledTransitItinerary(
+ List.of(createTransitLeg(ROUTE_WITH_ZERO_EMISSIONS))
+ );
decorateWithEmission.decorate(i);
assertEquals(new Grams(0.0), i.getEmissionsPerPerson().getCo2());
}
@Test
void testGetEmissionsForCombinedRoute() {
- Itinerary i = new Itinerary(List.of(createTransitLeg(ROUTE_WITH_EMISSIONS), STREET_LEG));
+ Itinerary i = createScheduledTransitItinerary(
+ List.of(createTransitLeg(ROUTE_WITH_EMISSIONS), STREET_LEG)
+ );
decorateWithEmission.decorate(i);
assertEquals(new Grams(2251.9884), i.getEmissionsPerPerson().getCo2());
}
@Test
void testNoEmissionsForCombinedRouteWithoutTransitEmissions() {
- Itinerary i = new Itinerary(
+ Itinerary i = createScheduledTransitItinerary(
List.of(createTransitLeg(ROUTE_WITHOUT_EMISSIONS_CONFIGURED), STREET_LEG)
);
decorateWithEmission.decorate(i);
@@ -112,12 +123,15 @@ private ScheduledTransitLeg createTransitLeg(Route route) {
var stoptime = new StopTime();
var stopTimes = new ArrayList();
stopTimes.add(stoptime);
- var testModel = TransitModelForTest.of();
+ var testModel = TimetableRepositoryForTest.of();
var stopOne = testModel.stop("1:stop1", 60, 25).build();
var stopTwo = testModel.stop("1:stop1", 61, 25).build();
var stopThree = testModel.stop("1:stop1", 62, 25).build();
- var stopPattern = TransitModelForTest.stopPattern(stopOne, stopTwo, stopThree);
- var pattern = TransitModelForTest.tripPattern("1", route).withStopPattern(stopPattern).build();
+ var stopPattern = TimetableRepositoryForTest.stopPattern(stopOne, stopTwo, stopThree);
+ var pattern = TimetableRepositoryForTest
+ .tripPattern("1", route)
+ .withStopPattern(stopPattern)
+ .build();
var trip = Trip
.of(FeedScopedId.parse("FOO:BAR"))
.withMode(TransitMode.BUS)
diff --git a/application/src/ext-test/java/org/opentripplanner/ext/fares/FareRuleSetTest.java b/application/src/ext-test/java/org/opentripplanner/ext/fares/FareRuleSetTest.java
new file mode 100644
index 00000000000..13d4f713634
--- /dev/null
+++ b/application/src/ext-test/java/org/opentripplanner/ext/fares/FareRuleSetTest.java
@@ -0,0 +1,222 @@
+package org.opentripplanner.ext.fares;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+import java.time.Duration;
+import java.util.HashSet;
+import java.util.Set;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.opentripplanner.ext.fares.model.FareAttribute;
+import org.opentripplanner.ext.fares.model.FareRuleSet;
+import org.opentripplanner.transit.model.basic.Money;
+import org.opentripplanner.transit.model.framework.FeedScopedId;
+
+class FareRuleSetTest {
+
+ private FareRuleSet fareRuleSet;
+ static final Money TWO_FIFTY = Money.usDollars(2.50f);
+
+ @BeforeEach
+ void setUp() {
+ FeedScopedId id = new FeedScopedId("feed", "fare1");
+ FareAttribute fareAttribute = FareAttribute
+ .of(id)
+ .setPrice(TWO_FIFTY)
+ .setPaymentMethod(1)
+ .setTransfers(1)
+ .setTransferDuration(7200)
+ .build();
+ fareRuleSet = new FareRuleSet(fareAttribute);
+ }
+
+ @Test
+ void testHasNoRules() {
+ assertFalse(fareRuleSet.hasRules());
+ }
+
+ @Test
+ void testAddOriginDestination() {
+ fareRuleSet.addOriginDestination("A", "B");
+ assertTrue(fareRuleSet.hasRules());
+ }
+
+ @Test
+ void testAddRouteOriginDestination() {
+ fareRuleSet.addRouteOriginDestination("Route1", "A", "B");
+ assertTrue(fareRuleSet.hasRules());
+ assertEquals(1, fareRuleSet.getRouteOriginDestinations().size());
+ }
+
+ @Test
+ void testAddContains() {
+ fareRuleSet.addContains("Zone1");
+ assertTrue(fareRuleSet.hasRules());
+ assertEquals(1, fareRuleSet.getContains().size());
+ }
+
+ @Test
+ void testAddRoute() {
+ FeedScopedId routeId = new FeedScopedId("feed", "route1");
+ fareRuleSet.addRoute(routeId);
+ assertTrue(fareRuleSet.hasRules());
+ assertEquals(1, fareRuleSet.getRoutes().size());
+ }
+
+ @Test
+ void testMatchesWithNoRules() {
+ var routes = Set.of(new FeedScopedId("feed", "route1"));
+ var trips = Set.of(new FeedScopedId("feed", "trip1"));
+ var zones = Set.of("zone1");
+ assertTrue(
+ fareRuleSet.matches("A", "B", Set.of(), Set.of(), Set.of(), 0, Duration.ZERO, Duration.ZERO)
+ );
+ assertTrue(
+ fareRuleSet.matches(
+ "A",
+ "B",
+ zones,
+ routes,
+ trips,
+ 0,
+ Duration.ofMinutes(100),
+ Duration.ofMinutes(100)
+ )
+ );
+ }
+
+ @Test
+ void testMatchesWithOriginDestination() {
+ fareRuleSet.addOriginDestination("A", "B");
+ assertTrue(
+ fareRuleSet.matches("A", "B", Set.of(), Set.of(), Set.of(), 0, Duration.ZERO, Duration.ZERO)
+ );
+ assertFalse(
+ fareRuleSet.matches("B", "C", Set.of(), Set.of(), Set.of(), 0, Duration.ZERO, Duration.ZERO)
+ );
+ }
+
+ @Test
+ void testMatchesWithContains() {
+ Set zones = new HashSet<>();
+ zones.add("Zone1");
+ zones.add("Zone2");
+ fareRuleSet.addContains("Zone1");
+ fareRuleSet.addContains("Zone2");
+ assertTrue(
+ fareRuleSet.matches("A", "B", zones, Set.of(), Set.of(), 0, Duration.ZERO, Duration.ZERO)
+ );
+ assertFalse(
+ fareRuleSet.matches("A", "B", Set.of(), Set.of(), Set.of(), 0, Duration.ZERO, Duration.ZERO)
+ );
+ }
+
+ @Test
+ void testMatchesWithRoutes() {
+ Set routes = new HashSet<>();
+ FeedScopedId routeId = new FeedScopedId("feed", "route1");
+ FeedScopedId otherRouteId = new FeedScopedId("feed", "route2");
+ routes.add(routeId);
+ fareRuleSet.addRoute(routeId);
+ assertTrue(
+ fareRuleSet.matches("A", "B", Set.of(), routes, Set.of(), 0, Duration.ZERO, Duration.ZERO)
+ );
+ assertFalse(
+ fareRuleSet.matches(
+ "A",
+ "B",
+ Set.of(),
+ Set.of(otherRouteId),
+ Set.of(),
+ 0,
+ Duration.ZERO,
+ Duration.ZERO
+ )
+ );
+ }
+
+ @Test
+ void testMatchesWithTransfers() {
+ assertTrue(
+ fareRuleSet.matches("A", "B", Set.of(), Set.of(), Set.of(), 1, Duration.ZERO, Duration.ZERO)
+ );
+ assertFalse(
+ fareRuleSet.matches("A", "B", Set.of(), Set.of(), Set.of(), 2, Duration.ZERO, Duration.ZERO)
+ );
+ }
+
+ @Test
+ void testMatchesWithTransferDuration() {
+ assertTrue(
+ fareRuleSet.matches(
+ "A",
+ "B",
+ Set.of(),
+ Set.of(),
+ Set.of(),
+ 0,
+ Duration.ofSeconds(7000),
+ Duration.ZERO
+ )
+ );
+ assertFalse(
+ fareRuleSet.matches(
+ "A",
+ "B",
+ Set.of(),
+ Set.of(),
+ Set.of(),
+ 0,
+ Duration.ofSeconds(8000),
+ Duration.ZERO
+ )
+ );
+ }
+
+ @Test
+ void testMatchesWithJourneyDuration() {
+ FareAttribute journeyFare = FareAttribute
+ .of(new FeedScopedId("feed", "journey"))
+ .setPrice(Money.usDollars(3.00f))
+ .setPaymentMethod(1)
+ .setJourneyDuration(7200)
+ .build();
+ FareRuleSet journeyRuleSet = new FareRuleSet(journeyFare);
+
+ assertTrue(
+ journeyRuleSet.matches(
+ "A",
+ "B",
+ Set.of(),
+ Set.of(),
+ Set.of(),
+ 0,
+ Duration.ZERO,
+ Duration.ofSeconds(7000)
+ )
+ );
+ assertFalse(
+ journeyRuleSet.matches(
+ "A",
+ "B",
+ Set.of(),
+ Set.of(),
+ Set.of(),
+ 0,
+ Duration.ZERO,
+ Duration.ofSeconds(8000)
+ )
+ );
+ }
+
+ @Test
+ void testAgencyMethods() {
+ assertFalse(fareRuleSet.hasAgencyDefined());
+ assertNull(fareRuleSet.getAgency());
+
+ FeedScopedId agencyId = new FeedScopedId("feed", "agency1");
+ fareRuleSet.setAgency(agencyId);
+ assertTrue(fareRuleSet.hasAgencyDefined());
+ assertEquals(agencyId, fareRuleSet.getAgency());
+ }
+}
diff --git a/src/ext-test/java/org/opentripplanner/ext/fares/FaresConfigurationTest.java b/application/src/ext-test/java/org/opentripplanner/ext/fares/FaresConfigurationTest.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/fares/FaresConfigurationTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/fares/FaresConfigurationTest.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/fares/FaresFilterTest.java b/application/src/ext-test/java/org/opentripplanner/ext/fares/FaresFilterTest.java
similarity index 86%
rename from src/ext-test/java/org/opentripplanner/ext/fares/FaresFilterTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/fares/FaresFilterTest.java
index ac11886c208..b897f3aa78f 100644
--- a/src/ext-test/java/org/opentripplanner/ext/fares/FaresFilterTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/fares/FaresFilterTest.java
@@ -2,7 +2,7 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.opentripplanner.model.plan.TestItineraryBuilder.newItinerary;
-import static org.opentripplanner.transit.model._data.TransitModelForTest.id;
+import static org.opentripplanner.transit.model._data.TimetableRepositoryForTest.id;
import java.util.List;
import org.junit.jupiter.api.Test;
@@ -13,12 +13,12 @@
import org.opentripplanner.model.plan.Place;
import org.opentripplanner.model.plan.PlanTestConstants;
import org.opentripplanner.routing.fares.FareService;
-import org.opentripplanner.transit.model._data.TransitModelForTest;
+import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
import org.opentripplanner.transit.model.basic.Money;
public class FaresFilterTest implements PlanTestConstants {
- private final TransitModelForTest testModel = TransitModelForTest.of();
+ private final TimetableRepositoryForTest testModel = TimetableRepositoryForTest.of();
@Test
void shouldAddFare() {
diff --git a/src/ext-test/java/org/opentripplanner/ext/fares/impl/AtlantaFareServiceTest.java b/application/src/ext-test/java/org/opentripplanner/ext/fares/impl/AtlantaFareServiceTest.java
similarity index 98%
rename from src/ext-test/java/org/opentripplanner/ext/fares/impl/AtlantaFareServiceTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/fares/impl/AtlantaFareServiceTest.java
index 3662d45affa..177a74a58db 100644
--- a/src/ext-test/java/org/opentripplanner/ext/fares/impl/AtlantaFareServiceTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/fares/impl/AtlantaFareServiceTest.java
@@ -32,7 +32,7 @@
import org.opentripplanner.transit.model.network.Route;
import org.opentripplanner.transit.model.organization.Agency;
import org.opentripplanner.transit.model.site.RegularStop;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
public class AtlantaFareServiceTest implements PlanTestConstants {
@@ -262,7 +262,7 @@ private static Leg createLeg(String agencyId, String shortName, long startTimeMi
}
private static Itinerary createItinerary(String agencyId, String shortName, long startTimeMins) {
- var stopModelBuilder = StopModel.of();
+ var siteRepositoryBuilder = SiteRepository.of();
Agency agency = Agency
.of(new FeedScopedId(FEED_ID, agencyId))
.withName(agencyId)
@@ -270,12 +270,12 @@ private static Itinerary createItinerary(String agencyId, String shortName, long
.build();
// Set up stops
- RegularStop firstStop = stopModelBuilder
+ RegularStop firstStop = siteRepositoryBuilder
.regularStop(new FeedScopedId(FEED_ID, "1"))
.withCoordinate(new WgsCoordinate(1, 1))
.withName(new NonLocalizedString("first stop"))
.build();
- RegularStop lastStop = stopModelBuilder
+ RegularStop lastStop = siteRepositoryBuilder
.regularStop(new FeedScopedId(FEED_ID, "2"))
.withCoordinate(new WgsCoordinate(1, 2))
.withName(new NonLocalizedString("last stop"))
diff --git a/src/ext-test/java/org/opentripplanner/ext/fares/impl/CombinedInterlinedLegsFareServiceTest.java b/application/src/ext-test/java/org/opentripplanner/ext/fares/impl/CombinedInterlinedLegsFareServiceTest.java
similarity index 96%
rename from src/ext-test/java/org/opentripplanner/ext/fares/impl/CombinedInterlinedLegsFareServiceTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/fares/impl/CombinedInterlinedLegsFareServiceTest.java
index 407cd0f11e9..f1dabd0948c 100644
--- a/src/ext-test/java/org/opentripplanner/ext/fares/impl/CombinedInterlinedLegsFareServiceTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/fares/impl/CombinedInterlinedLegsFareServiceTest.java
@@ -22,13 +22,13 @@
import org.opentripplanner.model.plan.Place;
import org.opentripplanner.model.plan.PlanTestConstants;
import org.opentripplanner.routing.core.FareType;
-import org.opentripplanner.transit.model._data.TransitModelForTest;
+import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
import org.opentripplanner.transit.model.basic.Money;
import org.opentripplanner.transit.model.network.Route;
class CombinedInterlinedLegsFareServiceTest implements PlanTestConstants {
- static final Route route = TransitModelForTest.route("route-1").build();
+ static final Route route = TimetableRepositoryForTest.route("route-1").build();
static final Itinerary interlinedWithDifferentRoute = newItinerary(
Place.forStop(AIRPORT_STOP),
T11_00
diff --git a/src/ext-test/java/org/opentripplanner/ext/fares/impl/DefaultFareServiceTest.java b/application/src/ext-test/java/org/opentripplanner/ext/fares/impl/DefaultFareServiceTest.java
similarity index 98%
rename from src/ext-test/java/org/opentripplanner/ext/fares/impl/DefaultFareServiceTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/fares/impl/DefaultFareServiceTest.java
index cae23f60800..788c1c9b6d6 100644
--- a/src/ext-test/java/org/opentripplanner/ext/fares/impl/DefaultFareServiceTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/fares/impl/DefaultFareServiceTest.java
@@ -24,7 +24,7 @@
import org.opentripplanner.model.plan.Place;
import org.opentripplanner.model.plan.PlanTestConstants;
import org.opentripplanner.routing.core.FareType;
-import org.opentripplanner.transit.model._data.TransitModelForTest;
+import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
import org.opentripplanner.transit.model.basic.Money;
class DefaultFareServiceTest implements PlanTestConstants {
@@ -116,7 +116,7 @@ void shouldNotCombineInterlinedLegs() {
var itin = newItinerary(Place.forStop(AIRPORT_STOP), T11_00)
.bus(1, T11_05, T11_12, Place.forStop(CITY_CENTER_A_STOP))
.staySeatedBus(
- TransitModelForTest.route("123").build(),
+ TimetableRepositoryForTest.route("123").build(),
2,
T11_12,
T11_16,
diff --git a/src/ext-test/java/org/opentripplanner/ext/fares/impl/FareModelForTest.java b/application/src/ext-test/java/org/opentripplanner/ext/fares/impl/FareModelForTest.java
similarity index 81%
rename from src/ext-test/java/org/opentripplanner/ext/fares/impl/FareModelForTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/fares/impl/FareModelForTest.java
index e498588d00f..ccd2303f366 100644
--- a/src/ext-test/java/org/opentripplanner/ext/fares/impl/FareModelForTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/fares/impl/FareModelForTest.java
@@ -1,21 +1,20 @@
package org.opentripplanner.ext.fares.impl;
-import static org.opentripplanner.transit.model._data.TransitModelForTest.OTHER_FEED_AGENCY;
-import static org.opentripplanner.transit.model._data.TransitModelForTest.id;
+import static org.opentripplanner.transit.model._data.TimetableRepositoryForTest.OTHER_FEED_AGENCY;
+import static org.opentripplanner.transit.model._data.TimetableRepositoryForTest.id;
import org.opentripplanner.ext.fares.model.FareAttribute;
import org.opentripplanner.ext.fares.model.FareRuleSet;
import org.opentripplanner.framework.geometry.WgsCoordinate;
import org.opentripplanner.framework.i18n.I18NString;
-import org.opentripplanner.framework.i18n.NonLocalizedString;
import org.opentripplanner.transit.model.basic.Money;
import org.opentripplanner.transit.model.basic.TransitMode;
import org.opentripplanner.transit.model.framework.FeedScopedId;
import org.opentripplanner.transit.model.network.Route;
import org.opentripplanner.transit.model.site.FareZone;
import org.opentripplanner.transit.model.site.RegularStop;
-import org.opentripplanner.transit.service.StopModel;
-import org.opentripplanner.transit.service.StopModelBuilder;
+import org.opentripplanner.transit.service.SiteRepository;
+import org.opentripplanner.transit.service.SiteRepositoryBuilder;
public class FareModelForTest {
@@ -26,40 +25,40 @@ public class FareModelForTest {
.of(FeedScopedId.ofNullable("F2", "other-feed-zone"))
.build();
- private static final StopModelBuilder STOP_MODEL_BUILDER = StopModel.of();
+ private static final SiteRepositoryBuilder SITE_REPOSITORY_BUILDER = SiteRepository.of();
- static final RegularStop AIRPORT_STOP = STOP_MODEL_BUILDER
+ static final RegularStop AIRPORT_STOP = SITE_REPOSITORY_BUILDER
.regularStop(id("airport"))
.withCoordinate(new WgsCoordinate(1, 1))
.addFareZones(AIRPORT_ZONE)
.withName(I18NString.of("Airport"))
.build();
- static final RegularStop CITY_CENTER_A_STOP = STOP_MODEL_BUILDER
+ static final RegularStop CITY_CENTER_A_STOP = SITE_REPOSITORY_BUILDER
.regularStop(id("city-center-a"))
.withCoordinate(new WgsCoordinate(1, 2))
.addFareZones(CITY_CENTER_ZONE)
.withName(I18NString.of("City center: stop A"))
.build();
- static final RegularStop CITY_CENTER_B_STOP = STOP_MODEL_BUILDER
+ static final RegularStop CITY_CENTER_B_STOP = SITE_REPOSITORY_BUILDER
.regularStop(id("city-center-b"))
.withCoordinate(new WgsCoordinate(1, 3))
.addFareZones(CITY_CENTER_ZONE)
.withName(I18NString.of("City center: stop B"))
.build();
- static final RegularStop CITY_CENTER_C_STOP = STOP_MODEL_BUILDER
+ static final RegularStop CITY_CENTER_C_STOP = SITE_REPOSITORY_BUILDER
.regularStop(id("city-center-c"))
.withCoordinate(new WgsCoordinate(1, 4))
.addFareZones(CITY_CENTER_ZONE)
.withName(I18NString.of("City center: stop C"))
.build();
- static final RegularStop SUBURB_STOP = STOP_MODEL_BUILDER
+ static final RegularStop SUBURB_STOP = SITE_REPOSITORY_BUILDER
.regularStop(id("suburb"))
.withCoordinate(new WgsCoordinate(1, 4))
.withName(I18NString.of("Suburb"))
.build();
- static final RegularStop OTHER_FEED_STOP = STOP_MODEL_BUILDER
+ static final RegularStop OTHER_FEED_STOP = SITE_REPOSITORY_BUILDER
.regularStop(FeedScopedId.ofNullable("F2", "other-feed-stop"))
.withCoordinate(new WgsCoordinate(1, 5))
.withName(I18NString.of("Other feed stop"))
diff --git a/src/ext-test/java/org/opentripplanner/ext/fares/impl/FaresIntegrationTest.java b/application/src/ext-test/java/org/opentripplanner/ext/fares/impl/FaresIntegrationTest.java
similarity index 92%
rename from src/ext-test/java/org/opentripplanner/ext/fares/impl/FaresIntegrationTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/fares/impl/FaresIntegrationTest.java
index 7b822b03059..f5ad2b471ab 100644
--- a/src/ext-test/java/org/opentripplanner/ext/fares/impl/FaresIntegrationTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/fares/impl/FaresIntegrationTest.java
@@ -22,7 +22,7 @@
import org.opentripplanner.routing.graph.Graph;
import org.opentripplanner.standalone.api.OtpServerRequestContext;
import org.opentripplanner.transit.model.basic.Money;
-import org.opentripplanner.transit.service.TransitModel;
+import org.opentripplanner.transit.service.TimetableRepository;
public class FaresIntegrationTest {
@@ -30,11 +30,11 @@ public class FaresIntegrationTest {
public void testBasic() {
TestOtpModel model = ConstantsForTests.buildGtfsGraph(ConstantsForTests.CALTRAIN_GTFS);
var graph = model.graph();
- var transitModel = model.transitModel();
+ var timetableRepository = model.timetableRepository();
- var feedId = transitModel.getFeedIds().iterator().next();
+ var feedId = timetableRepository.getFeedIds().iterator().next();
- var serverContext = TestServerContext.createServerContext(graph, transitModel);
+ var serverContext = TestServerContext.createServerContext(graph, timetableRepository);
var start = LocalDateTime
.of(2009, Month.AUGUST, 7, 12, 0, 0)
@@ -53,10 +53,10 @@ public void testBasic() {
public void testPortland() {
TestOtpModel model = ConstantsForTests.getInstance().getCachedPortlandGraph();
Graph graph = model.graph();
- TransitModel transitModel = model.transitModel();
- var portlandId = transitModel.getFeedIds().iterator().next();
+ TimetableRepository timetableRepository = model.timetableRepository();
+ var portlandId = timetableRepository.getFeedIds().iterator().next();
- var serverContext = TestServerContext.createServerContext(graph, transitModel);
+ var serverContext = TestServerContext.createServerContext(graph, timetableRepository);
// from zone 3 to zone 2
var from = GenericLocation.fromStopId(
diff --git a/src/ext-test/java/org/opentripplanner/ext/fares/impl/GtfsFaresV2ServiceTest.java b/application/src/ext-test/java/org/opentripplanner/ext/fares/impl/GtfsFaresV2ServiceTest.java
similarity index 97%
rename from src/ext-test/java/org/opentripplanner/ext/fares/impl/GtfsFaresV2ServiceTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/fares/impl/GtfsFaresV2ServiceTest.java
index c209bc22192..19b55489778 100644
--- a/src/ext-test/java/org/opentripplanner/ext/fares/impl/GtfsFaresV2ServiceTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/fares/impl/GtfsFaresV2ServiceTest.java
@@ -2,8 +2,8 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.opentripplanner.model.plan.TestItineraryBuilder.newItinerary;
-import static org.opentripplanner.transit.model._data.TransitModelForTest.FEED_ID;
-import static org.opentripplanner.transit.model._data.TransitModelForTest.id;
+import static org.opentripplanner.transit.model._data.TimetableRepositoryForTest.FEED_ID;
+import static org.opentripplanner.transit.model._data.TimetableRepositoryForTest.id;
import com.google.common.collect.Multimaps;
import java.time.Duration;
@@ -22,13 +22,13 @@
import org.opentripplanner.model.plan.Itinerary;
import org.opentripplanner.model.plan.Place;
import org.opentripplanner.model.plan.PlanTestConstants;
-import org.opentripplanner.transit.model._data.TransitModelForTest;
+import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
import org.opentripplanner.transit.model.basic.Money;
import org.opentripplanner.transit.model.framework.FeedScopedId;
class GtfsFaresV2ServiceTest implements PlanTestConstants {
- private final TransitModelForTest testModel = TransitModelForTest.of();
+ private final TimetableRepositoryForTest testModel = TimetableRepositoryForTest.of();
FeedScopedId LEG_GROUP1 = id("leg-group1");
FeedScopedId LEG_GROUP2 = id("leg-group2");
diff --git a/src/ext-test/java/org/opentripplanner/ext/fares/impl/HSLFareServiceTest.java b/application/src/ext-test/java/org/opentripplanner/ext/fares/impl/HSLFareServiceTest.java
similarity index 98%
rename from src/ext-test/java/org/opentripplanner/ext/fares/impl/HSLFareServiceTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/fares/impl/HSLFareServiceTest.java
index 17c381f1bd6..072e8a5a4fe 100644
--- a/src/ext-test/java/org/opentripplanner/ext/fares/impl/HSLFareServiceTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/fares/impl/HSLFareServiceTest.java
@@ -1,10 +1,9 @@
package org.opentripplanner.ext.fares.impl;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.opentripplanner.model.plan.TestItineraryBuilder.newItinerary;
-import static org.opentripplanner.transit.model._data.TransitModelForTest.FEED_ID;
+import static org.opentripplanner.transit.model._data.TimetableRepositoryForTest.FEED_ID;
import static org.opentripplanner.transit.model.basic.Money.euros;
import java.util.LinkedList;
@@ -21,7 +20,7 @@
import org.opentripplanner.model.plan.PlanTestConstants;
import org.opentripplanner.routing.core.FareType;
import org.opentripplanner.routing.fares.FareService;
-import org.opentripplanner.transit.model._data.TransitModelForTest;
+import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
import org.opentripplanner.transit.model.basic.Money;
import org.opentripplanner.transit.model.basic.TransitMode;
import org.opentripplanner.transit.model.framework.FeedScopedId;
@@ -76,7 +75,7 @@ private static List createTestCases() {
FareZone C = FareZone.of(new FeedScopedId(FEED_ID, "C")).build();
FareZone D = FareZone.of(new FeedScopedId(FEED_ID, "D")).build();
- var testModel = TransitModelForTest.of();
+ var testModel = TimetableRepositoryForTest.of();
Place A1 = testModel.place("A1", sb -> sb.withCoordinate(10.0, 12.0).addFareZones(A));
Place A2 = testModel.place("A2", sb -> sb.withCoordinate(10.0, 12.0).addFareZones(A));
diff --git a/src/ext-test/java/org/opentripplanner/ext/fares/impl/HighestFareInFreeTransferWindowFareServiceTest.java b/application/src/ext-test/java/org/opentripplanner/ext/fares/impl/HighestFareInFreeTransferWindowFareServiceTest.java
similarity index 98%
rename from src/ext-test/java/org/opentripplanner/ext/fares/impl/HighestFareInFreeTransferWindowFareServiceTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/fares/impl/HighestFareInFreeTransferWindowFareServiceTest.java
index e9aa17ba35f..c65db6c3a9f 100644
--- a/src/ext-test/java/org/opentripplanner/ext/fares/impl/HighestFareInFreeTransferWindowFareServiceTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/fares/impl/HighestFareInFreeTransferWindowFareServiceTest.java
@@ -3,8 +3,8 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.opentripplanner.model.plan.TestItineraryBuilder.newItinerary;
-import static org.opentripplanner.transit.model._data.TransitModelForTest.FEED_ID;
-import static org.opentripplanner.transit.model._data.TransitModelForTest.id;
+import static org.opentripplanner.transit.model._data.TimetableRepositoryForTest.FEED_ID;
+import static org.opentripplanner.transit.model._data.TimetableRepositoryForTest.id;
import java.time.Duration;
import java.util.LinkedList;
diff --git a/src/ext-test/java/org/opentripplanner/ext/fares/impl/OrcaFareServiceTest.java b/application/src/ext-test/java/org/opentripplanner/ext/fares/impl/OrcaFareServiceTest.java
similarity index 98%
rename from src/ext-test/java/org/opentripplanner/ext/fares/impl/OrcaFareServiceTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/fares/impl/OrcaFareServiceTest.java
index e7a2610b42f..d1e3bd4837c 100644
--- a/src/ext-test/java/org/opentripplanner/ext/fares/impl/OrcaFareServiceTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/fares/impl/OrcaFareServiceTest.java
@@ -48,7 +48,7 @@
import org.opentripplanner.transit.model.network.Route;
import org.opentripplanner.transit.model.organization.Agency;
import org.opentripplanner.transit.model.site.RegularStop;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
public class OrcaFareServiceTest {
@@ -79,7 +79,7 @@ public static void setUpClass() {
* types.
*/
private static void calculateFare(List legs, FareType fareType, Money expectedPrice) {
- var itinerary = new Itinerary(legs);
+ var itinerary = Itinerary.createScheduledTransitItinerary(legs);
var itineraryFares = orcaFareService.calculateFares(itinerary);
assertEquals(
expectedPrice,
@@ -662,15 +662,15 @@ private static Itinerary createItinerary(
.withTimezone(ZoneIds.NEW_YORK.getId())
.build();
- var stopModelBuilder = StopModel.of();
+ var siteRepositoryBuilder = SiteRepository.of();
// Set up stops
- RegularStop firstStop = stopModelBuilder
+ RegularStop firstStop = siteRepositoryBuilder
.regularStop(new FeedScopedId(agencyId, "1"))
.withCoordinate(new WgsCoordinate(1, 1))
.withName(new NonLocalizedString(firstStopName))
.build();
- RegularStop lastStop = stopModelBuilder
+ RegularStop lastStop = siteRepositoryBuilder
.regularStop(new FeedScopedId(agencyId, "2"))
.withCoordinate(new WgsCoordinate(1, 2))
.withName(new NonLocalizedString(lastStopName))
diff --git a/src/ext-test/java/org/opentripplanner/ext/fares/model/FareProductTest.java b/application/src/ext-test/java/org/opentripplanner/ext/fares/model/FareProductTest.java
similarity index 97%
rename from src/ext-test/java/org/opentripplanner/ext/fares/model/FareProductTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/fares/model/FareProductTest.java
index 089bac64c11..65f10db6f85 100644
--- a/src/ext-test/java/org/opentripplanner/ext/fares/model/FareProductTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/fares/model/FareProductTest.java
@@ -6,7 +6,6 @@
import java.time.OffsetDateTime;
import java.time.ZonedDateTime;
import java.util.stream.Stream;
-import javax.annotation.Nonnull;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
@@ -57,7 +56,6 @@ void instanceId(FareProduct fareProduct, ZonedDateTime startTime, String expecte
assertEquals(expectedInstanceId, instanceId);
}
- @Nonnull
private static FareProduct fareProduct(Duration duration, RiderCategory cat, FareMedium medium) {
return new FareProduct(
new FeedScopedId("fares", "daypass"),
diff --git a/src/ext-test/java/org/opentripplanner/ext/flex/AreaStopsToVerticesMapperTest.java b/application/src/ext-test/java/org/opentripplanner/ext/flex/AreaStopsToVerticesMapperTest.java
similarity index 84%
rename from src/ext-test/java/org/opentripplanner/ext/flex/AreaStopsToVerticesMapperTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/flex/AreaStopsToVerticesMapperTest.java
index 67eb7e3ed93..979db157268 100644
--- a/src/ext-test/java/org/opentripplanner/ext/flex/AreaStopsToVerticesMapperTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/flex/AreaStopsToVerticesMapperTest.java
@@ -19,26 +19,29 @@
import org.opentripplanner.routing.graph.Graph;
import org.opentripplanner.street.model.StreetTraversalPermission;
import org.opentripplanner.street.model._data.StreetModelForTest;
-import org.opentripplanner.transit.model._data.TransitModelForTest;
+import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
import org.opentripplanner.transit.model.framework.Deduplicator;
import org.opentripplanner.transit.model.site.AreaStop;
-import org.opentripplanner.transit.service.StopModel;
-import org.opentripplanner.transit.service.TransitModel;
+import org.opentripplanner.transit.service.SiteRepository;
+import org.opentripplanner.transit.service.TimetableRepository;
class AreaStopsToVerticesMapperTest {
- private static final TransitModelForTest TEST_MODEL = TransitModelForTest.of();
+ private static final TimetableRepositoryForTest TEST_MODEL = TimetableRepositoryForTest.of();
private static final AreaStop BERLIN_AREA_STOP = TEST_MODEL
.areaStop("berlin")
.withGeometry(Polygons.BERLIN)
.build();
- public static final StopModel STOP_MODEL = TEST_MODEL
- .stopModelBuilder()
+ public static final SiteRepository SITE_REPOSITORY = TEST_MODEL
+ .siteRepositoryBuilder()
.withAreaStop(AreaStopsToVerticesMapperTest.BERLIN_AREA_STOP)
.build();
- public static final TransitModel TRANSIT_MODEL = new TransitModel(STOP_MODEL, new Deduplicator());
+ public static final TimetableRepository TRANSIT_MODEL = new TimetableRepository(
+ SITE_REPOSITORY,
+ new Deduplicator()
+ );
static List testCases() {
return List.of(
diff --git a/src/ext-test/java/org/opentripplanner/ext/flex/FlexIntegrationTest.java b/application/src/ext-test/java/org/opentripplanner/ext/flex/FlexIntegrationTest.java
similarity index 91%
rename from src/ext-test/java/org/opentripplanner/ext/flex/FlexIntegrationTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/flex/FlexIntegrationTest.java
index c88439a9e3f..fb19f1dff36 100644
--- a/src/ext-test/java/org/opentripplanner/ext/flex/FlexIntegrationTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/flex/FlexIntegrationTest.java
@@ -13,7 +13,6 @@
import java.time.ZonedDateTime;
import java.util.List;
import java.util.Map;
-import javax.annotation.Nonnull;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
@@ -34,7 +33,7 @@
import org.opentripplanner.routing.api.request.framework.TimeAndCostPenalty;
import org.opentripplanner.routing.api.request.request.filter.AllowAllTransitFilter;
import org.opentripplanner.routing.graph.Graph;
-import org.opentripplanner.transit.service.TransitModel;
+import org.opentripplanner.transit.service.TimetableRepository;
/**
* This test checks the combination of transit and flex works.
@@ -49,7 +48,7 @@ public class FlexIntegrationTest {
static Graph graph;
- static TransitModel transitModel;
+ static TimetableRepository timetableRepository;
static RoutingService service;
@@ -58,23 +57,23 @@ static void setup() {
OTPFeature.enableFeatures(Map.of(OTPFeature.FlexRouting, true));
TestOtpModel model = FlexIntegrationTestData.cobbOsm();
graph = model.graph();
- transitModel = model.transitModel();
+ timetableRepository = model.timetableRepository();
addGtfsToGraph(
graph,
- transitModel,
+ timetableRepository,
List.of(
FlexIntegrationTestData.COBB_BUS_30_GTFS,
FlexIntegrationTestData.MARTA_BUS_856_GTFS,
FlexIntegrationTestData.COBB_FLEX_GTFS
)
);
- service = TestServerContext.createServerContext(graph, transitModel).routingService();
+ service = TestServerContext.createServerContext(graph, timetableRepository).routingService();
}
@Test
void addFlexTripsAndPatternsToGraph() {
- assertFalse(transitModel.getAllTripPatterns().isEmpty());
+ assertFalse(timetableRepository.getAllTripPatterns().isEmpty());
}
@Test
@@ -177,22 +176,26 @@ static void teardown() {
OTPFeature.enableFeatures(Map.of(OTPFeature.FlexRouting, false));
}
- private static void addGtfsToGraph(Graph graph, TransitModel transitModel, List gtfsFiles) {
+ private static void addGtfsToGraph(
+ Graph graph,
+ TimetableRepository timetableRepository,
+ List gtfsFiles
+ ) {
// GTFS
var gtfsBundles = gtfsFiles.stream().map(GtfsBundle::new).toList();
GtfsModule gtfsModule = new GtfsModule(
gtfsBundles,
- transitModel,
+ timetableRepository,
graph,
ServiceDateInterval.unbounded()
);
gtfsModule.buildGraph();
// link stations to streets
- TestStreetLinkerModule.link(graph, transitModel);
+ TestStreetLinkerModule.link(graph, timetableRepository);
// link flex locations to streets
- new AreaStopsToVerticesMapper(graph, transitModel).buildGraph();
+ new AreaStopsToVerticesMapper(graph, timetableRepository).buildGraph();
// generate direct transfers
var req = new RouteRequest();
@@ -200,15 +203,15 @@ private static void addGtfsToGraph(Graph graph, TransitModel transitModel, List<
// we don't have a complete coverage of the entire area so use straight lines for transfers
new DirectTransferGenerator(
graph,
- transitModel,
+ timetableRepository,
DataImportIssueStore.NOOP,
Duration.ofMinutes(10),
List.of(req)
)
.buildGraph();
- transitModel.index();
- graph.index(transitModel.getStopModel());
+ timetableRepository.index();
+ graph.index(timetableRepository.getSiteRepository());
}
private Itinerary getItinerary(GenericLocation from, GenericLocation to, int index) {
@@ -216,7 +219,6 @@ private Itinerary getItinerary(GenericLocation from, GenericLocation to, int ind
return itineraries.get(index);
}
- @Nonnull
private static List getItineraries(
GenericLocation from,
GenericLocation to,
diff --git a/src/ext-test/java/org/opentripplanner/ext/flex/FlexIntegrationTestData.java b/application/src/ext-test/java/org/opentripplanner/ext/flex/FlexIntegrationTestData.java
similarity index 82%
rename from src/ext-test/java/org/opentripplanner/ext/flex/FlexIntegrationTestData.java
rename to application/src/ext-test/java/org/opentripplanner/ext/flex/FlexIntegrationTestData.java
index d3f4f7a62e8..87106394708 100644
--- a/src/ext-test/java/org/opentripplanner/ext/flex/FlexIntegrationTestData.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/flex/FlexIntegrationTestData.java
@@ -15,8 +15,8 @@
import org.opentripplanner.routing.graph.Graph;
import org.opentripplanner.test.support.ResourceLoader;
import org.opentripplanner.transit.model.framework.Deduplicator;
-import org.opentripplanner.transit.service.StopModel;
-import org.opentripplanner.transit.service.TransitModel;
+import org.opentripplanner.transit.service.SiteRepository;
+import org.opentripplanner.transit.service.TimetableRepository;
public final class FlexIntegrationTestData {
@@ -43,20 +43,20 @@ public static TestOtpModel cobbOsm() {
private static TestOtpModel buildFlexGraph(File file) {
var deduplicator = new Deduplicator();
var graph = new Graph(deduplicator);
- var transitModel = new TransitModel(new StopModel(), deduplicator);
+ var timetableRepository = new TimetableRepository(new SiteRepository(), deduplicator);
GtfsBundle gtfsBundle = new GtfsBundle(file);
GtfsModule module = new GtfsModule(
List.of(gtfsBundle),
- transitModel,
+ timetableRepository,
graph,
new ServiceDateInterval(LocalDate.of(2021, 1, 1), LocalDate.of(2022, 1, 1))
);
OTPFeature.enableFeatures(Map.of(OTPFeature.FlexRouting, true));
module.buildGraph();
- transitModel.index();
- graph.index(transitModel.getStopModel());
+ timetableRepository.index();
+ graph.index(timetableRepository.getSiteRepository());
OTPFeature.enableFeatures(Map.of(OTPFeature.FlexRouting, false));
- assertTrue(transitModel.hasFlexTrips());
- return new TestOtpModel(graph, transitModel);
+ assertTrue(timetableRepository.hasFlexTrips());
+ return new TestOtpModel(graph, timetableRepository);
}
}
diff --git a/src/ext-test/java/org/opentripplanner/ext/flex/FlexPathDurationsTest.java b/application/src/ext-test/java/org/opentripplanner/ext/flex/FlexPathDurationsTest.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/flex/FlexPathDurationsTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/flex/FlexPathDurationsTest.java
diff --git a/application/src/ext-test/java/org/opentripplanner/ext/flex/FlexStopTimesForTest.java b/application/src/ext-test/java/org/opentripplanner/ext/flex/FlexStopTimesForTest.java
new file mode 100644
index 00000000000..b67ae85a434
--- /dev/null
+++ b/application/src/ext-test/java/org/opentripplanner/ext/flex/FlexStopTimesForTest.java
@@ -0,0 +1,102 @@
+package org.opentripplanner.ext.flex;
+
+import org.opentripplanner._support.geometry.Polygons;
+import org.opentripplanner.model.PickDrop;
+import org.opentripplanner.model.StopTime;
+import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
+import org.opentripplanner.transit.model.site.RegularStop;
+import org.opentripplanner.transit.model.site.StopLocation;
+import org.opentripplanner.transit.model.timetable.Trip;
+import org.opentripplanner.utils.time.TimeUtils;
+
+public class FlexStopTimesForTest {
+
+ private static final TimetableRepositoryForTest TEST_MODEL = TimetableRepositoryForTest.of();
+ private static final StopLocation AREA_STOP = TEST_MODEL
+ .areaStop("area")
+ .withGeometry(Polygons.BERLIN)
+ .build();
+ private static final RegularStop REGULAR_STOP = TEST_MODEL.stop("stop").build();
+
+ private static final Trip TRIP = TimetableRepositoryForTest.trip("flex").build();
+
+ public static StopTime area(String startTime, String endTime) {
+ return area(AREA_STOP, endTime, startTime);
+ }
+
+ public static StopTime area(StopLocation areaStop, String endTime, String startTime) {
+ var stopTime = new StopTime();
+ stopTime.setStop(areaStop);
+ stopTime.setFlexWindowStart(TimeUtils.time(startTime));
+ stopTime.setFlexWindowEnd(TimeUtils.time(endTime));
+ stopTime.setTrip(TRIP);
+ return stopTime;
+ }
+
+ /**
+ * Returns an invalid combination of a flex area and continuous stopping.
+ */
+ public static StopTime areaWithContinuousStopping(String time) {
+ var st = area(time, time);
+ st.setFlexContinuousPickup(PickDrop.COORDINATE_WITH_DRIVER);
+ st.setFlexContinuousDropOff(PickDrop.COORDINATE_WITH_DRIVER);
+ return st;
+ }
+
+ /**
+ * Returns an invalid combination of a flex area and continuous pick up.
+ */
+ public static StopTime areaWithContinuousPickup(String time) {
+ var st = area(time, time);
+ st.setFlexContinuousPickup(PickDrop.COORDINATE_WITH_DRIVER);
+ return st;
+ }
+
+ /**
+ * Returns an invalid combination of a flex area and continuous drop off.
+ */
+ public static StopTime areaWithContinuousDropOff(String time) {
+ var st = area(time, time);
+ st.setFlexContinuousDropOff(PickDrop.COORDINATE_WITH_DRIVER);
+ return st;
+ }
+
+ public static StopTime regularStop(String arrivalTime, String departureTime) {
+ return regularStop(TimeUtils.time(arrivalTime), TimeUtils.time(departureTime));
+ }
+
+ public static StopTime regularStop(String time) {
+ return regularStop(TimeUtils.time(time), TimeUtils.time(time));
+ }
+
+ public static StopTime regularStopWithContinuousStopping(String time) {
+ var st = regularStop(TimeUtils.time(time), TimeUtils.time(time));
+ st.setFlexContinuousPickup(PickDrop.COORDINATE_WITH_DRIVER);
+ st.setFlexContinuousDropOff(PickDrop.COORDINATE_WITH_DRIVER);
+ return st;
+ }
+
+ public static StopTime regularStopWithContinuousPickup(String time) {
+ var st = regularStop(TimeUtils.time(time), TimeUtils.time(time));
+ st.setFlexContinuousPickup(PickDrop.COORDINATE_WITH_DRIVER);
+ return st;
+ }
+
+ public static StopTime regularStopWithContinuousDropOff(String time) {
+ var st = regularStop(TimeUtils.time(time), TimeUtils.time(time));
+ st.setFlexContinuousDropOff(PickDrop.COORDINATE_WITH_DRIVER);
+ return st;
+ }
+
+ public static StopTime regularStop(int arrivalTime, int departureTime) {
+ var stopTime = new StopTime();
+ stopTime.setStop(REGULAR_STOP);
+ stopTime.setArrivalTime(arrivalTime);
+ stopTime.setDepartureTime(departureTime);
+ stopTime.setTrip(TRIP);
+ return stopTime;
+ }
+
+
+
+}
diff --git a/src/ext-test/java/org/opentripplanner/ext/flex/GtfsFlexTest.java b/application/src/ext-test/java/org/opentripplanner/ext/flex/GtfsFlexTest.java
similarity index 82%
rename from src/ext-test/java/org/opentripplanner/ext/flex/GtfsFlexTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/flex/GtfsFlexTest.java
index e116831e2d3..4bd042d332c 100644
--- a/src/ext-test/java/org/opentripplanner/ext/flex/GtfsFlexTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/flex/GtfsFlexTest.java
@@ -11,7 +11,7 @@
import org.opentripplanner.ext.flex.trip.FlexTrip;
import org.opentripplanner.ext.flex.trip.UnscheduledTrip;
import org.opentripplanner.transit.model.framework.FeedScopedId;
-import org.opentripplanner.transit.service.TransitModel;
+import org.opentripplanner.transit.service.TimetableRepository;
/**
* This test makes sure that one of the example feeds in the GTFS-Flex repo works. It's the City of
@@ -23,17 +23,17 @@
*/
class GtfsFlexTest {
- private static TransitModel transitModel;
+ private static TimetableRepository timetableRepository;
@BeforeAll
static void setup() {
TestOtpModel model = FlexIntegrationTestData.aspenGtfs();
- transitModel = model.transitModel();
+ timetableRepository = model.timetableRepository();
}
@Test
void parseAspenTaxiAsUnscheduledTrip() {
- var flexTrips = transitModel.getAllFlexTrips();
+ var flexTrips = timetableRepository.getAllFlexTrips();
assertFalse(flexTrips.isEmpty());
assertEquals(
Set.of("t_1289262_b_29084_tn_0", "t_1289257_b_28352_tn_0"),
@@ -48,6 +48,6 @@ void parseAspenTaxiAsUnscheduledTrip() {
@Test
void shouldGeneratePatternForFlexTripWithSingleStop() {
- assertFalse(transitModel.getAllTripPatterns().isEmpty());
+ assertFalse(timetableRepository.getAllTripPatterns().isEmpty());
}
}
diff --git a/src/ext-test/java/org/opentripplanner/ext/flex/flexpathcalculator/FlexPathTest.java b/application/src/ext-test/java/org/opentripplanner/ext/flex/flexpathcalculator/FlexPathTest.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/flex/flexpathcalculator/FlexPathTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/flex/flexpathcalculator/FlexPathTest.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/flex/flexpathcalculator/ScheduledFlexPathCalculatorTest.java b/application/src/ext-test/java/org/opentripplanner/ext/flex/flexpathcalculator/ScheduledFlexPathCalculatorTest.java
similarity index 87%
rename from src/ext-test/java/org/opentripplanner/ext/flex/flexpathcalculator/ScheduledFlexPathCalculatorTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/flex/flexpathcalculator/ScheduledFlexPathCalculatorTest.java
index 985ca5a9898..23827b9503b 100644
--- a/src/ext-test/java/org/opentripplanner/ext/flex/flexpathcalculator/ScheduledFlexPathCalculatorTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/flex/flexpathcalculator/ScheduledFlexPathCalculatorTest.java
@@ -2,10 +2,10 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.opentripplanner.ext.flex.FlexStopTimesForTest.area;
-import static org.opentripplanner.ext.flex.FlexStopTimesForTest.regularStopTime;
+import static org.opentripplanner.ext.flex.FlexStopTimesForTest.regularStop;
import static org.opentripplanner.street.model._data.StreetModelForTest.V1;
import static org.opentripplanner.street.model._data.StreetModelForTest.V2;
-import static org.opentripplanner.transit.model._data.TransitModelForTest.id;
+import static org.opentripplanner.transit.model._data.TimetableRepositoryForTest.id;
import java.time.Duration;
import java.util.List;
@@ -19,9 +19,9 @@ class ScheduledFlexPathCalculatorTest {
.of(id("123"))
.withStopTimes(
List.of(
- regularStopTime("10:00", "10:01"),
+ regularStop("10:00", "10:01"),
area("10:10", "10:20"),
- regularStopTime("10:25", "10:26"),
+ regularStop("10:25", "10:26"),
area("10:40", "10:50")
)
)
diff --git a/src/ext-test/java/org/opentripplanner/ext/flex/flexpathcalculator/TimePenaltyCalculatorTest.java b/application/src/ext-test/java/org/opentripplanner/ext/flex/flexpathcalculator/TimePenaltyCalculatorTest.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/flex/flexpathcalculator/TimePenaltyCalculatorTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/flex/flexpathcalculator/TimePenaltyCalculatorTest.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/flex/template/BoardAlight.java b/application/src/ext-test/java/org/opentripplanner/ext/flex/template/BoardAlight.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/flex/template/BoardAlight.java
rename to application/src/ext-test/java/org/opentripplanner/ext/flex/template/BoardAlight.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/flex/template/FlexTemplateFactoryTest.java b/application/src/ext-test/java/org/opentripplanner/ext/flex/template/FlexTemplateFactoryTest.java
similarity index 97%
rename from src/ext-test/java/org/opentripplanner/ext/flex/template/FlexTemplateFactoryTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/flex/template/FlexTemplateFactoryTest.java
index 8c73d0901ff..159e25ff113 100644
--- a/src/ext-test/java/org/opentripplanner/ext/flex/template/FlexTemplateFactoryTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/flex/template/FlexTemplateFactoryTest.java
@@ -6,7 +6,7 @@
import static org.opentripplanner.ext.flex.template.BoardAlight.ALIGHT_ONLY;
import static org.opentripplanner.ext.flex.template.BoardAlight.BOARD_AND_ALIGHT;
import static org.opentripplanner.ext.flex.template.BoardAlight.BOARD_ONLY;
-import static org.opentripplanner.framework.time.TimeUtils.time;
+import static org.opentripplanner.utils.time.TimeUtils.time;
import gnu.trove.set.hash.TIntHashSet;
import java.time.Duration;
@@ -30,7 +30,7 @@
import org.opentripplanner.street.model.vertex.StreetLocation;
import org.opentripplanner.street.search.request.StreetSearchRequest;
import org.opentripplanner.street.search.state.State;
-import org.opentripplanner.transit.model._data.TransitModelForTest;
+import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
import org.opentripplanner.transit.model.site.RegularStop;
import org.opentripplanner.transit.model.site.StopLocation;
import org.opentripplanner.transit.model.timetable.Trip;
@@ -38,7 +38,7 @@
class FlexTemplateFactoryTest {
- private static final TransitModelForTest MODEL = TransitModelForTest.of();
+ private static final TimetableRepositoryForTest MODEL = TimetableRepositoryForTest.of();
/**
* This is pass-through information
@@ -78,7 +78,7 @@ class FlexTemplateFactoryTest {
private static final StopLocation GROUP_STOP_12 = MODEL.groupStop("G", STOP_G1, STOP_G2);
private static final StopLocation GROUP_STOP_34 = MODEL.groupStop("G", STOP_G3, STOP_G4);
- private static final Trip TRIP = TransitModelForTest.trip("Trip").build();
+ private static final Trip TRIP = TimetableRepositoryForTest.trip("Trip").build();
private static final int T_10_00 = time("10:00");
private static final int T_10_10 = time("10:10");
private static final int T_10_20 = time("10:20");
diff --git a/src/ext-test/java/org/opentripplanner/ext/flex/trip/FlexTripsMapperTest.java b/application/src/ext-test/java/org/opentripplanner/ext/flex/trip/FlexTripsMapperTest.java
similarity index 82%
rename from src/ext-test/java/org/opentripplanner/ext/flex/trip/FlexTripsMapperTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/flex/trip/FlexTripsMapperTest.java
index fad9e98e254..664bd5ed4bc 100644
--- a/src/ext-test/java/org/opentripplanner/ext/flex/trip/FlexTripsMapperTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/flex/trip/FlexTripsMapperTest.java
@@ -11,14 +11,14 @@
import org.opentripplanner.ext.flex.flexpathcalculator.DirectFlexPathCalculator;
import org.opentripplanner.model.StopTime;
import org.opentripplanner.model.impl.OtpTransitServiceBuilder;
-import org.opentripplanner.transit.model._data.TransitModelForTest;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
+import org.opentripplanner.transit.service.SiteRepository;
class FlexTripsMapperTest {
@Test
void defaultTimePenalty() {
- var builder = new OtpTransitServiceBuilder(StopModel.of().build(), NOOP);
+ var builder = new OtpTransitServiceBuilder(SiteRepository.of().build(), NOOP);
var stopTimes = List.of(stopTime(0), stopTime(1));
builder.getStopTimesSortedByTrip().addAll(stopTimes);
var trips = FlexTripsMapper.createFlexTrips(builder, NOOP);
@@ -30,7 +30,7 @@ void defaultTimePenalty() {
private static StopTime stopTime(int seq) {
var st = FlexStopTimesForTest.area("08:00", "18:00");
- st.setTrip(TransitModelForTest.trip("flex-1").build());
+ st.setTrip(TimetableRepositoryForTest.trip("flex-1").build());
st.setStopSequence(seq);
return st;
}
diff --git a/src/ext-test/java/org/opentripplanner/ext/flex/trip/ScheduledDeviatedTripTest.java b/application/src/ext-test/java/org/opentripplanner/ext/flex/trip/ScheduledDeviatedTripIntegrationTest.java
similarity index 90%
rename from src/ext-test/java/org/opentripplanner/ext/flex/trip/ScheduledDeviatedTripTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/flex/trip/ScheduledDeviatedTripIntegrationTest.java
index 6466d7bf6d6..3a8e33cfbf2 100644
--- a/src/ext-test/java/org/opentripplanner/ext/flex/trip/ScheduledDeviatedTripTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/flex/trip/ScheduledDeviatedTripIntegrationTest.java
@@ -24,7 +24,6 @@
import org.opentripplanner.framework.application.OTPFeature;
import org.opentripplanner.framework.geometry.EncodedPolyline;
import org.opentripplanner.framework.i18n.I18NString;
-import org.opentripplanner.framework.time.ServiceDateUtils;
import org.opentripplanner.graph_builder.module.ValidateAndInterpolateStopTimesForEachTrip;
import org.opentripplanner.model.GenericLocation;
import org.opentripplanner.model.StopTime;
@@ -44,25 +43,27 @@
import org.opentripplanner.transit.model.network.grouppriority.TransitGroupPriorityService;
import org.opentripplanner.transit.model.site.AreaStop;
import org.opentripplanner.transit.service.DefaultTransitService;
-import org.opentripplanner.transit.service.TransitModel;
+import org.opentripplanner.transit.service.TimetableRepository;
+import org.opentripplanner.utils.time.ServiceDateUtils;
/**
* This tests that the feed for the Cobb County Flex service is processed correctly. This service
* contains both flex zones but also scheduled stops. Inside the zone, passengers can get on or off
* anywhere, so there it works more like a taxi.
*
- * Read about the details at: https://www.cobbcounty.org/transportation/cobblinc/routes-and-schedules/flex
+ * This service is not being offered anymore, but we keep the test because others of the same
+ * type still exist.
*/
-class ScheduledDeviatedTripTest {
+class ScheduledDeviatedTripIntegrationTest {
static Graph graph;
- static TransitModel transitModel;
+ static TimetableRepository timetableRepository;
float delta = 0.01f;
@Test
void parseCobbCountyAsScheduledDeviatedTrip() {
- var flexTrips = transitModel.getAllFlexTrips();
+ var flexTrips = timetableRepository.getAllFlexTrips();
assertFalse(flexTrips.isEmpty());
assertEquals(72, flexTrips.size());
@@ -101,7 +102,7 @@ void calculateDirectFare() {
var router = new FlexRouter(
graph,
- new DefaultTransitService(transitModel),
+ new DefaultTransitService(timetableRepository),
FlexParameters.defaultValues(),
OffsetDateTime.parse("2021-11-12T10:15:24-05:00").toInstant(),
null,
@@ -134,9 +135,9 @@ void calculateDirectFare() {
*/
@Test
void flexTripInTransitMode() {
- var feedId = transitModel.getFeedIds().iterator().next();
+ var feedId = timetableRepository.getFeedIds().iterator().next();
- var serverContext = TestServerContext.createServerContext(graph, transitModel);
+ var serverContext = TestServerContext.createServerContext(graph, timetableRepository);
// from zone 3 to zone 2
var from = GenericLocation.fromStopId("Transfer Point for Route 30", feedId, "cujv");
@@ -177,8 +178,8 @@ void flexTripInTransitMode() {
*/
@Test
void shouldNotInterpolateFlexTimes() {
- var feedId = transitModel.getFeedIds().iterator().next();
- var pattern = transitModel.getTripPatternForId(new FeedScopedId(feedId, "090z:0:01"));
+ var feedId = timetableRepository.getFeedIds().iterator().next();
+ var pattern = timetableRepository.getTripPatternForId(new FeedScopedId(feedId, "090z:0:01"));
assertEquals(3, pattern.numberOfStops());
@@ -192,7 +193,7 @@ void shouldNotInterpolateFlexTimes() {
static void setup() {
TestOtpModel model = FlexIntegrationTestData.cobbFlexGtfs();
graph = model.graph();
- transitModel = model.transitModel();
+ timetableRepository = model.timetableRepository();
}
private static List getItineraries(
@@ -222,10 +223,6 @@ private static List getItineraries(
return result.getItineraries();
}
- private static NearbyStop getNearbyStop(FlexTrip, ?> trip) {
- return getNearbyStop(trip, "nearby-stop");
- }
-
private static NearbyStop getNearbyStop(FlexTrip, ?> trip, String id) {
// getStops() returns a set of stops and the order doesn't correspond to the stop times
// of the trip
@@ -248,8 +245,8 @@ private static NearbyStop getNearbyStop(FlexTrip, ?> trip, String id) {
}
private static FlexTrip, ?> getFlexTrip() {
- var feedId = transitModel.getFeedIds().iterator().next();
+ var feedId = timetableRepository.getFeedIds().iterator().next();
var tripId = new FeedScopedId(feedId, "a326c618-d42c-4bd1-9624-c314fbf8ecd8");
- return transitModel.getFlexTrip(tripId);
+ return timetableRepository.getFlexTrip(tripId);
}
}
diff --git a/application/src/ext-test/java/org/opentripplanner/ext/flex/trip/ScheduledDeviatedTripTest.java b/application/src/ext-test/java/org/opentripplanner/ext/flex/trip/ScheduledDeviatedTripTest.java
new file mode 100644
index 00000000000..4beefeb271e
--- /dev/null
+++ b/application/src/ext-test/java/org/opentripplanner/ext/flex/trip/ScheduledDeviatedTripTest.java
@@ -0,0 +1,62 @@
+package org.opentripplanner.ext.flex.trip;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.opentripplanner.ext.flex.FlexStopTimesForTest.area;
+import static org.opentripplanner.ext.flex.FlexStopTimesForTest.areaWithContinuousStopping;
+import static org.opentripplanner.ext.flex.FlexStopTimesForTest.regularStop;
+import static org.opentripplanner.ext.flex.FlexStopTimesForTest.regularStopWithContinuousStopping;
+
+import java.util.List;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+import org.opentripplanner.model.StopTime;
+
+class ScheduledDeviatedTripTest {
+
+ private static List> isScheduledDeviatedTripCases() {
+ return List.of(
+ List.of(
+ regularStop("10:10"),
+ area("10:20", "10:30"),
+ regularStop("10:40"),
+ area("10:50", "11:00")
+ ),
+ List.of(
+ regularStopWithContinuousStopping("10:10"),
+ area("10:20", "10:30"),
+ regularStopWithContinuousStopping("10:40"),
+ area("10:50", "11:00")
+ )
+ );
+ }
+
+ @ParameterizedTest
+ @MethodSource("isScheduledDeviatedTripCases")
+ void isScheduledDeviatedTrip(List stopTimes) {
+ assertTrue(ScheduledDeviatedTrip.isScheduledDeviatedFlexTrip(stopTimes));
+ }
+
+ private static List> isNotScheduledDeviatedTripCases() {
+ return List.of(
+ List.of(
+ areaWithContinuousStopping("10:10"),
+ regularStop("10:20", "10:30"),
+ areaWithContinuousStopping("10:40"),
+ regularStop("10:50", "11:00")
+ ),
+ List.of(
+ regularStop("10:10"),
+ regularStop("10:20")
+ )
+ );
+ }
+
+ @ParameterizedTest
+ @MethodSource("isNotScheduledDeviatedTripCases")
+ void isNotScheduledDeviatedTrip(List stopTimes) {
+ assertFalse(ScheduledDeviatedTrip.isScheduledDeviatedFlexTrip(stopTimes));
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/ext-test/java/org/opentripplanner/ext/flex/trip/UnscheduledDrivingDurationTest.java b/application/src/ext-test/java/org/opentripplanner/ext/flex/trip/UnscheduledDrivingDurationTest.java
similarity index 95%
rename from src/ext-test/java/org/opentripplanner/ext/flex/trip/UnscheduledDrivingDurationTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/flex/trip/UnscheduledDrivingDurationTest.java
index f19478af629..f6fd43595a9 100644
--- a/src/ext-test/java/org/opentripplanner/ext/flex/trip/UnscheduledDrivingDurationTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/flex/trip/UnscheduledDrivingDurationTest.java
@@ -3,7 +3,7 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.opentripplanner.street.model._data.StreetModelForTest.V1;
import static org.opentripplanner.street.model._data.StreetModelForTest.V2;
-import static org.opentripplanner.transit.model._data.TransitModelForTest.id;
+import static org.opentripplanner.transit.model._data.TimetableRepositoryForTest.id;
import java.time.Duration;
import java.util.List;
diff --git a/src/ext-test/java/org/opentripplanner/ext/flex/trip/UnscheduledTripTest.java b/application/src/ext-test/java/org/opentripplanner/ext/flex/trip/UnscheduledTripTest.java
similarity index 90%
rename from src/ext-test/java/org/opentripplanner/ext/flex/trip/UnscheduledTripTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/flex/trip/UnscheduledTripTest.java
index 8bc9d7c8919..b7f2706d25a 100644
--- a/src/ext-test/java/org/opentripplanner/ext/flex/trip/UnscheduledTripTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/flex/trip/UnscheduledTripTest.java
@@ -3,34 +3,29 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.opentripplanner.ext.flex.FlexStopTimesForTest.area;
-import static org.opentripplanner.ext.flex.FlexStopTimesForTest.regularArrival;
-import static org.opentripplanner.ext.flex.FlexStopTimesForTest.regularDeparture;
import static org.opentripplanner.ext.flex.trip.UnscheduledTrip.isUnscheduledTrip;
import static org.opentripplanner.ext.flex.trip.UnscheduledTripTest.TestCase.tc;
import static org.opentripplanner.model.PickDrop.NONE;
import static org.opentripplanner.model.StopTime.MISSING_VALUE;
-import static org.opentripplanner.transit.model._data.TransitModelForTest.id;
+import static org.opentripplanner.transit.model._data.TimetableRepositoryForTest.id;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.stream.Stream;
-import javax.annotation.Nonnull;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
-import org.opentripplanner.framework.time.DurationUtils;
-import org.opentripplanner.framework.time.TimeUtils;
-import org.opentripplanner.framework.tostring.ToStringBuilder;
+import org.opentripplanner.ext.flex.FlexStopTimesForTest;
import org.opentripplanner.model.PickDrop;
import org.opentripplanner.model.StopTime;
-import org.opentripplanner.routing.graphfinder.NearbyStop;
-import org.opentripplanner.transit.model._data.TransitModelForTest;
-import org.opentripplanner.transit.model.site.AreaStop;
+import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
import org.opentripplanner.transit.model.site.RegularStop;
import org.opentripplanner.transit.model.site.StopLocation;
+import org.opentripplanner.utils.time.DurationUtils;
+import org.opentripplanner.utils.time.TimeUtils;
+import org.opentripplanner.utils.tostring.ToStringBuilder;
class UnscheduledTripTest {
@@ -42,7 +37,7 @@ class UnscheduledTripTest {
private static final int T14_00 = TimeUtils.hm2time(14, 0);
private static final int T15_00 = TimeUtils.hm2time(15, 0);
- private static final TransitModelForTest TEST_MODEL = TransitModelForTest.of();
+ private static final TimetableRepositoryForTest TEST_MODEL = TimetableRepositoryForTest.of();
private static final RegularStop REGULAR_STOP = TEST_MODEL.stop("stop").build();
@@ -51,35 +46,14 @@ class UnscheduledTripTest {
@Nested
class IsUnscheduledTrip {
- private static final StopTime SCHEDULED_STOP = new StopTime();
- private static final StopTime UNSCHEDULED_STOP = new StopTime();
- private static final StopTime CONTINUOUS_PICKUP_STOP = new StopTime();
- private static final StopTime CONTINUOUS_DROP_OFF_STOP = new StopTime();
-
- static {
- var trip = TransitModelForTest.trip("flex").build();
- SCHEDULED_STOP.setArrivalTime(30);
- SCHEDULED_STOP.setDepartureTime(60);
- SCHEDULED_STOP.setStop(AREA_STOP);
- SCHEDULED_STOP.setTrip(trip);
-
- UNSCHEDULED_STOP.setFlexWindowStart(30);
- UNSCHEDULED_STOP.setFlexWindowEnd(300);
- UNSCHEDULED_STOP.setStop(AREA_STOP);
- UNSCHEDULED_STOP.setTrip(trip);
-
- CONTINUOUS_PICKUP_STOP.setFlexContinuousPickup(PickDrop.COORDINATE_WITH_DRIVER);
- CONTINUOUS_PICKUP_STOP.setFlexWindowStart(30);
- CONTINUOUS_PICKUP_STOP.setFlexWindowEnd(300);
- CONTINUOUS_PICKUP_STOP.setStop(AREA_STOP);
- CONTINUOUS_PICKUP_STOP.setTrip(trip);
-
- CONTINUOUS_DROP_OFF_STOP.setFlexContinuousDropOff(PickDrop.COORDINATE_WITH_DRIVER);
- CONTINUOUS_DROP_OFF_STOP.setFlexWindowStart(100);
- CONTINUOUS_DROP_OFF_STOP.setFlexWindowEnd(200);
- CONTINUOUS_DROP_OFF_STOP.setStop(AREA_STOP);
- CONTINUOUS_DROP_OFF_STOP.setTrip(trip);
- }
+ private static final StopTime SCHEDULED_STOP = FlexStopTimesForTest.regularStop("10:00");
+ private static final StopTime UNSCHEDULED_STOP = FlexStopTimesForTest.area("10:10", "10:20");
+ private static final StopTime CONTINUOUS_PICKUP_STOP = FlexStopTimesForTest.regularStopWithContinuousPickup("10:30");
+ private static final StopTime CONTINUOUS_DROP_OFF_STOP = FlexStopTimesForTest.regularStopWithContinuousDropOff("10:40");
+
+ // disallowed by the GTFS spec
+ private static final StopTime FLEX_AND_CONTINUOUS_PICKUP_STOP = FlexStopTimesForTest.areaWithContinuousPickup("10:50");
+ private static final StopTime FLEX_AND_CONTINUOUS_DROP_OFF_STOP = FlexStopTimesForTest.areaWithContinuousDropOff("11:00");
static List> notUnscheduled() {
return List.of(
@@ -88,9 +62,9 @@ static List> notUnscheduled() {
List.of(SCHEDULED_STOP, SCHEDULED_STOP),
List.of(SCHEDULED_STOP, SCHEDULED_STOP, SCHEDULED_STOP),
List.of(UNSCHEDULED_STOP, SCHEDULED_STOP, UNSCHEDULED_STOP),
- List.of(UNSCHEDULED_STOP, CONTINUOUS_PICKUP_STOP),
- List.of(UNSCHEDULED_STOP, CONTINUOUS_DROP_OFF_STOP),
- List.of(CONTINUOUS_PICKUP_STOP, CONTINUOUS_DROP_OFF_STOP)
+ List.of(UNSCHEDULED_STOP, FLEX_AND_CONTINUOUS_PICKUP_STOP),
+ List.of(UNSCHEDULED_STOP, FLEX_AND_CONTINUOUS_DROP_OFF_STOP),
+ List.of(FLEX_AND_CONTINUOUS_PICKUP_STOP, FLEX_AND_CONTINUOUS_DROP_OFF_STOP)
);
}
@@ -107,7 +81,11 @@ static List> unscheduled() {
List.of(SCHEDULED_STOP, UNSCHEDULED_STOP),
List.of(UNSCHEDULED_STOP, UNSCHEDULED_STOP),
List.of(UNSCHEDULED_STOP, UNSCHEDULED_STOP, UNSCHEDULED_STOP),
- Collections.nCopies(10, UNSCHEDULED_STOP)
+ Collections.nCopies(10, UNSCHEDULED_STOP),
+ List.of(UNSCHEDULED_STOP, CONTINUOUS_PICKUP_STOP),
+ List.of(CONTINUOUS_PICKUP_STOP, UNSCHEDULED_STOP),
+ List.of(UNSCHEDULED_STOP, CONTINUOUS_DROP_OFF_STOP),
+ List.of(CONTINUOUS_DROP_OFF_STOP, UNSCHEDULED_STOP)
);
}
diff --git a/src/ext-test/java/org/opentripplanner/ext/geocoder/EnglishNgramAnalyzerTest.java b/application/src/ext-test/java/org/opentripplanner/ext/geocoder/EnglishNgramAnalyzerTest.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/geocoder/EnglishNgramAnalyzerTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/geocoder/EnglishNgramAnalyzerTest.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/geocoder/LuceneIndexTest.java b/application/src/ext-test/java/org/opentripplanner/ext/geocoder/LuceneIndexTest.java
similarity index 90%
rename from src/ext-test/java/org/opentripplanner/ext/geocoder/LuceneIndexTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/geocoder/LuceneIndexTest.java
index de6e600037c..b1468444076 100644
--- a/src/ext-test/java/org/opentripplanner/ext/geocoder/LuceneIndexTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/geocoder/LuceneIndexTest.java
@@ -1,7 +1,7 @@
package org.opentripplanner.ext.geocoder;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.opentripplanner.transit.model._data.TransitModelForTest.id;
+import static org.opentripplanner.transit.model._data.TimetableRepositoryForTest.id;
import static org.opentripplanner.transit.model.basic.TransitMode.BUS;
import static org.opentripplanner.transit.model.basic.TransitMode.FERRY;
@@ -21,7 +21,7 @@
import org.opentripplanner.ext.stopconsolidation.internal.DefaultStopConsolidationRepository;
import org.opentripplanner.ext.stopconsolidation.internal.DefaultStopConsolidationService;
import org.opentripplanner.model.FeedInfo;
-import org.opentripplanner.transit.model._data.TransitModelForTest;
+import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
import org.opentripplanner.transit.model.basic.TransitMode;
import org.opentripplanner.transit.model.framework.Deduplicator;
import org.opentripplanner.transit.model.framework.FeedScopedId;
@@ -31,11 +31,11 @@
import org.opentripplanner.transit.model.site.Station;
import org.opentripplanner.transit.model.site.StopLocation;
import org.opentripplanner.transit.service.DefaultTransitService;
-import org.opentripplanner.transit.service.TransitModel;
+import org.opentripplanner.transit.service.TimetableRepository;
class LuceneIndexTest {
- private static final TransitModelForTest TEST_MODEL = TransitModelForTest.of();
+ private static final TimetableRepositoryForTest TEST_MODEL = TimetableRepositoryForTest.of();
static final Agency BVG = Agency
.of(id("bvg"))
@@ -108,7 +108,7 @@ class LuceneIndexTest {
@BeforeAll
static void setup() {
- var stopModel = TEST_MODEL.stopModelBuilder();
+ var siteRepository = TEST_MODEL.siteRepositoryBuilder();
List
.of(
ALEXANDERPLATZ_BUS,
@@ -122,29 +122,29 @@ static void setup() {
MERIDIAN_N2,
MERIDIAN_AVE
)
- .forEach(stopModel::withRegularStop);
+ .forEach(siteRepository::withRegularStop);
List
.of(ALEXANDERPLATZ_STATION, BERLIN_HAUPTBAHNHOF_STATION, FIVE_POINTS_STATION)
- .forEach(stopModel::withStation);
- var transitModel = new TransitModel(stopModel.build(), new Deduplicator());
- transitModel.index();
- var transitService = new DefaultTransitService(transitModel) {
+ .forEach(siteRepository::withStation);
+ var timetableRepository = new TimetableRepository(siteRepository.build(), new Deduplicator());
+ timetableRepository.index();
+ var transitService = new DefaultTransitService(timetableRepository) {
private final Multimap modes = ImmutableMultimap
.builder()
.putAll(WESTHAFEN, FERRY, BUS)
.build();
@Override
- public List getModesOfStopLocation(StopLocation stop) {
- if (stop.getGtfsVehicleType() != null) {
- return List.of(stop.getGtfsVehicleType());
+ public List findTransitModes(StopLocation stop) {
+ if (stop.getVehicleType() != null) {
+ return List.of(stop.getVehicleType());
} else {
return List.copyOf(modes.get(stop));
}
}
@Override
- public Agency getAgencyForId(FeedScopedId id) {
+ public Agency getAgency(FeedScopedId id) {
if (id.equals(BVG.getId())) {
return BVG;
}
@@ -152,8 +152,8 @@ public Agency getAgencyForId(FeedScopedId id) {
}
@Override
- public Set getRoutesForStop(StopLocation stop) {
- return Set.of(TransitModelForTest.route("route1").withAgency(BVG).build());
+ public Set findRoutes(StopLocation stop) {
+ return Set.of(TimetableRepositoryForTest.route("route1").withAgency(BVG).build());
}
@Override
@@ -171,7 +171,7 @@ public FeedInfo getFeedInfo(String feedId) {
};
var stopConsolidationService = new DefaultStopConsolidationService(
new DefaultStopConsolidationRepository(),
- transitModel
+ timetableRepository
);
index = new LuceneIndex(transitService, stopConsolidationService);
mapper = new StopClusterMapper(transitService, stopConsolidationService);
diff --git a/src/ext-test/java/org/opentripplanner/ext/geocoder/StopClusterMapperTest.java b/application/src/ext-test/java/org/opentripplanner/ext/geocoder/StopClusterMapperTest.java
similarity index 80%
rename from src/ext-test/java/org/opentripplanner/ext/geocoder/StopClusterMapperTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/geocoder/StopClusterMapperTest.java
index 578f7d4118f..fdff7787fb5 100644
--- a/src/ext-test/java/org/opentripplanner/ext/geocoder/StopClusterMapperTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/geocoder/StopClusterMapperTest.java
@@ -7,27 +7,27 @@
import org.opentripplanner.ext.stopconsolidation.internal.DefaultStopConsolidationRepository;
import org.opentripplanner.ext.stopconsolidation.internal.DefaultStopConsolidationService;
import org.opentripplanner.ext.stopconsolidation.model.ConsolidatedStopGroup;
-import org.opentripplanner.transit.model._data.TransitModelForTest;
+import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
import org.opentripplanner.transit.model.framework.Deduplicator;
import org.opentripplanner.transit.model.site.RegularStop;
import org.opentripplanner.transit.model.site.StopLocation;
import org.opentripplanner.transit.service.DefaultTransitService;
-import org.opentripplanner.transit.service.StopModel;
-import org.opentripplanner.transit.service.TransitModel;
+import org.opentripplanner.transit.service.SiteRepository;
+import org.opentripplanner.transit.service.TimetableRepository;
class StopClusterMapperTest {
- private static final TransitModelForTest TEST_MODEL = TransitModelForTest.of();
+ private static final TimetableRepositoryForTest TEST_MODEL = TimetableRepositoryForTest.of();
private static final RegularStop STOP_A = TEST_MODEL.stop("A").build();
private static final RegularStop STOP_B = TEST_MODEL.stop("B").build();
private static final RegularStop STOP_C = TEST_MODEL.stop("C").build();
private static final List STOPS = List.of(STOP_A, STOP_B, STOP_C);
- private static final StopModel STOP_MODEL = TEST_MODEL
- .stopModelBuilder()
+ private static final SiteRepository SITE_REPOSITORY = TEST_MODEL
+ .siteRepositoryBuilder()
.withRegularStops(STOPS)
.build();
- private static final TransitModel TRANSIT_MODEL = new TransitModel(
- STOP_MODEL,
+ private static final TimetableRepository TRANSIT_MODEL = new TimetableRepository(
+ SITE_REPOSITORY,
new Deduplicator()
);
private static final List LOCATIONS = STOPS
diff --git a/src/ext-test/java/org/opentripplanner/ext/mapping/TransmodelMappingUtilTest.java b/application/src/ext-test/java/org/opentripplanner/ext/mapping/TransmodelMappingUtilTest.java
similarity index 92%
rename from src/ext-test/java/org/opentripplanner/ext/mapping/TransmodelMappingUtilTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/mapping/TransmodelMappingUtilTest.java
index ce841be54a7..82023904f0f 100644
--- a/src/ext-test/java/org/opentripplanner/ext/mapping/TransmodelMappingUtilTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/mapping/TransmodelMappingUtilTest.java
@@ -6,7 +6,7 @@
import java.util.List;
import org.junit.jupiter.api.Test;
import org.opentripplanner.apis.transmodel.mapping.TransitIdMapper;
-import org.opentripplanner.transit.model._data.TransitModelForTest;
+import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
import org.opentripplanner.transit.model.framework.FeedScopedId;
import org.opentripplanner.transit.model.organization.Agency;
@@ -33,7 +33,7 @@ public void resolveFixedFeedIdTest() {
Agency agency(String feedScope, int id) {
// We use the test builder to make sure we get back an agency with all required fields
- return TransitModelForTest
+ return TimetableRepositoryForTest
.agency("Agency " + id)
.copy()
.withId(new FeedScopedId(feedScope, Integer.toString(id)))
diff --git a/src/ext-test/java/org/opentripplanner/ext/realtimeresolver/RealtimeResolverTest.java b/application/src/ext-test/java/org/opentripplanner/ext/realtimeresolver/RealtimeResolverTest.java
similarity index 85%
rename from src/ext-test/java/org/opentripplanner/ext/realtimeresolver/RealtimeResolverTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/realtimeresolver/RealtimeResolverTest.java
index 21d5a7f1696..80e5d1b153b 100644
--- a/src/ext-test/java/org/opentripplanner/ext/realtimeresolver/RealtimeResolverTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/realtimeresolver/RealtimeResolverTest.java
@@ -3,8 +3,8 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.opentripplanner.framework.time.TimeUtils.time;
import static org.opentripplanner.model.plan.TestItineraryBuilder.newItinerary;
+import static org.opentripplanner.utils.time.TimeUtils.time;
import java.time.LocalDate;
import java.util.List;
@@ -23,21 +23,21 @@
import org.opentripplanner.routing.alertpatch.TransitAlert;
import org.opentripplanner.routing.impl.TransitAlertServiceImpl;
import org.opentripplanner.routing.services.TransitAlertService;
-import org.opentripplanner.transit.model._data.TransitModelForTest;
+import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
import org.opentripplanner.transit.model.network.Route;
import org.opentripplanner.transit.model.network.TripPattern;
import org.opentripplanner.transit.model.site.RegularStop;
import org.opentripplanner.transit.model.timetable.TripTimes;
import org.opentripplanner.transit.service.DefaultTransitService;
-import org.opentripplanner.transit.service.TransitModel;
+import org.opentripplanner.transit.service.TimetableRepository;
import org.opentripplanner.transit.service.TransitService;
class RealtimeResolverTest {
- private final TransitModelForTest testModel = TransitModelForTest.of();
+ private final TimetableRepositoryForTest testModel = TimetableRepositoryForTest.of();
- private final Route route1 = TransitModelForTest.route("route1").build();
- private final Route route2 = TransitModelForTest.route("route2").build();
+ private final Route route1 = TimetableRepositoryForTest.route("route1").build();
+ private final Route route2 = TimetableRepositoryForTest.route("route2").build();
private final RegularStop stop1 = testModel.stop("stop1", 1, 1).build();
private final RegularStop stop2 = testModel.stop("stop2", 2, 1).build();
@@ -90,7 +90,7 @@ void testPopulateLegsWithRealtimeNonTransit() {
.bus(route1, 1, time("11:20"), time("11:40"), Place.forStop(stop3))
.build();
- var model = new TransitModel();
+ var model = new TimetableRepository();
model.index();
var transitService = new DefaultTransitService(model);
@@ -129,9 +129,12 @@ void testPopulateLegsWithRealtimeKeepStaySeated() {
private static TripPattern delay(TripPattern pattern1, int seconds) {
var originalTimeTable = pattern1.getScheduledTimetable();
- var delayedTimetable = new Timetable(pattern1);
var delayedTripTimes = delay(originalTimeTable.getTripTimes(0), seconds);
- delayedTimetable.addTripTimes(delayedTripTimes);
+ var delayedTimetable = Timetable
+ .of()
+ .withTripPattern(pattern1)
+ .addTripTimes(delayedTripTimes)
+ .build();
return pattern1.copy().withScheduledTimeTable(delayedTimetable).build();
}
@@ -161,23 +164,27 @@ private static TransitService makeTransitService(
List patterns,
LocalDate serviceDate
) {
- var transitModel = new TransitModel();
+ var timetableRepository = new TimetableRepository();
CalendarServiceData calendarServiceData = new CalendarServiceData();
patterns.forEach(pattern -> {
- transitModel.addTripPattern(pattern.getId(), pattern);
+ timetableRepository.addTripPattern(pattern.getId(), pattern);
var serviceCode = pattern.getScheduledTimetable().getTripTimes(0).getServiceCode();
- transitModel.getServiceCodes().put(pattern.getId(), serviceCode);
+ timetableRepository.getServiceCodes().put(pattern.getId(), serviceCode);
calendarServiceData.putServiceDatesForServiceId(pattern.getId(), List.of(serviceDate));
});
- transitModel.updateCalendarServiceData(true, calendarServiceData, DataImportIssueStore.NOOP);
- transitModel.index();
+ timetableRepository.updateCalendarServiceData(
+ true,
+ calendarServiceData,
+ DataImportIssueStore.NOOP
+ );
+ timetableRepository.index();
- return new DefaultTransitService(transitModel) {
- final TransitAlertService alertService = new TransitAlertServiceImpl(transitModel);
+ return new DefaultTransitService(timetableRepository) {
+ final TransitAlertService alertService = new TransitAlertServiceImpl(timetableRepository);
@Override
public TransitAlertService getTransitAlertService() {
diff --git a/src/ext-test/java/org/opentripplanner/ext/restapi/mapping/EnumMapperTest.java b/application/src/ext-test/java/org/opentripplanner/ext/restapi/mapping/EnumMapperTest.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/restapi/mapping/EnumMapperTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/restapi/mapping/EnumMapperTest.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/restapi/model/ApiTravelOptionsMakerTest.java b/application/src/ext-test/java/org/opentripplanner/ext/restapi/model/ApiTravelOptionsMakerTest.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/restapi/model/ApiTravelOptionsMakerTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/restapi/model/ApiTravelOptionsMakerTest.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/restapi/model/ApiWalkStepTest.java b/application/src/ext-test/java/org/opentripplanner/ext/restapi/model/ApiWalkStepTest.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/restapi/model/ApiWalkStepTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/restapi/model/ApiWalkStepTest.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/restapi/parameter/ApiRequestModeTest.java b/application/src/ext-test/java/org/opentripplanner/ext/restapi/parameter/ApiRequestModeTest.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/restapi/parameter/ApiRequestModeTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/restapi/parameter/ApiRequestModeTest.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/restapi/parameter/QualifiedModeSetTest.java b/application/src/ext-test/java/org/opentripplanner/ext/restapi/parameter/QualifiedModeSetTest.java
similarity index 98%
rename from src/ext-test/java/org/opentripplanner/ext/restapi/parameter/QualifiedModeSetTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/restapi/parameter/QualifiedModeSetTest.java
index ad344713a74..7c3bf410192 100644
--- a/src/ext-test/java/org/opentripplanner/ext/restapi/parameter/QualifiedModeSetTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/restapi/parameter/QualifiedModeSetTest.java
@@ -231,7 +231,7 @@ void carHail() {
@Test
void carHailWithTransit() {
var modeSet = new QualifiedModeSet("CAR_HAIL,BUS,RAIL");
- assertEquals(Set.of(COACH, BUS, RAIL), Set.copyOf(modeSet.getTransitModes()));
+ assertEquals(Set.of(BUS, RAIL), Set.copyOf(modeSet.getTransitModes()));
assertEquals(WALK, modeSet.getRequestModes().directMode);
assertEquals(CAR_HAILING, modeSet.getRequestModes().accessMode);
diff --git a/src/ext-test/java/org/opentripplanner/ext/restapi/parameter/QualifiedModeTest.java b/application/src/ext-test/java/org/opentripplanner/ext/restapi/parameter/QualifiedModeTest.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/restapi/parameter/QualifiedModeTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/restapi/parameter/QualifiedModeTest.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/ridehailing/DecorateWithRideHailingTest.java b/application/src/ext-test/java/org/opentripplanner/ext/ridehailing/DecorateWithRideHailingTest.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/ridehailing/DecorateWithRideHailingTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/ridehailing/DecorateWithRideHailingTest.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/ridehailing/FailingRideHailingService.java b/application/src/ext-test/java/org/opentripplanner/ext/ridehailing/FailingRideHailingService.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/ridehailing/FailingRideHailingService.java
rename to application/src/ext-test/java/org/opentripplanner/ext/ridehailing/FailingRideHailingService.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/ridehailing/RideHailingAccessAdapterTest.java b/application/src/ext-test/java/org/opentripplanner/ext/ridehailing/RideHailingAccessAdapterTest.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/ridehailing/RideHailingAccessAdapterTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/ridehailing/RideHailingAccessAdapterTest.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/ridehailing/RideHailingAccessShifterTest.java b/application/src/ext-test/java/org/opentripplanner/ext/ridehailing/RideHailingAccessShifterTest.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/ridehailing/RideHailingAccessShifterTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/ridehailing/RideHailingAccessShifterTest.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/ridehailing/TestRideHailingService.java b/application/src/ext-test/java/org/opentripplanner/ext/ridehailing/TestRideHailingService.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/ridehailing/TestRideHailingService.java
rename to application/src/ext-test/java/org/opentripplanner/ext/ridehailing/TestRideHailingService.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/ridehailing/configure/RideHailingServicesModuleTest.java b/application/src/ext-test/java/org/opentripplanner/ext/ridehailing/configure/RideHailingServicesModuleTest.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/ridehailing/configure/RideHailingServicesModuleTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/ridehailing/configure/RideHailingServicesModuleTest.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/ridehailing/service/uber/UberServiceTest.java b/application/src/ext-test/java/org/opentripplanner/ext/ridehailing/service/uber/UberServiceTest.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/ridehailing/service/uber/UberServiceTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/ridehailing/service/uber/UberServiceTest.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/smoovebikerental/SmooveBikeRentalDataSourceTest.java b/application/src/ext-test/java/org/opentripplanner/ext/smoovebikerental/SmooveBikeRentalDataSourceTest.java
similarity index 95%
rename from src/ext-test/java/org/opentripplanner/ext/smoovebikerental/SmooveBikeRentalDataSourceTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/smoovebikerental/SmooveBikeRentalDataSourceTest.java
index 761971bc56f..84161c00484 100644
--- a/src/ext-test/java/org/opentripplanner/ext/smoovebikerental/SmooveBikeRentalDataSourceTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/smoovebikerental/SmooveBikeRentalDataSourceTest.java
@@ -7,6 +7,7 @@
import java.util.List;
import org.junit.jupiter.api.Test;
import org.opentripplanner.service.vehiclerental.model.VehicleRentalPlace;
+import org.opentripplanner.updater.vehicle_rental.datasources.params.RentalPickupType;
import org.opentripplanner.updater.spi.HttpHeaders;
class SmooveBikeRentalDataSourceTest {
@@ -18,7 +19,8 @@ void makeStation() {
"file:src/ext-test/resources/smoovebikerental/smoove.json",
null,
true,
- HttpHeaders.empty()
+ HttpHeaders.empty(),
+ RentalPickupType.ALL
)
);
assertTrue(source.update());
@@ -84,7 +86,8 @@ void makeStationWithoutOverloading() {
"file:src/ext-test/resources/smoovebikerental/smoove.json",
null,
false,
- HttpHeaders.empty()
+ HttpHeaders.empty(),
+ RentalPickupType.ALL
)
);
assertTrue(source.update());
diff --git a/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/DecorateConsolidatedStopNamesTest.java b/application/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/DecorateConsolidatedStopNamesTest.java
similarity index 51%
rename from src/ext-test/java/org/opentripplanner/ext/stopconsolidation/DecorateConsolidatedStopNamesTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/DecorateConsolidatedStopNamesTest.java
index 7f389bc41ec..bcbc84fc4b8 100644
--- a/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/DecorateConsolidatedStopNamesTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/DecorateConsolidatedStopNamesTest.java
@@ -5,17 +5,21 @@
import static org.opentripplanner.ext.stopconsolidation.TestStopConsolidationModel.STOP_D;
import static org.opentripplanner.model.plan.PlanTestConstants.T11_05;
import static org.opentripplanner.model.plan.PlanTestConstants.T11_12;
-import static org.opentripplanner.transit.model._data.TransitModelForTest.id;
+import static org.opentripplanner.transit.model._data.TimetableRepositoryForTest.id;
import java.util.List;
import org.junit.jupiter.api.Test;
import org.opentripplanner.ext.stopconsolidation.internal.DefaultStopConsolidationRepository;
import org.opentripplanner.ext.stopconsolidation.internal.DefaultStopConsolidationService;
import org.opentripplanner.ext.stopconsolidation.model.ConsolidatedStopGroup;
+import org.opentripplanner.ext.stopconsolidation.model.ConsolidatedStopLeg;
import org.opentripplanner.model.fare.FareProduct;
import org.opentripplanner.model.fare.FareProductUse;
+import org.opentripplanner.model.plan.Leg;
import org.opentripplanner.model.plan.Place;
import org.opentripplanner.model.plan.PlanTestConstants;
+import org.opentripplanner.model.plan.ScheduledTransitLeg;
+import org.opentripplanner.model.plan.StreetLeg;
import org.opentripplanner.model.plan.TestItineraryBuilder;
import org.opentripplanner.transit.model.basic.Money;
@@ -32,21 +36,18 @@ class DecorateConsolidatedStopNamesTest {
private static final List fpu = List.of(
new FareProductUse("c1a04702-1fb6-32d4-ba02-483bf68111ed", fp)
);
+ private static final List GROUPS = List.of(
+ new ConsolidatedStopGroup(STOP_C.getId(), List.of(STOP_D.getId()))
+ );
+ private static final Place PLACE_C = Place.forStop(STOP_C);
@Test
void changeNames() {
- var transitModel = TestStopConsolidationModel.buildTransitModel();
-
- var groups = List.of(new ConsolidatedStopGroup(STOP_C.getId(), List.of(STOP_D.getId())));
- var repo = new DefaultStopConsolidationRepository();
- repo.addGroups(groups);
-
- var service = new DefaultStopConsolidationService(repo, transitModel);
- var filter = new DecorateConsolidatedStopNames(service);
+ var filter = defaultFilter();
var itinerary = TestItineraryBuilder
- .newItinerary(Place.forStop(STOP_C))
- .bus(TestStopConsolidationModel.ROUTE, 1, T11_05, T11_12, Place.forStop(STOP_C))
+ .newItinerary(PLACE_C)
+ .bus(TestStopConsolidationModel.ROUTE, 1, T11_05, T11_12, PLACE_C)
.bus(1, T11_05, T11_12, PlanTestConstants.E)
.bus(1, T11_05, T11_12, PlanTestConstants.F)
.build();
@@ -62,4 +63,51 @@ void changeNames() {
// Check that the fares were carried over
assertEquals(fpu, updatedLeg.fareProducts());
}
+
+ @Test
+ void removeTransferAtConsolidatedStop() {
+ final var filter = defaultFilter();
+
+ var itinerary = TestItineraryBuilder
+ .newItinerary(PLACE_C)
+ .bus(TestStopConsolidationModel.ROUTE, 1, T11_05, T11_12, PLACE_C)
+ .walk(1, PLACE_C)
+ .bus(1, T11_05, T11_12, PlanTestConstants.F)
+ .build();
+
+ filter.decorate(itinerary);
+
+ var legs = itinerary.getLegs().stream().map(Leg::getClass).toList();
+ assertEquals(List.of(ConsolidatedStopLeg.class, ScheduledTransitLeg.class), legs);
+ }
+
+ @Test
+ void keepRegularTransfer() {
+ final var filter = defaultFilter();
+
+ var itinerary = TestItineraryBuilder
+ .newItinerary(PLACE_C)
+ .bus(TestStopConsolidationModel.ROUTE, 1, T11_05, T11_12, PLACE_C)
+ .walk(1, PlanTestConstants.E)
+ .bus(1, T11_05, T11_12, PlanTestConstants.F)
+ .build();
+
+ filter.decorate(itinerary);
+
+ var legs = itinerary.getLegs().stream().map(Leg::getClass).toList();
+ assertEquals(
+ List.of(ConsolidatedStopLeg.class, StreetLeg.class, ScheduledTransitLeg.class),
+ legs
+ );
+ }
+
+ private static DecorateConsolidatedStopNames defaultFilter() {
+ var timetableRepository = TestStopConsolidationModel.buildTimetableRepository();
+
+ var repo = new DefaultStopConsolidationRepository();
+ repo.addGroups(GROUPS);
+
+ var service = new DefaultStopConsolidationService(repo, timetableRepository);
+ return new DecorateConsolidatedStopNames(service);
+ }
}
diff --git a/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationModuleTest.java b/application/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationModuleTest.java
similarity index 80%
rename from src/ext-test/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationModuleTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationModuleTest.java
index 0df495d63d0..91f62c319f6 100644
--- a/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationModuleTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationModuleTest.java
@@ -20,13 +20,13 @@ class StopConsolidationModuleTest {
void replacePatterns() {
var groups = List.of(new ConsolidatedStopGroup(STOP_D.getId(), List.of(STOP_B.getId())));
- var transitModel = TestStopConsolidationModel.buildTransitModel();
- transitModel.addTripPattern(PATTERN.getId(), PATTERN);
+ var timetableRepository = TestStopConsolidationModel.buildTimetableRepository();
+ timetableRepository.addTripPattern(PATTERN.getId(), PATTERN);
var repo = new DefaultStopConsolidationRepository();
- var module = new StopConsolidationModule(transitModel, repo, groups);
+ var module = new StopConsolidationModule(timetableRepository, repo, groups);
module.buildGraph();
- var modifiedPattern = transitModel.getTripPatternForId(PATTERN.getId());
+ var modifiedPattern = timetableRepository.getTripPatternForId(PATTERN.getId());
assertFalse(modifiedPattern.getRoutingTripPattern().getPattern().sameAs(PATTERN));
assertFalse(modifiedPattern.sameAs(PATTERN));
@@ -37,7 +37,7 @@ void replacePatterns() {
.getStop(1);
assertEquals(modifiedStop, STOP_D);
- var patterns = List.copyOf(transitModel.getAllTripPatterns());
+ var patterns = List.copyOf(timetableRepository.getAllTripPatterns());
var stops = patterns.stream().map(TripPattern::getStops).toList();
assertEquals(List.of(List.of(STOP_A, STOP_D, STOP_C)), stops);
diff --git a/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationParserTest.java b/application/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationParserTest.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationParserTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationParserTest.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/TestStopConsolidationModel.java b/application/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/TestStopConsolidationModel.java
similarity index 63%
rename from src/ext-test/java/org/opentripplanner/ext/stopconsolidation/TestStopConsolidationModel.java
rename to application/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/TestStopConsolidationModel.java
index da0c1d6f61d..f763b520f5b 100644
--- a/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/TestStopConsolidationModel.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/TestStopConsolidationModel.java
@@ -1,9 +1,9 @@
package org.opentripplanner.ext.stopconsolidation;
-import static org.opentripplanner.transit.model._data.TransitModelForTest.id;
+import static org.opentripplanner.transit.model._data.TimetableRepositoryForTest.id;
import java.util.List;
-import org.opentripplanner.transit.model._data.TransitModelForTest;
+import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
import org.opentripplanner.transit.model.framework.Deduplicator;
import org.opentripplanner.transit.model.framework.FeedScopedId;
import org.opentripplanner.transit.model.network.Route;
@@ -11,26 +11,26 @@
import org.opentripplanner.transit.model.network.TripPattern;
import org.opentripplanner.transit.model.organization.Agency;
import org.opentripplanner.transit.model.site.RegularStop;
-import org.opentripplanner.transit.service.TransitModel;
+import org.opentripplanner.transit.service.TimetableRepository;
class TestStopConsolidationModel {
- private static final TransitModelForTest testModel = TransitModelForTest.of();
+ private static final TimetableRepositoryForTest testModel = TimetableRepositoryForTest.of();
public static final RegularStop STOP_A = testModel.stop("A").withCoordinate(1, 1).build();
public static final RegularStop STOP_B = testModel.stop("B").withCoordinate(1.1, 1.1).build();
public static final RegularStop STOP_C = testModel.stop("C").withCoordinate(1.2, 1.2).build();
- public static final StopPattern STOP_PATTERN = TransitModelForTest.stopPattern(
+ public static final StopPattern STOP_PATTERN = TimetableRepositoryForTest.stopPattern(
STOP_A,
STOP_B,
STOP_C
);
static final String SECONDARY_FEED_ID = "secondary";
- static final Agency AGENCY = TransitModelForTest
+ static final Agency AGENCY = TimetableRepositoryForTest
.agency("agency")
.copy()
.withId(new FeedScopedId(SECONDARY_FEED_ID, "agency"))
.build();
- static final Route ROUTE = TransitModelForTest
+ static final Route ROUTE = TimetableRepositoryForTest
.route(new FeedScopedId(SECONDARY_FEED_ID, "route-33"))
.withAgency(AGENCY)
.build();
@@ -45,9 +45,9 @@ class TestStopConsolidationModel {
.withStopPattern(STOP_PATTERN)
.build();
- static TransitModel buildTransitModel() {
- var stopModelBuilder = testModel.stopModelBuilder();
- List.of(STOP_A, STOP_B, STOP_C, STOP_D).forEach(stopModelBuilder::withRegularStop);
- return new TransitModel(stopModelBuilder.build(), new Deduplicator());
+ static TimetableRepository buildTimetableRepository() {
+ var siteRepositoryBuilder = testModel.siteRepositoryBuilder();
+ List.of(STOP_A, STOP_B, STOP_C, STOP_D).forEach(siteRepositoryBuilder::withRegularStop);
+ return new TimetableRepository(siteRepositoryBuilder.build(), new Deduplicator());
}
}
diff --git a/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/internal/DefaultStopConsolidationRepositoryTest.java b/application/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/internal/DefaultStopConsolidationRepositoryTest.java
similarity index 91%
rename from src/ext-test/java/org/opentripplanner/ext/stopconsolidation/internal/DefaultStopConsolidationRepositoryTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/internal/DefaultStopConsolidationRepositoryTest.java
index ac5eb6d66e4..7bf87b4c89c 100644
--- a/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/internal/DefaultStopConsolidationRepositoryTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/internal/DefaultStopConsolidationRepositoryTest.java
@@ -2,7 +2,7 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.opentripplanner.transit.model._data.TransitModelForTest.id;
+import static org.opentripplanner.transit.model._data.TimetableRepositoryForTest.id;
import java.util.List;
import org.junit.jupiter.api.Test;
diff --git a/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/internal/DefaultStopConsolidationServiceTest.java b/application/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/internal/DefaultStopConsolidationServiceTest.java
similarity index 80%
rename from src/ext-test/java/org/opentripplanner/ext/stopconsolidation/internal/DefaultStopConsolidationServiceTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/internal/DefaultStopConsolidationServiceTest.java
index b2fc356d111..1dd07a075ed 100644
--- a/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/internal/DefaultStopConsolidationServiceTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/internal/DefaultStopConsolidationServiceTest.java
@@ -3,7 +3,7 @@
import static org.junit.jupiter.api.Assertions.assertFalse;
import org.junit.jupiter.api.Test;
-import org.opentripplanner.transit.service.TransitModel;
+import org.opentripplanner.transit.service.TimetableRepository;
class DefaultStopConsolidationServiceTest {
@@ -11,7 +11,7 @@ class DefaultStopConsolidationServiceTest {
void isActive() {
var service = new DefaultStopConsolidationService(
new DefaultStopConsolidationRepository(),
- new TransitModel()
+ new TimetableRepository()
);
assertFalse(service.isActive());
}
diff --git a/src/ext-test/java/org/opentripplanner/ext/vectortiles/VectorTilesConfigDocTest.java b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/VectorTilesConfigDocTest.java
similarity index 97%
rename from src/ext-test/java/org/opentripplanner/ext/vectortiles/VectorTilesConfigDocTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/vectortiles/VectorTilesConfigDocTest.java
index 51e1738ff6c..3a057182a67 100644
--- a/src/ext-test/java/org/opentripplanner/ext/vectortiles/VectorTilesConfigDocTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/VectorTilesConfigDocTest.java
@@ -3,11 +3,11 @@
import static org.opentripplanner.framework.io.FileUtils.assertFileEquals;
import static org.opentripplanner.framework.io.FileUtils.readFile;
import static org.opentripplanner.framework.io.FileUtils.writeFile;
-import static org.opentripplanner.framework.text.MarkdownFormatter.HEADER_4;
import static org.opentripplanner.generate.doc.framework.DocsTestConstants.TEMPLATE_PATH;
import static org.opentripplanner.generate.doc.framework.DocsTestConstants.USER_DOC_PATH;
import static org.opentripplanner.generate.doc.framework.TemplateUtil.replaceSection;
import static org.opentripplanner.standalone.config.framework.json.JsonSupport.jsonNodeFromPath;
+import static org.opentripplanner.utils.text.MarkdownFormatter.HEADER_4;
import java.io.File;
import org.junit.jupiter.api.Test;
diff --git a/src/ext-test/java/org/opentripplanner/ext/vectortiles/VectorTilesResourceTest.java b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/VectorTilesResourceTest.java
similarity index 85%
rename from src/ext-test/java/org/opentripplanner/ext/vectortiles/VectorTilesResourceTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/vectortiles/VectorTilesResourceTest.java
index ff9509a8474..be379fb6fa6 100644
--- a/src/ext-test/java/org/opentripplanner/ext/vectortiles/VectorTilesResourceTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/VectorTilesResourceTest.java
@@ -8,7 +8,7 @@
import org.opentripplanner.TestServerContext;
import org.opentripplanner.routing.graph.Graph;
import org.opentripplanner.test.support.HttpForTest;
-import org.opentripplanner.transit.service.TransitModel;
+import org.opentripplanner.transit.service.TimetableRepository;
class VectorTilesResourceTest {
@@ -17,7 +17,7 @@ void tileJson() {
// the Grizzly request is awful to instantiate, using Mockito
var grizzlyRequest = Mockito.mock(Request.class);
var resource = new VectorTilesResource(
- TestServerContext.createServerContext(new Graph(), new TransitModel()),
+ TestServerContext.createServerContext(new Graph(), new TimetableRepository()),
grizzlyRequest,
"default"
);
diff --git a/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/LayerFiltersTest.java b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/LayerFiltersTest.java
new file mode 100644
index 00000000000..871a4b4c7da
--- /dev/null
+++ b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/LayerFiltersTest.java
@@ -0,0 +1,42 @@
+package org.opentripplanner.ext.vectortiles.layers;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.time.LocalDate;
+import java.util.List;
+import org.junit.jupiter.api.Test;
+import org.opentripplanner.transit.model._data.PatternTestModel;
+import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
+import org.opentripplanner.transit.model.network.TripPattern;
+import org.opentripplanner.transit.model.site.RegularStop;
+
+class LayerFiltersTest {
+
+ private static final RegularStop STOP = TimetableRepositoryForTest.of().stop("1").build();
+ private static final LocalDate DATE = LocalDate.of(2024, 9, 5);
+ private static final TripPattern PATTERN = PatternTestModel.pattern();
+
+ @Test
+ void includeStopWithinServiceWeek() {
+ var predicate = LayerFilters.buildCurrentServiceWeekPredicate(
+ s -> List.of(PATTERN),
+ trip -> List.of(DATE),
+ () -> DATE
+ );
+
+ assertTrue(predicate.test(STOP));
+ }
+
+ @Test
+ void excludeOutsideServiceWeek() {
+ var inThreeWeeks = DATE.plusDays(21);
+ var predicate = LayerFilters.buildCurrentServiceWeekPredicate(
+ s -> List.of(PATTERN),
+ trip -> List.of(inThreeWeeks),
+ () -> DATE
+ );
+
+ assertFalse(predicate.test(STOP));
+ }
+}
diff --git a/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/TestTransitService.java b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/TestTransitService.java
similarity index 52%
rename from src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/TestTransitService.java
rename to application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/TestTransitService.java
index d187b611ef3..37ea737626f 100644
--- a/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/TestTransitService.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/TestTransitService.java
@@ -1,23 +1,23 @@
package org.opentripplanner.ext.vectortiles.layers;
import java.util.Set;
-import org.opentripplanner.transit.model._data.TransitModelForTest;
+import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
import org.opentripplanner.transit.model.basic.TransitMode;
import org.opentripplanner.transit.model.network.Route;
import org.opentripplanner.transit.model.site.StopLocation;
import org.opentripplanner.transit.service.DefaultTransitService;
-import org.opentripplanner.transit.service.TransitModel;
+import org.opentripplanner.transit.service.TimetableRepository;
public class TestTransitService extends DefaultTransitService {
- public TestTransitService(TransitModel transitModel) {
- super(transitModel);
+ public TestTransitService(TimetableRepository timetableRepository) {
+ super(timetableRepository);
}
@Override
- public Set getRoutesForStop(StopLocation stop) {
+ public Set findRoutes(StopLocation stop) {
return Set.of(
- TransitModelForTest.route("1").withMode(TransitMode.RAIL).withGtfsType(100).build()
+ TimetableRepositoryForTest.route("1").withMode(TransitMode.RAIL).withGtfsType(100).build()
);
}
}
diff --git a/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopPropertyMapperTest.java b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopPropertyMapperTest.java
similarity index 68%
rename from src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopPropertyMapperTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopPropertyMapperTest.java
index 5387df91bca..a33a8b55286 100644
--- a/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopPropertyMapperTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopPropertyMapperTest.java
@@ -6,20 +6,22 @@
import java.util.List;
import java.util.Locale;
import org.junit.jupiter.api.Test;
-import org.opentripplanner.transit.model._data.TransitModelForTest;
+import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
import org.opentripplanner.transit.model.network.Route;
import org.opentripplanner.transit.model.site.AreaStop;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
class AreaStopPropertyMapperTest {
- private static final TransitModelForTest MODEL = new TransitModelForTest(StopModel.of());
+ private static final TimetableRepositoryForTest MODEL = new TimetableRepositoryForTest(
+ SiteRepository.of()
+ );
private static final AreaStop STOP = MODEL.areaStop("123").build();
- private static final Route ROUTE_WITH_COLOR = TransitModelForTest
+ private static final Route ROUTE_WITH_COLOR = TimetableRepositoryForTest
.route("123")
.withColor("ffffff")
.build();
- private static final Route ROUTE_WITHOUT_COLOR = TransitModelForTest.route("456").build();
+ private static final Route ROUTE_WITHOUT_COLOR = TimetableRepositoryForTest.route("456").build();
@Test
void map() {
diff --git a/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopsLayerBuilderTest.java b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopsLayerBuilderTest.java
similarity index 78%
rename from src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopsLayerBuilderTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopsLayerBuilderTest.java
index 2e6c4e16c40..cf5683b49b5 100644
--- a/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopsLayerBuilderTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopsLayerBuilderTest.java
@@ -15,9 +15,9 @@
import org.opentripplanner.transit.model.framework.FeedScopedId;
import org.opentripplanner.transit.model.site.AreaStop;
import org.opentripplanner.transit.service.DefaultTransitService;
-import org.opentripplanner.transit.service.StopModel;
-import org.opentripplanner.transit.service.StopModelBuilder;
-import org.opentripplanner.transit.service.TransitModel;
+import org.opentripplanner.transit.service.SiteRepository;
+import org.opentripplanner.transit.service.SiteRepositoryBuilder;
+import org.opentripplanner.transit.service.TimetableRepository;
class AreaStopsLayerBuilderTest {
@@ -46,25 +46,25 @@ class AreaStopsLayerBuilderTest {
.layers()
.getFirst();
- private final StopModelBuilder stopModelBuilder = StopModel.of();
+ private final SiteRepositoryBuilder siteRepositoryBuilder = SiteRepository.of();
- private final AreaStop AREA_STOP = stopModelBuilder
+ private final AreaStop AREA_STOP = siteRepositoryBuilder
.areaStop(ID)
.withName(NAME)
.withGeometry(Polygons.BERLIN)
.build();
- private final TransitModel transitModel = new TransitModel(
- stopModelBuilder.withAreaStop(AREA_STOP).build(),
+ private final TimetableRepository timetableRepository = new TimetableRepository(
+ siteRepositoryBuilder.withAreaStop(AREA_STOP).build(),
new Deduplicator()
);
@Test
void getAreaStops() {
- transitModel.index();
+ timetableRepository.index();
var subject = new AreaStopsLayerBuilder(
- new DefaultTransitService(transitModel),
+ new DefaultTransitService(timetableRepository),
LAYER_CONFIG,
Locale.ENGLISH
);
diff --git a/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stations/DigitransitStationPropertyMapperTest.java b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stations/DigitransitStationPropertyMapperTest.java
similarity index 68%
rename from src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stations/DigitransitStationPropertyMapperTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stations/DigitransitStationPropertyMapperTest.java
index da85285954d..f3b1c9e2126 100644
--- a/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stations/DigitransitStationPropertyMapperTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stations/DigitransitStationPropertyMapperTest.java
@@ -1,7 +1,7 @@
package org.opentripplanner.ext.vectortiles.layers.stations;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.opentripplanner.transit.model._data.TransitModelForTest.id;
+import static org.opentripplanner.transit.model._data.TimetableRepositoryForTest.id;
import java.util.HashMap;
import java.util.Locale;
@@ -9,20 +9,20 @@
import org.junit.jupiter.api.Test;
import org.opentripplanner.ext.vectortiles.layers.TestTransitService;
import org.opentripplanner.framework.i18n.I18NString;
-import org.opentripplanner.transit.model._data.TransitModelForTest;
+import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
import org.opentripplanner.transit.model.framework.Deduplicator;
import org.opentripplanner.transit.model.site.Station;
-import org.opentripplanner.transit.service.StopModel;
-import org.opentripplanner.transit.service.TransitModel;
+import org.opentripplanner.transit.service.SiteRepository;
+import org.opentripplanner.transit.service.TimetableRepository;
public class DigitransitStationPropertyMapperTest {
@Test
void map() {
var deduplicator = new Deduplicator();
- var transitModel = new TransitModel(new StopModel(), deduplicator);
- transitModel.index();
- var transitService = new TestTransitService(transitModel);
+ var timetableRepository = new TimetableRepository(new SiteRepository(), deduplicator);
+ timetableRepository.index();
+ var transitService = new TestTransitService(timetableRepository);
var mapper = DigitransitStationPropertyMapper.create(transitService, Locale.US);
@@ -32,7 +32,7 @@ void map() {
.withName(I18NString.of("A station"))
.build();
- TransitModelForTest.of().stop("stop-1").withParentStation(station).build();
+ TimetableRepositoryForTest.of().stop("stop-1").withParentStation(station).build();
Map map = new HashMap<>();
mapper.map(station).forEach(o -> map.put(o.key(), o.value()));
diff --git a/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stops/RealtimeStopsLayerTest.java b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stops/RealtimeStopsLayerTest.java
similarity index 84%
rename from src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stops/RealtimeStopsLayerTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stops/RealtimeStopsLayerTest.java
index 796b2a204da..0db19baf6e5 100644
--- a/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stops/RealtimeStopsLayerTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stops/RealtimeStopsLayerTest.java
@@ -1,8 +1,8 @@
package org.opentripplanner.ext.vectortiles.layers.stops;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.opentripplanner.framework.time.TimeUtils.time;
import static org.opentripplanner.model.plan.TestItineraryBuilder.newItinerary;
+import static org.opentripplanner.utils.time.TimeUtils.time;
import java.time.ZonedDateTime;
import java.util.HashMap;
@@ -21,14 +21,14 @@
import org.opentripplanner.routing.alertpatch.TransitAlert;
import org.opentripplanner.routing.impl.TransitAlertServiceImpl;
import org.opentripplanner.routing.services.TransitAlertService;
-import org.opentripplanner.transit.model._data.TransitModelForTest;
+import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
import org.opentripplanner.transit.model.framework.Deduplicator;
import org.opentripplanner.transit.model.framework.FeedScopedId;
import org.opentripplanner.transit.model.network.Route;
import org.opentripplanner.transit.model.site.RegularStop;
import org.opentripplanner.transit.service.DefaultTransitService;
-import org.opentripplanner.transit.service.StopModel;
-import org.opentripplanner.transit.service.TransitModel;
+import org.opentripplanner.transit.service.SiteRepository;
+import org.opentripplanner.transit.service.TimetableRepository;
public class RealtimeStopsLayerTest {
@@ -40,7 +40,7 @@ public void setUp() {
var name = I18NString.of("name");
var desc = I18NString.of("desc");
stop =
- StopModel
+ SiteRepository
.of()
.regularStop(new FeedScopedId("F", "name"))
.withName(name)
@@ -49,7 +49,7 @@ public void setUp() {
.withTimeZone(ZoneIds.HELSINKI)
.build();
stop2 =
- StopModel
+ SiteRepository
.of()
.regularStop(new FeedScopedId("F", "name"))
.withName(name)
@@ -62,11 +62,11 @@ public void setUp() {
@Test
void realtimeStopLayer() {
var deduplicator = new Deduplicator();
- var transitModel = new TransitModel(new StopModel(), deduplicator);
- transitModel.initTimeZone(ZoneIds.HELSINKI);
- transitModel.index();
- var transitService = new DefaultTransitService(transitModel) {
- final TransitAlertService alertService = new TransitAlertServiceImpl(transitModel);
+ var timetableRepository = new TimetableRepository(new SiteRepository(), deduplicator);
+ timetableRepository.initTimeZone(ZoneIds.HELSINKI);
+ timetableRepository.index();
+ var transitService = new DefaultTransitService(timetableRepository) {
+ final TransitAlertService alertService = new TransitAlertServiceImpl(timetableRepository);
@Override
public TransitAlertService getTransitAlertService() {
@@ -74,7 +74,7 @@ public TransitAlertService getTransitAlertService() {
}
};
- Route route = TransitModelForTest.route("route").build();
+ Route route = TimetableRepositoryForTest.route("route").build();
var itinerary = newItinerary(Place.forStop(stop), time("11:00"))
.bus(route, 1, time("11:05"), time("11:20"), Place.forStop(stop2))
.build();
diff --git a/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stops/StopsLayerTest.java b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stops/StopsLayerTest.java
similarity index 80%
rename from src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stops/StopsLayerTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stops/StopsLayerTest.java
index 7760eee13b8..d5d12576a1a 100644
--- a/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stops/StopsLayerTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stops/StopsLayerTest.java
@@ -1,7 +1,7 @@
package org.opentripplanner.ext.vectortiles.layers.stops;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.opentripplanner.transit.model._data.TransitModelForTest.id;
+import static org.opentripplanner.transit.model._data.TimetableRepositoryForTest.id;
import java.util.HashMap;
import java.util.Locale;
@@ -16,8 +16,8 @@
import org.opentripplanner.transit.model.site.RegularStop;
import org.opentripplanner.transit.model.site.Station;
import org.opentripplanner.transit.service.DefaultTransitService;
-import org.opentripplanner.transit.service.StopModel;
-import org.opentripplanner.transit.service.TransitModel;
+import org.opentripplanner.transit.service.SiteRepository;
+import org.opentripplanner.transit.service.TimetableRepository;
public class StopsLayerTest {
@@ -47,7 +47,7 @@ public class StopsLayerTest {
.withCoordinate(WgsCoordinate.GREENWICH)
.withName(I18NString.of("A Station"))
.build();
- private static final RegularStop STOP = StopModel
+ private static final RegularStop STOP = SiteRepository
.of()
.regularStop(new FeedScopedId("F", "name"))
.withName(NAME_TRANSLATIONS)
@@ -59,9 +59,9 @@ public class StopsLayerTest {
@Test
public void digitransitStopPropertyMapperTest() {
var deduplicator = new Deduplicator();
- var transitModel = new TransitModel(new StopModel(), deduplicator);
- transitModel.index();
- var transitService = new TestTransitService(transitModel);
+ var timetableRepository = new TimetableRepository(new SiteRepository(), deduplicator);
+ timetableRepository.index();
+ var transitService = new TestTransitService(timetableRepository);
DigitransitStopPropertyMapper mapper = DigitransitStopPropertyMapper.create(
transitService,
@@ -81,9 +81,9 @@ public void digitransitStopPropertyMapperTest() {
@Test
public void digitransitStopPropertyMapperTranslationTest() {
var deduplicator = new Deduplicator();
- var transitModel = new TransitModel(new StopModel(), deduplicator);
- transitModel.index();
- var transitService = new DefaultTransitService(transitModel);
+ var timetableRepository = new TimetableRepository(new SiteRepository(), deduplicator);
+ timetableRepository.index();
+ var transitService = new DefaultTransitService(timetableRepository);
DigitransitStopPropertyMapper mapper = DigitransitStopPropertyMapper.create(
transitService,
diff --git a/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingGroupsLayerTest.java b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingGroupsLayerTest.java
similarity index 85%
rename from src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingGroupsLayerTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingGroupsLayerTest.java
index 1beca037457..b8a88c11703 100644
--- a/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingGroupsLayerTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingGroupsLayerTest.java
@@ -19,19 +19,20 @@
import org.opentripplanner.framework.i18n.TranslatedString;
import org.opentripplanner.inspector.vector.KeyValue;
import org.opentripplanner.inspector.vector.LayerParameters;
-import org.opentripplanner.routing.graph.Graph;
-import org.opentripplanner.routing.vehicle_parking.VehicleParking;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingGroup;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingService;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingSpaces;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingState;
+import org.opentripplanner.service.vehicleparking.VehicleParkingService;
+import org.opentripplanner.service.vehicleparking.internal.DefaultVehicleParkingRepository;
+import org.opentripplanner.service.vehicleparking.internal.DefaultVehicleParkingService;
+import org.opentripplanner.service.vehicleparking.model.VehicleParking;
+import org.opentripplanner.service.vehicleparking.model.VehicleParkingGroup;
+import org.opentripplanner.service.vehicleparking.model.VehicleParkingSpaces;
+import org.opentripplanner.service.vehicleparking.model.VehicleParkingState;
import org.opentripplanner.standalone.config.routerconfig.VectorTileConfig;
-import org.opentripplanner.transit.model._data.TransitModelForTest;
+import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
import org.opentripplanner.transit.model.framework.FeedScopedId;
public class VehicleParkingGroupsLayerTest {
- private static final FeedScopedId ID = TransitModelForTest.id("id");
+ private static final FeedScopedId ID = TimetableRepositoryForTest.id("id");
private VehicleParkingGroup vehicleParkingGroup;
private VehicleParking vehicleParking;
@@ -90,9 +91,8 @@ public void setUp() {
@Test
public void vehicleParkingGroupGeometryTest() {
- Graph graph = new Graph();
- VehicleParkingService service = graph.getVehicleParkingService();
- service.updateVehicleParking(List.of(vehicleParking), List.of());
+ var repository = new DefaultVehicleParkingRepository();
+ repository.updateVehicleParking(List.of(vehicleParking), List.of());
var config =
"""
@@ -116,7 +116,7 @@ public void vehicleParkingGroupGeometryTest() {
var tiles = VectorTileConfig.mapVectorTilesParameters(nodeAdapter, "vectorTiles");
assertEquals(1, tiles.layers().size());
var builder = new VehicleParkingGroupsLayerBuilderWithPublicGeometry(
- graph,
+ new DefaultVehicleParkingService(repository),
tiles.layers().get(0),
Locale.US
);
@@ -171,11 +171,11 @@ private static class VehicleParkingGroupsLayerBuilderWithPublicGeometry
extends VehicleParkingGroupsLayerBuilder {
public VehicleParkingGroupsLayerBuilderWithPublicGeometry(
- Graph graph,
+ VehicleParkingService service,
LayerParameters layerParameters,
Locale locale
) {
- super(graph, layerParameters, locale);
+ super(service, layerParameters, locale);
}
@Override
diff --git a/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingsLayerTest.java b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingsLayerTest.java
similarity index 89%
rename from src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingsLayerTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingsLayerTest.java
index 14e96e2aa28..ae4386e9dd6 100644
--- a/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingsLayerTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingsLayerTest.java
@@ -23,19 +23,19 @@
import org.opentripplanner.framework.geometry.WgsCoordinate;
import org.opentripplanner.framework.i18n.TranslatedString;
import org.opentripplanner.model.calendar.openinghours.OpeningHoursCalendarService;
-import org.opentripplanner.routing.graph.Graph;
-import org.opentripplanner.routing.vehicle_parking.VehicleParking;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingService;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingSpaces;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingState;
+import org.opentripplanner.service.vehicleparking.internal.DefaultVehicleParkingRepository;
+import org.opentripplanner.service.vehicleparking.internal.DefaultVehicleParkingService;
+import org.opentripplanner.service.vehicleparking.model.VehicleParking;
+import org.opentripplanner.service.vehicleparking.model.VehicleParkingSpaces;
+import org.opentripplanner.service.vehicleparking.model.VehicleParkingState;
import org.opentripplanner.standalone.config.routerconfig.VectorTileConfig;
-import org.opentripplanner.transit.model._data.TransitModelForTest;
+import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
import org.opentripplanner.transit.model.framework.Deduplicator;
import org.opentripplanner.transit.model.framework.FeedScopedId;
public class VehicleParkingsLayerTest {
- private static final FeedScopedId ID = TransitModelForTest.id("id");
+ private static final FeedScopedId ID = TimetableRepositoryForTest.id("id");
private VehicleParking vehicleParking;
@@ -86,9 +86,8 @@ public void setUp() {
@Test
public void vehicleParkingGeometryTest() {
- Graph graph = new Graph();
- VehicleParkingService service = graph.getVehicleParkingService();
- service.updateVehicleParking(List.of(vehicleParking), List.of());
+ var repo = new DefaultVehicleParkingRepository();
+ repo.updateVehicleParking(List.of(vehicleParking), List.of());
var config =
"""
@@ -111,7 +110,7 @@ public void vehicleParkingGeometryTest() {
var nodeAdapter = newNodeAdapterForTest(config);
var tiles = VectorTileConfig.mapVectorTilesParameters(nodeAdapter, "vectorTiles");
assertEquals(1, tiles.layers().size());
- var builder = new VehicleParkingsLayerBuilder(graph, tiles.layers().getFirst(), Locale.US);
+ var builder = new VehicleParkingsLayerBuilder(new DefaultVehicleParkingService(repo), tiles.layers().getFirst(), Locale.US);
List geometries = builder.getGeometries(new Envelope(0.99, 1.01, 1.99, 2.01));
diff --git a/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/mapper/VehicleRentalLayerTest.java b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/mapper/VehicleRentalLayerTest.java
similarity index 99%
rename from src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/mapper/VehicleRentalLayerTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/mapper/VehicleRentalLayerTest.java
index 984d4927041..45a4ab30744 100644
--- a/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/mapper/VehicleRentalLayerTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/mapper/VehicleRentalLayerTest.java
@@ -8,7 +8,6 @@
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
-import javax.annotation.Nonnull;
import org.junit.jupiter.api.Test;
import org.opentripplanner.framework.i18n.NonLocalizedString;
import org.opentripplanner.framework.i18n.TranslatedString;
@@ -114,7 +113,6 @@ public void realtimeStation() {
assertEquals(3, map.get("spacesAvailable"));
}
- @Nonnull
private static RentalVehicleType vehicleType(RentalFormFactor formFactor) {
return new RentalVehicleType(
new FeedScopedId("1", formFactor.name()),
diff --git a/src/ext-test/java/org/opentripplanner/ext/vehicleparking/bikeep/BikeepUpdaterTest.java b/application/src/ext-test/java/org/opentripplanner/ext/vehicleparking/bikeep/BikeepUpdaterTest.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/vehicleparking/bikeep/BikeepUpdaterTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/vehicleparking/bikeep/BikeepUpdaterTest.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/vehicleparking/bikely/BikelyUpdaterTest.java b/application/src/ext-test/java/org/opentripplanner/ext/vehicleparking/bikely/BikelyUpdaterTest.java
similarity index 96%
rename from src/ext-test/java/org/opentripplanner/ext/vehicleparking/bikely/BikelyUpdaterTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/vehicleparking/bikely/BikelyUpdaterTest.java
index 569db85f33b..66e0a0fda9a 100644
--- a/src/ext-test/java/org/opentripplanner/ext/vehicleparking/bikely/BikelyUpdaterTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/vehicleparking/bikely/BikelyUpdaterTest.java
@@ -8,7 +8,7 @@
import java.time.Duration;
import java.util.Locale;
import org.junit.jupiter.api.Test;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingState;
+import org.opentripplanner.service.vehicleparking.model.VehicleParkingState;
import org.opentripplanner.test.support.ResourceLoader;
import org.opentripplanner.transit.model.basic.Locales;
import org.opentripplanner.transit.model.framework.FeedScopedId;
diff --git a/src/ext-test/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkUpdaterTest.java b/application/src/ext-test/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkUpdaterTest.java
similarity index 98%
rename from src/ext-test/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkUpdaterTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkUpdaterTest.java
index 2226a988d20..fd584951586 100644
--- a/src/ext-test/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkUpdaterTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkUpdaterTest.java
@@ -14,7 +14,7 @@
import org.opentripplanner._support.time.ZoneIds;
import org.opentripplanner.model.calendar.openinghours.OpeningHoursCalendarService;
import org.opentripplanner.model.calendar.openinghours.OsmOpeningHoursSupport;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingState;
+import org.opentripplanner.service.vehicleparking.model.VehicleParkingState;
import org.opentripplanner.test.support.ResourceLoader;
import org.opentripplanner.transit.model.framework.Deduplicator;
diff --git a/src/ext-test/java/org/opentripplanner/ext/vehicleparking/parkapi/ParkAPIUpdaterTest.java b/application/src/ext-test/java/org/opentripplanner/ext/vehicleparking/parkapi/ParkAPIUpdaterTest.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/vehicleparking/parkapi/ParkAPIUpdaterTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/vehicleparking/parkapi/ParkAPIUpdaterTest.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/vehicleparking/sirifm/SiriFmUpdaterTest.java b/application/src/ext-test/java/org/opentripplanner/ext/vehicleparking/sirifm/SiriFmUpdaterTest.java
similarity index 100%
rename from src/ext-test/java/org/opentripplanner/ext/vehicleparking/sirifm/SiriFmUpdaterTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/vehicleparking/sirifm/SiriFmUpdaterTest.java
diff --git a/src/ext-test/java/org/opentripplanner/ext/vehiclerentalservicedirectory/generatedoc/VehicleRentalServiceDirectoryConfigDocTest.java b/application/src/ext-test/java/org/opentripplanner/ext/vehiclerentalservicedirectory/generatedoc/VehicleRentalServiceDirectoryConfigDocTest.java
similarity index 97%
rename from src/ext-test/java/org/opentripplanner/ext/vehiclerentalservicedirectory/generatedoc/VehicleRentalServiceDirectoryConfigDocTest.java
rename to application/src/ext-test/java/org/opentripplanner/ext/vehiclerentalservicedirectory/generatedoc/VehicleRentalServiceDirectoryConfigDocTest.java
index 2afcd95949c..06d75073029 100644
--- a/src/ext-test/java/org/opentripplanner/ext/vehiclerentalservicedirectory/generatedoc/VehicleRentalServiceDirectoryConfigDocTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/vehiclerentalservicedirectory/generatedoc/VehicleRentalServiceDirectoryConfigDocTest.java
@@ -4,13 +4,13 @@
import static org.opentripplanner.framework.io.FileUtils.assertFileEquals;
import static org.opentripplanner.framework.io.FileUtils.readFile;
import static org.opentripplanner.framework.io.FileUtils.writeFile;
-import static org.opentripplanner.framework.text.MarkdownFormatter.HEADER_4;
import static org.opentripplanner.generate.doc.framework.DocsTestConstants.TEMPLATE_PATH;
import static org.opentripplanner.generate.doc.framework.DocsTestConstants.USER_DOC_PATH;
import static org.opentripplanner.generate.doc.framework.TemplateUtil.replaceJsonExample;
import static org.opentripplanner.generate.doc.framework.TemplateUtil.replaceParametersDetails;
import static org.opentripplanner.generate.doc.framework.TemplateUtil.replaceParametersTable;
import static org.opentripplanner.standalone.config.framework.json.JsonSupport.jsonNodeFromResource;
+import static org.opentripplanner.utils.text.MarkdownFormatter.HEADER_4;
import java.io.File;
import org.junit.jupiter.api.Test;
diff --git a/src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-invalid-test-gtfs/emissions.txt b/application/src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-invalid-test-gtfs/emissions.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-invalid-test-gtfs/emissions.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-invalid-test-gtfs/emissions.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-invalid-test-gtfs/feed_info.txt b/application/src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-invalid-test-gtfs/feed_info.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-invalid-test-gtfs/feed_info.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-invalid-test-gtfs/feed_info.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-missing-test-gtfs.zip b/application/src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-missing-test-gtfs.zip
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-missing-test-gtfs.zip
rename to application/src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-missing-test-gtfs.zip
diff --git a/src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-missing-test-gtfs/feed_info.txt b/application/src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-missing-test-gtfs/feed_info.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-missing-test-gtfs/feed_info.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-missing-test-gtfs/feed_info.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-test-gtfs.zip b/application/src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-test-gtfs.zip
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-test-gtfs.zip
rename to application/src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-test-gtfs.zip
diff --git a/src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-test-gtfs/emissions.txt b/application/src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-test-gtfs/emissions.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-test-gtfs/emissions.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-test-gtfs/emissions.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-test-gtfs/feed_info.txt b/application/src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-test-gtfs/feed_info.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-test-gtfs/feed_info.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/emissions/emissions-test-gtfs/feed_info.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/agency.txt b/application/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/agency.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/agency.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/agency.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/booking_rules.txt b/application/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/booking_rules.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/booking_rules.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/booking_rules.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/calendar.txt b/application/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/calendar.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/calendar.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/calendar.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/calendar_attributes.txt b/application/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/calendar_attributes.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/calendar_attributes.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/calendar_attributes.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/calendar_dates.txt b/application/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/calendar_dates.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/calendar_dates.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/calendar_dates.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/feed_info.txt b/application/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/feed_info.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/feed_info.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/feed_info.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/location_groups.txt b/application/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/location_groups.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/location_groups.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/location_groups.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/locations.geojson b/application/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/locations.geojson
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/locations.geojson
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/locations.geojson
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/routes.txt b/application/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/routes.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/routes.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/routes.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/shapes.txt b/application/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/shapes.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/shapes.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/shapes.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/stop_times.txt b/application/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/stop_times.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/stop_times.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/stop_times.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/stops.txt b/application/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/stops.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/stops.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/stops.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/trips.txt b/application/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/trips.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/trips.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/aspen-flex-on-demand.gtfs/trips.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/cobb-county.filtered.osm.pbf b/application/src/ext-test/resources/org/opentripplanner/ext/flex/cobb-county.filtered.osm.pbf
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/cobb-county.filtered.osm.pbf
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/cobb-county.filtered.osm.pbf
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-bus-30-only.gtfs.zip b/application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-bus-30-only.gtfs.zip
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-bus-30-only.gtfs.zip
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-bus-30-only.gtfs.zip
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/agency.txt b/application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/agency.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/agency.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/agency.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/booking_rules.txt b/application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/booking_rules.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/booking_rules.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/booking_rules.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/calendar.txt b/application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/calendar.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/calendar.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/calendar.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/fare_attributes.txt b/application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/fare_attributes.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/fare_attributes.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/fare_attributes.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/fare_rules.txt b/application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/fare_rules.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/fare_rules.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/fare_rules.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/feed_info.txt b/application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/feed_info.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/feed_info.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/feed_info.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/location_groups.txt b/application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/location_groups.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/location_groups.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/location_groups.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/locations.geojson b/application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/locations.geojson
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/locations.geojson
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/locations.geojson
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/routes.txt b/application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/routes.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/routes.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/routes.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/shapes.txt b/application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/shapes.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/shapes.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/shapes.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/stop_times.txt b/application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/stop_times.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/stop_times.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/stop_times.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/stops.txt b/application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/stops.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/stops.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/stops.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/trips.txt b/application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/trips.txt
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/trips.txt
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/cobblinc-scheduled-deviated-flex.gtfs/trips.txt
diff --git a/src/ext-test/resources/org/opentripplanner/ext/flex/marta-bus-856-only.gtfs.zip b/application/src/ext-test/resources/org/opentripplanner/ext/flex/marta-bus-856-only.gtfs.zip
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/flex/marta-bus-856-only.gtfs.zip
rename to application/src/ext-test/resources/org/opentripplanner/ext/flex/marta-bus-856-only.gtfs.zip
diff --git a/src/ext-test/resources/org/opentripplanner/ext/stopconsolidation/consolidated-stops.csv b/application/src/ext-test/resources/org/opentripplanner/ext/stopconsolidation/consolidated-stops.csv
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/stopconsolidation/consolidated-stops.csv
rename to application/src/ext-test/resources/org/opentripplanner/ext/stopconsolidation/consolidated-stops.csv
diff --git a/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/bikeep/bikeep.json b/application/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/bikeep/bikeep.json
similarity index 73%
rename from src/ext-test/resources/org/opentripplanner/ext/vehicleparking/bikeep/bikeep.json
rename to application/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/bikeep/bikeep.json
index 6f164077ee1..0ffa202bd11 100644
--- a/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/bikeep/bikeep.json
+++ b/application/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/bikeep/bikeep.json
@@ -5,22 +5,14 @@
"type": "Feature",
"geometry": {
"type": "Point",
- "coordinates": [
- 4.996344,
- 60.405932
- ]
+ "coordinates": [4.996344, 60.405932]
},
"properties": {
"code": "224121",
"label": "Ågotnes Terminal",
"name": "#224121 Ågotnes Terminal",
"address": "Ågotnes",
- "tags": [
- "FREE",
- "BIKE",
- "PRIVATE",
- "BOOKABLE"
- ],
+ "tags": ["FREE", "BIKE", "PRIVATE", "BOOKABLE"],
"icon": {
"png": "",
"png2x": "",
@@ -38,22 +30,14 @@
"type": "Feature",
"geometry": {
"type": "Point",
- "coordinates": [
- 10.666802,
- 59.436443
- ]
+ "coordinates": [10.666802, 59.436443]
},
"properties": {
"code": "226261",
"label": "Gågata Østre",
"name": "#226261 Gågata Østre",
"address": "Dronningens gate, Moss",
- "tags": [
- "FREE",
- "PRIVATE",
- "BOOKABLE",
- "BIKE"
- ],
+ "tags": ["FREE", "PRIVATE", "BOOKABLE", "BIKE"],
"icon": {
"png": "",
"png2x": "",
@@ -71,22 +55,14 @@
"type": "Feature",
"geometry": {
"type": "Point",
- "coordinates": [
- 10.661444,
- 59.435401
- ]
+ "coordinates": [10.661444, 59.435401]
},
"properties": {
"code": "226259",
"label": "Gågata Vestre",
"name": "#226259 Gågata Vestre",
"address": "Dronningens gate, Moss",
- "tags": [
- "BIKE",
- "FREE",
- "PRIVATE",
- "BOOKABLE"
- ],
+ "tags": ["BIKE", "FREE", "PRIVATE", "BOOKABLE"],
"icon": {
"png": "",
"png2x": "",
@@ -104,22 +80,14 @@
"type": "Feature",
"geometry": {
"type": "Point",
- "coordinates": [
- 10.774958,
- 59.946535
- ]
+ "coordinates": [10.774958, 59.946535]
},
"properties": {
"code": "223443",
"label": "Storo Storsenter",
"name": "#223443 Storo Storsenter",
"address": "Norway",
- "tags": [
- "BIKE",
- "PRIVATE",
- "BOOKABLE",
- "FREE"
- ],
+ "tags": ["BIKE", "PRIVATE", "BOOKABLE", "FREE"],
"icon": {
"png": "https://assets.bikeep.com/locations/icons/bikeep.png",
"png2x": "https://assets.bikeep.com/locations/icons/bikeep@2x.png",
@@ -137,23 +105,14 @@
"type": "Feature",
"geometry": {
"type": "Point",
- "coordinates": [
- 10.501222,
- 59.914578
- ]
+ "coordinates": [10.501222, 59.914578]
},
"properties": {
"code": "224519",
"label": "Kolsås Sykkelhotell",
"name": "#224519 Kolsås Sykkelhotell",
"address": "Norway",
- "tags": [
- "PRIVATE",
- "FREE",
- "BOOKABLE",
- "BIKE_HOUSE",
- "BIKE"
- ],
+ "tags": ["PRIVATE", "FREE", "BOOKABLE", "BIKE_HOUSE", "BIKE"],
"icon": {
"png": "https://assets.bikeep.com/locations/icons/bikeep.png",
"png2x": "https://assets.bikeep.com/locations/icons/bikeep@2x.png",
@@ -171,22 +130,14 @@
"type": "Feature",
"geometry": {
"type": "Point",
- "coordinates": [
- 10.663716,
- 59.435539
- ]
+ "coordinates": [10.663716, 59.435539]
},
"properties": {
"code": "226260",
"label": "Gågata Midtre",
"name": "#226260 Gågata Midtre",
"address": "Dronningens gate, Moss",
- "tags": [
- "FREE",
- "BOOKABLE",
- "PRIVATE",
- "BIKE"
- ],
+ "tags": ["FREE", "BOOKABLE", "PRIVATE", "BIKE"],
"icon": {
"png": "",
"png2x": "",
@@ -204,22 +155,14 @@
"type": "Feature",
"geometry": {
"type": "Point",
- "coordinates": [
- 5.320344,
- 60.463246
- ]
+ "coordinates": [5.320344, 60.463246]
},
"properties": {
"code": "226266",
"label": "Åsane Sykkelhus",
"name": "#226266 Åsane Sykkelhus",
"address": "Åsane terminal",
- "tags": [
- "BOOKABLE",
- "BIKE",
- "FREE",
- "PRIVATE"
- ],
+ "tags": ["BOOKABLE", "BIKE", "FREE", "PRIVATE"],
"icon": {
"png": "",
"png2x": "",
@@ -237,22 +180,14 @@
"type": "Feature",
"geometry": {
"type": "Point",
- "coordinates": [
- 10.521137,
- 59.889181
- ]
+ "coordinates": [10.521137, 59.889181]
},
"properties": {
"code": "224112",
"label": "Sandvika Storsenter Kjørbokollen",
"name": "#224112 Sandvika Storsenter Kjørbokollen",
"address": "Brodtkorbsgate 7, Sandvika",
- "tags": [
- "PRIVATE",
- "FREE",
- "BIKE",
- "BOOKABLE"
- ],
+ "tags": ["PRIVATE", "FREE", "BIKE", "BOOKABLE"],
"icon": {
"png": "",
"png2x": "",
@@ -270,22 +205,14 @@
"type": "Feature",
"geometry": {
"type": "Point",
- "coordinates": [
- 10.520496,
- 59.887412
- ]
+ "coordinates": [10.520496, 59.887412]
},
"properties": {
"code": "224111",
"label": "Sandvika Storsenter Nytorget",
"name": "#224111 Sandvika Storsenter Nytorget",
"address": "Sandviksveien 176, Sandvika",
- "tags": [
- "BIKE",
- "BOOKABLE",
- "PRIVATE",
- "FREE"
- ],
+ "tags": ["BIKE", "BOOKABLE", "PRIVATE", "FREE"],
"icon": {
"png": "",
"png2x": "",
@@ -300,4 +227,4 @@
}
}
]
-}
\ No newline at end of file
+}
diff --git a/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/bikely/bikely.json b/application/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/bikely/bikely.json
similarity index 99%
rename from src/ext-test/resources/org/opentripplanner/ext/vehicleparking/bikely/bikely.json
rename to application/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/bikely/bikely.json
index a3e1e9e2e57..172220650aa 100644
--- a/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/bikely/bikely.json
+++ b/application/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/bikely/bikely.json
@@ -321,4 +321,4 @@
"id": 26
}
]
-}
\ No newline at end of file
+}
diff --git a/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/hslpark/facilities.json b/application/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/hslpark/facilities.json
similarity index 77%
rename from src/ext-test/resources/org/opentripplanner/ext/vehicleparking/hslpark/facilities.json
rename to application/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/hslpark/facilities.json
index 0bca41f3bf6..c9305c556c3 100644
--- a/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/hslpark/facilities.json
+++ b/application/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/hslpark/facilities.json
@@ -15,66 +15,25 @@
}
},
"bbox": [
- 24.80034603935215,
- 60.17480881241633,
- 24.80808017426278,
+ 24.80034603935215, 60.17480881241633, 24.80808017426278,
60.17714686717807
],
"type": "Polygon",
"coordinates": [
[
- [
- 24.805922082319398,
- 60.17671175792864
- ],
- [
- 24.80745024472255,
- 60.176920611087695
- ],
- [
- 24.80808017426278,
- 60.17588213365369
- ],
- [
- 24.800591011951123,
- 60.17480881241633
- ],
- [
- 24.80034603935215,
- 60.17519753280732
- ],
- [
- 24.80281909606564,
- 60.17555724011572
- ],
- [
- 24.802492465933668,
- 60.17611419849894
- ],
- [
- 24.803798986461572,
- 60.176299849194635
- ],
- [
- 24.803460690967746,
- 60.176874199389374
- ],
- [
- 24.805478798568853,
- 60.17714686717807
- ],
- [
- 24.805805428700822,
- 60.17661313236411
- ],
- [
- 24.805945413043094,
- 60.17663633840593
- ],
- [
- 24.805922082319398,
- 60.17671175792864
- ]
+ [24.805922082319398, 60.17671175792864],
+ [24.80745024472255, 60.176920611087695],
+ [24.80808017426278, 60.17588213365369],
+ [24.800591011951123, 60.17480881241633],
+ [24.80034603935215, 60.17519753280732],
+ [24.80281909606564, 60.17555724011572],
+ [24.802492465933668, 60.17611419849894],
+ [24.803798986461572, 60.176299849194635],
+ [24.803460690967746, 60.176874199389374],
+ [24.805478798568853, 60.17714686717807],
+ [24.805805428700822, 60.17661313236411],
+ [24.805945413043094, 60.17663633840593],
+ [24.805922082319398, 60.17671175792864]
]
]
},
@@ -87,9 +46,7 @@
"builtCapacity": {
"CAR": 1365
},
- "usages": [
- "PARK_AND_RIDE"
- ],
+ "usages": ["PARK_AND_RIDE"],
"services": [
"LIGHTING",
"COVERED",
@@ -97,9 +54,7 @@
"PAYMENT_AT_GATE",
"ENGINE_IGNITION_AID"
],
- "authenticationMethods": [
- "HSL_TICKET"
- ],
+ "authenticationMethods": ["HSL_TICKET"],
"pricing": [
{
"usage": "PARK_AND_RIDE",
@@ -211,9 +166,7 @@
"en": "1. tunti 2 € / 60 min, seuraavat tunnit 1 € / 30 min"
},
"url": null,
- "paymentMethods": [
- "DEBIT_CARD"
- ]
+ "paymentMethods": ["DEBIT_CARD"]
},
"openingHours": {
"openNow": true,
@@ -264,38 +217,18 @@
}
},
"bbox": [
- 24.977034456273202,
- 60.186015498799264,
- 24.981894619008195,
+ 24.977034456273202, 60.186015498799264, 24.981894619008195,
60.18802910674705
],
"type": "Polygon",
"coordinates": [
[
- [
- 24.977731830617074,
- 60.18802910674705
- ],
- [
- 24.977034456273202,
- 60.186674268899424
- ],
- [
- 24.979169494649057,
- 60.186015498799264
- ],
- [
- 24.981894619008195,
- 60.187397033842615
- ],
- [
- 24.98158348276247,
- 60.187589057277705
- ],
- [
- 24.977731830617074,
- 60.18802910674705
- ]
+ [24.977731830617074, 60.18802910674705],
+ [24.977034456273202, 60.186674268899424],
+ [24.979169494649057, 60.186015498799264],
+ [24.981894619008195, 60.187397033842615],
+ [24.98158348276247, 60.187589057277705],
+ [24.977731830617074, 60.18802910674705]
]
]
},
@@ -310,9 +243,7 @@
"CAR": 300,
"ELECTRIC_CAR": 200
},
- "usages": [
- "PARK_AND_RIDE"
- ],
+ "usages": ["PARK_AND_RIDE"],
"services": [
"LIGHTING",
"COVERED",
@@ -320,9 +251,7 @@
"PAYMENT_AT_GATE",
"ENGINE_IGNITION_AID"
],
- "authenticationMethods": [
- "HSL_TICKET"
- ],
+ "authenticationMethods": ["HSL_TICKET"],
"pricing": [
{
"usage": "PARK_AND_RIDE",
@@ -383,12 +312,7 @@
"en": "Electric car parking 2 € + 0,15€ / kWh"
},
"url": null,
- "paymentMethods": [
- "COINS",
- "NOTES",
- "DEBIT_CARD",
- "OTHER"
- ]
+ "paymentMethods": ["COINS", "NOTES", "DEBIT_CARD", "OTHER"]
},
"openingHours": {
"openNow": false,
@@ -423,34 +347,17 @@
}
},
"bbox": [
- 24.81405168771744,
- 60.21851030940037,
- 24.81410264968872,
+ 24.81405168771744, 60.21851030940037, 24.81410264968872,
60.21875543991248
],
"type": "Polygon",
"coordinates": [
[
- [
- 24.81406778097153,
- 60.21875543991248
- ],
- [
- 24.81405168771744,
- 60.21851030940037
- ],
- [
- 24.81408387422562,
- 60.21851030940037
- ],
- [
- 24.81410264968872,
- 60.21875543991248
- ],
- [
- 24.81406778097153,
- 60.21875543991248
- ]
+ [24.81406778097153, 60.21875543991248],
+ [24.81405168771744, 60.21851030940037],
+ [24.81408387422562, 60.21851030940037],
+ [24.81410264968872, 60.21875543991248],
+ [24.81406778097153, 60.21875543991248]
]
]
},
@@ -463,13 +370,8 @@
"builtCapacity": {
"BICYCLE": 80
},
- "usages": [
- "PARK_AND_RIDE"
- ],
- "services": [
- "LIGHTING",
- "BICYCLE_FRAME_LOCK"
- ],
+ "usages": ["PARK_AND_RIDE"],
+ "services": ["LIGHTING", "BICYCLE_FRAME_LOCK"],
"authenticationMethods": [],
"pricing": [
{
@@ -565,39 +467,16 @@
"name": "EPSG:4326"
}
},
- "bbox": [
- 25.11001,
- 60.237897,
- 25.110917,
- 60.238254
- ],
+ "bbox": [25.11001, 60.237897, 25.110917, 60.238254],
"type": "Polygon",
"coordinates": [
[
- [
- 25.110053,
- 60.238253
- ],
- [
- 25.11001,
- 60.237953
- ],
- [
- 25.110106,
- 60.237905
- ],
- [
- 25.110917,
- 60.237897
- ],
- [
- 25.110912,
- 60.238254
- ],
- [
- 25.110053,
- 60.238253
- ]
+ [25.110053, 60.238253],
+ [25.11001, 60.237953],
+ [25.110106, 60.237905],
+ [25.110917, 60.237897],
+ [25.110912, 60.238254],
+ [25.110053, 60.238253]
]
]
},
@@ -610,9 +489,7 @@
"DISABLED": 2,
"CAR": 80
},
- "usages": [
- "PARK_AND_RIDE"
- ],
+ "usages": ["PARK_AND_RIDE"],
"pricing": [
{
"usage": "PARK_AND_RIDE",
diff --git a/application/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/hslpark/hubs.json b/application/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/hslpark/hubs.json
new file mode 100644
index 00000000000..a05886513df
--- /dev/null
+++ b/application/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/hslpark/hubs.json
@@ -0,0 +1,65 @@
+{
+ "results": [
+ {
+ "id": 321,
+ "name": {
+ "fi": "HubYksi",
+ "sv": "HubEn",
+ "en": "HubOne"
+ },
+ "location": {
+ "crs": {
+ "type": "name",
+ "properties": {
+ "name": "EPSG:4326"
+ }
+ },
+ "type": "Point",
+ "coordinates": [24.804913, 60.176064]
+ },
+ "facilityIds": [990, 1037],
+ "address": {
+ "streetAddress": null,
+ "postalCode": null,
+ "city": {
+ "fi": "Espoo",
+ "sv": "Esbo",
+ "en": "Espoo"
+ }
+ },
+ "modifiedAt": null,
+ "modifiedBy": null
+ },
+ {
+ "id": 129,
+ "name": {
+ "fi": "HubKaksi",
+ "sv": "HubTvå",
+ "en": "HubTwo"
+ },
+ "location": {
+ "crs": {
+ "type": "name",
+ "properties": {
+ "name": "EPSG:4326"
+ }
+ },
+ "type": "Point",
+ "coordinates": [25.101168, 60.45744]
+ },
+ "facilityIds": [894],
+ "address": {
+ "streetAddress": null,
+ "postalCode": null,
+ "city": {
+ "fi": "Järvenpää",
+ "sv": "Träskända",
+ "en": "Järvenpää"
+ }
+ },
+ "modifiedAt": null,
+ "modifiedBy": null
+ }
+ ],
+ "hasMore": false
+}
diff --git a/application/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/hslpark/utilizations.json b/application/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/hslpark/utilizations.json
new file mode 100644
index 00000000000..dc9772682c4
--- /dev/null
+++ b/application/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/hslpark/utilizations.json
@@ -0,0 +1,20 @@
+[
+ {
+ "facilityId": 990,
+ "capacityType": "CAR",
+ "usage": "PARK_AND_RIDE",
+ "timestamp": "2021-12-21T08:42:39.000+02:00",
+ "spacesAvailable": 600,
+ "capacity": 1365,
+ "openNow": true
+ },
+ {
+ "facilityId": 894,
+ "capacityType": "BICYCLE",
+ "usage": "PARK_AND_RIDE",
+ "timestamp": "2019-12-31T11:58:13.000+02:00",
+ "spacesAvailable": 43,
+ "capacity": 80,
+ "openNow": true
+ }
+]
diff --git a/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/parkapi/herrenberg.json b/application/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/parkapi/herrenberg.json
similarity index 99%
rename from src/ext-test/resources/org/opentripplanner/ext/vehicleparking/parkapi/herrenberg.json
rename to application/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/parkapi/herrenberg.json
index e351bdc7fd0..b21ca985af1 100644
--- a/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/parkapi/herrenberg.json
+++ b/application/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/parkapi/herrenberg.json
@@ -394,4 +394,4 @@
}
}
]
-}
\ No newline at end of file
+}
diff --git a/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/parkapi/parkapi-reutlingen.json b/application/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/parkapi/parkapi-reutlingen.json
similarity index 99%
rename from src/ext-test/resources/org/opentripplanner/ext/vehicleparking/parkapi/parkapi-reutlingen.json
rename to application/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/parkapi/parkapi-reutlingen.json
index 946ec007ba9..23a39f17920 100644
--- a/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/parkapi/parkapi-reutlingen.json
+++ b/application/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/parkapi/parkapi-reutlingen.json
@@ -424,4 +424,4 @@
"notes": {}
}
]
-}
\ No newline at end of file
+}
diff --git a/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/sirifm/siri-fm.xml b/application/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/sirifm/siri-fm.xml
similarity index 100%
rename from src/ext-test/resources/org/opentripplanner/ext/vehicleparking/sirifm/siri-fm.xml
rename to application/src/ext-test/resources/org/opentripplanner/ext/vehicleparking/sirifm/siri-fm.xml
diff --git a/src/ext-test/resources/org/opentripplanner/ext/vehiclerentalservicedirectory/generatedoc/router-config.json b/application/src/ext-test/resources/org/opentripplanner/ext/vehiclerentalservicedirectory/generatedoc/router-config.json
similarity index 78%
rename from src/ext-test/resources/org/opentripplanner/ext/vehiclerentalservicedirectory/generatedoc/router-config.json
rename to application/src/ext-test/resources/org/opentripplanner/ext/vehiclerentalservicedirectory/generatedoc/router-config.json
index 0c772551549..e2dc7e202d2 100644
--- a/src/ext-test/resources/org/opentripplanner/ext/vehiclerentalservicedirectory/generatedoc/router-config.json
+++ b/application/src/ext-test/resources/org/opentripplanner/ext/vehiclerentalservicedirectory/generatedoc/router-config.json
@@ -9,8 +9,8 @@
},
"networks": [
{
- "network" : "oslo-by-sykkel",
- "geofencingZones" : true
+ "network": "oslo-by-sykkel",
+ "geofencingZones": true
}
]
}
diff --git a/src/ext-test/resources/ridehailing/uber-arrival-estimates.json b/application/src/ext-test/resources/ridehailing/uber-arrival-estimates.json
similarity index 99%
rename from src/ext-test/resources/ridehailing/uber-arrival-estimates.json
rename to application/src/ext-test/resources/ridehailing/uber-arrival-estimates.json
index 624d49d41e0..0126158daf7 100644
--- a/src/ext-test/resources/ridehailing/uber-arrival-estimates.json
+++ b/application/src/ext-test/resources/ridehailing/uber-arrival-estimates.json
@@ -49,4 +49,4 @@
"product_id": "3ab64887-4842-4c8e-9780-ccecd3a0391d"
}
]
-}
\ No newline at end of file
+}
diff --git a/src/ext-test/resources/ridehailing/uber-price-estimates.json b/application/src/ext-test/resources/ridehailing/uber-price-estimates.json
similarity index 99%
rename from src/ext-test/resources/ridehailing/uber-price-estimates.json
rename to application/src/ext-test/resources/ridehailing/uber-price-estimates.json
index d9f8540229e..a6c39c7f10a 100644
--- a/src/ext-test/resources/ridehailing/uber-price-estimates.json
+++ b/application/src/ext-test/resources/ridehailing/uber-price-estimates.json
@@ -89,4 +89,4 @@
"currency_code": "USD"
}
]
-}
\ No newline at end of file
+}
diff --git a/application/src/ext-test/resources/smoovebikerental/smoove.json b/application/src/ext-test/resources/smoovebikerental/smoove.json
new file mode 100644
index 00000000000..9091a493a7c
--- /dev/null
+++ b/application/src/ext-test/resources/smoovebikerental/smoove.json
@@ -0,0 +1,49 @@
+{
+ "result": [
+ {
+ "name": "A04 Hamn",
+ "operative": true,
+ "coordinates": "60.167913, 24.952269",
+ "style": "Station on",
+ "avl_bikes": 1,
+ "free_slots": 11,
+ "total_slots": 12
+ },
+ {
+ "name": "B05 Fake",
+ "operative": false,
+ "coordinates": "60, 24",
+ "style": "Station off",
+ "avl_bikes": 5,
+ "free_slots": 5,
+ "total_slots": 5
+ },
+ {
+ "name": "B06 Foo",
+ "operative": true,
+ "coordinates": "61,25",
+ "style": "Station on",
+ "avl_bikes": 5,
+ "free_slots": 5,
+ "total_slots": 5
+ },
+ {
+ "name": "B08 Invalid",
+ "operative": true,
+ "coordinates": "",
+ "style": "Station on",
+ "avl_bikes": 5,
+ "free_slots": 5,
+ "total_slots": 5
+ },
+ {
+ "name": "B09 Full",
+ "operative": true,
+ "coordinates": "60.168913, 24.953269",
+ "style": "Station on",
+ "avl_bikes": 12,
+ "free_slots": 0,
+ "total_slots": 12
+ }
+ ]
+}
diff --git a/src/ext-test/resources/test.txt b/application/src/ext-test/resources/test.txt
similarity index 100%
rename from src/ext-test/resources/test.txt
rename to application/src/ext-test/resources/test.txt
diff --git a/src/ext/java/org/opentripplanner/ext/accessibilityscore/DecorateWithAccessibilityScore.java b/application/src/ext/java/org/opentripplanner/ext/accessibilityscore/DecorateWithAccessibilityScore.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/accessibilityscore/DecorateWithAccessibilityScore.java
rename to application/src/ext/java/org/opentripplanner/ext/accessibilityscore/DecorateWithAccessibilityScore.java
diff --git a/src/ext/java/org/opentripplanner/ext/actuator/ActuatorAPI.java b/application/src/ext/java/org/opentripplanner/ext/actuator/ActuatorAPI.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/actuator/ActuatorAPI.java
rename to application/src/ext/java/org/opentripplanner/ext/actuator/ActuatorAPI.java
diff --git a/src/ext/java/org/opentripplanner/ext/actuator/MicrometerGraphQLInstrumentation.java b/application/src/ext/java/org/opentripplanner/ext/actuator/MicrometerGraphQLInstrumentation.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/actuator/MicrometerGraphQLInstrumentation.java
rename to application/src/ext/java/org/opentripplanner/ext/actuator/MicrometerGraphQLInstrumentation.java
diff --git a/src/ext/java/org/opentripplanner/ext/dataoverlay/DataOverlayStreetEdgeCostExtension.java b/application/src/ext/java/org/opentripplanner/ext/dataoverlay/DataOverlayStreetEdgeCostExtension.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/dataoverlay/DataOverlayStreetEdgeCostExtension.java
rename to application/src/ext/java/org/opentripplanner/ext/dataoverlay/DataOverlayStreetEdgeCostExtension.java
diff --git a/src/ext/java/org/opentripplanner/ext/dataoverlay/EdgeGenQuality.java b/application/src/ext/java/org/opentripplanner/ext/dataoverlay/EdgeGenQuality.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/dataoverlay/EdgeGenQuality.java
rename to application/src/ext/java/org/opentripplanner/ext/dataoverlay/EdgeGenQuality.java
diff --git a/src/ext/java/org/opentripplanner/ext/dataoverlay/EdgeUpdaterModule.java b/application/src/ext/java/org/opentripplanner/ext/dataoverlay/EdgeUpdaterModule.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/dataoverlay/EdgeUpdaterModule.java
rename to application/src/ext/java/org/opentripplanner/ext/dataoverlay/EdgeUpdaterModule.java
diff --git a/src/ext/java/org/opentripplanner/ext/dataoverlay/GenericDataFile.java b/application/src/ext/java/org/opentripplanner/ext/dataoverlay/GenericDataFile.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/dataoverlay/GenericDataFile.java
rename to application/src/ext/java/org/opentripplanner/ext/dataoverlay/GenericDataFile.java
diff --git a/src/ext/java/org/opentripplanner/ext/dataoverlay/GenericEdgeUpdater.java b/application/src/ext/java/org/opentripplanner/ext/dataoverlay/GenericEdgeUpdater.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/dataoverlay/GenericEdgeUpdater.java
rename to application/src/ext/java/org/opentripplanner/ext/dataoverlay/GenericEdgeUpdater.java
diff --git a/src/ext/java/org/opentripplanner/ext/dataoverlay/api/DataOverlayParameters.java b/application/src/ext/java/org/opentripplanner/ext/dataoverlay/api/DataOverlayParameters.java
similarity index 98%
rename from src/ext/java/org/opentripplanner/ext/dataoverlay/api/DataOverlayParameters.java
rename to application/src/ext/java/org/opentripplanner/ext/dataoverlay/api/DataOverlayParameters.java
index 5e18a914d34..42a0209ba94 100644
--- a/src/ext/java/org/opentripplanner/ext/dataoverlay/api/DataOverlayParameters.java
+++ b/application/src/ext/java/org/opentripplanner/ext/dataoverlay/api/DataOverlayParameters.java
@@ -6,7 +6,7 @@
import java.util.Map;
import java.util.stream.Collectors;
import javax.annotation.Nullable;
-import org.opentripplanner.framework.tostring.ToStringBuilder;
+import org.opentripplanner.utils.tostring.ToStringBuilder;
/**
* The purpose of this class is to hold all parameters and their value in a map. It also contains
diff --git a/src/ext/java/org/opentripplanner/ext/dataoverlay/api/DataOverlayParametersBuilder.java b/application/src/ext/java/org/opentripplanner/ext/dataoverlay/api/DataOverlayParametersBuilder.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/dataoverlay/api/DataOverlayParametersBuilder.java
rename to application/src/ext/java/org/opentripplanner/ext/dataoverlay/api/DataOverlayParametersBuilder.java
diff --git a/src/ext/java/org/opentripplanner/ext/dataoverlay/api/Parameter.java b/application/src/ext/java/org/opentripplanner/ext/dataoverlay/api/Parameter.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/dataoverlay/api/Parameter.java
rename to application/src/ext/java/org/opentripplanner/ext/dataoverlay/api/Parameter.java
diff --git a/src/ext/java/org/opentripplanner/ext/dataoverlay/api/ParameterName.java b/application/src/ext/java/org/opentripplanner/ext/dataoverlay/api/ParameterName.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/dataoverlay/api/ParameterName.java
rename to application/src/ext/java/org/opentripplanner/ext/dataoverlay/api/ParameterName.java
diff --git a/src/ext/java/org/opentripplanner/ext/dataoverlay/api/ParameterType.java b/application/src/ext/java/org/opentripplanner/ext/dataoverlay/api/ParameterType.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/dataoverlay/api/ParameterType.java
rename to application/src/ext/java/org/opentripplanner/ext/dataoverlay/api/ParameterType.java
diff --git a/src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/DataOverlayConfig.java b/application/src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/DataOverlayConfig.java
similarity index 97%
rename from src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/DataOverlayConfig.java
rename to application/src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/DataOverlayConfig.java
index c650bdf8a3c..858ac97d8ce 100644
--- a/src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/DataOverlayConfig.java
+++ b/application/src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/DataOverlayConfig.java
@@ -2,7 +2,7 @@
import java.io.Serializable;
import java.util.List;
-import org.opentripplanner.framework.tostring.ToStringBuilder;
+import org.opentripplanner.utils.tostring.ToStringBuilder;
/**
* POJO class describing expected data-overlay-config.json structure
diff --git a/src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/DataOverlayParameterBindings.java b/application/src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/DataOverlayParameterBindings.java
similarity index 92%
rename from src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/DataOverlayParameterBindings.java
rename to application/src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/DataOverlayParameterBindings.java
index c86cf24bb79..7b3d1f19bac 100644
--- a/src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/DataOverlayParameterBindings.java
+++ b/application/src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/DataOverlayParameterBindings.java
@@ -4,7 +4,7 @@
import java.util.List;
import java.util.Optional;
import org.opentripplanner.ext.dataoverlay.api.ParameterName;
-import org.opentripplanner.framework.tostring.ToStringBuilder;
+import org.opentripplanner.utils.tostring.ToStringBuilder;
public class DataOverlayParameterBindings implements Serializable {
diff --git a/src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/IndexVariable.java b/application/src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/IndexVariable.java
similarity index 93%
rename from src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/IndexVariable.java
rename to application/src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/IndexVariable.java
index 56b55b3a6b0..720ded65f89 100644
--- a/src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/IndexVariable.java
+++ b/application/src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/IndexVariable.java
@@ -1,7 +1,7 @@
package org.opentripplanner.ext.dataoverlay.configuration;
import java.io.Serializable;
-import org.opentripplanner.framework.tostring.ToStringBuilder;
+import org.opentripplanner.utils.tostring.ToStringBuilder;
/**
* This class describes the variables for the incoming .nc data file
diff --git a/src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/ParameterBinding.java b/application/src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/ParameterBinding.java
similarity index 95%
rename from src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/ParameterBinding.java
rename to application/src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/ParameterBinding.java
index 94a992eb552..07a29d4c4c1 100644
--- a/src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/ParameterBinding.java
+++ b/application/src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/ParameterBinding.java
@@ -3,7 +3,7 @@
import java.io.Serializable;
import org.opentripplanner.ext.dataoverlay.api.ParameterName;
import org.opentripplanner.ext.dataoverlay.routing.Parameter;
-import org.opentripplanner.framework.tostring.ToStringBuilder;
+import org.opentripplanner.utils.tostring.ToStringBuilder;
/**
* This class describes the expected routing request parameter for the generic data
diff --git a/src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/TimeUnit.java b/application/src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/TimeUnit.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/TimeUnit.java
rename to application/src/ext/java/org/opentripplanner/ext/dataoverlay/configuration/TimeUnit.java
diff --git a/src/ext/java/org/opentripplanner/ext/dataoverlay/configure/DataOverlayFactory.java b/application/src/ext/java/org/opentripplanner/ext/dataoverlay/configure/DataOverlayFactory.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/dataoverlay/configure/DataOverlayFactory.java
rename to application/src/ext/java/org/opentripplanner/ext/dataoverlay/configure/DataOverlayFactory.java
diff --git a/src/ext/java/org/opentripplanner/ext/dataoverlay/routing/DataOverlayContext.java b/application/src/ext/java/org/opentripplanner/ext/dataoverlay/routing/DataOverlayContext.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/dataoverlay/routing/DataOverlayContext.java
rename to application/src/ext/java/org/opentripplanner/ext/dataoverlay/routing/DataOverlayContext.java
diff --git a/src/ext/java/org/opentripplanner/ext/dataoverlay/routing/Parameter.java b/application/src/ext/java/org/opentripplanner/ext/dataoverlay/routing/Parameter.java
similarity index 94%
rename from src/ext/java/org/opentripplanner/ext/dataoverlay/routing/Parameter.java
rename to application/src/ext/java/org/opentripplanner/ext/dataoverlay/routing/Parameter.java
index 7b6078bb04f..542f7ee26dc 100644
--- a/src/ext/java/org/opentripplanner/ext/dataoverlay/routing/Parameter.java
+++ b/application/src/ext/java/org/opentripplanner/ext/dataoverlay/routing/Parameter.java
@@ -2,7 +2,7 @@
import org.opentripplanner.ext.dataoverlay.api.ParameterName;
import org.opentripplanner.ext.dataoverlay.configuration.ParameterBinding;
-import org.opentripplanner.framework.tostring.ToStringBuilder;
+import org.opentripplanner.utils.tostring.ToStringBuilder;
public class Parameter {
diff --git a/src/ext/java/org/opentripplanner/ext/datastore/gs/AbstractGsDataSource.java b/application/src/ext/java/org/opentripplanner/ext/datastore/gs/AbstractGsDataSource.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/datastore/gs/AbstractGsDataSource.java
rename to application/src/ext/java/org/opentripplanner/ext/datastore/gs/AbstractGsDataSource.java
diff --git a/src/ext/java/org/opentripplanner/ext/datastore/gs/GsDataSourceModule.java b/application/src/ext/java/org/opentripplanner/ext/datastore/gs/GsDataSourceModule.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/datastore/gs/GsDataSourceModule.java
rename to application/src/ext/java/org/opentripplanner/ext/datastore/gs/GsDataSourceModule.java
diff --git a/src/ext/java/org/opentripplanner/ext/datastore/gs/GsDataSourceRepository.java b/application/src/ext/java/org/opentripplanner/ext/datastore/gs/GsDataSourceRepository.java
similarity index 94%
rename from src/ext/java/org/opentripplanner/ext/datastore/gs/GsDataSourceRepository.java
rename to application/src/ext/java/org/opentripplanner/ext/datastore/gs/GsDataSourceRepository.java
index ee7e4614ee7..f049beef0b8 100644
--- a/src/ext/java/org/opentripplanner/ext/datastore/gs/GsDataSourceRepository.java
+++ b/application/src/ext/java/org/opentripplanner/ext/datastore/gs/GsDataSourceRepository.java
@@ -9,7 +9,6 @@
import java.io.IOException;
import java.net.URI;
import java.util.Collections;
-import javax.annotation.Nonnull;
import org.opentripplanner.datastore.api.CompositeDataSource;
import org.opentripplanner.datastore.api.DataSource;
import org.opentripplanner.datastore.api.FileType;
@@ -39,7 +38,7 @@ public void open() {
}
@Override
- public DataSource findSource(@Nonnull URI uri, @Nonnull FileType type) {
+ public DataSource findSource(URI uri, FileType type) {
if (skipUri(uri)) {
return null;
}
@@ -48,7 +47,7 @@ public DataSource findSource(@Nonnull URI uri, @Nonnull FileType type) {
}
@Override
- public CompositeDataSource findCompositeSource(@Nonnull URI uri, @Nonnull FileType type) {
+ public CompositeDataSource findCompositeSource(URI uri, FileType type) {
if (skipUri(uri)) {
return null;
}
diff --git a/src/ext/java/org/opentripplanner/ext/datastore/gs/GsDirectoryDataSource.java b/application/src/ext/java/org/opentripplanner/ext/datastore/gs/GsDirectoryDataSource.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/datastore/gs/GsDirectoryDataSource.java
rename to application/src/ext/java/org/opentripplanner/ext/datastore/gs/GsDirectoryDataSource.java
diff --git a/src/ext/java/org/opentripplanner/ext/datastore/gs/GsFileDataSource.java b/application/src/ext/java/org/opentripplanner/ext/datastore/gs/GsFileDataSource.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/datastore/gs/GsFileDataSource.java
rename to application/src/ext/java/org/opentripplanner/ext/datastore/gs/GsFileDataSource.java
diff --git a/src/ext/java/org/opentripplanner/ext/datastore/gs/GsHelper.java b/application/src/ext/java/org/opentripplanner/ext/datastore/gs/GsHelper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/datastore/gs/GsHelper.java
rename to application/src/ext/java/org/opentripplanner/ext/datastore/gs/GsHelper.java
diff --git a/src/ext/java/org/opentripplanner/ext/datastore/gs/GsOutFileDataSource.java b/application/src/ext/java/org/opentripplanner/ext/datastore/gs/GsOutFileDataSource.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/datastore/gs/GsOutFileDataSource.java
rename to application/src/ext/java/org/opentripplanner/ext/datastore/gs/GsOutFileDataSource.java
diff --git a/application/src/ext/java/org/opentripplanner/ext/datastore/gs/package-info.md b/application/src/ext/java/org/opentripplanner/ext/datastore/gs/package-info.md
new file mode 100644
index 00000000000..22ae44bb3e3
--- /dev/null
+++ b/application/src/ext/java/org/opentripplanner/ext/datastore/gs/package-info.md
@@ -0,0 +1,6 @@
+# Google cloud storage integration
+
+Add support for Google Cloud Storage, getting all input files and storing the graph.obj in the
+cloud.
+
+This implementation will use the existing OtpConfigLoader to load config from the local disk.
diff --git a/src/ext/java/org/opentripplanner/ext/emissions/Co2EmissionsDataReader.java b/application/src/ext/java/org/opentripplanner/ext/emissions/Co2EmissionsDataReader.java
similarity index 98%
rename from src/ext/java/org/opentripplanner/ext/emissions/Co2EmissionsDataReader.java
rename to application/src/ext/java/org/opentripplanner/ext/emissions/Co2EmissionsDataReader.java
index 597a7d89380..f3988265085 100644
--- a/src/ext/java/org/opentripplanner/ext/emissions/Co2EmissionsDataReader.java
+++ b/application/src/ext/java/org/opentripplanner/ext/emissions/Co2EmissionsDataReader.java
@@ -11,10 +11,10 @@
import java.util.Optional;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
-import org.opentripplanner.framework.lang.Sandbox;
-import org.opentripplanner.framework.lang.StringUtils;
import org.opentripplanner.graph_builder.issue.api.DataImportIssueStore;
import org.opentripplanner.transit.model.framework.FeedScopedId;
+import org.opentripplanner.utils.lang.Sandbox;
+import org.opentripplanner.utils.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/ext/java/org/opentripplanner/ext/emissions/DecorateWithEmission.java b/application/src/ext/java/org/opentripplanner/ext/emissions/DecorateWithEmission.java
similarity index 98%
rename from src/ext/java/org/opentripplanner/ext/emissions/DecorateWithEmission.java
rename to application/src/ext/java/org/opentripplanner/ext/emissions/DecorateWithEmission.java
index 1f6e79fc4df..9657e053cb9 100644
--- a/src/ext/java/org/opentripplanner/ext/emissions/DecorateWithEmission.java
+++ b/application/src/ext/java/org/opentripplanner/ext/emissions/DecorateWithEmission.java
@@ -3,7 +3,6 @@
import java.util.List;
import java.util.Optional;
import org.opentripplanner.ext.flex.FlexibleTransitLeg;
-import org.opentripplanner.framework.lang.Sandbox;
import org.opentripplanner.framework.model.Grams;
import org.opentripplanner.model.plan.Emissions;
import org.opentripplanner.model.plan.Itinerary;
@@ -13,6 +12,7 @@
import org.opentripplanner.routing.algorithm.filterchain.framework.spi.ItineraryDecorator;
import org.opentripplanner.street.search.TraverseMode;
import org.opentripplanner.transit.model.framework.FeedScopedId;
+import org.opentripplanner.utils.lang.Sandbox;
/**
* Calculates the emissions for the itineraries and adds them.
diff --git a/src/ext/java/org/opentripplanner/ext/emissions/DefaultEmissionsService.java b/application/src/ext/java/org/opentripplanner/ext/emissions/DefaultEmissionsService.java
similarity index 95%
rename from src/ext/java/org/opentripplanner/ext/emissions/DefaultEmissionsService.java
rename to application/src/ext/java/org/opentripplanner/ext/emissions/DefaultEmissionsService.java
index 5df2ca17f26..4aaefd5a7a3 100644
--- a/src/ext/java/org/opentripplanner/ext/emissions/DefaultEmissionsService.java
+++ b/application/src/ext/java/org/opentripplanner/ext/emissions/DefaultEmissionsService.java
@@ -2,10 +2,10 @@
import jakarta.inject.Inject;
import java.util.Optional;
-import org.opentripplanner.framework.lang.Sandbox;
import org.opentripplanner.framework.model.Grams;
import org.opentripplanner.model.plan.Emissions;
import org.opentripplanner.transit.model.framework.FeedScopedId;
+import org.opentripplanner.utils.lang.Sandbox;
@Sandbox
public class DefaultEmissionsService implements EmissionsService {
diff --git a/src/ext/java/org/opentripplanner/ext/emissions/EmissionsConfig.java b/application/src/ext/java/org/opentripplanner/ext/emissions/EmissionsConfig.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/emissions/EmissionsConfig.java
rename to application/src/ext/java/org/opentripplanner/ext/emissions/EmissionsConfig.java
diff --git a/src/ext/java/org/opentripplanner/ext/emissions/EmissionsDataModel.java b/application/src/ext/java/org/opentripplanner/ext/emissions/EmissionsDataModel.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/emissions/EmissionsDataModel.java
rename to application/src/ext/java/org/opentripplanner/ext/emissions/EmissionsDataModel.java
diff --git a/src/ext/java/org/opentripplanner/ext/emissions/EmissionsModule.java b/application/src/ext/java/org/opentripplanner/ext/emissions/EmissionsModule.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/emissions/EmissionsModule.java
rename to application/src/ext/java/org/opentripplanner/ext/emissions/EmissionsModule.java
diff --git a/src/ext/java/org/opentripplanner/ext/emissions/EmissionsService.java b/application/src/ext/java/org/opentripplanner/ext/emissions/EmissionsService.java
similarity index 92%
rename from src/ext/java/org/opentripplanner/ext/emissions/EmissionsService.java
rename to application/src/ext/java/org/opentripplanner/ext/emissions/EmissionsService.java
index 6f69ac60d06..18712bb590c 100644
--- a/src/ext/java/org/opentripplanner/ext/emissions/EmissionsService.java
+++ b/application/src/ext/java/org/opentripplanner/ext/emissions/EmissionsService.java
@@ -1,9 +1,9 @@
package org.opentripplanner.ext.emissions;
import java.util.Optional;
-import org.opentripplanner.framework.lang.Sandbox;
import org.opentripplanner.model.plan.Emissions;
import org.opentripplanner.transit.model.framework.FeedScopedId;
+import org.opentripplanner.utils.lang.Sandbox;
/**
* A service for getting emissions information for routes.
diff --git a/src/ext/java/org/opentripplanner/ext/emissions/EmissionsServiceModule.java b/application/src/ext/java/org/opentripplanner/ext/emissions/EmissionsServiceModule.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/emissions/EmissionsServiceModule.java
rename to application/src/ext/java/org/opentripplanner/ext/emissions/EmissionsServiceModule.java
diff --git a/src/ext/java/org/opentripplanner/ext/fares/DecorateWithFare.java b/application/src/ext/java/org/opentripplanner/ext/fares/DecorateWithFare.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/fares/DecorateWithFare.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/DecorateWithFare.java
diff --git a/src/ext/java/org/opentripplanner/ext/fares/FaresConfiguration.java b/application/src/ext/java/org/opentripplanner/ext/fares/FaresConfiguration.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/fares/FaresConfiguration.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/FaresConfiguration.java
diff --git a/src/ext/java/org/opentripplanner/ext/fares/FaresToItineraryMapper.java b/application/src/ext/java/org/opentripplanner/ext/fares/FaresToItineraryMapper.java
similarity index 93%
rename from src/ext/java/org/opentripplanner/ext/fares/FaresToItineraryMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/FaresToItineraryMapper.java
index c545cbbb858..b936e458c00 100644
--- a/src/ext/java/org/opentripplanner/ext/fares/FaresToItineraryMapper.java
+++ b/application/src/ext/java/org/opentripplanner/ext/fares/FaresToItineraryMapper.java
@@ -1,9 +1,9 @@
package org.opentripplanner.ext.fares;
-import org.opentripplanner.framework.collection.ListUtils;
import org.opentripplanner.model.fare.FareProductUse;
import org.opentripplanner.model.fare.ItineraryFares;
import org.opentripplanner.model.plan.Itinerary;
+import org.opentripplanner.utils.collection.ListUtils;
/**
* Takes fares and applies them to the legs of an itinerary.
diff --git a/src/ext/java/org/opentripplanner/ext/fares/impl/AtlantaFareService.java b/application/src/ext/java/org/opentripplanner/ext/fares/impl/AtlantaFareService.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/fares/impl/AtlantaFareService.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/impl/AtlantaFareService.java
diff --git a/src/ext/java/org/opentripplanner/ext/fares/impl/AtlantaFareServiceFactory.java b/application/src/ext/java/org/opentripplanner/ext/fares/impl/AtlantaFareServiceFactory.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/fares/impl/AtlantaFareServiceFactory.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/impl/AtlantaFareServiceFactory.java
diff --git a/src/ext/java/org/opentripplanner/ext/fares/impl/CombineInterlinedLegsFactory.java b/application/src/ext/java/org/opentripplanner/ext/fares/impl/CombineInterlinedLegsFactory.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/fares/impl/CombineInterlinedLegsFactory.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/impl/CombineInterlinedLegsFactory.java
diff --git a/src/ext/java/org/opentripplanner/ext/fares/impl/CombinedInterlinedLegsFareService.java b/application/src/ext/java/org/opentripplanner/ext/fares/impl/CombinedInterlinedLegsFareService.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/fares/impl/CombinedInterlinedLegsFareService.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/impl/CombinedInterlinedLegsFareService.java
diff --git a/src/ext/java/org/opentripplanner/ext/fares/impl/CombinedInterlinedTransitLeg.java b/application/src/ext/java/org/opentripplanner/ext/fares/impl/CombinedInterlinedTransitLeg.java
similarity index 96%
rename from src/ext/java/org/opentripplanner/ext/fares/impl/CombinedInterlinedTransitLeg.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/impl/CombinedInterlinedTransitLeg.java
index 9d10b87bbd6..85aa1a25004 100644
--- a/src/ext/java/org/opentripplanner/ext/fares/impl/CombinedInterlinedTransitLeg.java
+++ b/application/src/ext/java/org/opentripplanner/ext/fares/impl/CombinedInterlinedTransitLeg.java
@@ -5,9 +5,8 @@
import java.time.ZonedDateTime;
import java.util.List;
import java.util.Set;
-import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
import org.locationtech.jts.geom.LineString;
-import org.opentripplanner.framework.collection.ListUtils;
import org.opentripplanner.model.fare.FareProductUse;
import org.opentripplanner.model.plan.Leg;
import org.opentripplanner.model.plan.LegTime;
@@ -19,6 +18,7 @@
import org.opentripplanner.transit.model.organization.Agency;
import org.opentripplanner.transit.model.site.FareZone;
import org.opentripplanner.transit.model.timetable.Trip;
+import org.opentripplanner.utils.collection.ListUtils;
/**
* This is a fake leg that combines two interlined legs for the purpose of fare calculation.
@@ -39,19 +39,16 @@ public Agency getAgency() {
return first.getAgency();
}
- @Nonnull
@Override
public TransitMode getMode() {
return first.getMode();
}
- @Nonnull
@Override
public Route getRoute() {
return first.getRoute();
}
- @Nonnull
@Override
public Trip getTrip() {
return first.getTrip();
@@ -98,6 +95,7 @@ public List getIntermediateStops() {
}
@Override
+ @Nullable
public LineString getLegGeometry() {
return null;
}
diff --git a/src/ext/java/org/opentripplanner/ext/fares/impl/DefaultFareService.java b/application/src/ext/java/org/opentripplanner/ext/fares/impl/DefaultFareService.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/fares/impl/DefaultFareService.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/impl/DefaultFareService.java
diff --git a/src/ext/java/org/opentripplanner/ext/fares/impl/DefaultFareServiceFactory.java b/application/src/ext/java/org/opentripplanner/ext/fares/impl/DefaultFareServiceFactory.java
similarity index 98%
rename from src/ext/java/org/opentripplanner/ext/fares/impl/DefaultFareServiceFactory.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/impl/DefaultFareServiceFactory.java
index ee4c87924ea..d7a3a0425ec 100644
--- a/src/ext/java/org/opentripplanner/ext/fares/impl/DefaultFareServiceFactory.java
+++ b/application/src/ext/java/org/opentripplanner/ext/fares/impl/DefaultFareServiceFactory.java
@@ -92,7 +92,7 @@ protected void fillFareRules(
FareRuleSet fareRule = fareRuleSet.get(id);
if (fareRule == null) {
// Should never happen by design
- LOG.error("Inexistant fare ID in fare rule: " + id);
+ LOG.error("Nonexistent fare ID in fare rule: " + id);
continue;
}
String contains = rule.getContainsId();
diff --git a/src/ext/java/org/opentripplanner/ext/fares/impl/GtfsFaresService.java b/application/src/ext/java/org/opentripplanner/ext/fares/impl/GtfsFaresService.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/fares/impl/GtfsFaresService.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/impl/GtfsFaresService.java
diff --git a/src/ext/java/org/opentripplanner/ext/fares/impl/GtfsFaresV2Service.java b/application/src/ext/java/org/opentripplanner/ext/fares/impl/GtfsFaresV2Service.java
similarity index 98%
rename from src/ext/java/org/opentripplanner/ext/fares/impl/GtfsFaresV2Service.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/impl/GtfsFaresV2Service.java
index 6aad14179b4..5bff64f05e0 100644
--- a/src/ext/java/org/opentripplanner/ext/fares/impl/GtfsFaresV2Service.java
+++ b/application/src/ext/java/org/opentripplanner/ext/fares/impl/GtfsFaresV2Service.java
@@ -13,7 +13,6 @@
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
-import javax.annotation.Nonnull;
import org.opentripplanner.ext.fares.model.FareDistance;
import org.opentripplanner.ext.fares.model.FareLegRule;
import org.opentripplanner.ext.fares.model.FareTransferRule;
@@ -210,7 +209,7 @@ private boolean transferRuleMatchesNextLeg(
.orElse(false);
}
- private Optional getFareLegRuleByGroupId(@Nonnull FeedScopedId groupId) {
+ private Optional getFareLegRuleByGroupId(FeedScopedId groupId) {
return legRules.stream().filter(lr -> groupId.equals(lr.legGroupId())).findAny();
}
diff --git a/src/ext/java/org/opentripplanner/ext/fares/impl/HSLFareService.java b/application/src/ext/java/org/opentripplanner/ext/fares/impl/HSLFareService.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/fares/impl/HSLFareService.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/impl/HSLFareService.java
diff --git a/src/ext/java/org/opentripplanner/ext/fares/impl/HSLFareServiceFactory.java b/application/src/ext/java/org/opentripplanner/ext/fares/impl/HSLFareServiceFactory.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/fares/impl/HSLFareServiceFactory.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/impl/HSLFareServiceFactory.java
diff --git a/src/ext/java/org/opentripplanner/ext/fares/impl/HighestFareInFreeTransferWindowFareService.java b/application/src/ext/java/org/opentripplanner/ext/fares/impl/HighestFareInFreeTransferWindowFareService.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/fares/impl/HighestFareInFreeTransferWindowFareService.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/impl/HighestFareInFreeTransferWindowFareService.java
diff --git a/src/ext/java/org/opentripplanner/ext/fares/impl/HighestFareInFreeTransferWindowFareServiceFactory.java b/application/src/ext/java/org/opentripplanner/ext/fares/impl/HighestFareInFreeTransferWindowFareServiceFactory.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/fares/impl/HighestFareInFreeTransferWindowFareServiceFactory.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/impl/HighestFareInFreeTransferWindowFareServiceFactory.java
diff --git a/src/ext/java/org/opentripplanner/ext/fares/impl/NoopFareServiceFactory.java b/application/src/ext/java/org/opentripplanner/ext/fares/impl/NoopFareServiceFactory.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/fares/impl/NoopFareServiceFactory.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/impl/NoopFareServiceFactory.java
diff --git a/src/ext/java/org/opentripplanner/ext/fares/impl/OrcaFareFactory.java b/application/src/ext/java/org/opentripplanner/ext/fares/impl/OrcaFareFactory.java
similarity index 88%
rename from src/ext/java/org/opentripplanner/ext/fares/impl/OrcaFareFactory.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/impl/OrcaFareFactory.java
index 34a03c1fc06..d48cad48450 100644
--- a/src/ext/java/org/opentripplanner/ext/fares/impl/OrcaFareFactory.java
+++ b/application/src/ext/java/org/opentripplanner/ext/fares/impl/OrcaFareFactory.java
@@ -24,6 +24,8 @@ public FareService makeFareService() {
@Override
public void processGtfs(FareRulesData fareRuleService, OtpTransitService transitService) {
fillFareRules(fareRuleService.fareAttributes(), fareRuleService.fareRules(), regularFareRules);
+ // ORCA agencies don't rely on fare attributes without rules, so let's remove them.
+ regularFareRules.entrySet().removeIf(entry -> !entry.getValue().hasRules());
}
/**
diff --git a/src/ext/java/org/opentripplanner/ext/fares/impl/OrcaFareService.java b/application/src/ext/java/org/opentripplanner/ext/fares/impl/OrcaFareService.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/fares/impl/OrcaFareService.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/impl/OrcaFareService.java
diff --git a/src/ext/java/org/opentripplanner/ext/fares/impl/OrcaFaresData.java b/application/src/ext/java/org/opentripplanner/ext/fares/impl/OrcaFaresData.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/fares/impl/OrcaFaresData.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/impl/OrcaFaresData.java
diff --git a/src/ext/java/org/opentripplanner/ext/fares/model/Distance.java b/application/src/ext/java/org/opentripplanner/ext/fares/model/Distance.java
similarity index 94%
rename from src/ext/java/org/opentripplanner/ext/fares/model/Distance.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/model/Distance.java
index e29282fb4b8..f30712d4cad 100644
--- a/src/ext/java/org/opentripplanner/ext/fares/model/Distance.java
+++ b/application/src/ext/java/org/opentripplanner/ext/fares/model/Distance.java
@@ -1,6 +1,6 @@
package org.opentripplanner.ext.fares.model;
-import org.opentripplanner.framework.tostring.ValueObjectToStringBuilder;
+import org.opentripplanner.utils.tostring.ValueObjectToStringBuilder;
public class Distance {
diff --git a/src/ext/java/org/opentripplanner/ext/fares/model/FareAttribute.java b/application/src/ext/java/org/opentripplanner/ext/fares/model/FareAttribute.java
similarity index 96%
rename from src/ext/java/org/opentripplanner/ext/fares/model/FareAttribute.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/model/FareAttribute.java
index 2c93fb016fa..39a6c0bd1d0 100644
--- a/src/ext/java/org/opentripplanner/ext/fares/model/FareAttribute.java
+++ b/application/src/ext/java/org/opentripplanner/ext/fares/model/FareAttribute.java
@@ -2,7 +2,6 @@
package org.opentripplanner.ext.fares.model;
import java.util.Objects;
-import javax.annotation.Nonnull;
import org.opentripplanner.transit.model.basic.Money;
import org.opentripplanner.transit.model.framework.AbstractTransitEntity;
import org.opentripplanner.transit.model.framework.FeedScopedId;
@@ -77,7 +76,7 @@ public Integer getJourneyDuration() {
}
@Override
- public boolean sameAs(@Nonnull FareAttribute other) {
+ public boolean sameAs(FareAttribute other) {
return (
getId().equals(other.getId()) &&
getPrice().equals(other.getPrice()) &&
@@ -88,7 +87,6 @@ public boolean sameAs(@Nonnull FareAttribute other) {
);
}
- @Nonnull
@Override
public FareAttributeBuilder copy() {
return new FareAttributeBuilder(this);
diff --git a/src/ext/java/org/opentripplanner/ext/fares/model/FareAttributeBuilder.java b/application/src/ext/java/org/opentripplanner/ext/fares/model/FareAttributeBuilder.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/fares/model/FareAttributeBuilder.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/model/FareAttributeBuilder.java
diff --git a/src/ext/java/org/opentripplanner/ext/fares/model/FareDistance.java b/application/src/ext/java/org/opentripplanner/ext/fares/model/FareDistance.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/fares/model/FareDistance.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/model/FareDistance.java
diff --git a/src/ext/java/org/opentripplanner/ext/fares/model/FareLegRule.java b/application/src/ext/java/org/opentripplanner/ext/fares/model/FareLegRule.java
similarity index 90%
rename from src/ext/java/org/opentripplanner/ext/fares/model/FareLegRule.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/model/FareLegRule.java
index 28ef5dcab6c..984dcb0291a 100644
--- a/src/ext/java/org/opentripplanner/ext/fares/model/FareLegRule.java
+++ b/application/src/ext/java/org/opentripplanner/ext/fares/model/FareLegRule.java
@@ -3,19 +3,18 @@
import java.util.Collection;
import java.util.List;
import java.util.Objects;
-import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.opentripplanner.model.fare.FareProduct;
import org.opentripplanner.transit.model.framework.FeedScopedId;
public record FareLegRule(
- @Nonnull FeedScopedId id,
+ FeedScopedId id,
@Nullable FeedScopedId legGroupId,
@Nullable String networkId,
@Nullable String fromAreaId,
@Nullable String toAreaId,
@Nullable FareDistance fareDistance,
- @Nonnull Collection fareProducts
+ Collection fareProducts
) {
public FareLegRule {
Objects.requireNonNull(id);
diff --git a/src/ext/java/org/opentripplanner/ext/fares/model/FareLegRuleBuilder.java b/application/src/ext/java/org/opentripplanner/ext/fares/model/FareLegRuleBuilder.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/fares/model/FareLegRuleBuilder.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/model/FareLegRuleBuilder.java
diff --git a/src/ext/java/org/opentripplanner/ext/fares/model/FareRule.java b/application/src/ext/java/org/opentripplanner/ext/fares/model/FareRule.java
similarity index 95%
rename from src/ext/java/org/opentripplanner/ext/fares/model/FareRule.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/model/FareRule.java
index 3e70ef1cf2e..3b416ec2a6d 100644
--- a/src/ext/java/org/opentripplanner/ext/fares/model/FareRule.java
+++ b/application/src/ext/java/org/opentripplanner/ext/fares/model/FareRule.java
@@ -2,9 +2,9 @@
package org.opentripplanner.ext.fares.model;
import java.io.Serializable;
-import org.opentripplanner.framework.tostring.ToStringBuilder;
import org.opentripplanner.transit.model.framework.AbstractTransitEntity;
import org.opentripplanner.transit.model.network.Route;
+import org.opentripplanner.utils.tostring.ToStringBuilder;
public final class FareRule implements Serializable {
diff --git a/src/ext/java/org/opentripplanner/ext/fares/model/FareRuleSet.java b/application/src/ext/java/org/opentripplanner/ext/fares/model/FareRuleSet.java
similarity index 77%
rename from src/ext/java/org/opentripplanner/ext/fares/model/FareRuleSet.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/model/FareRuleSet.java
index 30119631216..b8fbb0f1fe9 100644
--- a/src/ext/java/org/opentripplanner/ext/fares/model/FareRuleSet.java
+++ b/application/src/ext/java/org/opentripplanner/ext/fares/model/FareRuleSet.java
@@ -40,6 +40,19 @@ public Set getRouteOriginDestinations() {
return routeOriginDestinations;
}
+ /**
+ * Determine whether the FareRuleSet has any rules added.
+ * @return True if any rules have been added.
+ */
+ public boolean hasRules() {
+ return (
+ !routes.isEmpty() ||
+ !originDestinations.isEmpty() ||
+ !routeOriginDestinations.isEmpty() ||
+ !contains.isEmpty()
+ );
+ }
+
public void addContains(String containsId) {
contains.add(containsId);
}
@@ -60,6 +73,19 @@ public FareAttribute getFareAttribute() {
return fareAttribute;
}
+ /**
+ * Determines whether the FareRuleSet matches against a set of itinerary parameters
+ * based on the added rules and fare attribute
+ * @param startZone Origin zone
+ * @param endZone End zone
+ * @param zonesVisited A set containing the names of zones visited on the fare
+ * @param routesVisited A set containing the route IDs visited
+ * @param tripsVisited [Not implemented] A set containing the trip IDs visited
+ * @param transfersUsed Number of transfers already used
+ * @param tripTime Time from beginning of first leg to beginning of current leg to be evaluated
+ * @param journeyTime Total journey time from beginning of first leg to end of current leg
+ * @return True if this FareAttribute should apply to this leg
+ */
public boolean matches(
String startZone,
String endZone,
diff --git a/src/ext/java/org/opentripplanner/ext/fares/model/FareRulesData.java b/application/src/ext/java/org/opentripplanner/ext/fares/model/FareRulesData.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/fares/model/FareRulesData.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/model/FareRulesData.java
diff --git a/src/ext/java/org/opentripplanner/ext/fares/model/FareTransferRule.java b/application/src/ext/java/org/opentripplanner/ext/fares/model/FareTransferRule.java
similarity index 81%
rename from src/ext/java/org/opentripplanner/ext/fares/model/FareTransferRule.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/model/FareTransferRule.java
index d3b2020771f..87917bc819c 100644
--- a/src/ext/java/org/opentripplanner/ext/fares/model/FareTransferRule.java
+++ b/application/src/ext/java/org/opentripplanner/ext/fares/model/FareTransferRule.java
@@ -2,18 +2,17 @@
import java.time.Duration;
import java.util.Collection;
-import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.opentripplanner.model.fare.FareProduct;
import org.opentripplanner.transit.model.framework.FeedScopedId;
public record FareTransferRule(
- @Nonnull FeedScopedId id,
+ FeedScopedId id,
@Nullable FeedScopedId fromLegGroup,
@Nullable FeedScopedId toLegGroup,
int transferCount,
@Nullable Duration timeLimit,
- @Nonnull Collection fareProducts
+ Collection fareProducts
) {
public String feedId() {
return id.getFeedId();
diff --git a/src/ext/java/org/opentripplanner/ext/fares/model/FareTransferType.java b/application/src/ext/java/org/opentripplanner/ext/fares/model/FareTransferType.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/fares/model/FareTransferType.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/model/FareTransferType.java
diff --git a/src/ext/java/org/opentripplanner/ext/fares/model/LegProducts.java b/application/src/ext/java/org/opentripplanner/ext/fares/model/LegProducts.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/fares/model/LegProducts.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/model/LegProducts.java
diff --git a/src/ext/java/org/opentripplanner/ext/fares/model/RouteOriginDestination.java b/application/src/ext/java/org/opentripplanner/ext/fares/model/RouteOriginDestination.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/fares/model/RouteOriginDestination.java
rename to application/src/ext/java/org/opentripplanner/ext/fares/model/RouteOriginDestination.java
diff --git a/src/ext/java/org/opentripplanner/ext/flex/AreaStopsToVerticesMapper.java b/application/src/ext/java/org/opentripplanner/ext/flex/AreaStopsToVerticesMapper.java
similarity index 79%
rename from src/ext/java/org/opentripplanner/ext/flex/AreaStopsToVerticesMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/AreaStopsToVerticesMapper.java
index 612fb7a1d29..85a4f749b16 100644
--- a/src/ext/java/org/opentripplanner/ext/flex/AreaStopsToVerticesMapper.java
+++ b/application/src/ext/java/org/opentripplanner/ext/flex/AreaStopsToVerticesMapper.java
@@ -4,21 +4,20 @@
import com.google.common.collect.ImmutableMultimap;
import jakarta.inject.Inject;
import java.util.stream.Stream;
-import javax.annotation.Nonnull;
import org.locationtech.jts.geom.Point;
import org.opentripplanner.framework.geometry.GeometryUtils;
-import org.opentripplanner.framework.logging.ProgressTracker;
import org.opentripplanner.graph_builder.model.GraphBuilderModule;
import org.opentripplanner.routing.graph.Graph;
import org.opentripplanner.routing.graph.index.StreetIndex;
import org.opentripplanner.street.model.vertex.StreetVertex;
import org.opentripplanner.transit.model.site.AreaStop;
-import org.opentripplanner.transit.service.TransitModel;
+import org.opentripplanner.transit.service.TimetableRepository;
+import org.opentripplanner.utils.logging.ProgressTracker;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- * Iterates over all area stops in the stop model and adds them to vertices that are suitable for
+ * Iterates over all area stops in the stop and adds them to vertices that are suitable for
* boarding flex trips.
*/
public class AreaStopsToVerticesMapper implements GraphBuilderModule {
@@ -26,32 +25,32 @@ public class AreaStopsToVerticesMapper implements GraphBuilderModule {
private static final Logger LOG = LoggerFactory.getLogger(AreaStopsToVerticesMapper.class);
private final Graph graph;
- private final TransitModel transitModel;
+ private final TimetableRepository timetableRepository;
@Inject
- public AreaStopsToVerticesMapper(Graph graph, TransitModel transitModel) {
+ public AreaStopsToVerticesMapper(Graph graph, TimetableRepository timetableRepository) {
this.graph = graph;
- this.transitModel = transitModel;
+ this.timetableRepository = timetableRepository;
}
@Override
@SuppressWarnings("Convert2MethodRef")
public void buildGraph() {
- if (!transitModel.getStopModel().hasAreaStops()) {
+ if (!timetableRepository.getSiteRepository().hasAreaStops()) {
return;
}
- StreetIndex streetIndex = graph.getStreetIndexSafe(transitModel.getStopModel());
+ StreetIndex streetIndex = graph.getStreetIndexSafe(timetableRepository.getSiteRepository());
ProgressTracker progress = ProgressTracker.track(
"Add flex locations to street vertices",
1,
- transitModel.getStopModel().listAreaStops().size()
+ timetableRepository.getSiteRepository().listAreaStops().size()
);
LOG.info(progress.startMessage());
- var results = transitModel
- .getStopModel()
+ var results = timetableRepository
+ .getSiteRepository()
.listAreaStops()
.parallelStream()
.flatMap(areaStop -> {
@@ -77,7 +76,6 @@ public void buildGraph() {
LOG.info(progress.completeMessage());
}
- @Nonnull
private static Stream matchingVerticesForStop(
StreetIndex streetIndex,
AreaStop areaStop
diff --git a/src/ext/java/org/opentripplanner/ext/flex/Flex.svg b/application/src/ext/java/org/opentripplanner/ext/flex/Flex.svg
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/flex/Flex.svg
rename to application/src/ext/java/org/opentripplanner/ext/flex/Flex.svg
diff --git a/src/ext/java/org/opentripplanner/ext/flex/FlexAccessEgress.java b/application/src/ext/java/org/opentripplanner/ext/flex/FlexAccessEgress.java
similarity index 98%
rename from src/ext/java/org/opentripplanner/ext/flex/FlexAccessEgress.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/FlexAccessEgress.java
index f464f1e1907..9ff2b3f67be 100644
--- a/src/ext/java/org/opentripplanner/ext/flex/FlexAccessEgress.java
+++ b/application/src/ext/java/org/opentripplanner/ext/flex/FlexAccessEgress.java
@@ -4,10 +4,10 @@
import java.util.Objects;
import org.opentripplanner.ext.flex.trip.FlexTrip;
-import org.opentripplanner.framework.tostring.ToStringBuilder;
import org.opentripplanner.street.search.state.State;
import org.opentripplanner.transit.model.site.RegularStop;
import org.opentripplanner.transit.model.timetable.booking.RoutingBookingInfo;
+import org.opentripplanner.utils.tostring.ToStringBuilder;
public final class FlexAccessEgress {
diff --git a/src/ext/java/org/opentripplanner/ext/flex/FlexIndex.java b/application/src/ext/java/org/opentripplanner/ext/flex/FlexIndex.java
similarity index 88%
rename from src/ext/java/org/opentripplanner/ext/flex/FlexIndex.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/FlexIndex.java
index a875ba0f516..cd047de6d04 100644
--- a/src/ext/java/org/opentripplanner/ext/flex/FlexIndex.java
+++ b/application/src/ext/java/org/opentripplanner/ext/flex/FlexIndex.java
@@ -12,7 +12,7 @@
import org.opentripplanner.transit.model.network.Route;
import org.opentripplanner.transit.model.site.GroupStop;
import org.opentripplanner.transit.model.site.StopLocation;
-import org.opentripplanner.transit.service.TransitModel;
+import org.opentripplanner.transit.service.TimetableRepository;
public class FlexIndex {
@@ -24,11 +24,11 @@ public class FlexIndex {
private final Map> tripById = new HashMap<>();
- public FlexIndex(TransitModel transitModel) {
- for (PathTransfer transfer : transitModel.getAllPathTransfers()) {
+ public FlexIndex(TimetableRepository timetableRepository) {
+ for (PathTransfer transfer : timetableRepository.getAllPathTransfers()) {
transfersToStop.put(transfer.to, transfer);
}
- for (FlexTrip, ?> flexTrip : transitModel.getAllFlexTrips()) {
+ for (FlexTrip, ?> flexTrip : timetableRepository.getAllFlexTrips()) {
routeById.put(flexTrip.getTrip().getRoute().getId(), flexTrip.getTrip().getRoute());
tripById.put(flexTrip.getTrip().getId(), flexTrip);
for (StopLocation stop : flexTrip.getStops()) {
diff --git a/src/ext/java/org/opentripplanner/ext/flex/FlexParameters.java b/application/src/ext/java/org/opentripplanner/ext/flex/FlexParameters.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/flex/FlexParameters.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/FlexParameters.java
diff --git a/src/ext/java/org/opentripplanner/ext/flex/FlexPathDurations.java b/application/src/ext/java/org/opentripplanner/ext/flex/FlexPathDurations.java
similarity index 98%
rename from src/ext/java/org/opentripplanner/ext/flex/FlexPathDurations.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/FlexPathDurations.java
index a77d72185d0..258435a6d6b 100644
--- a/src/ext/java/org/opentripplanner/ext/flex/FlexPathDurations.java
+++ b/application/src/ext/java/org/opentripplanner/ext/flex/FlexPathDurations.java
@@ -1,6 +1,6 @@
package org.opentripplanner.ext.flex;
-import org.opentripplanner.framework.time.DurationUtils;
+import org.opentripplanner.utils.time.DurationUtils;
/**
* This value-object contains the durations for a Flex access or egress path. The path may also
diff --git a/src/ext/java/org/opentripplanner/ext/flex/FlexRouter.java b/application/src/ext/java/org/opentripplanner/ext/flex/FlexRouter.java
similarity index 97%
rename from src/ext/java/org/opentripplanner/ext/flex/FlexRouter.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/FlexRouter.java
index 84098db9dc9..46d9e527980 100644
--- a/src/ext/java/org/opentripplanner/ext/flex/FlexRouter.java
+++ b/application/src/ext/java/org/opentripplanner/ext/flex/FlexRouter.java
@@ -20,7 +20,6 @@
import org.opentripplanner.ext.flex.template.FlexServiceDate;
import org.opentripplanner.ext.flex.trip.FlexTrip;
import org.opentripplanner.framework.application.OTPRequestTimeoutException;
-import org.opentripplanner.framework.time.ServiceDateUtils;
import org.opentripplanner.model.PathTransfer;
import org.opentripplanner.model.plan.Itinerary;
import org.opentripplanner.routing.algorithm.mapping.GraphPathToItineraryMapper;
@@ -31,6 +30,7 @@
import org.opentripplanner.transit.model.site.StopLocation;
import org.opentripplanner.transit.model.timetable.booking.RoutingBookingInfo;
import org.opentripplanner.transit.service.TransitService;
+import org.opentripplanner.utils.time.ServiceDateUtils;
public class FlexRouter {
@@ -192,7 +192,7 @@ public TransitStopVertex getStopVertexForStopId(FeedScopedId stopId) {
@Override
public Collection getTransfersFromStop(StopLocation stop) {
- return transitService.getTransfersByStop(stop);
+ return transitService.findPathTransfers(stop);
}
@Override
@@ -207,7 +207,7 @@ public Collection getTransfersToStop(StopLocation stop) {
@Override
public boolean isDateActive(FlexServiceDate date, FlexTrip, ?> trip) {
- int serviceCode = transitService.getServiceCodeForId(trip.getTrip().getServiceId());
+ int serviceCode = transitService.getServiceCode(trip.getTrip().getServiceId());
return date.isTripServiceRunning(serviceCode);
}
}
diff --git a/src/ext/java/org/opentripplanner/ext/flex/FlexTripsMapper.java b/application/src/ext/java/org/opentripplanner/ext/flex/FlexTripsMapper.java
similarity index 81%
rename from src/ext/java/org/opentripplanner/ext/flex/FlexTripsMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/FlexTripsMapper.java
index c4167f2f9e1..17ce735a447 100644
--- a/src/ext/java/org/opentripplanner/ext/flex/FlexTripsMapper.java
+++ b/application/src/ext/java/org/opentripplanner/ext/flex/FlexTripsMapper.java
@@ -7,13 +7,13 @@
import org.opentripplanner.ext.flex.trip.FlexTrip;
import org.opentripplanner.ext.flex.trip.ScheduledDeviatedTrip;
import org.opentripplanner.ext.flex.trip.UnscheduledTrip;
-import org.opentripplanner.framework.logging.ProgressTracker;
import org.opentripplanner.graph_builder.issue.api.DataImportIssueStore;
import org.opentripplanner.model.StopTime;
import org.opentripplanner.model.TripStopTimes;
import org.opentripplanner.model.impl.OtpTransitServiceBuilder;
import org.opentripplanner.routing.api.request.framework.TimePenalty;
import org.opentripplanner.transit.model.timetable.Trip;
+import org.opentripplanner.utils.logging.ProgressTracker;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -44,20 +44,20 @@ public class FlexTripsMapper {
.withTimePenalty(timePenalty)
.build()
);
- } else if (ScheduledDeviatedTrip.isScheduledFlexTrip(stopTimes)) {
+ } else if (ScheduledDeviatedTrip.isScheduledDeviatedFlexTrip(stopTimes)) {
result.add(
ScheduledDeviatedTrip.of(trip.getId()).withTrip(trip).withStopTimes(stopTimes).build()
);
- } else if (hasContinuousStops(stopTimes) && FlexTrip.containsFlexStops(stopTimes)) {
+ } else if (stopTimes.stream().anyMatch(StopTime::combinesContinuousStoppingWithFlexWindow)) {
store.add(
- "ContinuousFlexTrip",
- "Trip %s contains both flex stops and continuous pick up/drop off. This is an invalid combination: https://github.com/MobilityData/gtfs-flex/issues/70",
+ "ContinuousFlexStopTime",
+ "Trip %s contains a stop time which combines flex with continuous pick up/drop off. This is an invalid combination: https://github.com/MobilityData/gtfs-flex/issues/70",
trip.getId()
);
// result.add(new ContinuousPickupDropOffTrip(trip, stopTimes));
}
- //Keep lambda! A method-ref would causes incorrect class and line number to be logged
+ //Keep lambda! A method-ref would cause incorrect class and line number to be logged
//noinspection Convert2MethodRef
progress.step(m -> LOG.info(m));
}
diff --git a/src/ext/java/org/opentripplanner/ext/flex/FlexibleTransitLeg.java b/application/src/ext/java/org/opentripplanner/ext/flex/FlexibleTransitLeg.java
similarity index 97%
rename from src/ext/java/org/opentripplanner/ext/flex/FlexibleTransitLeg.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/FlexibleTransitLeg.java
index 0544a46da72..25c4abee12e 100644
--- a/src/ext/java/org/opentripplanner/ext/flex/FlexibleTransitLeg.java
+++ b/application/src/ext/java/org/opentripplanner/ext/flex/FlexibleTransitLeg.java
@@ -6,12 +6,10 @@
import java.util.HashSet;
import java.util.List;
import java.util.Set;
-import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
import org.locationtech.jts.geom.LineString;
import org.opentripplanner.ext.flex.edgetype.FlexTripEdge;
import org.opentripplanner.framework.i18n.I18NString;
-import org.opentripplanner.framework.lang.DoubleUtils;
-import org.opentripplanner.framework.tostring.ToStringBuilder;
import org.opentripplanner.model.PickDrop;
import org.opentripplanner.model.fare.FareProductUse;
import org.opentripplanner.model.plan.Leg;
@@ -28,6 +26,8 @@
import org.opentripplanner.transit.model.organization.Operator;
import org.opentripplanner.transit.model.timetable.Trip;
import org.opentripplanner.transit.model.timetable.booking.BookingInfo;
+import org.opentripplanner.utils.lang.DoubleUtils;
+import org.opentripplanner.utils.tostring.ToStringBuilder;
/**
* One leg of a trip -- that is, a temporally continuous piece of the journey that takes place on a
@@ -66,6 +66,7 @@ public Agency getAgency() {
}
@Override
+ @Nullable
public Operator getOperator() {
return getTrip().getOperator();
}
@@ -96,7 +97,6 @@ public LegTime end() {
}
@Override
- @Nonnull
public TransitMode getMode() {
return getTrip().getMode();
}
diff --git a/src/ext/java/org/opentripplanner/ext/flex/README.md b/application/src/ext/java/org/opentripplanner/ext/flex/README.md
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/flex/README.md
rename to application/src/ext/java/org/opentripplanner/ext/flex/README.md
diff --git a/src/ext/java/org/opentripplanner/ext/flex/edgetype/FlexTripEdge.java b/application/src/ext/java/org/opentripplanner/ext/flex/edgetype/FlexTripEdge.java
similarity index 98%
rename from src/ext/java/org/opentripplanner/ext/flex/edgetype/FlexTripEdge.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/edgetype/FlexTripEdge.java
index 40201295d7b..70b0fcdcb3c 100644
--- a/src/ext/java/org/opentripplanner/ext/flex/edgetype/FlexTripEdge.java
+++ b/application/src/ext/java/org/opentripplanner/ext/flex/edgetype/FlexTripEdge.java
@@ -2,7 +2,6 @@
import java.time.LocalDate;
import java.util.Objects;
-import javax.annotation.Nonnull;
import org.locationtech.jts.geom.LineString;
import org.opentripplanner.ext.flex.flexpathcalculator.FlexPath;
import org.opentripplanner.ext.flex.trip.FlexTrip;
@@ -92,7 +91,6 @@ public double getDistanceMeters() {
}
@Override
- @Nonnull
public State[] traverse(State s0) {
StateEditor editor = s0.edit(this);
editor.setBackMode(TraverseMode.FLEX);
diff --git a/src/ext/java/org/opentripplanner/ext/flex/flexpathcalculator/DirectFlexPathCalculator.java b/application/src/ext/java/org/opentripplanner/ext/flex/flexpathcalculator/DirectFlexPathCalculator.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/flex/flexpathcalculator/DirectFlexPathCalculator.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/flexpathcalculator/DirectFlexPathCalculator.java
diff --git a/src/ext/java/org/opentripplanner/ext/flex/flexpathcalculator/FlexPath.java b/application/src/ext/java/org/opentripplanner/ext/flex/flexpathcalculator/FlexPath.java
similarity index 97%
rename from src/ext/java/org/opentripplanner/ext/flex/flexpathcalculator/FlexPath.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/flexpathcalculator/FlexPath.java
index 4a494286313..86934a22310 100644
--- a/src/ext/java/org/opentripplanner/ext/flex/flexpathcalculator/FlexPath.java
+++ b/application/src/ext/java/org/opentripplanner/ext/flex/flexpathcalculator/FlexPath.java
@@ -4,8 +4,8 @@
import java.util.function.Supplier;
import javax.annotation.concurrent.Immutable;
import org.locationtech.jts.geom.LineString;
-import org.opentripplanner.framework.lang.IntUtils;
import org.opentripplanner.routing.api.request.framework.TimePenalty;
+import org.opentripplanner.utils.lang.IntUtils;
/**
* This class contains the results from a FlexPathCalculator.
diff --git a/src/ext/java/org/opentripplanner/ext/flex/flexpathcalculator/FlexPathCalculator.java b/application/src/ext/java/org/opentripplanner/ext/flex/flexpathcalculator/FlexPathCalculator.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/flex/flexpathcalculator/FlexPathCalculator.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/flexpathcalculator/FlexPathCalculator.java
diff --git a/src/ext/java/org/opentripplanner/ext/flex/flexpathcalculator/ScheduledFlexPathCalculator.java b/application/src/ext/java/org/opentripplanner/ext/flex/flexpathcalculator/ScheduledFlexPathCalculator.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/flex/flexpathcalculator/ScheduledFlexPathCalculator.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/flexpathcalculator/ScheduledFlexPathCalculator.java
diff --git a/src/ext/java/org/opentripplanner/ext/flex/flexpathcalculator/StreetFlexPathCalculator.java b/application/src/ext/java/org/opentripplanner/ext/flex/flexpathcalculator/StreetFlexPathCalculator.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/flex/flexpathcalculator/StreetFlexPathCalculator.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/flexpathcalculator/StreetFlexPathCalculator.java
diff --git a/src/ext/java/org/opentripplanner/ext/flex/flexpathcalculator/TimePenaltyCalculator.java b/application/src/ext/java/org/opentripplanner/ext/flex/flexpathcalculator/TimePenaltyCalculator.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/flex/flexpathcalculator/TimePenaltyCalculator.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/flexpathcalculator/TimePenaltyCalculator.java
diff --git a/src/ext/java/org/opentripplanner/ext/flex/template/AbstractFlexTemplate.java b/application/src/ext/java/org/opentripplanner/ext/flex/template/AbstractFlexTemplate.java
similarity index 98%
rename from src/ext/java/org/opentripplanner/ext/flex/template/AbstractFlexTemplate.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/template/AbstractFlexTemplate.java
index 9ce9cf8a4c4..aeeab84259c 100644
--- a/src/ext/java/org/opentripplanner/ext/flex/template/AbstractFlexTemplate.java
+++ b/application/src/ext/java/org/opentripplanner/ext/flex/template/AbstractFlexTemplate.java
@@ -13,7 +13,6 @@
import org.opentripplanner.ext.flex.edgetype.FlexTripEdge;
import org.opentripplanner.ext.flex.flexpathcalculator.FlexPathCalculator;
import org.opentripplanner.ext.flex.trip.FlexTrip;
-import org.opentripplanner.framework.tostring.ToStringBuilder;
import org.opentripplanner.model.PathTransfer;
import org.opentripplanner.routing.graphfinder.NearbyStop;
import org.opentripplanner.street.model.edge.Edge;
@@ -22,6 +21,7 @@
import org.opentripplanner.street.search.state.State;
import org.opentripplanner.transit.model.site.RegularStop;
import org.opentripplanner.transit.model.site.StopLocation;
+import org.opentripplanner.utils.tostring.ToStringBuilder;
/**
* A container for a few pieces of information that can be used to calculate flex accesses, egresses,
@@ -199,7 +199,7 @@ private FlexAccessEgress createFlexAccessEgress(
return null;
}
- final var finalStateOpt = EdgeTraverser.traverseEdges(afterFlexState[0], transferEdges);
+ final var finalStateOpt = EdgeTraverser.traverseEdges(afterFlexState, transferEdges);
return finalStateOpt
.map(finalState -> {
diff --git a/src/ext/java/org/opentripplanner/ext/flex/template/ClosestTrip.java b/application/src/ext/java/org/opentripplanner/ext/flex/template/ClosestTrip.java
similarity index 98%
rename from src/ext/java/org/opentripplanner/ext/flex/template/ClosestTrip.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/template/ClosestTrip.java
index a30ebacc497..553c8aee6c0 100644
--- a/src/ext/java/org/opentripplanner/ext/flex/template/ClosestTrip.java
+++ b/application/src/ext/java/org/opentripplanner/ext/flex/template/ClosestTrip.java
@@ -7,9 +7,9 @@
import java.util.Map;
import java.util.Objects;
import org.opentripplanner.ext.flex.trip.FlexTrip;
-import org.opentripplanner.framework.lang.IntUtils;
import org.opentripplanner.routing.graphfinder.NearbyStop;
import org.opentripplanner.transit.model.timetable.booking.RoutingBookingInfo;
+import org.opentripplanner.utils.lang.IntUtils;
/**
* The combination of the closest stop, trip and trip active date.
diff --git a/src/ext/java/org/opentripplanner/ext/flex/template/DirectFlexPath.java b/application/src/ext/java/org/opentripplanner/ext/flex/template/DirectFlexPath.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/flex/template/DirectFlexPath.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/template/DirectFlexPath.java
diff --git a/src/ext/java/org/opentripplanner/ext/flex/template/FlexAccessEgressCallbackAdapter.java b/application/src/ext/java/org/opentripplanner/ext/flex/template/FlexAccessEgressCallbackAdapter.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/flex/template/FlexAccessEgressCallbackAdapter.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/template/FlexAccessEgressCallbackAdapter.java
diff --git a/src/ext/java/org/opentripplanner/ext/flex/template/FlexAccessFactory.java b/application/src/ext/java/org/opentripplanner/ext/flex/template/FlexAccessFactory.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/flex/template/FlexAccessFactory.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/template/FlexAccessFactory.java
diff --git a/src/ext/java/org/opentripplanner/ext/flex/template/FlexAccessTemplate.java b/application/src/ext/java/org/opentripplanner/ext/flex/template/FlexAccessTemplate.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/flex/template/FlexAccessTemplate.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/template/FlexAccessTemplate.java
diff --git a/src/ext/java/org/opentripplanner/ext/flex/template/FlexDirectPathFactory.java b/application/src/ext/java/org/opentripplanner/ext/flex/template/FlexDirectPathFactory.java
similarity index 99%
rename from src/ext/java/org/opentripplanner/ext/flex/template/FlexDirectPathFactory.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/template/FlexDirectPathFactory.java
index f27a502911f..ae35c262a1e 100644
--- a/src/ext/java/org/opentripplanner/ext/flex/template/FlexDirectPathFactory.java
+++ b/application/src/ext/java/org/opentripplanner/ext/flex/template/FlexDirectPathFactory.java
@@ -113,7 +113,7 @@ private Optional createDirectGraphPath(
final State[] afterFlexState = flexEdge.traverse(accessNearbyStop.state);
- var finalStateOpt = EdgeTraverser.traverseEdges(afterFlexState[0], egress.edges);
+ var finalStateOpt = EdgeTraverser.traverseEdges(afterFlexState, egress.edges);
if (finalStateOpt.isEmpty()) {
return Optional.empty();
diff --git a/src/ext/java/org/opentripplanner/ext/flex/template/FlexEgressFactory.java b/application/src/ext/java/org/opentripplanner/ext/flex/template/FlexEgressFactory.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/flex/template/FlexEgressFactory.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/template/FlexEgressFactory.java
diff --git a/src/ext/java/org/opentripplanner/ext/flex/template/FlexEgressTemplate.java b/application/src/ext/java/org/opentripplanner/ext/flex/template/FlexEgressTemplate.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/flex/template/FlexEgressTemplate.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/template/FlexEgressTemplate.java
diff --git a/src/ext/java/org/opentripplanner/ext/flex/template/FlexServiceDate.java b/application/src/ext/java/org/opentripplanner/ext/flex/template/FlexServiceDate.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/flex/template/FlexServiceDate.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/template/FlexServiceDate.java
diff --git a/src/ext/java/org/opentripplanner/ext/flex/template/FlexTemplateFactory.java b/application/src/ext/java/org/opentripplanner/ext/flex/template/FlexTemplateFactory.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/flex/template/FlexTemplateFactory.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/template/FlexTemplateFactory.java
diff --git a/src/ext/java/org/opentripplanner/ext/flex/trip/FlexTrip.java b/application/src/ext/java/org/opentripplanner/ext/flex/trip/FlexTrip.java
similarity index 98%
rename from src/ext/java/org/opentripplanner/ext/flex/trip/FlexTrip.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/trip/FlexTrip.java
index 8fdb1b8fd5c..caceab676ce 100644
--- a/src/ext/java/org/opentripplanner/ext/flex/trip/FlexTrip.java
+++ b/application/src/ext/java/org/opentripplanner/ext/flex/trip/FlexTrip.java
@@ -3,7 +3,6 @@
import java.util.List;
import java.util.Objects;
import java.util.Set;
-import javax.annotation.Nonnull;
import org.opentripplanner.ext.flex.flexpathcalculator.FlexPathCalculator;
import org.opentripplanner.model.PickDrop;
import org.opentripplanner.model.StopTime;
@@ -140,7 +139,7 @@ public abstract FlexPathCalculator decorateFlexPathCalculator(
);
@Override
- public boolean sameAs(@Nonnull T other) {
+ public boolean sameAs(T other) {
return getId().equals(other.getId()) && Objects.equals(trip, other.getTrip());
}
}
diff --git a/src/ext/java/org/opentripplanner/ext/flex/trip/FlexTripBuilder.java b/application/src/ext/java/org/opentripplanner/ext/flex/trip/FlexTripBuilder.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/flex/trip/FlexTripBuilder.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/trip/FlexTripBuilder.java
diff --git a/src/ext/java/org/opentripplanner/ext/flex/trip/ScheduledDeviatedTrip.java b/application/src/ext/java/org/opentripplanner/ext/flex/trip/ScheduledDeviatedTrip.java
similarity index 91%
rename from src/ext/java/org/opentripplanner/ext/flex/trip/ScheduledDeviatedTrip.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/trip/ScheduledDeviatedTrip.java
index 5ea0cb9fb91..25eac71ebb6 100644
--- a/src/ext/java/org/opentripplanner/ext/flex/trip/ScheduledDeviatedTrip.java
+++ b/application/src/ext/java/org/opentripplanner/ext/flex/trip/ScheduledDeviatedTrip.java
@@ -1,6 +1,5 @@
package org.opentripplanner.ext.flex.trip;
-import static org.opentripplanner.model.PickDrop.NONE;
import static org.opentripplanner.model.StopTime.MISSING_VALUE;
import java.io.Serializable;
@@ -9,7 +8,6 @@
import java.util.Set;
import java.util.function.Predicate;
import java.util.stream.Collectors;
-import javax.annotation.Nonnull;
import org.opentripplanner.ext.flex.flexpathcalculator.FlexPathCalculator;
import org.opentripplanner.ext.flex.flexpathcalculator.ScheduledFlexPathCalculator;
import org.opentripplanner.model.PickDrop;
@@ -36,7 +34,7 @@ public class ScheduledDeviatedTrip
ScheduledDeviatedTrip(ScheduledDeviatedTripBuilder builder) {
super(builder);
List stopTimes = builder.stopTimes();
- if (!isScheduledFlexTrip(stopTimes)) {
+ if (!isScheduledDeviatedFlexTrip(stopTimes)) {
throw new IllegalArgumentException("Incompatible stopTimes for scheduled flex trip");
}
@@ -56,12 +54,10 @@ public static ScheduledDeviatedTripBuilder of(FeedScopedId id) {
return new ScheduledDeviatedTripBuilder(id);
}
- public static boolean isScheduledFlexTrip(List stopTimes) {
- Predicate notStopType = Predicate.not(st -> st.getStop() instanceof RegularStop);
- Predicate notContinuousStop = stopTime ->
- stopTime.getFlexContinuousDropOff() == NONE && stopTime.getFlexContinuousPickup() == NONE;
+ public static boolean isScheduledDeviatedFlexTrip(List stopTimes) {
+ Predicate notFixedStop = Predicate.not(st -> st.getStop() instanceof RegularStop);
return (
- stopTimes.stream().anyMatch(notStopType) && stopTimes.stream().allMatch(notContinuousStop)
+ stopTimes.stream().anyMatch(notFixedStop) && stopTimes.stream().noneMatch(StopTime::combinesContinuousStoppingWithFlexWindow)
);
}
@@ -152,7 +148,7 @@ public boolean isAlightingPossible(StopLocation toStop) {
}
@Override
- public boolean sameAs(@Nonnull ScheduledDeviatedTrip other) {
+ public boolean sameAs(ScheduledDeviatedTrip other) {
return (
super.sameAs(other) &&
Arrays.equals(stopTimes, other.stopTimes) &&
@@ -161,7 +157,6 @@ public boolean sameAs(@Nonnull ScheduledDeviatedTrip other) {
);
}
- @Nonnull
@Override
public TransitBuilder copy() {
return new ScheduledDeviatedTripBuilder(this);
diff --git a/src/ext/java/org/opentripplanner/ext/flex/trip/ScheduledDeviatedTripBuilder.java b/application/src/ext/java/org/opentripplanner/ext/flex/trip/ScheduledDeviatedTripBuilder.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/flex/trip/ScheduledDeviatedTripBuilder.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/trip/ScheduledDeviatedTripBuilder.java
diff --git a/src/ext/java/org/opentripplanner/ext/flex/trip/StopTimeWindow.java b/application/src/ext/java/org/opentripplanner/ext/flex/trip/StopTimeWindow.java
similarity index 97%
rename from src/ext/java/org/opentripplanner/ext/flex/trip/StopTimeWindow.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/trip/StopTimeWindow.java
index 5b7ebbbc575..24b33360fce 100644
--- a/src/ext/java/org/opentripplanner/ext/flex/trip/StopTimeWindow.java
+++ b/application/src/ext/java/org/opentripplanner/ext/flex/trip/StopTimeWindow.java
@@ -3,10 +3,10 @@
import static org.opentripplanner.model.StopTime.MISSING_VALUE;
import java.io.Serializable;
-import org.opentripplanner.framework.lang.IntRange;
import org.opentripplanner.model.PickDrop;
import org.opentripplanner.model.StopTime;
import org.opentripplanner.transit.model.site.StopLocation;
+import org.opentripplanner.utils.lang.IntRange;
class StopTimeWindow implements Serializable {
diff --git a/src/ext/java/org/opentripplanner/ext/flex/trip/UnscheduledTrip.java b/application/src/ext/java/org/opentripplanner/ext/flex/trip/UnscheduledTrip.java
similarity index 94%
rename from src/ext/java/org/opentripplanner/ext/flex/trip/UnscheduledTrip.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/trip/UnscheduledTrip.java
index 20a77bb94ed..83fc22c9975 100644
--- a/src/ext/java/org/opentripplanner/ext/flex/trip/UnscheduledTrip.java
+++ b/application/src/ext/java/org/opentripplanner/ext/flex/trip/UnscheduledTrip.java
@@ -1,6 +1,5 @@
package org.opentripplanner.ext.flex.trip;
-import static org.opentripplanner.model.PickDrop.NONE;
import static org.opentripplanner.model.StopTime.MISSING_VALUE;
import java.util.Arrays;
@@ -8,14 +7,9 @@
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
-import java.util.function.Predicate;
import java.util.stream.Collectors;
-import javax.annotation.Nonnull;
import org.opentripplanner.ext.flex.flexpathcalculator.FlexPathCalculator;
import org.opentripplanner.ext.flex.flexpathcalculator.TimePenaltyCalculator;
-import org.opentripplanner.framework.lang.DoubleUtils;
-import org.opentripplanner.framework.lang.IntRange;
-import org.opentripplanner.framework.time.DurationUtils;
import org.opentripplanner.model.PickDrop;
import org.opentripplanner.model.StopTime;
import org.opentripplanner.routing.api.request.framework.TimePenalty;
@@ -24,6 +18,9 @@
import org.opentripplanner.transit.model.site.GroupStop;
import org.opentripplanner.transit.model.site.StopLocation;
import org.opentripplanner.transit.model.timetable.booking.BookingInfo;
+import org.opentripplanner.utils.lang.DoubleUtils;
+import org.opentripplanner.utils.lang.IntRange;
+import org.opentripplanner.utils.time.DurationUtils;
/**
* This type of FlexTrip is used when a taxi-type service is modeled, which operates in any number
@@ -82,11 +79,9 @@ public static UnscheduledTripBuilder of(FeedScopedId id) {
* - One or more stop times with a flexible time window but no fixed stop in between them
*/
public static boolean isUnscheduledTrip(List stopTimes) {
- Predicate hasContinuousStops = stopTime ->
- stopTime.getFlexContinuousDropOff() != NONE || stopTime.getFlexContinuousPickup() != NONE;
if (stopTimes.isEmpty()) {
return false;
- } else if (stopTimes.stream().anyMatch(hasContinuousStops)) {
+ } else if (stopTimes.stream().anyMatch(StopTime::combinesContinuousStoppingWithFlexWindow)) {
return false;
} else if (N_STOPS.contains(stopTimes.size())) {
return stopTimes.stream().anyMatch(StopTime::hasFlexWindow);
@@ -197,7 +192,7 @@ public boolean isAlightingPossible(StopLocation stop) {
}
@Override
- public boolean sameAs(@Nonnull UnscheduledTrip other) {
+ public boolean sameAs(UnscheduledTrip other) {
return (
super.sameAs(other) &&
Arrays.equals(stopTimes, other.stopTimes) &&
@@ -206,7 +201,6 @@ public boolean sameAs(@Nonnull UnscheduledTrip other) {
);
}
- @Nonnull
@Override
public TransitBuilder copy() {
return new UnscheduledTripBuilder(this);
diff --git a/src/ext/java/org/opentripplanner/ext/flex/trip/UnscheduledTripBuilder.java b/application/src/ext/java/org/opentripplanner/ext/flex/trip/UnscheduledTripBuilder.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/flex/trip/UnscheduledTripBuilder.java
rename to application/src/ext/java/org/opentripplanner/ext/flex/trip/UnscheduledTripBuilder.java
diff --git a/src/ext/java/org/opentripplanner/ext/geocoder/EnglishNGramAnalyzer.java b/application/src/ext/java/org/opentripplanner/ext/geocoder/EnglishNGramAnalyzer.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/geocoder/EnglishNGramAnalyzer.java
rename to application/src/ext/java/org/opentripplanner/ext/geocoder/EnglishNGramAnalyzer.java
diff --git a/src/ext/java/org/opentripplanner/ext/geocoder/GeocoderResource.java b/application/src/ext/java/org/opentripplanner/ext/geocoder/GeocoderResource.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/geocoder/GeocoderResource.java
rename to application/src/ext/java/org/opentripplanner/ext/geocoder/GeocoderResource.java
diff --git a/src/ext/java/org/opentripplanner/ext/geocoder/LuceneIndex.java b/application/src/ext/java/org/opentripplanner/ext/geocoder/LuceneIndex.java
similarity index 95%
rename from src/ext/java/org/opentripplanner/ext/geocoder/LuceneIndex.java
rename to application/src/ext/java/org/opentripplanner/ext/geocoder/LuceneIndex.java
index 71b80ac58a6..f742ddb131a 100644
--- a/src/ext/java/org/opentripplanner/ext/geocoder/LuceneIndex.java
+++ b/application/src/ext/java/org/opentripplanner/ext/geocoder/LuceneIndex.java
@@ -18,7 +18,7 @@
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.codecs.Codec;
import org.apache.lucene.codecs.PostingsFormat;
-import org.apache.lucene.codecs.lucene99.Lucene99Codec;
+import org.apache.lucene.codecs.lucene912.Lucene912Codec;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.document.StoredField;
@@ -34,7 +34,7 @@
import org.apache.lucene.search.FuzzyQuery;
import org.apache.lucene.search.PrefixQuery;
import org.apache.lucene.search.TermQuery;
-import org.apache.lucene.search.suggest.document.Completion99PostingsFormat;
+import org.apache.lucene.search.suggest.document.Completion912PostingsFormat;
import org.apache.lucene.search.suggest.document.CompletionAnalyzer;
import org.apache.lucene.search.suggest.document.ContextQuery;
import org.apache.lucene.search.suggest.document.ContextSuggestField;
@@ -42,14 +42,14 @@
import org.apache.lucene.search.suggest.document.SuggestIndexSearcher;
import org.apache.lucene.store.ByteBuffersDirectory;
import org.opentripplanner.ext.stopconsolidation.StopConsolidationService;
-import org.opentripplanner.framework.collection.ListUtils;
import org.opentripplanner.framework.i18n.I18NString;
import org.opentripplanner.transit.model.framework.FeedScopedId;
import org.opentripplanner.transit.model.site.StopLocation;
import org.opentripplanner.transit.model.site.StopLocationsGroup;
import org.opentripplanner.transit.service.DefaultTransitService;
-import org.opentripplanner.transit.service.TransitModel;
+import org.opentripplanner.transit.service.TimetableRepository;
import org.opentripplanner.transit.service.TransitService;
+import org.opentripplanner.utils.collection.ListUtils;
public class LuceneIndex implements Serializable {
@@ -73,8 +73,11 @@ public class LuceneIndex implements Serializable {
* However, we do need some methods in the service and that's why we instantiate it manually in this
* constructor.
*/
- public LuceneIndex(TransitModel transitModel, StopConsolidationService stopConsolidationService) {
- this(new DefaultTransitService(transitModel), stopConsolidationService);
+ public LuceneIndex(
+ TimetableRepository timetableRepository,
+ StopConsolidationService stopConsolidationService
+ ) {
+ this(new DefaultTransitService(timetableRepository), stopConsolidationService);
}
/**
@@ -200,8 +203,8 @@ private StopCluster toStopCluster(Document document) {
static IndexWriterConfig iwcWithSuggestField(Analyzer analyzer, final Set suggestFields) {
IndexWriterConfig iwc = new IndexWriterConfig(analyzer);
- Codec filterCodec = new Lucene99Codec() {
- final PostingsFormat postingsFormat = new Completion99PostingsFormat();
+ Codec filterCodec = new Lucene912Codec() {
+ final PostingsFormat postingsFormat = new Completion912PostingsFormat();
@Override
public PostingsFormat getPostingsFormatForField(String field) {
diff --git a/src/ext/java/org/opentripplanner/ext/geocoder/LuceneStopCluster.java b/application/src/ext/java/org/opentripplanner/ext/geocoder/LuceneStopCluster.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/geocoder/LuceneStopCluster.java
rename to application/src/ext/java/org/opentripplanner/ext/geocoder/LuceneStopCluster.java
diff --git a/src/ext/java/org/opentripplanner/ext/geocoder/StopCluster.java b/application/src/ext/java/org/opentripplanner/ext/geocoder/StopCluster.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/geocoder/StopCluster.java
rename to application/src/ext/java/org/opentripplanner/ext/geocoder/StopCluster.java
diff --git a/src/ext/java/org/opentripplanner/ext/geocoder/StopClusterMapper.java b/application/src/ext/java/org/opentripplanner/ext/geocoder/StopClusterMapper.java
similarity index 96%
rename from src/ext/java/org/opentripplanner/ext/geocoder/StopClusterMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/geocoder/StopClusterMapper.java
index 98a617b809f..daecb7f6a4e 100644
--- a/src/ext/java/org/opentripplanner/ext/geocoder/StopClusterMapper.java
+++ b/application/src/ext/java/org/opentripplanner/ext/geocoder/StopClusterMapper.java
@@ -13,7 +13,6 @@
import javax.annotation.Nullable;
import org.opentripplanner.ext.stopconsolidation.StopConsolidationService;
import org.opentripplanner.ext.stopconsolidation.model.StopReplacement;
-import org.opentripplanner.framework.collection.ListUtils;
import org.opentripplanner.framework.geometry.WgsCoordinate;
import org.opentripplanner.framework.i18n.I18NString;
import org.opentripplanner.model.FeedInfo;
@@ -24,6 +23,7 @@
import org.opentripplanner.transit.model.site.StopLocation;
import org.opentripplanner.transit.model.site.StopLocationsGroup;
import org.opentripplanner.transit.service.TransitService;
+import org.opentripplanner.utils.collection.ListUtils;
/**
* Mappers for generating {@link LuceneStopCluster} from the transit model.
@@ -174,7 +174,7 @@ private static Optional map(List stopLocations)
}
private List agenciesForStopLocation(StopLocation stop) {
- return transitService.getRoutesForStop(stop).stream().map(Route::getAgency).distinct().toList();
+ return transitService.findRoutes(stop).stream().map(Route::getAgency).distinct().toList();
}
private List agenciesForStopLocationsGroup(StopLocationsGroup group) {
@@ -190,7 +190,7 @@ StopCluster.Location toLocation(FeedScopedId id) {
var loc = transitService.getStopLocation(id);
if (loc != null) {
var feedPublisher = toFeedPublisher(transitService.getFeedInfo(id.getFeedId()));
- var modes = transitService.getModesOfStopLocation(loc).stream().map(Enum::name).toList();
+ var modes = transitService.findTransitModes(loc).stream().map(Enum::name).toList();
var agencies = agenciesForStopLocation(loc)
.stream()
.map(StopClusterMapper::toAgency)
@@ -209,7 +209,7 @@ StopCluster.Location toLocation(FeedScopedId id) {
var group = transitService.getStopLocationsGroup(id);
var feedPublisher = toFeedPublisher(transitService.getFeedInfo(id.getFeedId()));
var modes = transitService
- .getModesOfStopLocationsGroup(group)
+ .findTransitModes(group)
.stream()
.map(Enum::name)
.toList();
diff --git a/src/ext/java/org/opentripplanner/ext/geocoder/configure/GeocoderModule.java b/application/src/ext/java/org/opentripplanner/ext/geocoder/configure/GeocoderModule.java
similarity index 79%
rename from src/ext/java/org/opentripplanner/ext/geocoder/configure/GeocoderModule.java
rename to application/src/ext/java/org/opentripplanner/ext/geocoder/configure/GeocoderModule.java
index 9eaf6ade8e5..666ff5d7eaf 100644
--- a/src/ext/java/org/opentripplanner/ext/geocoder/configure/GeocoderModule.java
+++ b/application/src/ext/java/org/opentripplanner/ext/geocoder/configure/GeocoderModule.java
@@ -7,7 +7,7 @@
import org.opentripplanner.ext.geocoder.LuceneIndex;
import org.opentripplanner.ext.stopconsolidation.StopConsolidationService;
import org.opentripplanner.framework.application.OTPFeature;
-import org.opentripplanner.transit.service.TransitModel;
+import org.opentripplanner.transit.service.TimetableRepository;
/**
* This module builds the Lucene geocoder based on whether the feature flag is on or off.
@@ -19,11 +19,11 @@ public class GeocoderModule {
@Singleton
@Nullable
LuceneIndex luceneIndex(
- TransitModel transitModel,
+ TimetableRepository timetableRepository,
@Nullable StopConsolidationService stopConsolidationService
) {
if (OTPFeature.SandboxAPIGeocoder.isOn()) {
- return new LuceneIndex(transitModel, stopConsolidationService);
+ return new LuceneIndex(timetableRepository, stopConsolidationService);
} else {
return null;
}
diff --git a/src/ext/java/org/opentripplanner/ext/interactivelauncher/InteractiveOtpMain.java b/application/src/ext/java/org/opentripplanner/ext/interactivelauncher/InteractiveOtpMain.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/interactivelauncher/InteractiveOtpMain.java
rename to application/src/ext/java/org/opentripplanner/ext/interactivelauncher/InteractiveOtpMain.java
diff --git a/src/ext/java/org/opentripplanner/ext/interactivelauncher/Model.java b/application/src/ext/java/org/opentripplanner/ext/interactivelauncher/Model.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/interactivelauncher/Model.java
rename to application/src/ext/java/org/opentripplanner/ext/interactivelauncher/Model.java
diff --git a/src/ext/java/org/opentripplanner/ext/interactivelauncher/api/LauncherRequestDecorator.java b/application/src/ext/java/org/opentripplanner/ext/interactivelauncher/api/LauncherRequestDecorator.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/interactivelauncher/api/LauncherRequestDecorator.java
rename to application/src/ext/java/org/opentripplanner/ext/interactivelauncher/api/LauncherRequestDecorator.java
diff --git a/src/ext/java/org/opentripplanner/ext/interactivelauncher/configuration/InteractiveLauncherModule.java b/application/src/ext/java/org/opentripplanner/ext/interactivelauncher/configuration/InteractiveLauncherModule.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/interactivelauncher/configuration/InteractiveLauncherModule.java
rename to application/src/ext/java/org/opentripplanner/ext/interactivelauncher/configuration/InteractiveLauncherModule.java
diff --git a/src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/OtpDebugController.java b/application/src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/OtpDebugController.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/OtpDebugController.java
rename to application/src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/OtpDebugController.java
diff --git a/src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/logging/DebugLoggers.java b/application/src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/logging/DebugLoggers.java
similarity index 89%
rename from src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/logging/DebugLoggers.java
rename to application/src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/logging/DebugLoggers.java
index 48f87abf2ab..5880a6969fe 100644
--- a/src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/logging/DebugLoggers.java
+++ b/application/src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/logging/DebugLoggers.java
@@ -10,7 +10,8 @@ static List list() {
of("All OTP debuggers", "org.opentripplanner"),
of("OTP request/response", "org.opentripplanner.routing.service.DefaultRoutingService"),
of("Raptor request/response", "org.opentripplanner.raptor.RaptorService"),
- of("Transfer Optimization", "org.opentripplanner.routing.algorithm.transferoptimization")
+ of("Transfer Optimization", "org.opentripplanner.routing.algorithm.transferoptimization"),
+ of("Trip Updates", "org.opentripplanner.updater.trip")
);
}
diff --git a/src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/logging/DebugLoggingSupport.java b/application/src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/logging/DebugLoggingSupport.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/logging/DebugLoggingSupport.java
rename to application/src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/logging/DebugLoggingSupport.java
diff --git a/src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/logging/LogModel.java b/application/src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/logging/LogModel.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/logging/LogModel.java
rename to application/src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/logging/LogModel.java
diff --git a/src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/logging/LogView.java b/application/src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/logging/LogView.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/logging/LogView.java
rename to application/src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/logging/LogView.java
diff --git a/src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/raptor/RaptorDebugModel.java b/application/src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/raptor/RaptorDebugModel.java
similarity index 97%
rename from src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/raptor/RaptorDebugModel.java
rename to application/src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/raptor/RaptorDebugModel.java
index 41d6ed6be1a..71fb682581c 100644
--- a/src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/raptor/RaptorDebugModel.java
+++ b/application/src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/raptor/RaptorDebugModel.java
@@ -7,9 +7,9 @@
import java.util.Set;
import javax.annotation.Nullable;
import org.opentripplanner.ext.interactivelauncher.api.LauncherRequestDecorator;
-import org.opentripplanner.framework.lang.StringUtils;
import org.opentripplanner.routing.api.request.DebugEventType;
import org.opentripplanner.routing.api.request.RouteRequest;
+import org.opentripplanner.utils.lang.StringUtils;
public class RaptorDebugModel implements LauncherRequestDecorator {
diff --git a/src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/raptor/RaptorDebugView.java b/application/src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/raptor/RaptorDebugView.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/raptor/RaptorDebugView.java
rename to application/src/ext/java/org/opentripplanner/ext/interactivelauncher/debug/raptor/RaptorDebugView.java
diff --git a/src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/DataSourceRootView.java b/application/src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/DataSourceRootView.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/DataSourceRootView.java
rename to application/src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/DataSourceRootView.java
diff --git a/src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/DataSourcesView.java b/application/src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/DataSourcesView.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/DataSourcesView.java
rename to application/src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/DataSourcesView.java
diff --git a/src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/MainView.java b/application/src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/MainView.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/MainView.java
rename to application/src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/MainView.java
diff --git a/src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/OptionsView.java b/application/src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/OptionsView.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/OptionsView.java
rename to application/src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/OptionsView.java
diff --git a/src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/StartOtpButtonView.java b/application/src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/StartOtpButtonView.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/StartOtpButtonView.java
rename to application/src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/StartOtpButtonView.java
diff --git a/src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/StartupModel.java b/application/src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/StartupModel.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/StartupModel.java
rename to application/src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/StartupModel.java
diff --git a/src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/StatusBar.java b/application/src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/StatusBar.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/StatusBar.java
rename to application/src/ext/java/org/opentripplanner/ext/interactivelauncher/startup/StatusBar.java
diff --git a/src/ext/java/org/opentripplanner/ext/interactivelauncher/support/SearchForOtpConfig.java b/application/src/ext/java/org/opentripplanner/ext/interactivelauncher/support/SearchForOtpConfig.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/interactivelauncher/support/SearchForOtpConfig.java
rename to application/src/ext/java/org/opentripplanner/ext/interactivelauncher/support/SearchForOtpConfig.java
diff --git a/src/ext/java/org/opentripplanner/ext/interactivelauncher/support/ViewUtils.java b/application/src/ext/java/org/opentripplanner/ext/interactivelauncher/support/ViewUtils.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/interactivelauncher/support/ViewUtils.java
rename to application/src/ext/java/org/opentripplanner/ext/interactivelauncher/support/ViewUtils.java
diff --git a/src/ext/java/org/opentripplanner/ext/parkAndRideApi/ParkAndRideResource.java b/application/src/ext/java/org/opentripplanner/ext/parkAndRideApi/ParkAndRideResource.java
similarity index 92%
rename from src/ext/java/org/opentripplanner/ext/parkAndRideApi/ParkAndRideResource.java
rename to application/src/ext/java/org/opentripplanner/ext/parkAndRideApi/ParkAndRideResource.java
index 4a577433bfe..747ba0617ec 100644
--- a/src/ext/java/org/opentripplanner/ext/parkAndRideApi/ParkAndRideResource.java
+++ b/application/src/ext/java/org/opentripplanner/ext/parkAndRideApi/ParkAndRideResource.java
@@ -14,8 +14,8 @@
import org.opentripplanner.framework.i18n.I18NString;
import org.opentripplanner.routing.graphfinder.DirectGraphFinder;
import org.opentripplanner.routing.graphfinder.GraphFinder;
-import org.opentripplanner.routing.vehicle_parking.VehicleParking;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingService;
+import org.opentripplanner.service.vehicleparking.VehicleParkingService;
+import org.opentripplanner.service.vehicleparking.model.VehicleParking;
import org.opentripplanner.standalone.api.OtpServerRequestContext;
/**
@@ -36,11 +36,11 @@ public ParkAndRideResource(
*/
@Deprecated @PathParam("ignoreRouterId") String ignoreRouterId
) {
- this.vehicleParkingService = serverContext.graph().getVehicleParkingService();
+ this.vehicleParkingService = serverContext.vehicleParkingService();
// TODO OTP2 - Why are we using the DirectGraphFinder here, not just
// - serverContext.graphFinder(). This needs at least a comment!
- // - This can be replaced with a search done with the StopModel
+ // - This can be replaced with a search done with the SiteRepository
// - if we have a radius search there.
this.graphFinder = new DirectGraphFinder(serverContext.transitService()::findRegularStops);
}
@@ -73,7 +73,8 @@ public Response getParkAndRide(
}
var prs = vehicleParkingService
- .getCarParks()
+ .listCarParks()
+ .stream()
.filter(lot -> envelope.contains(lot.getCoordinate().asJtsCoordinate()))
.filter(lot -> hasTransitStopsNearby(maxTransitDistance, lot))
.map(ParkAndRideInfo::ofVehicleParking)
diff --git a/src/ext/java/org/opentripplanner/ext/realtimeresolver/RealtimeResolver.java b/application/src/ext/java/org/opentripplanner/ext/realtimeresolver/RealtimeResolver.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/realtimeresolver/RealtimeResolver.java
rename to application/src/ext/java/org/opentripplanner/ext/realtimeresolver/RealtimeResolver.java
diff --git a/src/ext/java/org/opentripplanner/ext/reportapi/model/CachedValue.java b/application/src/ext/java/org/opentripplanner/ext/reportapi/model/CachedValue.java
similarity index 87%
rename from src/ext/java/org/opentripplanner/ext/reportapi/model/CachedValue.java
rename to application/src/ext/java/org/opentripplanner/ext/reportapi/model/CachedValue.java
index 6a7dac61b23..acf5758fa66 100644
--- a/src/ext/java/org/opentripplanner/ext/reportapi/model/CachedValue.java
+++ b/application/src/ext/java/org/opentripplanner/ext/reportapi/model/CachedValue.java
@@ -3,7 +3,6 @@
import java.time.Duration;
import java.time.Instant;
import java.util.function.Supplier;
-import javax.annotation.Nonnull;
/**
* The purpose of this class is to be a generic container for caching expensive computations.
@@ -16,7 +15,7 @@ public class CachedValue {
private T value;
private Instant timeout;
- public CachedValue(@Nonnull Duration cacheInterval) {
+ public CachedValue(Duration cacheInterval) {
this.value = null;
this.cacheInterval = cacheInterval;
this.timeout = calculateTimeout();
@@ -27,7 +26,7 @@ public CachedValue(@Nonnull Duration cacheInterval) {
*
* Otherwise, recompute and return it.
*/
- public T get(@Nonnull Supplier supplier) {
+ public T get(Supplier supplier) {
synchronized (this) {
if (hasExpired()) {
this.value = supplier.get();
diff --git a/src/ext/java/org/opentripplanner/ext/reportapi/model/CsvReportBuilder.java b/application/src/ext/java/org/opentripplanner/ext/reportapi/model/CsvReportBuilder.java
similarity index 93%
rename from src/ext/java/org/opentripplanner/ext/reportapi/model/CsvReportBuilder.java
rename to application/src/ext/java/org/opentripplanner/ext/reportapi/model/CsvReportBuilder.java
index f2513159fa6..087ed028a23 100644
--- a/src/ext/java/org/opentripplanner/ext/reportapi/model/CsvReportBuilder.java
+++ b/application/src/ext/java/org/opentripplanner/ext/reportapi/model/CsvReportBuilder.java
@@ -1,7 +1,7 @@
package org.opentripplanner.ext.reportapi.model;
-import org.opentripplanner.framework.time.DurationUtils;
-import org.opentripplanner.framework.time.TimeUtils;
+import org.opentripplanner.utils.time.DurationUtils;
+import org.opentripplanner.utils.time.TimeUtils;
/**
* A very simple CSV builder to create CSV reports.
diff --git a/src/ext/java/org/opentripplanner/ext/reportapi/model/GraphReportBuilder.java b/application/src/ext/java/org/opentripplanner/ext/reportapi/model/GraphReportBuilder.java
similarity index 92%
rename from src/ext/java/org/opentripplanner/ext/reportapi/model/GraphReportBuilder.java
rename to application/src/ext/java/org/opentripplanner/ext/reportapi/model/GraphReportBuilder.java
index 57d0872b9bd..338d425db9a 100644
--- a/src/ext/java/org/opentripplanner/ext/reportapi/model/GraphReportBuilder.java
+++ b/application/src/ext/java/org/opentripplanner/ext/reportapi/model/GraphReportBuilder.java
@@ -4,7 +4,6 @@
import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;
-import javax.annotation.Nonnull;
import org.opentripplanner.standalone.api.OtpServerRequestContext;
public class GraphReportBuilder {
@@ -42,21 +41,19 @@ public static GraphStats build(OtpServerRequestContext context) {
new StreetStats(edgeTypes, vertexTypes),
new TransitStats(
stopCounts,
- transitService.getAllTrips().size(),
- transitService.getAllTripPatterns().size(),
- transitService.getAllRoutes().size(),
+ transitService.listTrips().size(),
+ transitService.listTripPatterns().size(),
+ transitService.listRoutes().size(),
constrainedTransferCounts
)
);
}
- @Nonnull
private static String firstLetterToLowerCase(Object instance) {
var className = instance.getClass().getSimpleName();
return Character.toLowerCase(className.charAt(0)) + className.substring(1);
}
- @Nonnull
private static TypeStats countValues(Collection input, Function classify) {
Map result = new HashMap<>();
input.forEach(item -> {
diff --git a/src/ext/java/org/opentripplanner/ext/reportapi/model/TransfersReport.java b/application/src/ext/java/org/opentripplanner/ext/reportapi/model/TransfersReport.java
similarity index 96%
rename from src/ext/java/org/opentripplanner/ext/reportapi/model/TransfersReport.java
rename to application/src/ext/java/org/opentripplanner/ext/reportapi/model/TransfersReport.java
index 2cfe1b19c1c..e9b5ac8a236 100644
--- a/src/ext/java/org/opentripplanner/ext/reportapi/model/TransfersReport.java
+++ b/application/src/ext/java/org/opentripplanner/ext/reportapi/model/TransfersReport.java
@@ -1,10 +1,9 @@
package org.opentripplanner.ext.reportapi.model;
-import static org.opentripplanner.framework.time.DurationUtils.durationToStr;
+import static org.opentripplanner.utils.time.DurationUtils.durationToStr;
import java.util.List;
import java.util.Optional;
-import javax.annotation.Nonnull;
import org.opentripplanner.framework.geometry.SphericalDistanceLibrary;
import org.opentripplanner.framework.geometry.WgsCoordinate;
import org.opentripplanner.framework.i18n.I18NString;
@@ -153,7 +152,7 @@ private TxPoint pointInfo(TransferPoint p, boolean boarding) {
if (p instanceof TripTransferPoint tp) {
var trip = tp.getTrip();
var route = trip.getRoute();
- var ptn = transitService.getPatternForTrip(trip);
+ var ptn = transitService.findPattern(trip);
r.operator = getName(trip.getOperator());
r.type = "Trip";
r.entityId = trip.getId().getId();
@@ -163,7 +162,7 @@ private TxPoint pointInfo(TransferPoint p, boolean boarding) {
addLocation(r, ptn, stop, trip, boarding);
} else if (p instanceof RouteStopTransferPoint rp) {
var route = rp.getRoute();
- var ptn = transitService.getPatternsForRoute(route).stream().findFirst().orElse(null);
+ var ptn = transitService.findPatterns(route).stream().findFirst().orElse(null);
r.operator = getName(route.getOperator());
r.type = "Route";
r.entityId = route.getId().getId();
@@ -196,7 +195,6 @@ private TxPoint pointInfo(TransferPoint p, boolean boarding) {
return r;
}
- @Nonnull
private static String getName(Operator operator) {
return Optional.ofNullable(operator).map(o -> o.getId().getId()).orElse("");
}
diff --git a/src/ext/java/org/opentripplanner/ext/reportapi/model/TransitGroupPriorityReport.java b/application/src/ext/java/org/opentripplanner/ext/reportapi/model/TransitGroupPriorityReport.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/reportapi/model/TransitGroupPriorityReport.java
rename to application/src/ext/java/org/opentripplanner/ext/reportapi/model/TransitGroupPriorityReport.java
diff --git a/src/ext/java/org/opentripplanner/ext/reportapi/resource/ReportResource.java b/application/src/ext/java/org/opentripplanner/ext/reportapi/resource/ReportResource.java
similarity index 98%
rename from src/ext/java/org/opentripplanner/ext/reportapi/resource/ReportResource.java
rename to application/src/ext/java/org/opentripplanner/ext/reportapi/resource/ReportResource.java
index e06aec71b53..56a224d3d68 100644
--- a/src/ext/java/org/opentripplanner/ext/reportapi/resource/ReportResource.java
+++ b/application/src/ext/java/org/opentripplanner/ext/reportapi/resource/ReportResource.java
@@ -49,7 +49,7 @@ public String getTransfersAsCsv() {
@Produces(MediaType.TEXT_PLAIN)
public String getTransitGroupPriorities() {
return TransitGroupPriorityReport.build(
- transitService.getAllTripPatterns(),
+ transitService.listTripPatterns(),
defaultRequest.journey().transit()
);
}
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/AbsoluteDirectionMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/AbsoluteDirectionMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/AbsoluteDirectionMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/AbsoluteDirectionMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/AgencyMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/AgencyMapper.java
similarity index 95%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/AgencyMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/AgencyMapper.java
index 4ea3ebb5209..5a86968153a 100644
--- a/src/ext/java/org/opentripplanner/ext/restapi/mapping/AgencyMapper.java
+++ b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/AgencyMapper.java
@@ -28,7 +28,6 @@ public static ApiAgency mapToApi(Agency domain) {
api.lang = domain.getLang();
api.phone = domain.getPhone();
api.fareUrl = domain.getFareUrl();
- api.brandingUrl = domain.getBrandingUrl();
return api;
}
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/AlertMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/AlertMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/AlertMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/AlertMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/BikeAccessMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/BikeAccessMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/BikeAccessMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/BikeAccessMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/BookingInfoMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/BookingInfoMapper.java
similarity index 92%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/BookingInfoMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/BookingInfoMapper.java
index b4e3292b435..eafa81195b5 100644
--- a/src/ext/java/org/opentripplanner/ext/restapi/mapping/BookingInfoMapper.java
+++ b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/BookingInfoMapper.java
@@ -27,8 +27,8 @@ private static ApiBookingInfo mapBookingInfo(BookingInfo info, boolean isPickup)
BookingMethodMapper.mapBookingMethods(info.bookingMethods()),
BookingTimeMapper.mapBookingTime(info.getEarliestBookingTime()),
BookingTimeMapper.mapBookingTime(info.getLatestBookingTime()),
- info.getMinimumBookingNotice(),
- info.getMaximumBookingNotice(),
+ info.getMinimumBookingNotice().orElse(null),
+ info.getMaximumBookingNotice().orElse(null),
info.getMessage(),
isPickup ? info.getPickupMessage() : null,
!isPickup ? info.getDropOffMessage() : null
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/BookingMethodMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/BookingMethodMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/BookingMethodMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/BookingMethodMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/BookingTimeMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/BookingTimeMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/BookingTimeMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/BookingTimeMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/ContactInfoMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/ContactInfoMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/ContactInfoMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/ContactInfoMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/DirectionMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/DirectionMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/DirectionMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/DirectionMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/ElevationMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/ElevationMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/ElevationMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/ElevationMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/FareMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/FareMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/FareMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/FareMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/FeedInfoMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/FeedInfoMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/FeedInfoMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/FeedInfoMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/FeedScopedIdMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/FeedScopedIdMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/FeedScopedIdMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/FeedScopedIdMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/ItineraryMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/ItineraryMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/ItineraryMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/ItineraryMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/LegMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/LegMapper.java
similarity index 99%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/LegMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/LegMapper.java
index b642426cd6d..ce9ceeb7f46 100644
--- a/src/ext/java/org/opentripplanner/ext/restapi/mapping/LegMapper.java
+++ b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/LegMapper.java
@@ -100,7 +100,6 @@ public ApiLeg mapLeg(
api.agencyId = FeedScopedIdMapper.mapToApi(agency.getId());
api.agencyName = agency.getName();
api.agencyUrl = agency.getUrl();
- api.agencyBrandingUrl = agency.getBrandingUrl();
api.mode = ModeMapper.mapToApi(trLeg.getMode());
var route = domain.getRoute();
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/LegacyVehicleRoutingOptimizeType.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/LegacyVehicleRoutingOptimizeType.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/LegacyVehicleRoutingOptimizeType.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/LegacyVehicleRoutingOptimizeType.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/LocalDateMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/LocalDateMapper.java
similarity index 87%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/LocalDateMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/LocalDateMapper.java
index 940bcc13d54..09ff79ef9fd 100644
--- a/src/ext/java/org/opentripplanner/ext/restapi/mapping/LocalDateMapper.java
+++ b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/LocalDateMapper.java
@@ -1,7 +1,7 @@
package org.opentripplanner.ext.restapi.mapping;
import java.time.LocalDate;
-import org.opentripplanner.framework.time.ServiceDateUtils;
+import org.opentripplanner.utils.time.ServiceDateUtils;
public class LocalDateMapper {
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/ModeMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/ModeMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/ModeMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/ModeMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/PlaceMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/PlaceMapper.java
similarity index 98%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/PlaceMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/PlaceMapper.java
index 28ceb0b84e3..059b0f93812 100644
--- a/src/ext/java/org/opentripplanner/ext/restapi/mapping/PlaceMapper.java
+++ b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/PlaceMapper.java
@@ -15,7 +15,7 @@
import org.opentripplanner.model.plan.Place;
import org.opentripplanner.model.plan.StopArrival;
import org.opentripplanner.model.plan.VehicleParkingWithEntrance;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingSpaces;
+import org.opentripplanner.service.vehicleparking.model.VehicleParkingSpaces;
import org.opentripplanner.transit.model.site.RegularStop;
public class PlaceMapper {
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/RelativeDirectionMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/RelativeDirectionMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/RelativeDirectionMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/RelativeDirectionMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/RouteMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/RouteMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/RouteMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/RouteMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/RouteTypeMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/RouteTypeMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/RouteTypeMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/RouteTypeMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/StopMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/StopMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/StopMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/StopMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/StopTimesInPatternMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/StopTimesInPatternMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/StopTimesInPatternMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/StopTimesInPatternMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/SystemNoticeMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/SystemNoticeMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/SystemNoticeMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/SystemNoticeMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/TransferMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/TransferMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/TransferMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/TransferMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/TripMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/TripMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/TripMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/TripMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/TripPatternMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/TripPatternMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/TripPatternMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/TripPatternMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/TripPlanMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/TripPlanMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/TripPlanMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/TripPlanMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/TripSearchMetadataMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/TripSearchMetadataMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/TripSearchMetadataMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/TripSearchMetadataMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/TripTimeMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/TripTimeMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/TripTimeMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/TripTimeMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/VehicleRentalStationMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/VehicleRentalStationMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/VehicleRentalStationMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/VehicleRentalStationMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/VertexTypeMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/VertexTypeMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/VertexTypeMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/VertexTypeMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/WalkStepMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/WalkStepMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/WalkStepMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/WalkStepMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/mapping/WheelchairAccessibilityMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/mapping/WheelchairAccessibilityMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/mapping/WheelchairAccessibilityMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/mapping/WheelchairAccessibilityMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiAbsoluteDirection.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiAbsoluteDirection.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiAbsoluteDirection.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiAbsoluteDirection.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiAgency.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiAgency.java
similarity index 96%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiAgency.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiAgency.java
index ada6739a795..d1c15b7f6f6 100644
--- a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiAgency.java
+++ b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiAgency.java
@@ -12,7 +12,6 @@ public class ApiAgency implements Serializable {
public String lang;
public String phone;
public String fareUrl;
- public String brandingUrl;
@Override
public int hashCode() {
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiAlert.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiAlert.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiAlert.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiAlert.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiBookingInfo.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiBookingInfo.java
similarity index 98%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiBookingInfo.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiBookingInfo.java
index c89d6429caa..1fd4566a9b8 100644
--- a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiBookingInfo.java
+++ b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiBookingInfo.java
@@ -3,7 +3,7 @@
import java.io.Serializable;
import java.time.Duration;
import java.util.Set;
-import org.opentripplanner.framework.tostring.ToStringBuilder;
+import org.opentripplanner.utils.tostring.ToStringBuilder;
/**
* Info about how a trip might be booked at a particular stop. All of this is pass-through
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiBookingTime.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiBookingTime.java
similarity index 92%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiBookingTime.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiBookingTime.java
index 08eee69a3cf..f2a8d5767ff 100644
--- a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiBookingTime.java
+++ b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiBookingTime.java
@@ -1,7 +1,7 @@
package org.opentripplanner.ext.restapi.model;
import java.io.Serializable;
-import org.opentripplanner.framework.tostring.ToStringBuilder;
+import org.opentripplanner.utils.tostring.ToStringBuilder;
/**
* Represents either an earliest or latest time a trip can be booked relative to the departure day
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiContactInfo.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiContactInfo.java
similarity index 96%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiContactInfo.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiContactInfo.java
index b7c2ec90166..cc7e6d069f1 100644
--- a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiContactInfo.java
+++ b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiContactInfo.java
@@ -1,7 +1,7 @@
package org.opentripplanner.ext.restapi.model;
import java.io.Serializable;
-import org.opentripplanner.framework.tostring.ToStringBuilder;
+import org.opentripplanner.utils.tostring.ToStringBuilder;
/**
* How to contact the agency to book a trip or requests information.
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiCurrency.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiCurrency.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiCurrency.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiCurrency.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiFareComponent.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiFareComponent.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiFareComponent.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiFareComponent.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiFareProduct.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiFareProduct.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiFareProduct.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiFareProduct.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiFareQualifier.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiFareQualifier.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiFareQualifier.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiFareQualifier.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiFeedInfo.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiFeedInfo.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiFeedInfo.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiFeedInfo.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiItinerary.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiItinerary.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiItinerary.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiItinerary.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiItineraryFares.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiItineraryFares.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiItineraryFares.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiItineraryFares.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiLeg.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiLeg.java
similarity index 98%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiLeg.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiLeg.java
index 7bbd83f7c2d..2a434dfe92f 100644
--- a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiLeg.java
+++ b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiLeg.java
@@ -87,8 +87,6 @@ public class ApiLeg {
public String agencyUrl;
- public String agencyBrandingUrl;
-
public int agencyTimeZoneOffset;
/**
@@ -98,7 +96,7 @@ public class ApiLeg {
/**
* For transit legs, the type of the route. Non transit -1 When 0-7: 0 Tram, 1 Subway, 2 Train, 3
- * Bus, 4 Ferry, 5 Cable Car, 6 Gondola, 7 Funicular When equal or highter than 100, it is coded
+ * Bus, 4 Ferry, 5 Cable Tram, 6 Gondola, 7 Funicular When equal or highter than 100, it is coded
* using the Hierarchical Vehicle Type (HVT) codes from the European TPEG standard Also see
* http://groups.google.com/group/gtfs-changes/msg/ed917a69cf8c5bef
*/
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiLegProducts.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiLegProducts.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiLegProducts.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiLegProducts.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiMoney.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiMoney.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiMoney.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiMoney.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiPatternDetail.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiPatternDetail.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiPatternDetail.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiPatternDetail.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiPatternShort.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiPatternShort.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiPatternShort.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiPatternShort.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiPlace.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiPlace.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiPlace.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiPlace.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiRealTimeState.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiRealTimeState.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiRealTimeState.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiRealTimeState.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiRelativeDirection.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiRelativeDirection.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiRelativeDirection.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiRelativeDirection.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiRoute.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiRoute.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiRoute.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiRoute.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiRouteShort.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiRouteShort.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiRouteShort.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiRouteShort.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiRouterInfo.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiRouterInfo.java
similarity index 87%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiRouterInfo.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiRouterInfo.java
index a0bbb1116b3..95317d40057 100644
--- a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiRouterInfo.java
+++ b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiRouterInfo.java
@@ -5,7 +5,7 @@
import org.locationtech.jts.geom.Geometry;
import org.opentripplanner.ext.restapi.mapping.ModeMapper;
import org.opentripplanner.routing.graph.Graph;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingService;
+import org.opentripplanner.service.vehicleparking.VehicleParkingService;
import org.opentripplanner.service.vehiclerental.VehicleRentalService;
import org.opentripplanner.service.worldenvelope.model.WorldEnvelope;
import org.opentripplanner.transit.service.TransitService;
@@ -34,16 +34,15 @@ public ApiRouterInfo(
Graph graph,
TransitService transitService,
VehicleRentalService vehicleRentalService,
+ VehicleParkingService vehicleParkingService,
WorldEnvelope envelope
) {
- VehicleParkingService vehicleParkingService = graph.getVehicleParkingService();
-
this.routerId = routerId;
this.polygon = graph.getConvexHull();
this.buildTime = Date.from(graph.buildTime);
this.transitServiceStarts = transitService.getTransitServiceStarts().toEpochSecond();
this.transitServiceEnds = transitService.getTransitServiceEnds().toEpochSecond();
- this.transitModes = ModeMapper.mapToApi(transitService.getTransitModes());
+ this.transitModes = ModeMapper.mapToApi(transitService.listTransitModes());
this.envelope = envelope;
this.hasBikeSharing = mapHasBikeSharing(vehicleRentalService);
this.hasBikePark = mapHasBikePark(vehicleParkingService);
@@ -51,7 +50,7 @@ public ApiRouterInfo(
this.hasParkRide = this.hasCarPark;
this.hasVehicleParking = mapHasVehicleParking(vehicleParkingService);
this.travelOptions =
- ApiTravelOptionsMaker.makeOptions(graph, vehicleRentalService, transitService);
+ ApiTravelOptionsMaker.makeOptions(graph, vehicleRentalService, vehicleParkingService, transitService);
}
public boolean mapHasBikeSharing(VehicleRentalService service) {
@@ -67,21 +66,21 @@ public boolean mapHasBikePark(VehicleParkingService service) {
if (service == null) {
return false;
}
- return service.getBikeParks().findAny().isPresent();
+ return service.listBikeParks().stream().findAny().isPresent();
}
public boolean mapHasCarPark(VehicleParkingService service) {
if (service == null) {
return false;
}
- return service.getCarParks().findAny().isPresent();
+ return service.listCarParks().stream().findAny().isPresent();
}
public boolean mapHasVehicleParking(VehicleParkingService service) {
if (service == null) {
return false;
}
- return service.getVehicleParkings().findAny().isPresent();
+ return service.listVehicleParkings().stream().findAny().isPresent();
}
public double getLowerLeftLatitude() {
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiRouterList.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiRouterList.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiRouterList.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiRouterList.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiStop.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiStop.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiStop.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiStop.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiStopShort.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiStopShort.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiStopShort.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiStopShort.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiStopTimesInPattern.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiStopTimesInPattern.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiStopTimesInPattern.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiStopTimesInPattern.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiSystemNotice.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiSystemNotice.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiSystemNotice.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiSystemNotice.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiTransfer.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiTransfer.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiTransfer.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiTransfer.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiTravelOption.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiTravelOption.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiTravelOption.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiTravelOption.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiTravelOptionsMaker.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiTravelOptionsMaker.java
similarity index 94%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiTravelOptionsMaker.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiTravelOptionsMaker.java
index cf424392d70..65fec7867cb 100644
--- a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiTravelOptionsMaker.java
+++ b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiTravelOptionsMaker.java
@@ -5,6 +5,7 @@
import java.util.Set;
import org.opentripplanner.api.parameter.ApiRequestMode;
import org.opentripplanner.routing.graph.Graph;
+import org.opentripplanner.service.vehicleparking.VehicleParkingService;
import org.opentripplanner.service.vehiclerental.VehicleRentalService;
import org.opentripplanner.transit.model.basic.TransitMode;
import org.opentripplanner.transit.service.TransitService;
@@ -29,14 +30,14 @@ public final class ApiTravelOptionsMaker {
public static List makeOptions(
Graph graph,
VehicleRentalService vehicleRentalService,
+ VehicleParkingService vehicleParkingService,
TransitService transitService
) {
- var service = graph.getVehicleParkingService();
return makeOptions(
- transitService.getTransitModes(),
+ transitService.listTransitModes(),
vehicleRentalService.hasRentalBikes(),
- service.hasBikeParking(),
- service.hasCarParking()
+ vehicleParkingService.hasBikeParking(),
+ vehicleParkingService.hasCarParking()
);
}
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiTrip.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiTrip.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiTrip.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiTrip.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiTripPlan.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiTripPlan.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiTripPlan.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiTripPlan.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiTripSearchMetadata.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiTripSearchMetadata.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiTripSearchMetadata.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiTripSearchMetadata.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiTripShort.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiTripShort.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiTripShort.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiTripShort.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiTripTimeShort.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiTripTimeShort.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiTripTimeShort.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiTripTimeShort.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiVehicleParkingSpaces.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiVehicleParkingSpaces.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiVehicleParkingSpaces.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiVehicleParkingSpaces.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiVehicleParkingWithEntrance.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiVehicleParkingWithEntrance.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiVehicleParkingWithEntrance.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiVehicleParkingWithEntrance.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiVehicleRentalStation.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiVehicleRentalStation.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiVehicleRentalStation.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiVehicleRentalStation.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiVehicleRentalStationList.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiVehicleRentalStationList.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiVehicleRentalStationList.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiVehicleRentalStationList.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiVertexType.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiVertexType.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiVertexType.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiVertexType.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ApiWalkStep.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiWalkStep.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ApiWalkStep.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiWalkStep.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/ElevationMetadata.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ElevationMetadata.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/ElevationMetadata.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/ElevationMetadata.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/model/TripPlannerResponse.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/TripPlannerResponse.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/model/TripPlannerResponse.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/model/TripPlannerResponse.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/resources/BikeRental.java b/application/src/ext/java/org/opentripplanner/ext/restapi/resources/BikeRental.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/resources/BikeRental.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/resources/BikeRental.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/resources/IndexAPI.java b/application/src/ext/java/org/opentripplanner/ext/restapi/resources/IndexAPI.java
similarity index 94%
rename from src/ext/java/org/opentripplanner/ext/restapi/resources/IndexAPI.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/resources/IndexAPI.java
index cab2be13ad0..7dbfabed156 100644
--- a/src/ext/java/org/opentripplanner/ext/restapi/resources/IndexAPI.java
+++ b/application/src/ext/java/org/opentripplanner/ext/restapi/resources/IndexAPI.java
@@ -51,7 +51,6 @@
import org.opentripplanner.ext.restapi.model.ApiTripShort;
import org.opentripplanner.ext.restapi.model.ApiTripTimeShort;
import org.opentripplanner.framework.geometry.EncodedPolyline;
-import org.opentripplanner.framework.time.ServiceDateUtils;
import org.opentripplanner.model.StopTimesInPattern;
import org.opentripplanner.model.TripTimeOnDate;
import org.opentripplanner.routing.graphfinder.DirectGraphFinder;
@@ -64,6 +63,7 @@
import org.opentripplanner.transit.model.site.StopLocation;
import org.opentripplanner.transit.model.timetable.Trip;
import org.opentripplanner.transit.service.TransitService;
+import org.opentripplanner.utils.time.ServiceDateUtils;
// TODO move to org.opentripplanner.api.resource, this is a Jersey resource class
@@ -93,7 +93,7 @@ public IndexAPI(
@GET
@Path("/feeds")
public Collection getFeeds() {
- return transitService().getFeedIds();
+ return transitService().listFeedIds();
}
@GET
@@ -108,7 +108,7 @@ public ApiFeedInfo getFeedInfo(@PathParam("feedId") String feedId) {
@Path("/agencies/{feedId}")
public Collection getAgencies(@PathParam("feedId") String feedId) {
Collection agencies = transitService()
- .getAgencies()
+ .listAgencies()
.stream()
.filter(agency -> agency.getId().getFeedId().equals(feedId))
.collect(Collectors.toList());
@@ -138,7 +138,7 @@ public Response getAgencyRoutes(
var agency = agency(feedId, agencyId);
Collection routes = transitService()
- .getAllRoutes()
+ .listRoutes()
.stream()
.filter(r -> r.getAgency() == agency)
.collect(Collectors.toList());
@@ -235,7 +235,7 @@ public List getStopsInRadius(
public List getRoutesForStop(@PathParam("stopId") String stopId) {
var stop = stop(stopId);
return transitService()
- .getPatternsForStop(stop)
+ .findPatterns(stop)
.stream()
.map(TripPattern::getRoute)
.map(RouteMapper::mapToApiShort)
@@ -247,7 +247,7 @@ public List getRoutesForStop(@PathParam("stopId") String stopId)
public List getPatternsForStop(@PathParam("stopId") String stopId) {
var stop = stop(stopId);
return transitService()
- .getPatternsForStop(stop)
+ .findPatterns(stop)
.stream()
.map(TripPatternMapper::mapToApiShort)
.collect(Collectors.toList());
@@ -275,7 +275,7 @@ public Collection getStopTimesForStop(
: Instant.ofEpochSecond(startTimeSeconds);
return transitService()
- .stopTimesForStop(
+ .findStopTimesInPattern(
stop(stopIdString),
startTime,
Duration.ofSeconds(timeRange),
@@ -303,7 +303,7 @@ public List getStoptimesForStopAndDate(
var stop = stop(stopId);
var serviceDate = parseServiceDate("date", date);
List stopTimes = transitService()
- .getStopTimesForStop(
+ .findStopTimesInPattern(
stop,
serviceDate,
omitNonPickups ? ArrivalDeparture.DEPARTURES : ArrivalDeparture.BOTH,
@@ -322,7 +322,7 @@ public Collection getTransfers(@PathParam("stopId") String stopId)
// get the transfers for the stop
return transitService()
- .getTransfersByStop(stop)
+ .findPathTransfers(stop)
.stream()
.map(TransferMapper::mapToApi)
.collect(Collectors.toList());
@@ -344,7 +344,7 @@ public Collection getAlertsForStop(@PathParam("stopId") String stopId)
@GET
@Path("/routes")
public List getRoutes(@QueryParam("hasStop") List stopIds) {
- Collection routes = transitService().getAllRoutes();
+ Collection routes = transitService().listRoutes();
// Filter routes to include only those that pass through all given stops
if (stopIds != null) {
// Protective copy, we are going to calculate the intersection destructively
@@ -352,7 +352,7 @@ public List getRoutes(@QueryParam("hasStop") List stopIds
for (String stopId : stopIds) {
var stop = stop(stopId);
Set routesHere = new HashSet<>();
- for (TripPattern pattern : transitService().getPatternsForStop(stop)) {
+ for (TripPattern pattern : transitService().findPatterns(stop)) {
routesHere.add(pattern.getRoute());
}
routes.retainAll(routesHere);
@@ -372,7 +372,7 @@ public ApiRoute getRoute(@PathParam("routeId") String routeId) {
@GET
@Path("/routes/{routeId}/patterns")
public List getPatternsForRoute(@PathParam("routeId") String routeId) {
- Collection patterns = transitService().getPatternsForRoute(route(routeId));
+ Collection patterns = transitService().findPatterns(route(routeId));
return TripPatternMapper.mapToApiShort(patterns);
}
@@ -383,7 +383,7 @@ public List getStopsForRoute(@PathParam("routeId") String routeId)
var route = route(routeId);
Set stops = new HashSet<>();
- Collection patterns = transitService().getPatternsForRoute(route);
+ Collection patterns = transitService().findPatterns(route);
for (TripPattern pattern : patterns) {
stops.addAll(pattern.getStops());
}
@@ -396,7 +396,7 @@ public List getStopsForRoute(@PathParam("routeId") String routeId)
public List getTripsForRoute(@PathParam("routeId") String routeId) {
var route = route(routeId);
- var patterns = transitService().getPatternsForRoute(route);
+ var patterns = transitService().findPatterns(route);
return patterns
.stream()
.flatMap(TripPattern::scheduledTripsAsStream)
@@ -445,7 +445,7 @@ public List getStoptimesForTrip(@PathParam("tripId") String tr
var pattern = tripPattern(trip);
// Note, we need the updated timetable not the scheduled one (which contains no real-time updates).
var table = transitService()
- .getTimetableForTripPattern(pattern, LocalDate.now(transitService().getTimeZone()));
+ .findTimetable(pattern, LocalDate.now(transitService().getTimeZone()));
var tripTimesOnDate = TripTimeOnDate.fromTripTimes(table, trip);
return TripTimeMapper.mapToApi(tripTimesOnDate);
}
@@ -472,7 +472,7 @@ public Collection getAlertsForTrip(@PathParam("tripId") String tripId)
@GET
@Path("/patterns")
public List getPatterns() {
- Collection patterns = transitService().getAllTripPatterns();
+ Collection patterns = transitService().listTripPatterns();
return TripPatternMapper.mapToApiShort(patterns);
}
@@ -589,7 +589,7 @@ private static NotFoundException notFoundException(String entity, String details
}
private Agency agency(String feedId, String agencyId) {
- var agency = transitService().getAgencyForId(new FeedScopedId(feedId, agencyId));
+ var agency = transitService().getAgency(new FeedScopedId(feedId, agencyId));
if (agency == null) {
throw notFoundException("Agency", "feedId: " + feedId + ", agencyId: " + agencyId);
}
@@ -602,18 +602,18 @@ private StopLocation stop(String stopId) {
}
private Route route(String routeId) {
- var route = transitService().getRouteForId(createId("routeId", routeId));
+ var route = transitService().getRoute(createId("routeId", routeId));
return validateExist("Route", route, "routeId", routeId);
}
private Trip trip(String tripId) {
- var trip = transitService().getTripForId(createId("tripId", tripId));
+ var trip = transitService().getTrip(createId("tripId", tripId));
return validateExist("Trip", trip, "tripId", tripId);
}
private TripPattern tripPattern(String tripPatternId) {
var id = createId("patternId", tripPatternId);
- var pattern = transitService().getTripPatternForId(id);
+ var pattern = transitService().getTripPattern(id);
return validateExist("TripPattern", pattern, "patternId", tripPatternId);
}
@@ -622,7 +622,7 @@ private TripPattern tripPatternForTripId(String tripId) {
}
private TripPattern tripPattern(Trip trip) {
- var pattern = transitService().getPatternForTrip(trip);
+ var pattern = transitService().findPattern(trip);
return validateExist("TripPattern", pattern, "trip", trip.getId());
}
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/resources/PlannerResource.java b/application/src/ext/java/org/opentripplanner/ext/restapi/resources/PlannerResource.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/resources/PlannerResource.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/resources/PlannerResource.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/resources/RequestToPreferencesMapper.java b/application/src/ext/java/org/opentripplanner/ext/restapi/resources/RequestToPreferencesMapper.java
similarity index 99%
rename from src/ext/java/org/opentripplanner/ext/restapi/resources/RequestToPreferencesMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/resources/RequestToPreferencesMapper.java
index 51b2fae86b5..22aa194d4bb 100644
--- a/src/ext/java/org/opentripplanner/ext/restapi/resources/RequestToPreferencesMapper.java
+++ b/application/src/ext/java/org/opentripplanner/ext/restapi/resources/RequestToPreferencesMapper.java
@@ -3,7 +3,6 @@
import jakarta.validation.constraints.NotNull;
import java.util.function.Consumer;
import org.opentripplanner.ext.restapi.mapping.LegacyVehicleRoutingOptimizeType;
-import org.opentripplanner.framework.lang.ObjectUtils;
import org.opentripplanner.routing.algorithm.filterchain.api.TransitGeneralizedCostFilterParams;
import org.opentripplanner.routing.api.request.framework.CostLinearFunction;
import org.opentripplanner.routing.api.request.preference.ItineraryFilterPreferences;
@@ -11,6 +10,7 @@
import org.opentripplanner.routing.api.request.preference.RoutingPreferences;
import org.opentripplanner.routing.api.request.preference.VehicleParkingPreferences;
import org.opentripplanner.routing.api.request.preference.VehicleRentalPreferences;
+import org.opentripplanner.utils.lang.ObjectUtils;
class RequestToPreferencesMapper {
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/resources/Routers.java b/application/src/ext/java/org/opentripplanner/ext/restapi/resources/Routers.java
similarity index 98%
rename from src/ext/java/org/opentripplanner/ext/restapi/resources/Routers.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/resources/Routers.java
index 9cfab49017c..6c805560b8b 100644
--- a/src/ext/java/org/opentripplanner/ext/restapi/resources/Routers.java
+++ b/application/src/ext/java/org/opentripplanner/ext/restapi/resources/Routers.java
@@ -66,6 +66,7 @@ private ApiRouterInfo getRouterInfo() {
serverContext.graph(),
serverContext.transitService(),
serverContext.vehicleRentalService(),
+ serverContext.vehicleParkingService(),
serverContext.worldEnvelopeService().envelope().orElseThrow()
);
} catch (GraphNotFoundException e) {
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/resources/RoutingResource.java b/application/src/ext/java/org/opentripplanner/ext/restapi/resources/RoutingResource.java
similarity index 99%
rename from src/ext/java/org/opentripplanner/ext/restapi/resources/RoutingResource.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/resources/RoutingResource.java
index 3ae029fdb2d..9a0f030a807 100644
--- a/src/ext/java/org/opentripplanner/ext/restapi/resources/RoutingResource.java
+++ b/application/src/ext/java/org/opentripplanner/ext/restapi/resources/RoutingResource.java
@@ -23,8 +23,6 @@
import org.opentripplanner.ext.dataoverlay.api.DataOverlayParameters;
import org.opentripplanner.ext.restapi.mapping.LegacyVehicleRoutingOptimizeType;
import org.opentripplanner.framework.application.OTPFeature;
-import org.opentripplanner.framework.lang.StringUtils;
-import org.opentripplanner.framework.time.DurationUtils;
import org.opentripplanner.framework.time.ZoneIdFallback;
import org.opentripplanner.routing.api.request.RouteRequest;
import org.opentripplanner.routing.api.request.preference.ItineraryFilterDebugProfile;
@@ -35,6 +33,8 @@
import org.opentripplanner.standalone.config.framework.json.NodeAdapter;
import org.opentripplanner.standalone.config.routerequest.RouteRequestConfig;
import org.opentripplanner.transit.model.basic.MainAndSubMode;
+import org.opentripplanner.utils.lang.StringUtils;
+import org.opentripplanner.utils.time.DurationUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/resources/ValidateParameters.java b/application/src/ext/java/org/opentripplanner/ext/restapi/resources/ValidateParameters.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/resources/ValidateParameters.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/resources/ValidateParameters.java
diff --git a/application/src/ext/java/org/opentripplanner/ext/restapi/resources/package-info.md b/application/src/ext/java/org/opentripplanner/ext/restapi/resources/package-info.md
new file mode 100644
index 00000000000..a4bb7eb6f4f
--- /dev/null
+++ b/application/src/ext/java/org/opentripplanner/ext/restapi/resources/package-info.md
@@ -0,0 +1,4 @@
+# JAX-RS-annotated REST resource classes
+
+This package contains the JAX-RS-annotated REST resource classes for the OpenTripPlanner public
+API, i.e. the Jersey REST endpoints.
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/serialization/FeedScopedIdDeserializer.java b/application/src/ext/java/org/opentripplanner/ext/restapi/serialization/FeedScopedIdDeserializer.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/serialization/FeedScopedIdDeserializer.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/serialization/FeedScopedIdDeserializer.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/serialization/FeedScopedIdKeyDeserializer.java b/application/src/ext/java/org/opentripplanner/ext/restapi/serialization/FeedScopedIdKeyDeserializer.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/serialization/FeedScopedIdKeyDeserializer.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/serialization/FeedScopedIdKeyDeserializer.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/serialization/FeedScopedIdSerializer.java b/application/src/ext/java/org/opentripplanner/ext/restapi/serialization/FeedScopedIdSerializer.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/serialization/FeedScopedIdSerializer.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/serialization/FeedScopedIdSerializer.java
diff --git a/src/ext/java/org/opentripplanner/ext/restapi/serialization/JSONObjectMapperProvider.java b/application/src/ext/java/org/opentripplanner/ext/restapi/serialization/JSONObjectMapperProvider.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/restapi/serialization/JSONObjectMapperProvider.java
rename to application/src/ext/java/org/opentripplanner/ext/restapi/serialization/JSONObjectMapperProvider.java
diff --git a/src/ext/java/org/opentripplanner/ext/ridehailing/CachingRideHailingService.java b/application/src/ext/java/org/opentripplanner/ext/ridehailing/CachingRideHailingService.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/ridehailing/CachingRideHailingService.java
rename to application/src/ext/java/org/opentripplanner/ext/ridehailing/CachingRideHailingService.java
diff --git a/src/ext/java/org/opentripplanner/ext/ridehailing/DecorateWithRideHailing.java b/application/src/ext/java/org/opentripplanner/ext/ridehailing/DecorateWithRideHailing.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/ridehailing/DecorateWithRideHailing.java
rename to application/src/ext/java/org/opentripplanner/ext/ridehailing/DecorateWithRideHailing.java
diff --git a/src/ext/java/org/opentripplanner/ext/ridehailing/RideHailingAccessAdapter.java b/application/src/ext/java/org/opentripplanner/ext/ridehailing/RideHailingAccessAdapter.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/ridehailing/RideHailingAccessAdapter.java
rename to application/src/ext/java/org/opentripplanner/ext/ridehailing/RideHailingAccessAdapter.java
diff --git a/src/ext/java/org/opentripplanner/ext/ridehailing/RideHailingAccessShifter.java b/application/src/ext/java/org/opentripplanner/ext/ridehailing/RideHailingAccessShifter.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/ridehailing/RideHailingAccessShifter.java
rename to application/src/ext/java/org/opentripplanner/ext/ridehailing/RideHailingAccessShifter.java
diff --git a/src/ext/java/org/opentripplanner/ext/ridehailing/RideHailingService.java b/application/src/ext/java/org/opentripplanner/ext/ridehailing/RideHailingService.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/ridehailing/RideHailingService.java
rename to application/src/ext/java/org/opentripplanner/ext/ridehailing/RideHailingService.java
diff --git a/src/ext/java/org/opentripplanner/ext/ridehailing/RideHailingServiceParameters.java b/application/src/ext/java/org/opentripplanner/ext/ridehailing/RideHailingServiceParameters.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/ridehailing/RideHailingServiceParameters.java
rename to application/src/ext/java/org/opentripplanner/ext/ridehailing/RideHailingServiceParameters.java
diff --git a/src/ext/java/org/opentripplanner/ext/ridehailing/configure/RideHailingServicesModule.java b/application/src/ext/java/org/opentripplanner/ext/ridehailing/configure/RideHailingServicesModule.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/ridehailing/configure/RideHailingServicesModule.java
rename to application/src/ext/java/org/opentripplanner/ext/ridehailing/configure/RideHailingServicesModule.java
diff --git a/src/ext/java/org/opentripplanner/ext/ridehailing/model/ArrivalTime.java b/application/src/ext/java/org/opentripplanner/ext/ridehailing/model/ArrivalTime.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/ridehailing/model/ArrivalTime.java
rename to application/src/ext/java/org/opentripplanner/ext/ridehailing/model/ArrivalTime.java
diff --git a/src/ext/java/org/opentripplanner/ext/ridehailing/model/Ride.java b/application/src/ext/java/org/opentripplanner/ext/ridehailing/model/Ride.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/ridehailing/model/Ride.java
rename to application/src/ext/java/org/opentripplanner/ext/ridehailing/model/Ride.java
diff --git a/src/ext/java/org/opentripplanner/ext/ridehailing/model/RideEstimate.java b/application/src/ext/java/org/opentripplanner/ext/ridehailing/model/RideEstimate.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/ridehailing/model/RideEstimate.java
rename to application/src/ext/java/org/opentripplanner/ext/ridehailing/model/RideEstimate.java
diff --git a/src/ext/java/org/opentripplanner/ext/ridehailing/model/RideEstimateRequest.java b/application/src/ext/java/org/opentripplanner/ext/ridehailing/model/RideEstimateRequest.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/ridehailing/model/RideEstimateRequest.java
rename to application/src/ext/java/org/opentripplanner/ext/ridehailing/model/RideEstimateRequest.java
diff --git a/src/ext/java/org/opentripplanner/ext/ridehailing/model/RideHailingLeg.java b/application/src/ext/java/org/opentripplanner/ext/ridehailing/model/RideHailingLeg.java
similarity index 95%
rename from src/ext/java/org/opentripplanner/ext/ridehailing/model/RideHailingLeg.java
rename to application/src/ext/java/org/opentripplanner/ext/ridehailing/model/RideHailingLeg.java
index 91a7a1fbf6f..94587333c4e 100644
--- a/src/ext/java/org/opentripplanner/ext/ridehailing/model/RideHailingLeg.java
+++ b/application/src/ext/java/org/opentripplanner/ext/ridehailing/model/RideHailingLeg.java
@@ -1,6 +1,5 @@
package org.opentripplanner.ext.ridehailing.model;
-import javax.annotation.Nonnull;
import org.opentripplanner.model.plan.StreetLeg;
import org.opentripplanner.model.plan.StreetLegBuilder;
@@ -27,7 +26,6 @@ public RideHailingProvider provider() {
return provider;
}
- @Nonnull
public RideEstimate rideEstimate() {
return estimate;
}
diff --git a/src/ext/java/org/opentripplanner/ext/ridehailing/model/RideHailingProvider.java b/application/src/ext/java/org/opentripplanner/ext/ridehailing/model/RideHailingProvider.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/ridehailing/model/RideHailingProvider.java
rename to application/src/ext/java/org/opentripplanner/ext/ridehailing/model/RideHailingProvider.java
diff --git a/src/ext/java/org/opentripplanner/ext/ridehailing/service/oauth/CachedOAuthToken.java b/application/src/ext/java/org/opentripplanner/ext/ridehailing/service/oauth/CachedOAuthToken.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/ridehailing/service/oauth/CachedOAuthToken.java
rename to application/src/ext/java/org/opentripplanner/ext/ridehailing/service/oauth/CachedOAuthToken.java
diff --git a/src/ext/java/org/opentripplanner/ext/ridehailing/service/oauth/CachingOAuthService.java b/application/src/ext/java/org/opentripplanner/ext/ridehailing/service/oauth/CachingOAuthService.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/ridehailing/service/oauth/CachingOAuthService.java
rename to application/src/ext/java/org/opentripplanner/ext/ridehailing/service/oauth/CachingOAuthService.java
diff --git a/src/ext/java/org/opentripplanner/ext/ridehailing/service/oauth/ClientCredentialsRequest.java b/application/src/ext/java/org/opentripplanner/ext/ridehailing/service/oauth/ClientCredentialsRequest.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/ridehailing/service/oauth/ClientCredentialsRequest.java
rename to application/src/ext/java/org/opentripplanner/ext/ridehailing/service/oauth/ClientCredentialsRequest.java
diff --git a/src/ext/java/org/opentripplanner/ext/ridehailing/service/oauth/OAuthService.java b/application/src/ext/java/org/opentripplanner/ext/ridehailing/service/oauth/OAuthService.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/ridehailing/service/oauth/OAuthService.java
rename to application/src/ext/java/org/opentripplanner/ext/ridehailing/service/oauth/OAuthService.java
diff --git a/src/ext/java/org/opentripplanner/ext/ridehailing/service/oauth/UrlEncodedOAuthService.java b/application/src/ext/java/org/opentripplanner/ext/ridehailing/service/oauth/UrlEncodedOAuthService.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/ridehailing/service/oauth/UrlEncodedOAuthService.java
rename to application/src/ext/java/org/opentripplanner/ext/ridehailing/service/oauth/UrlEncodedOAuthService.java
diff --git a/src/ext/java/org/opentripplanner/ext/ridehailing/service/uber/UberArrivalEstimateResponse.java b/application/src/ext/java/org/opentripplanner/ext/ridehailing/service/uber/UberArrivalEstimateResponse.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/ridehailing/service/uber/UberArrivalEstimateResponse.java
rename to application/src/ext/java/org/opentripplanner/ext/ridehailing/service/uber/UberArrivalEstimateResponse.java
diff --git a/src/ext/java/org/opentripplanner/ext/ridehailing/service/uber/UberService.java b/application/src/ext/java/org/opentripplanner/ext/ridehailing/service/uber/UberService.java
similarity index 99%
rename from src/ext/java/org/opentripplanner/ext/ridehailing/service/uber/UberService.java
rename to application/src/ext/java/org/opentripplanner/ext/ridehailing/service/uber/UberService.java
index 9b276fc053e..d5ab1e8c5fa 100644
--- a/src/ext/java/org/opentripplanner/ext/ridehailing/service/uber/UberService.java
+++ b/application/src/ext/java/org/opentripplanner/ext/ridehailing/service/uber/UberService.java
@@ -13,7 +13,6 @@
import java.util.Currency;
import java.util.List;
import java.util.Map;
-import javax.annotation.Nonnull;
import org.opentripplanner.ext.ridehailing.CachingRideHailingService;
import org.opentripplanner.ext.ridehailing.RideHailingServiceParameters;
import org.opentripplanner.ext.ridehailing.model.ArrivalTime;
@@ -191,7 +190,6 @@ private boolean filterRides(Ride a, boolean wheelchairAccessible) {
}
}
- @Nonnull
private Map headers() throws IOException {
return Map.ofEntries(
entry(AUTHORIZATION, "Bearer %s".formatted(oauthService.getToken())),
diff --git a/src/ext/java/org/opentripplanner/ext/ridehailing/service/uber/UberTripTimeEstimateResponse.java b/application/src/ext/java/org/opentripplanner/ext/ridehailing/service/uber/UberTripTimeEstimateResponse.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/ridehailing/service/uber/UberTripTimeEstimateResponse.java
rename to application/src/ext/java/org/opentripplanner/ext/ridehailing/service/uber/UberTripTimeEstimateResponse.java
diff --git a/src/ext/java/org/opentripplanner/ext/siri/updater/azure/AbstractAzureSiriUpdater.java b/application/src/ext/java/org/opentripplanner/ext/siri/updater/azure/AbstractAzureSiriUpdater.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/siri/updater/azure/AbstractAzureSiriUpdater.java
rename to application/src/ext/java/org/opentripplanner/ext/siri/updater/azure/AbstractAzureSiriUpdater.java
diff --git a/src/ext/java/org/opentripplanner/ext/siri/updater/azure/AuthenticationType.java b/application/src/ext/java/org/opentripplanner/ext/siri/updater/azure/AuthenticationType.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/siri/updater/azure/AuthenticationType.java
rename to application/src/ext/java/org/opentripplanner/ext/siri/updater/azure/AuthenticationType.java
diff --git a/src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureETUpdater.java b/application/src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureETUpdater.java
similarity index 98%
rename from src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureETUpdater.java
rename to application/src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureETUpdater.java
index 009bc3a7f0e..a2fe5b71f36 100644
--- a/src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureETUpdater.java
+++ b/application/src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureETUpdater.java
@@ -15,7 +15,7 @@
import java.util.function.Consumer;
import javax.xml.stream.XMLStreamException;
import org.apache.hc.core5.net.URIBuilder;
-import org.opentripplanner.ext.siri.SiriTimetableSnapshotSource;
+import org.opentripplanner.updater.siri.SiriTimetableSnapshotSource;
import org.opentripplanner.updater.spi.ResultLogger;
import org.opentripplanner.updater.spi.UpdateResult;
import org.opentripplanner.updater.trip.UpdateIncrementality;
diff --git a/src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureETUpdaterParameters.java b/application/src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureETUpdaterParameters.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureETUpdaterParameters.java
rename to application/src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureETUpdaterParameters.java
diff --git a/src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureInitializationException.java b/application/src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureInitializationException.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureInitializationException.java
rename to application/src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureInitializationException.java
diff --git a/src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureSXUpdater.java b/application/src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureSXUpdater.java
similarity index 93%
rename from src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureSXUpdater.java
rename to application/src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureSXUpdater.java
index bcd2c500c40..0f3e2afe1ea 100644
--- a/src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureSXUpdater.java
+++ b/application/src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureSXUpdater.java
@@ -15,11 +15,11 @@
import java.util.function.Consumer;
import javax.xml.stream.XMLStreamException;
import org.apache.hc.core5.net.URIBuilder;
-import org.opentripplanner.ext.siri.SiriAlertsUpdateHandler;
import org.opentripplanner.routing.impl.TransitAlertServiceImpl;
import org.opentripplanner.routing.services.TransitAlertService;
-import org.opentripplanner.transit.service.TransitModel;
+import org.opentripplanner.transit.service.TimetableRepository;
import org.opentripplanner.updater.alert.TransitAlertProvider;
+import org.opentripplanner.updater.siri.SiriAlertsUpdateHandler;
import org.rutebanken.siri20.util.SiriXml;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,11 +35,14 @@ public class SiriAzureSXUpdater extends AbstractAzureSiriUpdater implements Tran
private final LocalDate fromDateTime;
private final LocalDate toDateTime;
- public SiriAzureSXUpdater(SiriAzureSXUpdaterParameters config, TransitModel transitModel) {
+ public SiriAzureSXUpdater(
+ SiriAzureSXUpdaterParameters config,
+ TimetableRepository timetableRepository
+ ) {
super(config);
this.fromDateTime = config.getFromDateTime();
this.toDateTime = config.getToDateTime();
- this.transitAlertService = new TransitAlertServiceImpl(transitModel);
+ this.transitAlertService = new TransitAlertServiceImpl(timetableRepository);
this.updateHandler = new SiriAlertsUpdateHandler(feedId, transitAlertService, Duration.ZERO);
}
diff --git a/src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureSXUpdaterParameters.java b/application/src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureSXUpdaterParameters.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureSXUpdaterParameters.java
rename to application/src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureSXUpdaterParameters.java
diff --git a/src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureUpdaterParameters.java b/application/src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureUpdaterParameters.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureUpdaterParameters.java
rename to application/src/ext/java/org/opentripplanner/ext/siri/updater/azure/SiriAzureUpdaterParameters.java
diff --git a/src/ext/java/org/opentripplanner/ext/smoovebikerental/SmooveBikeRentalDataSource.java b/application/src/ext/java/org/opentripplanner/ext/smoovebikerental/SmooveBikeRentalDataSource.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/smoovebikerental/SmooveBikeRentalDataSource.java
rename to application/src/ext/java/org/opentripplanner/ext/smoovebikerental/SmooveBikeRentalDataSource.java
diff --git a/src/ext/java/org/opentripplanner/ext/smoovebikerental/SmooveBikeRentalDataSourceParameters.java b/application/src/ext/java/org/opentripplanner/ext/smoovebikerental/SmooveBikeRentalDataSourceParameters.java
similarity index 76%
rename from src/ext/java/org/opentripplanner/ext/smoovebikerental/SmooveBikeRentalDataSourceParameters.java
rename to application/src/ext/java/org/opentripplanner/ext/smoovebikerental/SmooveBikeRentalDataSourceParameters.java
index ca0f5497601..a04ea004bf0 100644
--- a/src/ext/java/org/opentripplanner/ext/smoovebikerental/SmooveBikeRentalDataSourceParameters.java
+++ b/application/src/ext/java/org/opentripplanner/ext/smoovebikerental/SmooveBikeRentalDataSourceParameters.java
@@ -1,7 +1,8 @@
package org.opentripplanner.ext.smoovebikerental;
-import javax.annotation.Nonnull;
+import java.util.Set;
import javax.annotation.Nullable;
+import org.opentripplanner.updater.vehicle_rental.datasources.params.RentalPickupType;
import org.opentripplanner.updater.spi.HttpHeaders;
import org.opentripplanner.updater.vehicle_rental.VehicleRentalSourceType;
import org.opentripplanner.updater.vehicle_rental.datasources.params.VehicleRentalDataSourceParameters;
@@ -13,7 +14,8 @@ public record SmooveBikeRentalDataSourceParameters(
String url,
String network,
boolean overloadingAllowed,
- HttpHeaders httpHeaders
+ HttpHeaders httpHeaders,
+ Set rentalPickupTypes
)
implements VehicleRentalDataSourceParameters {
/**
@@ -26,9 +28,13 @@ public String getNetwork(String defaultValue) {
return network == null || network.isEmpty() ? defaultValue : network;
}
- @Nonnull
@Override
public VehicleRentalSourceType sourceType() {
return VehicleRentalSourceType.SMOOVE;
}
+
+ @Override
+ public boolean allowRentalType(RentalPickupType rentalPickupType) {
+ return rentalPickupTypes.contains(rentalPickupType);
+ }
}
diff --git a/application/src/ext/java/org/opentripplanner/ext/sorlandsbanen/CoachCostCalculator.java b/application/src/ext/java/org/opentripplanner/ext/sorlandsbanen/CoachCostCalculator.java
new file mode 100644
index 00000000000..ba4830f29cf
--- /dev/null
+++ b/application/src/ext/java/org/opentripplanner/ext/sorlandsbanen/CoachCostCalculator.java
@@ -0,0 +1,82 @@
+package org.opentripplanner.ext.sorlandsbanen;
+
+import org.opentripplanner.raptor.api.model.RaptorAccessEgress;
+import org.opentripplanner.raptor.api.model.RaptorCostConverter;
+import org.opentripplanner.raptor.api.model.RaptorTransferConstraint;
+import org.opentripplanner.raptor.spi.RaptorCostCalculator;
+import org.opentripplanner.routing.algorithm.raptoradapter.transit.TripSchedule;
+import org.opentripplanner.transit.model.basic.TransitMode;
+
+
+/**
+ * This cost calculator increases the cost on mode coach by adding an extra reluctance. The
+ * reluctance is hardcoded in this class and cannot be configured.
+ */
+class CoachCostCalculator implements RaptorCostCalculator {
+
+ private static final int EXTRA_RELUCTANCE_ON_COACH = RaptorCostConverter.toRaptorCost(0.6);
+
+ private final RaptorCostCalculator delegate;
+
+ CoachCostCalculator(RaptorCostCalculator delegate) {
+ this.delegate = delegate;
+ }
+
+ @Override
+ public int boardingCost(
+ boolean firstBoarding,
+ int prevArrivalTime,
+ int boardStop,
+ int boardTime,
+ T trip,
+ RaptorTransferConstraint transferConstraints
+ ) {
+ return delegate.boardingCost(
+ firstBoarding,
+ prevArrivalTime,
+ boardStop,
+ boardTime,
+ trip,
+ transferConstraints
+ );
+ }
+
+ @Override
+ public int onTripRelativeRidingCost(int boardTime, T tripScheduledBoarded) {
+ return delegate.onTripRelativeRidingCost(boardTime, tripScheduledBoarded);
+ }
+
+ @Override
+ public int transitArrivalCost(
+ int boardCost,
+ int alightSlack,
+ int transitTime,
+ T trip,
+ int toStop
+ ) {
+ int cost = delegate.transitArrivalCost(boardCost, alightSlack, transitTime, trip, toStop);
+
+ // This is a bit ugly, since it relies on the fact that the 'transitReluctanceFactorIndex'
+ // returns the 'route.getMode().ordinal()'
+ if(trip.transitReluctanceFactorIndex() == TransitMode.COACH.ordinal()) {
+ cost += transitTime * EXTRA_RELUCTANCE_ON_COACH;
+ }
+ return cost;
+ }
+
+ @Override
+ public int waitCost(int waitTimeInSeconds) {
+ return delegate.waitCost(waitTimeInSeconds);
+ }
+
+ @Override
+ public int calculateRemainingMinCost(int minTravelTime, int minNumTransfers, int fromStop) {
+ return delegate.calculateRemainingMinCost(minTravelTime, minNumTransfers, fromStop);
+ }
+
+ @Override
+ public int costEgress(RaptorAccessEgress egress) {
+ return delegate.costEgress(egress);
+ }
+
+}
diff --git a/application/src/ext/java/org/opentripplanner/ext/sorlandsbanen/MergePaths.java b/application/src/ext/java/org/opentripplanner/ext/sorlandsbanen/MergePaths.java
new file mode 100644
index 00000000000..2f7b38a7a08
--- /dev/null
+++ b/application/src/ext/java/org/opentripplanner/ext/sorlandsbanen/MergePaths.java
@@ -0,0 +1,54 @@
+package org.opentripplanner.ext.sorlandsbanen;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.function.BiFunction;
+import org.opentripplanner.raptor.api.model.RaptorTripSchedule;
+import org.opentripplanner.raptor.api.path.PathLeg;
+import org.opentripplanner.raptor.api.path.RaptorPath;
+import org.opentripplanner.routing.algorithm.raptoradapter.transit.request.TripScheduleWithOffset;
+import org.opentripplanner.transit.model.basic.TransitMode;
+
+/**
+ * Strategy for merging the main results and the extra rail results from Sorlandsbanen.
+ * Everything from the main result is kept, and any additional rail results from the alternative
+ * search are added.
+ */
+class MergePaths implements BiFunction>, Collection>, Collection>> {
+
+ @Override
+ public Collection> apply(Collection> main, Collection> alternatives) {
+ Map> result = new HashMap<>();
+ addAllToMap(result, main);
+ addRailToMap(result, alternatives);
+ return result.values();
+ }
+
+ private void addAllToMap(Map> map, Collection> paths) {
+ for (var it : paths) {
+ map.put(new PathKey(it), it);
+ }
+ }
+
+ private void addRailToMap(Map> map, Collection> paths) {
+ for (var it : paths) {
+ if (hasRail(it)) {
+ // Avoid replacing an existing value if it exists, there might be minor differences in the
+ // path, in which case we want to keep the main result.
+ map.computeIfAbsent(new PathKey(it), k -> it);
+ }
+ }
+ }
+
+ private static boolean hasRail(RaptorPath> path) {
+ return path
+ .legStream()
+ .filter(PathLeg::isTransitLeg)
+ .anyMatch(leg -> {
+ var trip = (TripScheduleWithOffset) leg.asTransitLeg().trip();
+ var mode = trip.getOriginalTripPattern().getMode();
+ return mode == TransitMode.RAIL;
+ });
+ }
+}
diff --git a/application/src/ext/java/org/opentripplanner/ext/sorlandsbanen/PathKey.java b/application/src/ext/java/org/opentripplanner/ext/sorlandsbanen/PathKey.java
new file mode 100644
index 00000000000..e4504b3ed14
--- /dev/null
+++ b/application/src/ext/java/org/opentripplanner/ext/sorlandsbanen/PathKey.java
@@ -0,0 +1,60 @@
+package org.opentripplanner.ext.sorlandsbanen;
+
+import org.opentripplanner.raptor.api.path.PathLeg;
+import org.opentripplanner.raptor.api.path.RaptorPath;
+
+
+/**
+ * The purpose of this class is to create a key to be able to compare paths so duplicate results
+ * can be ignored.
+ *
+ * Creating a good key for a path is not easy. For example, should a small variation in the street
+ * routing for an access/egress leg count as a significant difference? The solution here is
+ * straightforward. It creates a hash of the access-, egress- and transit-legs in the path,
+ * ignoring transfer legs. This approach may drop valid results if there are hash collisions,
+ * but since this is a Sandbox module and the investment in this code is minimal, we will accept
+ * the risk.
+ */
+final class PathKey {
+
+ private final int hash;
+
+ PathKey(RaptorPath> path) {
+ this.hash = hash(path);
+ }
+
+ private static int hash(RaptorPath> path) {
+ int result = 1;
+
+ PathLeg> leg = path.accessLeg();
+
+ while (!leg.isEgressLeg()) {
+ result = 31 * result + leg.toStop();
+ result = 31 * result + leg.toTime();
+
+ if (leg.isTransitLeg()) {
+ result = 31 * result + leg.asTransitLeg().trip().pattern().debugInfo().hashCode();
+ }
+ leg = leg.nextLeg();
+ }
+ result = 31 * result + leg.toTime();
+
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o.getClass() != PathKey.class) {
+ return false;
+ }
+ return hash == ((PathKey) o).hash;
+ }
+
+ @Override
+ public int hashCode() {
+ return hash;
+ }
+}
diff --git a/application/src/ext/java/org/opentripplanner/ext/sorlandsbanen/SorlandsbanenNorwayService.java b/application/src/ext/java/org/opentripplanner/ext/sorlandsbanen/SorlandsbanenNorwayService.java
new file mode 100644
index 00000000000..ecccb5d2370
--- /dev/null
+++ b/application/src/ext/java/org/opentripplanner/ext/sorlandsbanen/SorlandsbanenNorwayService.java
@@ -0,0 +1,106 @@
+package org.opentripplanner.ext.sorlandsbanen;
+
+import java.util.Collection;
+import java.util.function.BiFunction;
+import javax.annotation.Nullable;
+import org.opentripplanner.framework.geometry.WgsCoordinate;
+import org.opentripplanner.model.GenericLocation;
+import org.opentripplanner.raptor.api.path.RaptorPath;
+import org.opentripplanner.raptor.spi.ExtraMcRouterSearch;
+import org.opentripplanner.raptor.spi.RaptorTransitDataProvider;
+import org.opentripplanner.routing.algorithm.raptoradapter.router.street.AccessEgresses;
+import org.opentripplanner.routing.algorithm.raptoradapter.transit.RoutingAccessEgress;
+import org.opentripplanner.routing.algorithm.raptoradapter.transit.TransitLayer;
+import org.opentripplanner.routing.algorithm.raptoradapter.transit.TripSchedule;
+import org.opentripplanner.routing.algorithm.raptoradapter.transit.request.RaptorRoutingRequestTransitData;
+import org.opentripplanner.routing.api.request.RouteRequest;
+import org.opentripplanner.transit.model.framework.FeedScopedId;
+import org.opentripplanner.transit.model.site.StopLocation;
+
+/**
+ * This service is responsible for producing results with rail for the south of Norway. The rail
+ * line is called "Sørlandsbanen". This rail line is slow and goes inland far from where people
+ * live. Despite this, people and the operator want to show it in the results for log travel along
+ * the southern part of Norway where it is an option. Tuning the search has proven to be
+ * challenging. It is solved here by doing two searches. One normal search and one where the rail
+ * is given a big cost advantage over coach. If train results are found in the second search, then
+ * it is added to the results of the first search. Everything found in the first search is always
+ * returned.
+ */
+public class SorlandsbanenNorwayService {
+
+ private static final double SOUTH_BORDER_LIMIT = 59.1;
+ private static final int MIN_DISTANCE_LIMIT = 120_000;
+
+
+ @Nullable
+ public ExtraMcRouterSearch createExtraMcRouterSearch(RouteRequest request, AccessEgresses accessEgresses, TransitLayer transitLayer) {
+ WgsCoordinate from = findStopCoordinate(
+ request.from(),
+ accessEgresses.getAccesses(),
+ transitLayer
+ );
+ WgsCoordinate to = findStopCoordinate(request.to(), accessEgresses.getEgresses(), transitLayer);
+
+ if (from.isNorthOf(SOUTH_BORDER_LIMIT) && to.isNorthOf(SOUTH_BORDER_LIMIT)) {
+ return null;
+ }
+
+ double distance = from.distanceTo(to);
+ if (distance < MIN_DISTANCE_LIMIT) {
+ return null;
+ }
+
+ return new ExtraMcRouterSearch<>() {
+ @Override
+ public RaptorTransitDataProvider createTransitDataAlternativeSearch(RaptorTransitDataProvider transitDataMainSearch) {
+ return new RaptorRoutingRequestTransitData(
+ (RaptorRoutingRequestTransitData)transitDataMainSearch,
+ new CoachCostCalculator<>(transitDataMainSearch.multiCriteriaCostCalculator())
+ );
+ }
+
+ @Override
+ public BiFunction>, Collection>, Collection>> merger() {
+ return new MergePaths<>();
+ }
+ };
+ }
+
+ /**
+ * Find a coordinate matching the given location, in order:
+ * - First return the coordinate of the location if it exists.
+ * - Then loop through the access/egress stops and try to find the
+ * stop or station given by the location id, return the stop/station coordinate.
+ * - Return the stop coordinate of the first access/egress in the list.
+ */
+ @SuppressWarnings("ConstantConditions")
+ private static WgsCoordinate findStopCoordinate(
+ GenericLocation location,
+ Collection extends RoutingAccessEgress> accessEgress,
+ TransitLayer transitLayer
+ ) {
+ if (location.lat != null) {
+ return new WgsCoordinate(location.lat, location.lng);
+ }
+
+ StopLocation firstStop = null;
+ for (RoutingAccessEgress it : accessEgress) {
+ StopLocation stop = transitLayer.getStopByIndex(it.stop());
+ if (stop.getId().equals(location.stopId)) {
+ return stop.getCoordinate();
+ }
+ if (idIsParentStation(stop, location.stopId)) {
+ return stop.getParentStation().getCoordinate();
+ }
+ if (firstStop == null) {
+ firstStop = stop;
+ }
+ }
+ return firstStop.getCoordinate();
+ }
+
+ private static boolean idIsParentStation(StopLocation stop, FeedScopedId pId) {
+ return stop.getParentStation() != null && stop.getParentStation().getId().equals(pId);
+ }
+}
diff --git a/application/src/ext/java/org/opentripplanner/ext/sorlandsbanen/configure/SorlandsbanenNorwayModule.java b/application/src/ext/java/org/opentripplanner/ext/sorlandsbanen/configure/SorlandsbanenNorwayModule.java
new file mode 100644
index 00000000000..d0b177ac767
--- /dev/null
+++ b/application/src/ext/java/org/opentripplanner/ext/sorlandsbanen/configure/SorlandsbanenNorwayModule.java
@@ -0,0 +1,17 @@
+package org.opentripplanner.ext.sorlandsbanen.configure;
+
+import dagger.Module;
+import dagger.Provides;
+import javax.annotation.Nullable;
+import org.opentripplanner.ext.sorlandsbanen.SorlandsbanenNorwayService;
+import org.opentripplanner.framework.application.OTPFeature;
+
+@Module
+public class SorlandsbanenNorwayModule {
+
+ @Provides
+ @Nullable
+ SorlandsbanenNorwayService providesSorlandsbanenNorwayService() {
+ return OTPFeature.Sorlandsbanen.isOn() ? new SorlandsbanenNorwayService() : null;
+ }
+}
diff --git a/src/ext/java/org/opentripplanner/ext/stopconsolidation/DecorateConsolidatedStopNames.java b/application/src/ext/java/org/opentripplanner/ext/stopconsolidation/DecorateConsolidatedStopNames.java
similarity index 68%
rename from src/ext/java/org/opentripplanner/ext/stopconsolidation/DecorateConsolidatedStopNames.java
rename to application/src/ext/java/org/opentripplanner/ext/stopconsolidation/DecorateConsolidatedStopNames.java
index 1806b3e9e32..6def5c85fa1 100644
--- a/src/ext/java/org/opentripplanner/ext/stopconsolidation/DecorateConsolidatedStopNames.java
+++ b/application/src/ext/java/org/opentripplanner/ext/stopconsolidation/DecorateConsolidatedStopNames.java
@@ -1,8 +1,10 @@
package org.opentripplanner.ext.stopconsolidation;
+import java.util.ArrayList;
import java.util.Objects;
import org.opentripplanner.ext.stopconsolidation.model.ConsolidatedStopLeg;
import org.opentripplanner.model.plan.Itinerary;
+import org.opentripplanner.model.plan.Leg;
import org.opentripplanner.model.plan.ScheduledTransitLeg;
import org.opentripplanner.routing.algorithm.filterchain.framework.spi.ItineraryDecorator;
@@ -13,6 +15,7 @@
*/
public class DecorateConsolidatedStopNames implements ItineraryDecorator {
+ private static final int MAX_INTRA_STOP_WALK_DISTANCE_METERS = 15;
private final StopConsolidationService service;
public DecorateConsolidatedStopNames(StopConsolidationService service) {
@@ -22,6 +25,7 @@ public DecorateConsolidatedStopNames(StopConsolidationService service) {
@Override
public void decorate(Itinerary itinerary) {
replaceConsolidatedStops(itinerary);
+ removeShortWalkLegs(itinerary);
}
/**
@@ -51,6 +55,43 @@ private void replaceConsolidatedStops(Itinerary i) {
});
}
+ /**
+ * Removes walk legs from and to a consolidated stop if they are deemed "short". This means that
+ * they are from a different element of the consolidated stop.
+ */
+ private void removeShortWalkLegs(Itinerary itinerary) {
+ var legs = new ArrayList<>(itinerary.getLegs());
+ var first = legs.getFirst();
+ if (
+ service.isPartOfConsolidatedStop(first.getTo().stop) &&
+ isShortWalkLeg(first)
+ ) {
+ legs.removeFirst();
+ }
+ var last = legs.getLast();
+ if (
+ service.isPartOfConsolidatedStop(last.getFrom().stop) &&
+ isShortWalkLeg(last)
+ ) {
+ legs.removeLast();
+ }
+
+ var transfersRemoved = legs.stream().filter(l -> !isTransferWithinConsolidatedStop(l)).toList();
+
+ itinerary.setLegs(transfersRemoved);
+ }
+
+ private boolean isTransferWithinConsolidatedStop(Leg l) {
+ return isShortWalkLeg(l) &&
+ service.isPartOfConsolidatedStop(l.getFrom().stop) &&
+ service.isPartOfConsolidatedStop(l.getTo().stop);
+ }
+
+ private static boolean isShortWalkLeg(Leg leg) {
+ return leg.isWalkingLeg() &&
+ leg.getDistanceMeters() < MAX_INTRA_STOP_WALK_DISTANCE_METERS;
+ }
+
/**
* Figures out if the from/to stops are part of a consolidated stop group and therefore
* some stops need to be replaced.
diff --git a/src/ext/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationModule.java b/application/src/ext/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationModule.java
similarity index 82%
rename from src/ext/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationModule.java
rename to application/src/ext/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationModule.java
index 100941d88d4..c4fca42d129 100644
--- a/src/ext/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationModule.java
+++ b/application/src/ext/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationModule.java
@@ -4,14 +4,13 @@
import java.util.Collection;
import java.util.List;
import java.util.Objects;
-import javax.annotation.Nonnull;
import org.opentripplanner.datastore.api.DataSource;
import org.opentripplanner.ext.stopconsolidation.internal.DefaultStopConsolidationService;
import org.opentripplanner.ext.stopconsolidation.model.ConsolidatedStopGroup;
import org.opentripplanner.ext.stopconsolidation.model.StopReplacement;
import org.opentripplanner.graph_builder.model.GraphBuilderModule;
import org.opentripplanner.transit.model.network.TripPattern;
-import org.opentripplanner.transit.service.TransitModel;
+import org.opentripplanner.transit.service.TimetableRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -26,18 +25,18 @@
*/
public class StopConsolidationModule implements GraphBuilderModule {
- private static final Logger LOG = LoggerFactory.getLogger(TripPattern.class);
+ private static final Logger LOG = LoggerFactory.getLogger(StopConsolidationModule.class);
private final StopConsolidationRepository repository;
- private final TransitModel transitModel;
+ private final TimetableRepository timetableRepository;
private final Collection groups;
public StopConsolidationModule(
- TransitModel transitModel,
+ TimetableRepository timetableRepository,
StopConsolidationRepository repository,
Collection groups
) {
- this.transitModel = Objects.requireNonNull(transitModel);
+ this.timetableRepository = Objects.requireNonNull(timetableRepository);
this.repository = Objects.requireNonNull(repository);
this.groups = Objects.requireNonNull(groups);
}
@@ -46,23 +45,22 @@ public StopConsolidationModule(
public void buildGraph() {
repository.addGroups(groups);
- var service = new DefaultStopConsolidationService(repository, transitModel);
+ var service = new DefaultStopConsolidationService(repository, timetableRepository);
var stopsToReplace = service.secondaryStops();
var replacements = service.replacements();
- transitModel
+ timetableRepository
.getAllTripPatterns()
.stream()
.filter(pattern -> pattern.containsAnyStopId(stopsToReplace))
.forEach(pattern -> {
LOG.info("Replacing stop(s) in pattern {}", pattern);
var modifiedPattern = modifyStopsInPattern(pattern, replacements);
- transitModel.addTripPattern(modifiedPattern.getId(), modifiedPattern);
+ timetableRepository.addTripPattern(modifiedPattern.getId(), modifiedPattern);
});
}
- @Nonnull
private TripPattern modifyStopsInPattern(
TripPattern pattern,
List replacements
@@ -73,14 +71,14 @@ private TripPattern modifyStopsInPattern(
}
public static StopConsolidationModule of(
- TransitModel transitModel,
+ TimetableRepository timetableRepository,
StopConsolidationRepository repo,
DataSource ds
) {
LOG.info("Reading stop consolidation information from '{}'", ds);
try (var inputStream = ds.asInputStream()) {
var groups = StopConsolidationParser.parseGroups(inputStream);
- return new StopConsolidationModule(transitModel, repo, groups);
+ return new StopConsolidationModule(timetableRepository, repo, groups);
} catch (IOException e) {
throw new RuntimeException(e);
}
diff --git a/src/ext/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationParser.java b/application/src/ext/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationParser.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationParser.java
rename to application/src/ext/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationParser.java
diff --git a/src/ext/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationRepository.java b/application/src/ext/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationRepository.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationRepository.java
rename to application/src/ext/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationRepository.java
diff --git a/src/ext/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationService.java b/application/src/ext/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationService.java
similarity index 93%
rename from src/ext/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationService.java
rename to application/src/ext/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationService.java
index 68efe8744cc..0457212e66a 100644
--- a/src/ext/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationService.java
+++ b/application/src/ext/java/org/opentripplanner/ext/stopconsolidation/StopConsolidationService.java
@@ -2,6 +2,7 @@
import java.util.List;
import java.util.Optional;
+import javax.annotation.Nullable;
import org.opentripplanner.ext.stopconsolidation.model.StopReplacement;
import org.opentripplanner.transit.model.framework.FeedScopedId;
import org.opentripplanner.transit.model.organization.Agency;
@@ -44,5 +45,5 @@ public interface StopConsolidationService {
*/
Optional primaryStop(FeedScopedId id);
- boolean isPartOfConsolidatedStop(StopLocation sl);
+ boolean isPartOfConsolidatedStop(@Nullable StopLocation sl);
}
diff --git a/src/ext/java/org/opentripplanner/ext/stopconsolidation/configure/StopConsolidationRepositoryModule.java b/application/src/ext/java/org/opentripplanner/ext/stopconsolidation/configure/StopConsolidationRepositoryModule.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/stopconsolidation/configure/StopConsolidationRepositoryModule.java
rename to application/src/ext/java/org/opentripplanner/ext/stopconsolidation/configure/StopConsolidationRepositoryModule.java
diff --git a/src/ext/java/org/opentripplanner/ext/stopconsolidation/configure/StopConsolidationServiceModule.java b/application/src/ext/java/org/opentripplanner/ext/stopconsolidation/configure/StopConsolidationServiceModule.java
similarity index 77%
rename from src/ext/java/org/opentripplanner/ext/stopconsolidation/configure/StopConsolidationServiceModule.java
rename to application/src/ext/java/org/opentripplanner/ext/stopconsolidation/configure/StopConsolidationServiceModule.java
index 3851435641c..5c829b20b67 100644
--- a/src/ext/java/org/opentripplanner/ext/stopconsolidation/configure/StopConsolidationServiceModule.java
+++ b/application/src/ext/java/org/opentripplanner/ext/stopconsolidation/configure/StopConsolidationServiceModule.java
@@ -7,7 +7,7 @@
import org.opentripplanner.ext.stopconsolidation.StopConsolidationRepository;
import org.opentripplanner.ext.stopconsolidation.StopConsolidationService;
import org.opentripplanner.ext.stopconsolidation.internal.DefaultStopConsolidationService;
-import org.opentripplanner.transit.service.TransitModel;
+import org.opentripplanner.transit.service.TimetableRepository;
@Module
public class StopConsolidationServiceModule {
@@ -15,7 +15,10 @@ public class StopConsolidationServiceModule {
@Provides
@Singleton
@Nullable
- StopConsolidationService service(@Nullable StopConsolidationRepository repo, TransitModel tm) {
+ StopConsolidationService service(
+ @Nullable StopConsolidationRepository repo,
+ TimetableRepository tm
+ ) {
if (repo == null) {
return null;
} else {
diff --git a/src/ext/java/org/opentripplanner/ext/stopconsolidation/internal/DefaultStopConsolidationRepository.java b/application/src/ext/java/org/opentripplanner/ext/stopconsolidation/internal/DefaultStopConsolidationRepository.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/stopconsolidation/internal/DefaultStopConsolidationRepository.java
rename to application/src/ext/java/org/opentripplanner/ext/stopconsolidation/internal/DefaultStopConsolidationRepository.java
diff --git a/src/ext/java/org/opentripplanner/ext/stopconsolidation/internal/DefaultStopConsolidationService.java b/application/src/ext/java/org/opentripplanner/ext/stopconsolidation/internal/DefaultStopConsolidationService.java
similarity index 80%
rename from src/ext/java/org/opentripplanner/ext/stopconsolidation/internal/DefaultStopConsolidationService.java
rename to application/src/ext/java/org/opentripplanner/ext/stopconsolidation/internal/DefaultStopConsolidationService.java
index 9f31e366be5..8e6f31fb6fe 100644
--- a/src/ext/java/org/opentripplanner/ext/stopconsolidation/internal/DefaultStopConsolidationService.java
+++ b/application/src/ext/java/org/opentripplanner/ext/stopconsolidation/internal/DefaultStopConsolidationService.java
@@ -4,15 +4,15 @@
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Stream;
-import javax.annotation.Nonnull;
import org.opentripplanner.ext.stopconsolidation.StopConsolidationRepository;
+import javax.annotation.Nullable;
import org.opentripplanner.ext.stopconsolidation.StopConsolidationService;
import org.opentripplanner.ext.stopconsolidation.model.ConsolidatedStopGroup;
import org.opentripplanner.ext.stopconsolidation.model.StopReplacement;
import org.opentripplanner.transit.model.framework.FeedScopedId;
import org.opentripplanner.transit.model.organization.Agency;
import org.opentripplanner.transit.model.site.StopLocation;
-import org.opentripplanner.transit.service.TransitModel;
+import org.opentripplanner.transit.service.TimetableRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -21,14 +21,14 @@ public class DefaultStopConsolidationService implements StopConsolidationService
private static final Logger LOG = LoggerFactory.getLogger(DefaultStopConsolidationService.class);
private final StopConsolidationRepository repo;
- private final TransitModel transitModel;
+ private final TimetableRepository timetableRepository;
public DefaultStopConsolidationService(
StopConsolidationRepository repo,
- TransitModel transitModel
+ TimetableRepository timetableRepository
) {
this.repo = Objects.requireNonNull(repo);
- this.transitModel = Objects.requireNonNull(transitModel);
+ this.timetableRepository = Objects.requireNonNull(timetableRepository);
}
@Override
@@ -37,7 +37,7 @@ public List replacements() {
.groups()
.stream()
.flatMap(group -> {
- var primaryStop = transitModel.getStopModel().getRegularStop(group.primary());
+ var primaryStop = timetableRepository.getSiteRepository().getRegularStop(group.primary());
if (primaryStop == null) {
LOG.error(
"Could not find primary stop with id {}. Ignoring stop group {}.",
@@ -68,8 +68,12 @@ public boolean isSecondaryStop(StopLocation stop) {
}
@Override
- public boolean isPartOfConsolidatedStop(StopLocation sl) {
- return isSecondaryStop(sl) || isPrimaryStop(sl);
+ public boolean isPartOfConsolidatedStop(@Nullable StopLocation sl) {
+ if (sl == null) {
+ return false;
+ } else {
+ return isSecondaryStop(sl) || isPrimaryStop(sl);
+ }
}
@Override
@@ -86,7 +90,6 @@ public StopLocation agencySpecificStop(StopLocation stop, Agency agency) {
}
}
- @Nonnull
private Optional findAgencySpecificStop(StopLocation stop, Agency agency) {
return repo
.groups()
@@ -95,7 +98,7 @@ private Optional findAgencySpecificStop(StopLocation stop, Agency
.flatMap(g -> g.secondaries().stream())
.filter(secondary -> secondary.getFeedId().equals(agency.getId().getFeedId()))
.findAny()
- .map(id -> transitModel.getStopModel().getRegularStop(id));
+ .map(id -> timetableRepository.getSiteRepository().getRegularStop(id));
}
@Override
@@ -107,6 +110,6 @@ public Optional primaryStop(FeedScopedId id) {
.map(ConsolidatedStopGroup::primary)
.findAny()
.orElse(id);
- return Optional.ofNullable(transitModel.getStopModel().getRegularStop(primaryId));
+ return Optional.ofNullable(timetableRepository.getSiteRepository().getRegularStop(primaryId));
}
}
diff --git a/src/ext/java/org/opentripplanner/ext/stopconsolidation/model/ConsolidatedStopGroup.java b/application/src/ext/java/org/opentripplanner/ext/stopconsolidation/model/ConsolidatedStopGroup.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/stopconsolidation/model/ConsolidatedStopGroup.java
rename to application/src/ext/java/org/opentripplanner/ext/stopconsolidation/model/ConsolidatedStopGroup.java
diff --git a/src/ext/java/org/opentripplanner/ext/stopconsolidation/model/ConsolidatedStopLeg.java b/application/src/ext/java/org/opentripplanner/ext/stopconsolidation/model/ConsolidatedStopLeg.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/stopconsolidation/model/ConsolidatedStopLeg.java
rename to application/src/ext/java/org/opentripplanner/ext/stopconsolidation/model/ConsolidatedStopLeg.java
diff --git a/src/ext/java/org/opentripplanner/ext/stopconsolidation/model/StopReplacement.java b/application/src/ext/java/org/opentripplanner/ext/stopconsolidation/model/StopReplacement.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/stopconsolidation/model/StopReplacement.java
rename to application/src/ext/java/org/opentripplanner/ext/stopconsolidation/model/StopReplacement.java
diff --git a/src/ext/java/org/opentripplanner/ext/transferanalyzer/DirectTransferAnalyzer.java b/application/src/ext/java/org/opentripplanner/ext/transferanalyzer/DirectTransferAnalyzer.java
similarity index 95%
rename from src/ext/java/org/opentripplanner/ext/transferanalyzer/DirectTransferAnalyzer.java
rename to application/src/ext/java/org/opentripplanner/ext/transferanalyzer/DirectTransferAnalyzer.java
index 979912c5f37..61cd9a0789b 100644
--- a/src/ext/java/org/opentripplanner/ext/transferanalyzer/DirectTransferAnalyzer.java
+++ b/application/src/ext/java/org/opentripplanner/ext/transferanalyzer/DirectTransferAnalyzer.java
@@ -18,7 +18,7 @@
import org.opentripplanner.routing.graphfinder.StreetGraphFinder;
import org.opentripplanner.street.model.vertex.TransitStopVertex;
import org.opentripplanner.transit.model.site.RegularStop;
-import org.opentripplanner.transit.service.TransitModel;
+import org.opentripplanner.transit.service.TimetableRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -41,18 +41,18 @@ public class DirectTransferAnalyzer implements GraphBuilderModule {
private static final Logger LOG = LoggerFactory.getLogger(DirectTransferAnalyzer.class);
private final Graph graph;
- private final TransitModel transitModel;
+ private final TimetableRepository timetableRepository;
private final DataImportIssueStore issueStore;
private final double radiusMeters;
public DirectTransferAnalyzer(
Graph graph,
- TransitModel transitModel,
+ TimetableRepository timetableRepository,
DataImportIssueStore issueStore,
double radiusMeters
) {
this.graph = graph;
- this.transitModel = transitModel;
+ this.timetableRepository = timetableRepository;
this.issueStore = issueStore;
this.radiusMeters = radiusMeters;
}
@@ -60,7 +60,7 @@ public DirectTransferAnalyzer(
@Override
public void buildGraph() {
/* Initialize transit index which is needed by the nearby stop finder. */
- transitModel.index();
+ timetableRepository.index();
LOG.info("Analyzing transfers (this can be time consuming)...");
@@ -68,7 +68,7 @@ public void buildGraph() {
List directTransfersNotFound = new ArrayList<>();
DirectGraphFinder nearbyStopFinderEuclidian = new DirectGraphFinder(
- transitModel.getStopModel()::findRegularStops
+ timetableRepository.getSiteRepository()::findRegularStops
);
StreetGraphFinder nearbyStopFinderStreets = new StreetGraphFinder(graph);
diff --git a/src/ext/java/org/opentripplanner/ext/transferanalyzer/annotations/TransferCouldNotBeRouted.java b/application/src/ext/java/org/opentripplanner/ext/transferanalyzer/annotations/TransferCouldNotBeRouted.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/transferanalyzer/annotations/TransferCouldNotBeRouted.java
rename to application/src/ext/java/org/opentripplanner/ext/transferanalyzer/annotations/TransferCouldNotBeRouted.java
diff --git a/src/ext/java/org/opentripplanner/ext/transferanalyzer/annotations/TransferRoutingDistanceTooLong.java b/application/src/ext/java/org/opentripplanner/ext/transferanalyzer/annotations/TransferRoutingDistanceTooLong.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/transferanalyzer/annotations/TransferRoutingDistanceTooLong.java
rename to application/src/ext/java/org/opentripplanner/ext/transferanalyzer/annotations/TransferRoutingDistanceTooLong.java
diff --git a/src/ext/java/org/opentripplanner/ext/vectortiles/VectorTilesResource.java b/application/src/ext/java/org/opentripplanner/ext/vectortiles/VectorTilesResource.java
similarity index 98%
rename from src/ext/java/org/opentripplanner/ext/vectortiles/VectorTilesResource.java
rename to application/src/ext/java/org/opentripplanner/ext/vectortiles/VectorTilesResource.java
index 29701ee2307..f1fde4917cd 100644
--- a/src/ext/java/org/opentripplanner/ext/vectortiles/VectorTilesResource.java
+++ b/application/src/ext/java/org/opentripplanner/ext/vectortiles/VectorTilesResource.java
@@ -109,7 +109,7 @@ public TileJson getTileJson(
private List getFeedInfos() {
return serverContext
.transitService()
- .getFeedIds()
+ .listFeedIds()
.stream()
.map(serverContext.transitService()::getFeedInfo)
.filter(Predicate.not(Objects::isNull))
@@ -140,12 +140,12 @@ private static LayerBuilder> createLayerBuilder(
layerParameters
);
case VehicleParking -> new VehicleParkingsLayerBuilder(
- context.graph(),
+ context.vehicleParkingService(),
layerParameters,
locale
);
case VehicleParkingGroup -> new VehicleParkingGroupsLayerBuilder(
- context.graph(),
+ context.vehicleParkingService(),
layerParameters,
locale
);
diff --git a/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/LayerFilters.java b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/LayerFilters.java
new file mode 100644
index 00000000000..38a27d4b4c4
--- /dev/null
+++ b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/LayerFilters.java
@@ -0,0 +1,73 @@
+package org.opentripplanner.ext.vectortiles.layers;
+
+import java.time.DayOfWeek;
+import java.time.LocalDate;
+import java.time.temporal.TemporalAdjusters;
+import java.util.Collection;
+import java.util.List;
+import java.util.function.Function;
+import java.util.function.Predicate;
+import java.util.function.Supplier;
+import org.opentripplanner.apis.gtfs.model.LocalDateRange;
+import org.opentripplanner.transit.model.network.TripPattern;
+import org.opentripplanner.transit.model.site.RegularStop;
+import org.opentripplanner.transit.model.timetable.Trip;
+import org.opentripplanner.transit.service.PatternByServiceDatesFilter;
+import org.opentripplanner.transit.service.TransitService;
+
+/**
+ * Predicates for filtering elements of vector tile layers. Currently only contains predicates
+ * for {@link RegularStop}. Once more types need to be filtered, this may need some refactoring.
+ */
+public class LayerFilters {
+
+ /**
+ * No filter is applied: all stops are included in the result.
+ */
+ public static final Predicate NO_FILTER = x -> true;
+
+ /**
+ * Returns a predicate which only includes stop which are visited by a pattern that is in the current
+ * "service week", which lasts from Sunday to Sunday.
+ */
+ public static Predicate buildCurrentServiceWeekPredicate(
+ Function> getPatternsForStop,
+ Function> getServiceDatesForTrip,
+ Supplier nowSupplier
+ ) {
+ var serviceDate = nowSupplier.get();
+ var lastSunday = serviceDate.with(TemporalAdjusters.previousOrSame(DayOfWeek.SUNDAY));
+ var nextSundayPlusOne = serviceDate.with(TemporalAdjusters.next(DayOfWeek.SUNDAY)).plusDays(1);
+
+ var filter = new PatternByServiceDatesFilter(
+ // reminder, the end of the date range is exclusive so it's the next Sunday plus one day
+ new LocalDateRange(lastSunday, nextSundayPlusOne),
+ // not used
+ route -> List.of(),
+ getServiceDatesForTrip
+ );
+
+ return regularStop -> {
+ var patterns = getPatternsForStop.apply(regularStop);
+ var patternsInCurrentWeek = filter.filterPatterns(patterns);
+ return !patternsInCurrentWeek.isEmpty();
+ };
+ }
+
+ public static Predicate forType(FilterType type, TransitService transitService) {
+ return switch (type) {
+ case NONE -> NO_FILTER;
+ case SUNDAY_TO_SUNDAY_SERVICE_WEEK -> buildCurrentServiceWeekPredicate(
+ transitService::findPatterns,
+ trip ->
+ transitService.getCalendarService().getServiceDatesForServiceId(trip.getServiceId()),
+ () -> LocalDate.now(transitService.getTimeZone())
+ );
+ };
+ }
+
+ public enum FilterType {
+ NONE,
+ SUNDAY_TO_SUNDAY_SERVICE_WEEK,
+ }
+}
diff --git a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopPropertyMapper.java b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopPropertyMapper.java
similarity index 95%
rename from src/ext/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopPropertyMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopPropertyMapper.java
index ea6f9225e11..3a5a33103df 100644
--- a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopPropertyMapper.java
+++ b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopPropertyMapper.java
@@ -28,7 +28,7 @@ protected AreaStopPropertyMapper(
}
protected static AreaStopPropertyMapper create(TransitService transitService, Locale locale) {
- return new AreaStopPropertyMapper(transitService::getRoutesForStop, locale);
+ return new AreaStopPropertyMapper(transitService::findRoutes, locale);
}
@Override
diff --git a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopsLayerBuilder.java b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopsLayerBuilder.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopsLayerBuilder.java
rename to application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopsLayerBuilder.java
diff --git a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/stations/DigitransitStationPropertyMapper.java b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/stations/DigitransitStationPropertyMapper.java
similarity index 94%
rename from src/ext/java/org/opentripplanner/ext/vectortiles/layers/stations/DigitransitStationPropertyMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/stations/DigitransitStationPropertyMapper.java
index 18b4a5f388d..6268db83b04 100644
--- a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/stations/DigitransitStationPropertyMapper.java
+++ b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/stations/DigitransitStationPropertyMapper.java
@@ -44,7 +44,7 @@ public Collection map(Station station) {
"type",
childStops
.stream()
- .flatMap(stop -> transitService.getPatternsForStop(stop).stream())
+ .flatMap(stop -> transitService.findPatterns(stop).stream())
.map(tripPattern -> tripPattern.getMode().name())
.distinct()
.collect(Collectors.joining(","))
@@ -60,7 +60,7 @@ public Collection map(Station station) {
OBJECT_MAPPER.writeValueAsString(
childStops
.stream()
- .flatMap(stop -> transitService.getRoutesForStop(stop).stream())
+ .flatMap(stop -> transitService.findRoutes(stop).stream())
.distinct()
.map(route -> {
var obj = OBJECT_MAPPER.createObjectNode();
diff --git a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/stations/StationsLayerBuilder.java b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/stations/StationsLayerBuilder.java
similarity index 92%
rename from src/ext/java/org/opentripplanner/ext/vectortiles/layers/stations/StationsLayerBuilder.java
rename to application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/stations/StationsLayerBuilder.java
index 449a1489d89..c157621a740 100644
--- a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/stations/StationsLayerBuilder.java
+++ b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/stations/StationsLayerBuilder.java
@@ -23,7 +23,7 @@ public class StationsLayerBuilder extends LayerBuilder {
MapperType.Digitransit,
DigitransitStationPropertyMapper::create
);
- private final TransitService transitModel;
+ private final TransitService transitService;
public StationsLayerBuilder(
TransitService transitService,
@@ -35,12 +35,12 @@ public StationsLayerBuilder(
layerParameters.name(),
layerParameters.expansionFactor()
);
- this.transitModel = transitService;
+ this.transitService = transitService;
}
protected List getGeometries(Envelope query) {
- return transitModel
- .getStations()
+ return transitService
+ .listStations()
.stream()
.map(station -> {
Coordinate coordinate = station.getCoordinate().asJtsCoordinate();
diff --git a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/stops/DigitransitRealtimeStopPropertyMapper.java b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/stops/DigitransitRealtimeStopPropertyMapper.java
similarity index 93%
rename from src/ext/java/org/opentripplanner/ext/vectortiles/layers/stops/DigitransitRealtimeStopPropertyMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/stops/DigitransitRealtimeStopPropertyMapper.java
index cf555d6412f..6fb2783f7cb 100644
--- a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/stops/DigitransitRealtimeStopPropertyMapper.java
+++ b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/stops/DigitransitRealtimeStopPropertyMapper.java
@@ -8,12 +8,12 @@
import java.util.List;
import java.util.Locale;
import org.opentripplanner.apis.support.mapping.PropertyMapper;
-import org.opentripplanner.framework.collection.ListUtils;
import org.opentripplanner.framework.i18n.I18NStringMapper;
import org.opentripplanner.inspector.vector.KeyValue;
import org.opentripplanner.routing.stoptimes.ArrivalDeparture;
import org.opentripplanner.transit.model.site.RegularStop;
import org.opentripplanner.transit.service.TransitService;
+import org.opentripplanner.utils.collection.ListUtils;
public class DigitransitRealtimeStopPropertyMapper extends PropertyMapper {
@@ -36,7 +36,7 @@ protected Collection map(RegularStop stop) {
var serviceDate = LocalDate.now(transitService.getTimeZone());
boolean stopTimesExist = transitService
- .getStopTimesForStop(stop, serviceDate, ArrivalDeparture.BOTH, true)
+ .findStopTimesInPattern(stop, serviceDate, ArrivalDeparture.BOTH, true)
.stream()
.anyMatch(stopTime -> stopTime.times.size() > 0);
diff --git a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/stops/DigitransitStopPropertyMapper.java b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/stops/DigitransitStopPropertyMapper.java
similarity index 96%
rename from src/ext/java/org/opentripplanner/ext/vectortiles/layers/stops/DigitransitStopPropertyMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/stops/DigitransitStopPropertyMapper.java
index edf9c7d8188..0322a2749b4 100644
--- a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/stops/DigitransitStopPropertyMapper.java
+++ b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/stops/DigitransitStopPropertyMapper.java
@@ -61,7 +61,7 @@ protected static Collection getBaseKeyValues(
protected static String getRoutes(TransitService transitService, RegularStop stop) {
try {
var objects = transitService
- .getRoutesForStop(stop)
+ .findRoutes(stop)
.stream()
.map(route -> {
var routeObject = OBJECT_MAPPER.createObjectNode();
@@ -76,7 +76,7 @@ protected static String getRoutes(TransitService transitService, RegularStop sto
}
protected static String getType(TransitService transitService, RegularStop stop) {
- Collection patternsForStop = transitService.getPatternsForStop(stop);
+ Collection patternsForStop = transitService.findPatterns(stop);
return patternsForStop
.stream()
diff --git a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/stops/StopsLayerBuilder.java b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/stops/StopsLayerBuilder.java
similarity index 77%
rename from src/ext/java/org/opentripplanner/ext/vectortiles/layers/stops/StopsLayerBuilder.java
rename to application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/stops/StopsLayerBuilder.java
index aa664497728..141157f8f3e 100644
--- a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/stops/StopsLayerBuilder.java
+++ b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/stops/StopsLayerBuilder.java
@@ -5,24 +5,20 @@
import java.util.List;
import java.util.Locale;
import java.util.Map;
-import java.util.function.BiFunction;
-import java.util.stream.Collectors;
+import java.util.function.Predicate;
import org.locationtech.jts.geom.Envelope;
import org.locationtech.jts.geom.Geometry;
-import org.opentripplanner.apis.support.mapping.PropertyMapper;
import org.opentripplanner.ext.vectortiles.VectorTilesResource;
+import org.opentripplanner.ext.vectortiles.layers.LayerFilters;
import org.opentripplanner.inspector.vector.LayerBuilder;
import org.opentripplanner.inspector.vector.LayerParameters;
import org.opentripplanner.transit.model.site.RegularStop;
import org.opentripplanner.transit.service.TransitService;
-public class StopsLayerBuilder extends LayerBuilder {
+public class StopsLayerBuilder extends LayerBuilder {
- static Map>> mappers = Map.of(
- MapperType.Digitransit,
- DigitransitStopPropertyMapper::create
- );
private final TransitService transitService;
+ private final Predicate filter;
public StopsLayerBuilder(
TransitService transitService,
@@ -30,7 +26,7 @@ public StopsLayerBuilder(
Locale locale
) {
super(
- (PropertyMapper) Map
+ Map
.ofEntries(
entry(MapperType.Digitransit, new DigitransitStopPropertyMapper(transitService, locale)),
entry(
@@ -43,12 +39,14 @@ public StopsLayerBuilder(
layerParameters.expansionFactor()
);
this.transitService = transitService;
+ this.filter = LayerFilters.forType(layerParameters.filterType(), transitService);
}
protected List getGeometries(Envelope query) {
return transitService
.findRegularStops(query)
.stream()
+ .filter(filter)
.map(stop -> {
Geometry point = stop.getGeometry();
@@ -56,7 +54,7 @@ protected List getGeometries(Envelope query) {
return point;
})
- .collect(Collectors.toList());
+ .toList();
}
enum MapperType {
diff --git a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/DigitransitVehicleParkingGroupPropertyMapper.java b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/DigitransitVehicleParkingGroupPropertyMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/DigitransitVehicleParkingGroupPropertyMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/DigitransitVehicleParkingGroupPropertyMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/DigitransitVehicleParkingPropertyMapper.java b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/DigitransitVehicleParkingPropertyMapper.java
similarity index 93%
rename from src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/DigitransitVehicleParkingPropertyMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/DigitransitVehicleParkingPropertyMapper.java
index 892d4907395..702fbac9e07 100644
--- a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/DigitransitVehicleParkingPropertyMapper.java
+++ b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/DigitransitVehicleParkingPropertyMapper.java
@@ -4,11 +4,10 @@
import java.util.Collection;
import java.util.List;
import java.util.Locale;
-import javax.annotation.Nonnull;
import org.opentripplanner.apis.support.mapping.PropertyMapper;
import org.opentripplanner.framework.i18n.I18NStringMapper;
import org.opentripplanner.inspector.vector.KeyValue;
-import org.opentripplanner.routing.vehicle_parking.VehicleParking;
+import org.opentripplanner.service.vehicleparking.model.VehicleParking;
public class DigitransitVehicleParkingPropertyMapper extends PropertyMapper {
@@ -27,7 +26,6 @@ protected Collection map(VehicleParking vehicleParking) {
return basicMapping(vehicleParking);
}
- @Nonnull
protected ArrayList basicMapping(VehicleParking vehicleParking) {
return new ArrayList<>(
List.of(
diff --git a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/StadtnaviVehicleParkingPropertyMapper.java b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/StadtnaviVehicleParkingPropertyMapper.java
similarity index 95%
rename from src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/StadtnaviVehicleParkingPropertyMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/StadtnaviVehicleParkingPropertyMapper.java
index bccc2b4de4d..8f745a4e633 100644
--- a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/StadtnaviVehicleParkingPropertyMapper.java
+++ b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/StadtnaviVehicleParkingPropertyMapper.java
@@ -9,8 +9,8 @@
import org.opentripplanner.framework.json.ObjectMappers;
import org.opentripplanner.inspector.vector.KeyValue;
import org.opentripplanner.model.calendar.openinghours.OsmOpeningHoursSupport;
-import org.opentripplanner.routing.vehicle_parking.VehicleParking;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingSpaces;
+import org.opentripplanner.service.vehicleparking.model.VehicleParking;
+import org.opentripplanner.service.vehicleparking.model.VehicleParkingSpaces;
public class StadtnaviVehicleParkingPropertyMapper extends PropertyMapper {
diff --git a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingAndGroup.java b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingAndGroup.java
similarity index 69%
rename from src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingAndGroup.java
rename to application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingAndGroup.java
index 7093dbb3407..5968f000d2d 100644
--- a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingAndGroup.java
+++ b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingAndGroup.java
@@ -1,8 +1,8 @@
package org.opentripplanner.ext.vectortiles.layers.vehicleparkings;
import java.util.Collection;
-import org.opentripplanner.routing.vehicle_parking.VehicleParking;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingGroup;
+import org.opentripplanner.service.vehicleparking.model.VehicleParking;
+import org.opentripplanner.service.vehicleparking.model.VehicleParkingGroup;
/**
* Record that holds {@link VehicleParkingGroup} and a set of {@link VehicleParking} that belong to
diff --git a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingGroupsLayerBuilder.java b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingGroupsLayerBuilder.java
similarity index 89%
rename from src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingGroupsLayerBuilder.java
rename to application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingGroupsLayerBuilder.java
index 0cd1d84868b..36217e05972 100644
--- a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingGroupsLayerBuilder.java
+++ b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingGroupsLayerBuilder.java
@@ -13,7 +13,7 @@
import org.opentripplanner.framework.geometry.GeometryUtils;
import org.opentripplanner.inspector.vector.LayerBuilder;
import org.opentripplanner.inspector.vector.LayerParameters;
-import org.opentripplanner.routing.graph.Graph;
+import org.opentripplanner.service.vehicleparking.VehicleParkingService;
public class VehicleParkingGroupsLayerBuilder extends LayerBuilder {
@@ -21,10 +21,10 @@ public class VehicleParkingGroupsLayerBuilder extends LayerBuilder layerParameters,
Locale locale
) {
@@ -33,14 +33,13 @@ public VehicleParkingGroupsLayerBuilder(
layerParameters.name(),
layerParameters.expansionFactor()
);
- this.graph = graph;
+ this.service = service;
}
@Override
protected List getGeometries(Envelope query) {
- return graph
- .getVehicleParkingService()
- .getVehicleParkingGroups()
+ return service
+ .listVehicleParkingGroups()
.asMap()
.entrySet()
.stream()
diff --git a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingsLayerBuilder.java b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingsLayerBuilder.java
similarity index 85%
rename from src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingsLayerBuilder.java
rename to application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingsLayerBuilder.java
index 95326172415..22fb75f7b49 100644
--- a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingsLayerBuilder.java
+++ b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehicleparkings/VehicleParkingsLayerBuilder.java
@@ -16,8 +16,8 @@
import org.opentripplanner.framework.geometry.GeometryUtils;
import org.opentripplanner.inspector.vector.LayerBuilder;
import org.opentripplanner.inspector.vector.LayerParameters;
-import org.opentripplanner.routing.graph.Graph;
-import org.opentripplanner.routing.vehicle_parking.VehicleParking;
+import org.opentripplanner.service.vehicleparking.VehicleParkingService;
+import org.opentripplanner.service.vehicleparking.model.VehicleParking;
public class VehicleParkingsLayerBuilder extends LayerBuilder {
@@ -28,10 +28,10 @@ public class VehicleParkingsLayerBuilder extends LayerBuilder {
),
entry(MapperType.Digitransit, DigitransitVehicleParkingPropertyMapper::create)
);
- private final Graph graph;
+ private final VehicleParkingService service;
public VehicleParkingsLayerBuilder(
- Graph graph,
+ VehicleParkingService service,
LayerParameters layerParameters,
Locale locale
) {
@@ -40,14 +40,13 @@ public VehicleParkingsLayerBuilder(
layerParameters.name(),
layerParameters.expansionFactor()
);
- this.graph = graph;
+ this.service = service;
}
@Override
protected List getGeometries(Envelope query) {
- return graph
- .getVehicleParkingService()
- .getVehicleParkings()
+ return service
+ .listVehicleParkings().stream()
.map(vehicleParking -> {
Coordinate coordinate = vehicleParking.getCoordinate().asJtsCoordinate();
Point point = GeometryUtils.getGeometryFactory().createPoint(coordinate);
diff --git a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/VehicleRentalLayerBuilder.java b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/VehicleRentalLayerBuilder.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/VehicleRentalLayerBuilder.java
rename to application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/VehicleRentalLayerBuilder.java
diff --git a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/VehicleRentalPlacesLayerBuilder.java b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/VehicleRentalPlacesLayerBuilder.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/VehicleRentalPlacesLayerBuilder.java
rename to application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/VehicleRentalPlacesLayerBuilder.java
diff --git a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/VehicleRentalStationsLayerBuilder.java b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/VehicleRentalStationsLayerBuilder.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/VehicleRentalStationsLayerBuilder.java
rename to application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/VehicleRentalStationsLayerBuilder.java
diff --git a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/VehicleRentalVehiclesLayerBuilder.java b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/VehicleRentalVehiclesLayerBuilder.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/VehicleRentalVehiclesLayerBuilder.java
rename to application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/VehicleRentalVehiclesLayerBuilder.java
diff --git a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/mapper/DigitransitRealtimeVehicleRentalStationPropertyMapper.java b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/mapper/DigitransitRealtimeVehicleRentalStationPropertyMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/mapper/DigitransitRealtimeVehicleRentalStationPropertyMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/mapper/DigitransitRealtimeVehicleRentalStationPropertyMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/mapper/DigitransitRentalVehiclePropertyMapper.java b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/mapper/DigitransitRentalVehiclePropertyMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/mapper/DigitransitRentalVehiclePropertyMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/mapper/DigitransitRentalVehiclePropertyMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/mapper/DigitransitVehicleRentalPropertyMapper.java b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/mapper/DigitransitVehicleRentalPropertyMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/mapper/DigitransitVehicleRentalPropertyMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/mapper/DigitransitVehicleRentalPropertyMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/mapper/DigitransitVehicleRentalStationPropertyMapper.java b/application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/mapper/DigitransitVehicleRentalStationPropertyMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/mapper/DigitransitVehicleRentalStationPropertyMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/vectortiles/layers/vehiclerental/mapper/DigitransitVehicleRentalStationPropertyMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/vehicleparking/bikeep/BikeepUpdater.java b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/bikeep/BikeepUpdater.java
similarity index 90%
rename from src/ext/java/org/opentripplanner/ext/vehicleparking/bikeep/BikeepUpdater.java
rename to application/src/ext/java/org/opentripplanner/ext/vehicleparking/bikeep/BikeepUpdater.java
index 9216eb79995..decbda7abf6 100644
--- a/src/ext/java/org/opentripplanner/ext/vehicleparking/bikeep/BikeepUpdater.java
+++ b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/bikeep/BikeepUpdater.java
@@ -7,12 +7,12 @@
import org.opentripplanner.framework.geometry.WgsCoordinate;
import org.opentripplanner.framework.i18n.NonLocalizedString;
import org.opentripplanner.framework.json.ObjectMappers;
-import org.opentripplanner.framework.tostring.ToStringBuilder;
-import org.opentripplanner.routing.vehicle_parking.VehicleParking;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingSpaces;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingState;
+import org.opentripplanner.service.vehicleparking.model.VehicleParking;
+import org.opentripplanner.service.vehicleparking.model.VehicleParkingSpaces;
+import org.opentripplanner.service.vehicleparking.model.VehicleParkingState;
import org.opentripplanner.transit.model.framework.FeedScopedId;
import org.opentripplanner.updater.spi.GenericJsonDataSource;
+import org.opentripplanner.utils.tostring.ToStringBuilder;
/**
* Vehicle parking updater for Bikeep's API.
diff --git a/src/ext/java/org/opentripplanner/ext/vehicleparking/bikeep/BikeepUpdaterParameters.java b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/bikeep/BikeepUpdaterParameters.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/vehicleparking/bikeep/BikeepUpdaterParameters.java
rename to application/src/ext/java/org/opentripplanner/ext/vehicleparking/bikeep/BikeepUpdaterParameters.java
diff --git a/src/ext/java/org/opentripplanner/ext/vehicleparking/bikely/BikelyUpdater.java b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/bikely/BikelyUpdater.java
similarity index 94%
rename from src/ext/java/org/opentripplanner/ext/vehicleparking/bikely/BikelyUpdater.java
rename to application/src/ext/java/org/opentripplanner/ext/vehicleparking/bikely/BikelyUpdater.java
index 2bed1121913..eba0547dbf5 100644
--- a/src/ext/java/org/opentripplanner/ext/vehicleparking/bikely/BikelyUpdater.java
+++ b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/bikely/BikelyUpdater.java
@@ -1,6 +1,6 @@
package org.opentripplanner.ext.vehicleparking.bikely;
-import static org.opentripplanner.routing.vehicle_parking.VehicleParkingState.OPERATIONAL;
+import static org.opentripplanner.service.vehicleparking.model.VehicleParkingState.OPERATIONAL;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -17,9 +17,9 @@
import org.opentripplanner.framework.io.OtpHttpClient;
import org.opentripplanner.framework.io.OtpHttpClientFactory;
import org.opentripplanner.framework.json.ObjectMappers;
-import org.opentripplanner.routing.vehicle_parking.VehicleParking;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingSpaces;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingState;
+import org.opentripplanner.service.vehicleparking.model.VehicleParking;
+import org.opentripplanner.service.vehicleparking.model.VehicleParkingSpaces;
+import org.opentripplanner.service.vehicleparking.model.VehicleParkingState;
import org.opentripplanner.transit.model.basic.LocalizedMoney;
import org.opentripplanner.transit.model.basic.Money;
import org.opentripplanner.transit.model.framework.FeedScopedId;
diff --git a/src/ext/java/org/opentripplanner/ext/vehicleparking/bikely/BikelyUpdaterParameters.java b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/bikely/BikelyUpdaterParameters.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/vehicleparking/bikely/BikelyUpdaterParameters.java
rename to application/src/ext/java/org/opentripplanner/ext/vehicleparking/bikely/BikelyUpdaterParameters.java
diff --git a/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslFacilitiesDownloader.java b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslFacilitiesDownloader.java
similarity index 96%
rename from src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslFacilitiesDownloader.java
rename to application/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslFacilitiesDownloader.java
index dcf4ffe29d9..3d6c1943061 100644
--- a/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslFacilitiesDownloader.java
+++ b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslFacilitiesDownloader.java
@@ -13,8 +13,8 @@
import org.opentripplanner.framework.io.OtpHttpClient;
import org.opentripplanner.framework.io.OtpHttpClientException;
import org.opentripplanner.framework.io.OtpHttpClientFactory;
-import org.opentripplanner.routing.vehicle_parking.VehicleParking;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingGroup;
+import org.opentripplanner.service.vehicleparking.model.VehicleParking;
+import org.opentripplanner.service.vehicleparking.model.VehicleParkingGroup;
import org.opentripplanner.transit.model.framework.FeedScopedId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslHubToVehicleParkingGroupMapper.java b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslHubToVehicleParkingGroupMapper.java
similarity index 97%
rename from src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslHubToVehicleParkingGroupMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslHubToVehicleParkingGroupMapper.java
index 1ef0ef3597b..2c4dcad73d6 100644
--- a/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslHubToVehicleParkingGroupMapper.java
+++ b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslHubToVehicleParkingGroupMapper.java
@@ -13,7 +13,7 @@
import org.opentripplanner.framework.i18n.I18NString;
import org.opentripplanner.framework.i18n.NonLocalizedString;
import org.opentripplanner.framework.i18n.TranslatedString;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingGroup;
+import org.opentripplanner.service.vehicleparking.model.VehicleParkingGroup;
import org.opentripplanner.transit.model.framework.FeedScopedId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslHubsDownloader.java b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslHubsDownloader.java
similarity index 97%
rename from src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslHubsDownloader.java
rename to application/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslHubsDownloader.java
index f1f98b6139c..62e76b65035 100644
--- a/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslHubsDownloader.java
+++ b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslHubsDownloader.java
@@ -12,7 +12,7 @@
import org.opentripplanner.framework.io.OtpHttpClient;
import org.opentripplanner.framework.io.OtpHttpClientException;
import org.opentripplanner.framework.io.OtpHttpClientFactory;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingGroup;
+import org.opentripplanner.service.vehicleparking.model.VehicleParkingGroup;
import org.opentripplanner.transit.model.framework.FeedScopedId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkPatch.java b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkPatch.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkPatch.java
rename to application/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkPatch.java
diff --git a/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkToVehicleParkingMapper.java b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkToVehicleParkingMapper.java
similarity index 96%
rename from src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkToVehicleParkingMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkToVehicleParkingMapper.java
index 1f69458dd1f..c3e74f7285e 100644
--- a/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkToVehicleParkingMapper.java
+++ b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkToVehicleParkingMapper.java
@@ -19,10 +19,10 @@
import org.opentripplanner.framework.i18n.TranslatedString;
import org.opentripplanner.model.calendar.openinghours.OHCalendar;
import org.opentripplanner.model.calendar.openinghours.OpeningHoursCalendarService;
-import org.opentripplanner.routing.vehicle_parking.VehicleParking;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingGroup;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingSpaces;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingState;
+import org.opentripplanner.service.vehicleparking.model.VehicleParking;
+import org.opentripplanner.service.vehicleparking.model.VehicleParkingGroup;
+import org.opentripplanner.service.vehicleparking.model.VehicleParkingSpaces;
+import org.opentripplanner.service.vehicleparking.model.VehicleParkingState;
import org.opentripplanner.transit.model.framework.FeedScopedId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkUpdater.java b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkUpdater.java
similarity index 94%
rename from src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkUpdater.java
rename to application/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkUpdater.java
index f5c5b33ef29..7933e968537 100644
--- a/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkUpdater.java
+++ b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkUpdater.java
@@ -6,10 +6,10 @@
import org.opentripplanner.framework.io.JsonDataListDownloader;
import org.opentripplanner.framework.io.OtpHttpClientFactory;
import org.opentripplanner.model.calendar.openinghours.OpeningHoursCalendarService;
-import org.opentripplanner.routing.vehicle_parking.VehicleParking;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingGroup;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingSpaces;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingSpaces.VehicleParkingSpacesBuilder;
+import org.opentripplanner.service.vehicleparking.model.VehicleParking;
+import org.opentripplanner.service.vehicleparking.model.VehicleParkingGroup;
+import org.opentripplanner.service.vehicleparking.model.VehicleParkingSpaces;
+import org.opentripplanner.service.vehicleparking.model.VehicleParkingSpaces.VehicleParkingSpacesBuilder;
import org.opentripplanner.transit.model.framework.FeedScopedId;
import org.opentripplanner.updater.spi.DataSource;
import org.slf4j.Logger;
diff --git a/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkUpdaterParameters.java b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkUpdaterParameters.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkUpdaterParameters.java
rename to application/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkUpdaterParameters.java
diff --git a/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkUtilizationToPatchMapper.java b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkUtilizationToPatchMapper.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkUtilizationToPatchMapper.java
rename to application/src/ext/java/org/opentripplanner/ext/vehicleparking/hslpark/HslParkUtilizationToPatchMapper.java
diff --git a/src/ext/java/org/opentripplanner/ext/vehicleparking/parkapi/BicycleParkAPIUpdater.java b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/parkapi/BicycleParkAPIUpdater.java
similarity index 92%
rename from src/ext/java/org/opentripplanner/ext/vehicleparking/parkapi/BicycleParkAPIUpdater.java
rename to application/src/ext/java/org/opentripplanner/ext/vehicleparking/parkapi/BicycleParkAPIUpdater.java
index 21898bc3956..76fd73d3c18 100644
--- a/src/ext/java/org/opentripplanner/ext/vehicleparking/parkapi/BicycleParkAPIUpdater.java
+++ b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/parkapi/BicycleParkAPIUpdater.java
@@ -2,7 +2,7 @@
import com.fasterxml.jackson.databind.JsonNode;
import org.opentripplanner.model.calendar.openinghours.OpeningHoursCalendarService;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingSpaces;
+import org.opentripplanner.service.vehicleparking.model.VehicleParkingSpaces;
/**
* Vehicle parking updater class that extends the {@link ParkAPIUpdater}. Meant for reading bicycle
diff --git a/src/ext/java/org/opentripplanner/ext/vehicleparking/parkapi/CarParkAPIUpdater.java b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/parkapi/CarParkAPIUpdater.java
similarity index 92%
rename from src/ext/java/org/opentripplanner/ext/vehicleparking/parkapi/CarParkAPIUpdater.java
rename to application/src/ext/java/org/opentripplanner/ext/vehicleparking/parkapi/CarParkAPIUpdater.java
index 445f6bfbda3..06064f4896a 100644
--- a/src/ext/java/org/opentripplanner/ext/vehicleparking/parkapi/CarParkAPIUpdater.java
+++ b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/parkapi/CarParkAPIUpdater.java
@@ -2,7 +2,7 @@
import com.fasterxml.jackson.databind.JsonNode;
import org.opentripplanner.model.calendar.openinghours.OpeningHoursCalendarService;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingSpaces;
+import org.opentripplanner.service.vehicleparking.model.VehicleParkingSpaces;
/**
* Vehicle parking updater class that extends the {@link ParkAPIUpdater}. Meant for reading car
diff --git a/src/ext/java/org/opentripplanner/ext/vehicleparking/parkapi/ParkAPIUpdater.java b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/parkapi/ParkAPIUpdater.java
similarity index 93%
rename from src/ext/java/org/opentripplanner/ext/vehicleparking/parkapi/ParkAPIUpdater.java
rename to application/src/ext/java/org/opentripplanner/ext/vehicleparking/parkapi/ParkAPIUpdater.java
index c6f775e588f..3e206fc660d 100644
--- a/src/ext/java/org/opentripplanner/ext/vehicleparking/parkapi/ParkAPIUpdater.java
+++ b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/parkapi/ParkAPIUpdater.java
@@ -12,15 +12,15 @@
import org.opentripplanner.framework.i18n.I18NString;
import org.opentripplanner.framework.i18n.NonLocalizedString;
import org.opentripplanner.framework.i18n.TranslatedString;
-import org.opentripplanner.framework.tostring.ToStringBuilder;
import org.opentripplanner.model.calendar.openinghours.OHCalendar;
import org.opentripplanner.model.calendar.openinghours.OpeningHoursCalendarService;
-import org.opentripplanner.openstreetmap.OSMOpeningHoursParser;
-import org.opentripplanner.routing.vehicle_parking.VehicleParking;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingSpaces;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingState;
+import org.opentripplanner.osm.OsmOpeningHoursParser;
+import org.opentripplanner.service.vehicleparking.model.VehicleParking;
+import org.opentripplanner.service.vehicleparking.model.VehicleParkingSpaces;
+import org.opentripplanner.service.vehicleparking.model.VehicleParkingState;
import org.opentripplanner.transit.model.framework.FeedScopedId;
import org.opentripplanner.updater.spi.GenericJsonDataSource;
+import org.opentripplanner.utils.tostring.ToStringBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -36,7 +36,7 @@ abstract class ParkAPIUpdater extends GenericJsonDataSource {
private final String feedId;
private final Collection staticTags;
- private final OSMOpeningHoursParser osmOpeningHoursParser;
+ private final OsmOpeningHoursParser osmOpeningHoursParser;
private final String url;
public ParkAPIUpdater(
@@ -47,7 +47,7 @@ public ParkAPIUpdater(
this.feedId = parameters.feedId();
this.staticTags = parameters.tags();
this.osmOpeningHoursParser =
- new OSMOpeningHoursParser(openingHoursCalendarService, parameters.timeZone());
+ new OsmOpeningHoursParser(openingHoursCalendarService, parameters.timeZone());
this.url = parameters.url();
}
diff --git a/src/ext/java/org/opentripplanner/ext/vehicleparking/parkapi/ParkAPIUpdaterParameters.java b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/parkapi/ParkAPIUpdaterParameters.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/vehicleparking/parkapi/ParkAPIUpdaterParameters.java
rename to application/src/ext/java/org/opentripplanner/ext/vehicleparking/parkapi/ParkAPIUpdaterParameters.java
diff --git a/src/ext/java/org/opentripplanner/ext/vehicleparking/sirifm/SiriFmDatasource.java b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/sirifm/SiriFmDatasource.java
similarity index 97%
rename from src/ext/java/org/opentripplanner/ext/vehicleparking/sirifm/SiriFmDatasource.java
rename to application/src/ext/java/org/opentripplanner/ext/vehicleparking/sirifm/SiriFmDatasource.java
index abfdf4d29be..e05cfdb42ad 100644
--- a/src/ext/java/org/opentripplanner/ext/vehicleparking/sirifm/SiriFmDatasource.java
+++ b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/sirifm/SiriFmDatasource.java
@@ -8,11 +8,11 @@
import org.entur.siri21.util.SiriXml;
import org.opentripplanner.framework.io.OtpHttpClient;
import org.opentripplanner.framework.io.OtpHttpClientFactory;
-import org.opentripplanner.framework.tostring.ToStringBuilder;
import org.opentripplanner.transit.model.framework.FeedScopedId;
import org.opentripplanner.updater.spi.DataSource;
import org.opentripplanner.updater.spi.HttpHeaders;
import org.opentripplanner.updater.vehicle_parking.AvailabiltyUpdate;
+import org.opentripplanner.utils.tostring.ToStringBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import uk.org.siri.siri21.FacilityConditionStructure;
diff --git a/src/ext/java/org/opentripplanner/ext/vehicleparking/sirifm/SiriFmUpdaterParameters.java b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/sirifm/SiriFmUpdaterParameters.java
similarity index 92%
rename from src/ext/java/org/opentripplanner/ext/vehicleparking/sirifm/SiriFmUpdaterParameters.java
rename to application/src/ext/java/org/opentripplanner/ext/vehicleparking/sirifm/SiriFmUpdaterParameters.java
index 5afdffb7067..daecb2b2bb9 100644
--- a/src/ext/java/org/opentripplanner/ext/vehicleparking/sirifm/SiriFmUpdaterParameters.java
+++ b/application/src/ext/java/org/opentripplanner/ext/vehicleparking/sirifm/SiriFmUpdaterParameters.java
@@ -5,14 +5,13 @@
import java.net.URI;
import java.time.Duration;
-import org.opentripplanner.ext.vehicleparking.noi.NoiUpdater;
import org.opentripplanner.updater.spi.HttpHeaders;
import org.opentripplanner.updater.vehicle_parking.VehicleParkingSourceType;
import org.opentripplanner.updater.vehicle_parking.VehicleParkingUpdaterParameters;
/**
* Class that extends {@link VehicleParkingUpdaterParameters} with parameters required by {@link
- * NoiUpdater}.
+ * SiriFmDatasource}.
*/
public record SiriFmUpdaterParameters(
String configRef,
diff --git a/src/ext/java/org/opentripplanner/ext/vehiclerentalservicedirectory/VehicleRentalParameters.java b/application/src/ext/java/org/opentripplanner/ext/vehiclerentalservicedirectory/VehicleRentalParameters.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/vehiclerentalservicedirectory/VehicleRentalParameters.java
rename to application/src/ext/java/org/opentripplanner/ext/vehiclerentalservicedirectory/VehicleRentalParameters.java
diff --git a/src/ext/java/org/opentripplanner/ext/vehiclerentalservicedirectory/VehicleRentalServiceDirectoryFetcher.java b/application/src/ext/java/org/opentripplanner/ext/vehiclerentalservicedirectory/VehicleRentalServiceDirectoryFetcher.java
similarity index 97%
rename from src/ext/java/org/opentripplanner/ext/vehiclerentalservicedirectory/VehicleRentalServiceDirectoryFetcher.java
rename to application/src/ext/java/org/opentripplanner/ext/vehiclerentalservicedirectory/VehicleRentalServiceDirectoryFetcher.java
index 03b0acd59cd..dc0fa2868ec 100644
--- a/src/ext/java/org/opentripplanner/ext/vehiclerentalservicedirectory/VehicleRentalServiceDirectoryFetcher.java
+++ b/application/src/ext/java/org/opentripplanner/ext/vehiclerentalservicedirectory/VehicleRentalServiceDirectoryFetcher.java
@@ -18,6 +18,7 @@
import org.opentripplanner.updater.spi.GraphUpdater;
import org.opentripplanner.updater.vehicle_rental.VehicleRentalUpdater;
import org.opentripplanner.updater.vehicle_rental.datasources.VehicleRentalDataSourceFactory;
+import org.opentripplanner.updater.vehicle_rental.datasources.params.RentalPickupType;
import org.opentripplanner.updater.vehicle_rental.datasources.params.GbfsVehicleRentalDataSourceParameters;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -110,7 +111,9 @@ private static List buildListOfNetworksFr
networkName,
networkParams.geofencingZones(),
// overloadingAllowed - not part of GBFS, not supported here
- false
+ false,
+ // rentalPickupType not supported
+ RentalPickupType.ALL
)
);
} else {
diff --git a/src/ext/java/org/opentripplanner/ext/vehiclerentalservicedirectory/api/NetworkParameters.java b/application/src/ext/java/org/opentripplanner/ext/vehiclerentalservicedirectory/api/NetworkParameters.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/vehiclerentalservicedirectory/api/NetworkParameters.java
rename to application/src/ext/java/org/opentripplanner/ext/vehiclerentalservicedirectory/api/NetworkParameters.java
diff --git a/src/ext/java/org/opentripplanner/ext/vehiclerentalservicedirectory/api/VehicleRentalServiceDirectoryFetcherParameters.java b/application/src/ext/java/org/opentripplanner/ext/vehiclerentalservicedirectory/api/VehicleRentalServiceDirectoryFetcherParameters.java
similarity index 100%
rename from src/ext/java/org/opentripplanner/ext/vehiclerentalservicedirectory/api/VehicleRentalServiceDirectoryFetcherParameters.java
rename to application/src/ext/java/org/opentripplanner/ext/vehiclerentalservicedirectory/api/VehicleRentalServiceDirectoryFetcherParameters.java
diff --git a/src/ext/resources/org/opentripplanner/ext/vectortiles/router-config.json b/application/src/ext/resources/org/opentripplanner/ext/vectortiles/router-config.json
similarity index 99%
rename from src/ext/resources/org/opentripplanner/ext/vectortiles/router-config.json
rename to application/src/ext/resources/org/opentripplanner/ext/vectortiles/router-config.json
index df325d076a3..5eb5c3976da 100644
--- a/src/ext/resources/org/opentripplanner/ext/vectortiles/router-config.json
+++ b/application/src/ext/resources/org/opentripplanner/ext/vectortiles/router-config.json
@@ -13,4 +13,3 @@
]
}
}
-
diff --git a/src/main/java/META-INF/MANIFEST.MF b/application/src/main/java/META-INF/MANIFEST.MF
similarity index 100%
rename from src/main/java/META-INF/MANIFEST.MF
rename to application/src/main/java/META-INF/MANIFEST.MF
diff --git a/src/main/java/com/jhlabs/awt/ShapeStroke.java b/application/src/main/java/com/jhlabs/awt/ShapeStroke.java
similarity index 100%
rename from src/main/java/com/jhlabs/awt/ShapeStroke.java
rename to application/src/main/java/com/jhlabs/awt/ShapeStroke.java
diff --git a/src/main/java/com/jhlabs/awt/TextStroke.java b/application/src/main/java/com/jhlabs/awt/TextStroke.java
similarity index 100%
rename from src/main/java/com/jhlabs/awt/TextStroke.java
rename to application/src/main/java/com/jhlabs/awt/TextStroke.java
diff --git a/src/main/java/org/opentripplanner/api/common/LocationStringParser.java b/application/src/main/java/org/opentripplanner/api/common/LocationStringParser.java
similarity index 100%
rename from src/main/java/org/opentripplanner/api/common/LocationStringParser.java
rename to application/src/main/java/org/opentripplanner/api/common/LocationStringParser.java
diff --git a/src/main/java/org/opentripplanner/api/common/Message.java b/application/src/main/java/org/opentripplanner/api/common/Message.java
similarity index 100%
rename from src/main/java/org/opentripplanner/api/common/Message.java
rename to application/src/main/java/org/opentripplanner/api/common/Message.java
diff --git a/src/main/java/org/opentripplanner/api/common/OTPExceptionMapper.java b/application/src/main/java/org/opentripplanner/api/common/OTPExceptionMapper.java
similarity index 100%
rename from src/main/java/org/opentripplanner/api/common/OTPExceptionMapper.java
rename to application/src/main/java/org/opentripplanner/api/common/OTPExceptionMapper.java
diff --git a/src/main/java/org/opentripplanner/api/error/PlannerError.java b/application/src/main/java/org/opentripplanner/api/error/PlannerError.java
similarity index 100%
rename from src/main/java/org/opentripplanner/api/error/PlannerError.java
rename to application/src/main/java/org/opentripplanner/api/error/PlannerError.java
diff --git a/src/main/java/org/opentripplanner/api/model/serverinfo/ApiConfigInfo.java b/application/src/main/java/org/opentripplanner/api/model/serverinfo/ApiConfigInfo.java
similarity index 100%
rename from src/main/java/org/opentripplanner/api/model/serverinfo/ApiConfigInfo.java
rename to application/src/main/java/org/opentripplanner/api/model/serverinfo/ApiConfigInfo.java
diff --git a/src/main/java/org/opentripplanner/api/model/serverinfo/ApiProjectVersion.java b/application/src/main/java/org/opentripplanner/api/model/serverinfo/ApiProjectVersion.java
similarity index 100%
rename from src/main/java/org/opentripplanner/api/model/serverinfo/ApiProjectVersion.java
rename to application/src/main/java/org/opentripplanner/api/model/serverinfo/ApiProjectVersion.java
diff --git a/src/main/java/org/opentripplanner/api/model/serverinfo/ApiServerInfo.java b/application/src/main/java/org/opentripplanner/api/model/serverinfo/ApiServerInfo.java
similarity index 100%
rename from src/main/java/org/opentripplanner/api/model/serverinfo/ApiServerInfo.java
rename to application/src/main/java/org/opentripplanner/api/model/serverinfo/ApiServerInfo.java
diff --git a/src/main/java/org/opentripplanner/api/model/serverinfo/ApiVersionControlInfo.java b/application/src/main/java/org/opentripplanner/api/model/serverinfo/ApiVersionControlInfo.java
similarity index 100%
rename from src/main/java/org/opentripplanner/api/model/serverinfo/ApiVersionControlInfo.java
rename to application/src/main/java/org/opentripplanner/api/model/serverinfo/ApiVersionControlInfo.java
diff --git a/src/main/java/org/opentripplanner/api/parameter/ApiRequestMode.java b/application/src/main/java/org/opentripplanner/api/parameter/ApiRequestMode.java
similarity index 95%
rename from src/main/java/org/opentripplanner/api/parameter/ApiRequestMode.java
rename to application/src/main/java/org/opentripplanner/api/parameter/ApiRequestMode.java
index 6e19b106033..7ac2c6f7d86 100644
--- a/src/main/java/org/opentripplanner/api/parameter/ApiRequestMode.java
+++ b/application/src/main/java/org/opentripplanner/api/parameter/ApiRequestMode.java
@@ -12,7 +12,8 @@ public enum ApiRequestMode {
TRAM(TransitMode.TRAM),
SUBWAY(TransitMode.SUBWAY),
RAIL(TransitMode.RAIL),
- BUS(TransitMode.BUS, TransitMode.COACH),
+ BUS(TransitMode.BUS),
+ COACH(TransitMode.COACH),
FERRY(TransitMode.FERRY),
CABLE_CAR(TransitMode.CABLE_CAR),
GONDOLA(TransitMode.GONDOLA),
diff --git a/src/main/java/org/opentripplanner/api/parameter/MIMEImageFormat.java b/application/src/main/java/org/opentripplanner/api/parameter/MIMEImageFormat.java
similarity index 100%
rename from src/main/java/org/opentripplanner/api/parameter/MIMEImageFormat.java
rename to application/src/main/java/org/opentripplanner/api/parameter/MIMEImageFormat.java
diff --git a/src/main/java/org/opentripplanner/api/parameter/QualifiedMode.java b/application/src/main/java/org/opentripplanner/api/parameter/QualifiedMode.java
similarity index 100%
rename from src/main/java/org/opentripplanner/api/parameter/QualifiedMode.java
rename to application/src/main/java/org/opentripplanner/api/parameter/QualifiedMode.java
diff --git a/src/main/java/org/opentripplanner/api/parameter/QualifiedModeSet.java b/application/src/main/java/org/opentripplanner/api/parameter/QualifiedModeSet.java
similarity index 100%
rename from src/main/java/org/opentripplanner/api/parameter/QualifiedModeSet.java
rename to application/src/main/java/org/opentripplanner/api/parameter/QualifiedModeSet.java
diff --git a/src/main/java/org/opentripplanner/api/parameter/Qualifier.java b/application/src/main/java/org/opentripplanner/api/parameter/Qualifier.java
similarity index 100%
rename from src/main/java/org/opentripplanner/api/parameter/Qualifier.java
rename to application/src/main/java/org/opentripplanner/api/parameter/Qualifier.java
diff --git a/application/src/main/java/org/opentripplanner/api/parameter/package-info.md b/application/src/main/java/org/opentripplanner/api/parameter/package-info.md
new file mode 100644
index 00000000000..75c928773f9
--- /dev/null
+++ b/application/src/main/java/org/opentripplanner/api/parameter/package-info.md
@@ -0,0 +1,5 @@
+# HTTP query parameters
+
+This package contains classes which interpret incoming HTTP query parameters. Query parameters
+arrive as Strings, and Jersey will automatically call constructors with a single String
+argument.
diff --git a/src/main/java/org/opentripplanner/api/resource/DebugOutput.java b/application/src/main/java/org/opentripplanner/api/resource/DebugOutput.java
similarity index 100%
rename from src/main/java/org/opentripplanner/api/resource/DebugOutput.java
rename to application/src/main/java/org/opentripplanner/api/resource/DebugOutput.java
diff --git a/src/main/java/org/opentripplanner/api/resource/GraphInspectorTileResource.java b/application/src/main/java/org/opentripplanner/api/resource/GraphInspectorTileResource.java
similarity index 100%
rename from src/main/java/org/opentripplanner/api/resource/GraphInspectorTileResource.java
rename to application/src/main/java/org/opentripplanner/api/resource/GraphInspectorTileResource.java
diff --git a/src/main/java/org/opentripplanner/api/resource/InspectorLayersList.java b/application/src/main/java/org/opentripplanner/api/resource/InspectorLayersList.java
similarity index 100%
rename from src/main/java/org/opentripplanner/api/resource/InspectorLayersList.java
rename to application/src/main/java/org/opentripplanner/api/resource/InspectorLayersList.java
diff --git a/src/main/java/org/opentripplanner/api/resource/ServerInfo.java b/application/src/main/java/org/opentripplanner/api/resource/ServerInfo.java
similarity index 100%
rename from src/main/java/org/opentripplanner/api/resource/ServerInfo.java
rename to application/src/main/java/org/opentripplanner/api/resource/ServerInfo.java
diff --git a/src/main/java/org/opentripplanner/api/resource/TransitTimingOutput.java b/application/src/main/java/org/opentripplanner/api/resource/TransitTimingOutput.java
similarity index 100%
rename from src/main/java/org/opentripplanner/api/resource/TransitTimingOutput.java
rename to application/src/main/java/org/opentripplanner/api/resource/TransitTimingOutput.java
diff --git a/src/main/java/org/opentripplanner/api/resource/UpdaterStatusResource.java b/application/src/main/java/org/opentripplanner/api/resource/UpdaterStatusResource.java
similarity index 100%
rename from src/main/java/org/opentripplanner/api/resource/UpdaterStatusResource.java
rename to application/src/main/java/org/opentripplanner/api/resource/UpdaterStatusResource.java
diff --git a/src/main/java/org/opentripplanner/api/resource/WebMercatorTile.java b/application/src/main/java/org/opentripplanner/api/resource/WebMercatorTile.java
similarity index 100%
rename from src/main/java/org/opentripplanner/api/resource/WebMercatorTile.java
rename to application/src/main/java/org/opentripplanner/api/resource/WebMercatorTile.java
diff --git a/src/main/java/org/opentripplanner/apis/APIEndpoints.java b/application/src/main/java/org/opentripplanner/apis/APIEndpoints.java
similarity index 100%
rename from src/main/java/org/opentripplanner/apis/APIEndpoints.java
rename to application/src/main/java/org/opentripplanner/apis/APIEndpoints.java
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/GraphQLRequestContext.java b/application/src/main/java/org/opentripplanner/apis/gtfs/GraphQLRequestContext.java
similarity index 90%
rename from src/main/java/org/opentripplanner/apis/gtfs/GraphQLRequestContext.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/GraphQLRequestContext.java
index dfc3e2d75f8..c3ca214b62f 100644
--- a/src/main/java/org/opentripplanner/apis/gtfs/GraphQLRequestContext.java
+++ b/application/src/main/java/org/opentripplanner/apis/gtfs/GraphQLRequestContext.java
@@ -1,12 +1,11 @@
package org.opentripplanner.apis.gtfs;
-import javax.annotation.Nonnull;
import org.opentripplanner.routing.api.RoutingService;
import org.opentripplanner.routing.api.request.RouteRequest;
import org.opentripplanner.routing.fares.FareService;
import org.opentripplanner.routing.graphfinder.GraphFinder;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingService;
import org.opentripplanner.service.realtimevehicles.RealtimeVehicleService;
+import org.opentripplanner.service.vehicleparking.VehicleParkingService;
import org.opentripplanner.service.vehiclerental.VehicleRentalService;
import org.opentripplanner.standalone.api.OtpServerRequestContext;
import org.opentripplanner.transit.service.TransitService;
@@ -15,8 +14,8 @@ public record GraphQLRequestContext(
RoutingService routingService,
TransitService transitService,
FareService fareService,
- VehicleParkingService vehicleParkingService,
VehicleRentalService vehicleRentalService,
+ VehicleParkingService vehicleParkingService,
RealtimeVehicleService realTimeVehicleService,
GraphFinder graphFinder,
RouteRequest defaultRouteRequest
@@ -26,8 +25,8 @@ public static GraphQLRequestContext ofServerContext(OtpServerRequestContext cont
context.routingService(),
context.transitService(),
context.graph().getFareService(),
- context.graph().getVehicleParkingService(),
context.vehicleRentalService(),
+ context.vehicleParkingService(),
context.realtimeVehicleService(),
context.graphFinder(),
context.defaultRouteRequest()
@@ -38,7 +37,6 @@ public static GraphQLRequestContext ofServerContext(OtpServerRequestContext cont
* Returns a clone of the default route request. The clone is necessary because one HTTP
* request can lead to several GraphQL queries, for example through batch or alias queries.
*/
- @Nonnull
@Override
public RouteRequest defaultRouteRequest() {
return defaultRouteRequest.clone();
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/GraphQLScalars.java b/application/src/main/java/org/opentripplanner/apis/gtfs/GraphQLScalars.java
similarity index 96%
rename from src/main/java/org/opentripplanner/apis/gtfs/GraphQLScalars.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/GraphQLScalars.java
index 8ec3172db52..8427777bd38 100644
--- a/src/main/java/org/opentripplanner/apis/gtfs/GraphQLScalars.java
+++ b/application/src/main/java/org/opentripplanner/apis/gtfs/GraphQLScalars.java
@@ -16,14 +16,13 @@
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Optional;
-import javax.annotation.Nonnull;
import org.locationtech.jts.geom.Geometry;
import org.opentripplanner.framework.graphql.scalar.DateScalarFactory;
import org.opentripplanner.framework.graphql.scalar.DurationScalarFactory;
import org.opentripplanner.framework.json.ObjectMappers;
import org.opentripplanner.framework.model.Cost;
import org.opentripplanner.framework.model.Grams;
-import org.opentripplanner.framework.time.OffsetDateTimeParser;
+import org.opentripplanner.utils.time.OffsetDateTimeParser;
public class GraphQLScalars {
@@ -65,8 +64,7 @@ public String parseLiteral(Object input) {
.coercing(
new Coercing() {
@Override
- public String serialize(@Nonnull Object dataFetcherResult)
- throws CoercingSerializeException {
+ public String serialize(Object dataFetcherResult) throws CoercingSerializeException {
if (dataFetcherResult instanceof ZonedDateTime zdt) {
return zdt.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME);
} else if (dataFetcherResult instanceof OffsetDateTime odt) {
@@ -123,8 +121,7 @@ public OffsetDateTime parseLiteral(Object input) throws CoercingParseLiteralExce
private static final String VALIDATION_ERROR_MESSAGE = "Not a valid WGS84 coordinate value";
@Override
- public Double serialize(@Nonnull Object dataFetcherResult)
- throws CoercingSerializeException {
+ public Double serialize(Object dataFetcherResult) throws CoercingSerializeException {
if (dataFetcherResult instanceof Double doubleValue) {
return doubleValue;
} else if (dataFetcherResult instanceof Float floatValue) {
@@ -188,8 +185,7 @@ private static Optional validateCoordinate(double coordinate) {
"Cost cannot be negative or greater than %d".formatted(MAX_COST);
@Override
- public Integer serialize(@Nonnull Object dataFetcherResult)
- throws CoercingSerializeException {
+ public Integer serialize(Object dataFetcherResult) throws CoercingSerializeException {
if (dataFetcherResult instanceof Integer intValue) {
return intValue;
} else if (dataFetcherResult instanceof Cost costValue) {
@@ -358,8 +354,7 @@ public Grams parseLiteral(Object input) throws CoercingParseLiteralException {
"Value is under 0 or greater than 1.";
@Override
- public Double serialize(@Nonnull Object dataFetcherResult)
- throws CoercingSerializeException {
+ public Double serialize(Object dataFetcherResult) throws CoercingSerializeException {
var validationException = new CoercingSerializeException(VALIDATION_ERROR_MESSAGE);
if (dataFetcherResult instanceof Double doubleValue) {
return validateRatio(doubleValue).orElseThrow(() -> validationException);
@@ -425,8 +420,7 @@ private static Optional validateRatio(double ratio) {
"Reluctance needs to be between %s and %s".formatted(MIN_Reluctance, MAX_Reluctance);
@Override
- public Double serialize(@Nonnull Object dataFetcherResult)
- throws CoercingSerializeException {
+ public Double serialize(Object dataFetcherResult) throws CoercingSerializeException {
if (dataFetcherResult instanceof Double doubleValue) {
return doubleValue;
} else if (dataFetcherResult instanceof Float floatValue) {
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/GraphQLUtils.java b/application/src/main/java/org/opentripplanner/apis/gtfs/GraphQLUtils.java
similarity index 100%
rename from src/main/java/org/opentripplanner/apis/gtfs/GraphQLUtils.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/GraphQLUtils.java
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/GtfsGraphQLAPI.java b/application/src/main/java/org/opentripplanner/apis/gtfs/GtfsGraphQLAPI.java
similarity index 100%
rename from src/main/java/org/opentripplanner/apis/gtfs/GtfsGraphQLAPI.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/GtfsGraphQLAPI.java
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/GtfsGraphQLIndex.java b/application/src/main/java/org/opentripplanner/apis/gtfs/GtfsGraphQLIndex.java
similarity index 98%
rename from src/main/java/org/opentripplanner/apis/gtfs/GtfsGraphQLIndex.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/GtfsGraphQLIndex.java
index 43a8399e70c..34e9b2f8346 100644
--- a/src/main/java/org/opentripplanner/apis/gtfs/GtfsGraphQLIndex.java
+++ b/application/src/main/java/org/opentripplanner/apis/gtfs/GtfsGraphQLIndex.java
@@ -52,6 +52,7 @@
import org.opentripplanner.apis.gtfs.datafetchers.PlanConnectionImpl;
import org.opentripplanner.apis.gtfs.datafetchers.PlanImpl;
import org.opentripplanner.apis.gtfs.datafetchers.QueryTypeImpl;
+import org.opentripplanner.apis.gtfs.datafetchers.RentalPlaceTypeResolver;
import org.opentripplanner.apis.gtfs.datafetchers.RentalVehicleImpl;
import org.opentripplanner.apis.gtfs.datafetchers.RentalVehicleTypeImpl;
import org.opentripplanner.apis.gtfs.datafetchers.RideHailingEstimateImpl;
@@ -123,6 +124,7 @@ protected static GraphQLSchema buildSchema() {
)
.type("Node", type -> type.typeResolver(new NodeTypeResolver()))
.type("PlaceInterface", type -> type.typeResolver(new PlaceInterfaceTypeResolver()))
+ .type("RentalPlace", type -> type.typeResolver(new RentalPlaceTypeResolver()))
.type("StopPosition", type -> type.typeResolver(new StopPosition() {}))
.type("FareProduct", type -> type.typeResolver(new FareProductTypeResolver()))
.type("AlertEntity", type -> type.typeResolver(new AlertEntityTypeResolver()))
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/IntrospectionTypeWiring.java b/application/src/main/java/org/opentripplanner/apis/gtfs/IntrospectionTypeWiring.java
similarity index 100%
rename from src/main/java/org/opentripplanner/apis/gtfs/IntrospectionTypeWiring.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/IntrospectionTypeWiring.java
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/AgencyImpl.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/AgencyImpl.java
similarity index 99%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/AgencyImpl.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/AgencyImpl.java
index 8a6d55bb078..d8ed772c9e5 100644
--- a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/AgencyImpl.java
+++ b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/AgencyImpl.java
@@ -107,7 +107,7 @@ public DataFetcher url() {
private List getRoutes(DataFetchingEnvironment environment) {
return getTransitService(environment)
- .getAllRoutes()
+ .listRoutes()
.stream()
.filter(route -> route.getAgency().equals(getSource(environment)))
.collect(Collectors.toList());
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/AlertEntityTypeResolver.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/AlertEntityTypeResolver.java
similarity index 100%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/AlertEntityTypeResolver.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/AlertEntityTypeResolver.java
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/AlertImpl.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/AlertImpl.java
similarity index 92%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/AlertImpl.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/AlertImpl.java
index 90db8ef1605..d7d937d52de 100644
--- a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/AlertImpl.java
+++ b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/AlertImpl.java
@@ -23,6 +23,7 @@
import org.opentripplanner.apis.gtfs.model.StopOnRouteModel;
import org.opentripplanner.apis.gtfs.model.StopOnTripModel;
import org.opentripplanner.apis.gtfs.model.UnknownModel;
+import org.opentripplanner.framework.graphql.GraphQLUtils;
import org.opentripplanner.framework.i18n.I18NString;
import org.opentripplanner.framework.i18n.TranslatedString;
import org.opentripplanner.routing.alertpatch.EntitySelector;
@@ -50,9 +51,7 @@ public DataFetcher agency() {
.filter(EntitySelector.Agency.class::isInstance)
.findAny()
.map(EntitySelector.Agency.class::cast)
- .map(entitySelector ->
- getTransitService(environment).getAgencyForId(entitySelector.agencyId())
- )
+ .map(entitySelector -> getTransitService(environment).getAgency(entitySelector.agencyId()))
.orElse(null);
}
@@ -65,11 +64,11 @@ public DataFetcher alertCause() {
public DataFetcher alertDescriptionText() {
return environment -> {
var alert = getSource(environment);
- return alert
- .descriptionText()
- .or(alert::headerText)
- .map(t -> t.toString(environment.getLocale()))
- .orElse(FALLBACK_EMPTY_STRING);
+ var descriptionText = GraphQLUtils.getTranslation(
+ alert.descriptionText().or(alert::headerText).orElse(null),
+ environment
+ );
+ return descriptionText != null ? descriptionText : FALLBACK_EMPTY_STRING;
};
}
@@ -103,11 +102,11 @@ public DataFetcher alertHash() {
public DataFetcher alertHeaderText() {
return environment -> {
var alert = getSource(environment);
- return alert
- .headerText()
- .or(alert::descriptionText)
- .map(h -> h.toString(environment.getLocale()))
- .orElse(FALLBACK_EMPTY_STRING);
+ var headerText = GraphQLUtils.getTranslation(
+ alert.headerText().or(alert::descriptionText).orElse(null),
+ environment
+ );
+ return headerText != null ? headerText : FALLBACK_EMPTY_STRING;
};
}
@@ -125,7 +124,7 @@ public DataFetcher alertSeverityLevel() {
@Override
public DataFetcher alertUrl() {
return environment ->
- getSource(environment).url().map(u -> u.toString(environment.getLocale())).orElse(null);
+ GraphQLUtils.getTranslation(getSource(environment).url().orElse(null), environment);
}
@Override
@@ -169,24 +168,24 @@ public DataFetcher> entities() {
}
if (entitySelector instanceof EntitySelector.Agency) {
FeedScopedId id = ((EntitySelector.Agency) entitySelector).agencyId();
- Agency agency = getTransitService(environment).getAgencyForId(id);
+ Agency agency = getTransitService(environment).getAgency(id);
return List.of(getAlertEntityOrUnknown(agency, id.toString(), "agency"));
}
if (entitySelector instanceof EntitySelector.Route) {
FeedScopedId id = ((EntitySelector.Route) entitySelector).routeId();
- Route route = getTransitService(environment).getRouteForId(id);
+ Route route = getTransitService(environment).getRoute(id);
return List.of(getAlertEntityOrUnknown(route, id.toString(), "route"));
}
if (entitySelector instanceof EntitySelector.Trip) {
FeedScopedId id = ((EntitySelector.Trip) entitySelector).tripId();
- Trip trip = getTransitService(environment).getTripForId(id);
+ Trip trip = getTransitService(environment).getTrip(id);
return List.of(getAlertEntityOrUnknown(trip, id.toString(), "trip"));
}
if (entitySelector instanceof EntitySelector.StopAndRoute stopAndRoute) {
FeedScopedId stopId = stopAndRoute.stopId();
FeedScopedId routeId = stopAndRoute.routeId();
StopLocation stop = getTransitService(environment).getRegularStop(stopId);
- Route route = getTransitService(environment).getRouteForId(routeId);
+ Route route = getTransitService(environment).getRoute(routeId);
return List.of(
stop != null && route != null
? new StopOnRouteModel(stop, route)
@@ -204,7 +203,7 @@ public DataFetcher> entities() {
FeedScopedId stopId = stopAndTrip.stopId();
FeedScopedId tripId = stopAndTrip.tripId();
StopLocation stop = getTransitService(environment).getRegularStop(stopId);
- Trip trip = getTransitService(environment).getTripForId(tripId);
+ Trip trip = getTransitService(environment).getTrip(tripId);
return List.of(
stop != null && trip != null
? new StopOnTripModel(stop, trip)
@@ -221,7 +220,7 @@ public DataFetcher> entities() {
if (entitySelector instanceof EntitySelector.RouteTypeAndAgency) {
FeedScopedId agencyId = ((EntitySelector.RouteTypeAndAgency) entitySelector).agencyId();
int routeType = ((EntitySelector.RouteTypeAndAgency) entitySelector).routeType();
- Agency agency = getTransitService(environment).getAgencyForId(agencyId);
+ Agency agency = getTransitService(environment).getAgency(agencyId);
return List.of(
agency != null
? new RouteTypeModel(agency, routeType, agency.getId().getFeedId())
@@ -243,10 +242,10 @@ public DataFetcher> entities() {
if (entitySelector instanceof EntitySelector.DirectionAndRoute) {
Direction direction = ((DirectionAndRoute) entitySelector).direction();
FeedScopedId routeId = ((EntitySelector.DirectionAndRoute) entitySelector).routeId();
- Route route = getTransitService(environment).getRouteForId(routeId);
+ Route route = getTransitService(environment).getRoute(routeId);
return route != null
? getTransitService(environment)
- .getPatternsForRoute(route)
+ .findPatterns(route)
.stream()
.filter(pattern -> pattern.getDirection() == direction)
.collect(Collectors.toList())
@@ -300,9 +299,7 @@ public DataFetcher route() {
.filter(entitySelector -> entitySelector instanceof EntitySelector.Route)
.findAny()
.map(EntitySelector.Route.class::cast)
- .map(entitySelector ->
- getTransitService(environment).getRouteForId(entitySelector.routeId())
- )
+ .map(entitySelector -> getTransitService(environment).getRoute(entitySelector.routeId()))
.orElse(null);
}
@@ -330,7 +327,7 @@ public DataFetcher trip() {
.filter(entitySelector -> entitySelector instanceof EntitySelector.Trip)
.findAny()
.map(EntitySelector.Trip.class::cast)
- .map(entitySelector -> getTransitService(environment).getTripForId(entitySelector.tripId()))
+ .map(entitySelector -> getTransitService(environment).getTrip(entitySelector.tripId()))
.orElse(null);
}
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/BikeParkImpl.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/BikeParkImpl.java
similarity index 96%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/BikeParkImpl.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/BikeParkImpl.java
index 81166034ee5..725d6e49377 100644
--- a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/BikeParkImpl.java
+++ b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/BikeParkImpl.java
@@ -6,7 +6,7 @@
import org.opentripplanner.apis.gtfs.generated.GraphQLDataFetchers;
import org.opentripplanner.framework.graphql.GraphQLUtils;
import org.opentripplanner.model.calendar.openinghours.OHCalendar;
-import org.opentripplanner.routing.vehicle_parking.VehicleParking;
+import org.opentripplanner.service.vehicleparking.model.VehicleParking;
public class BikeParkImpl implements GraphQLDataFetchers.GraphQLBikePark {
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/BikeRentalStationImpl.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/BikeRentalStationImpl.java
similarity index 100%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/BikeRentalStationImpl.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/BikeRentalStationImpl.java
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/BookingInfoImpl.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/BookingInfoImpl.java
similarity index 85%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/BookingInfoImpl.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/BookingInfoImpl.java
index 44ee0985542..0060e6ad7e1 100644
--- a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/BookingInfoImpl.java
+++ b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/BookingInfoImpl.java
@@ -2,6 +2,7 @@
import graphql.schema.DataFetcher;
import graphql.schema.DataFetchingEnvironment;
+import java.time.Duration;
import org.opentripplanner.apis.gtfs.generated.GraphQLDataFetchers;
import org.opentripplanner.transit.model.organization.ContactInfo;
import org.opentripplanner.transit.model.timetable.booking.BookingInfo;
@@ -31,7 +32,8 @@ public DataFetcher latestBookingTime() {
@Override
public DataFetcher maximumBookingNoticeSeconds() {
- return environment -> getSource(environment).getMaximumBookingNotice().toSeconds();
+ return environment ->
+ getSource(environment).getMaximumBookingNotice().map(Duration::toSeconds).orElse(null);
}
@Override
@@ -41,7 +43,8 @@ public DataFetcher message() {
@Override
public DataFetcher minimumBookingNoticeSeconds() {
- return environment -> getSource(environment).getMinimumBookingNotice().toSeconds();
+ return environment ->
+ getSource(environment).getMinimumBookingNotice().map(Duration::toSeconds).orElse(null);
}
@Override
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/BookingTimeImpl.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/BookingTimeImpl.java
similarity index 100%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/BookingTimeImpl.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/BookingTimeImpl.java
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/CarParkImpl.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/CarParkImpl.java
similarity index 96%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/CarParkImpl.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/CarParkImpl.java
index ff990b4f65c..8947f589ca5 100644
--- a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/CarParkImpl.java
+++ b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/CarParkImpl.java
@@ -6,7 +6,7 @@
import org.opentripplanner.apis.gtfs.generated.GraphQLDataFetchers;
import org.opentripplanner.framework.graphql.GraphQLUtils;
import org.opentripplanner.model.calendar.openinghours.OHCalendar;
-import org.opentripplanner.routing.vehicle_parking.VehicleParking;
+import org.opentripplanner.service.vehicleparking.model.VehicleParking;
public class CarParkImpl implements GraphQLDataFetchers.GraphQLCarPark {
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/ContactInfoImpl.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/ContactInfoImpl.java
similarity index 100%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/ContactInfoImpl.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/ContactInfoImpl.java
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/CoordinatesImpl.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/CoordinatesImpl.java
similarity index 100%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/CoordinatesImpl.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/CoordinatesImpl.java
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/CurrencyImpl.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/CurrencyImpl.java
similarity index 100%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/CurrencyImpl.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/CurrencyImpl.java
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/DefaultFareProductImpl.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/DefaultFareProductImpl.java
similarity index 100%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/DefaultFareProductImpl.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/DefaultFareProductImpl.java
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/DepartureRowImpl.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/DepartureRowImpl.java
similarity index 100%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/DepartureRowImpl.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/DepartureRowImpl.java
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/FareProductTypeResolver.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/FareProductTypeResolver.java
similarity index 100%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/FareProductTypeResolver.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/FareProductTypeResolver.java
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/FareProductUseImpl.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/FareProductUseImpl.java
similarity index 100%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/FareProductUseImpl.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/FareProductUseImpl.java
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/FeedImpl.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/FeedImpl.java
similarity index 99%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/FeedImpl.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/FeedImpl.java
index d6488d3f375..3d9458152b5 100644
--- a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/FeedImpl.java
+++ b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/FeedImpl.java
@@ -79,7 +79,7 @@ public DataFetcher publisher() {
private List getAgencies(DataFetchingEnvironment environment) {
String id = getSource(environment);
return getTransitService(environment)
- .getAgencies()
+ .listAgencies()
.stream()
.filter(agency -> agency.getId().getFeedId().equals(id))
.collect(Collectors.toList());
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/GeometryImpl.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/GeometryImpl.java
similarity index 100%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/GeometryImpl.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/GeometryImpl.java
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/ItineraryImpl.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/ItineraryImpl.java
similarity index 100%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/ItineraryImpl.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/ItineraryImpl.java
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/LegImpl.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/LegImpl.java
similarity index 90%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/LegImpl.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/LegImpl.java
index 9ec83a4bf67..5e892c06368 100644
--- a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/LegImpl.java
+++ b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/LegImpl.java
@@ -10,6 +10,7 @@
import org.opentripplanner.apis.gtfs.generated.GraphQLDataFetchers;
import org.opentripplanner.apis.gtfs.generated.GraphQLTypes;
import org.opentripplanner.apis.gtfs.mapping.NumberMapper;
+import org.opentripplanner.apis.gtfs.mapping.RealtimeStateMapper;
import org.opentripplanner.ext.restapi.mapping.LocalDateMapper;
import org.opentripplanner.ext.ridehailing.model.RideEstimate;
import org.opentripplanner.ext.ridehailing.model.RideHailingLeg;
@@ -23,9 +24,11 @@
import org.opentripplanner.model.plan.StreetLeg;
import org.opentripplanner.model.plan.TransitLeg;
import org.opentripplanner.model.plan.WalkStep;
+import org.opentripplanner.model.plan.legreference.LegReferenceSerializer;
import org.opentripplanner.routing.alertpatch.TransitAlert;
import org.opentripplanner.routing.alternativelegs.AlternativeLegs;
import org.opentripplanner.routing.alternativelegs.AlternativeLegsFilter;
+import org.opentripplanner.routing.alternativelegs.NavigationDirection;
import org.opentripplanner.transit.model.network.Route;
import org.opentripplanner.transit.model.organization.Agency;
import org.opentripplanner.transit.model.timetable.Trip;
@@ -189,10 +192,12 @@ public DataFetcher realTime() {
return environment -> getSource(environment).getRealTime();
}
- // TODO
@Override
- public DataFetcher realtimeState() {
- return environment -> null;
+ public DataFetcher realtimeState() {
+ return environment -> {
+ var state = getSource(environment).getRealTimeState();
+ return RealtimeStateMapper.map(state);
+ };
}
@Override
@@ -271,8 +276,17 @@ private Leg getSource(DataFetchingEnvironment environment) {
return environment.getSource();
}
+ @Override
+ public DataFetcher> previousLegs() {
+ return alternativeLegs(NavigationDirection.PREVIOUS);
+ }
+
@Override
public DataFetcher> nextLegs() {
+ return alternativeLegs(NavigationDirection.NEXT);
+ }
+
+ private DataFetcher> alternativeLegs(NavigationDirection direction) {
return environment -> {
if (environment.getSource() instanceof ScheduledTransitLeg originalLeg) {
var args = new GraphQLTypes.GraphQLLegNextLegsArgs(environment.getArguments());
@@ -307,7 +321,7 @@ public DataFetcher> nextLegs() {
environment.getSource(),
numberOfLegs,
environment.getContext().transitService(),
- false,
+ direction,
AlternativeLegsFilter.NO_FILTER,
limitToExactOriginStop,
limitToExactDestinationStop
@@ -324,4 +338,15 @@ public DataFetcher> nextLegs() {
public DataFetcher accessibilityScore() {
return environment -> NumberMapper.toDouble(getSource(environment).accessibilityScore());
}
+
+ @Override
+ public DataFetcher id() {
+ return environment -> {
+ var ref = getSource(environment).getLegReference();
+ if (ref == null) {
+ return null;
+ }
+ return LegReferenceSerializer.encode(ref);
+ };
+ }
}
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/MoneyImpl.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/MoneyImpl.java
similarity index 100%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/MoneyImpl.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/MoneyImpl.java
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/NodeTypeResolver.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/NodeTypeResolver.java
similarity index 98%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/NodeTypeResolver.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/NodeTypeResolver.java
index 437d75e03e9..bb105be08fb 100644
--- a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/NodeTypeResolver.java
+++ b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/NodeTypeResolver.java
@@ -12,7 +12,7 @@
import org.opentripplanner.routing.graphfinder.NearbyStop;
import org.opentripplanner.routing.graphfinder.PatternAtStop;
import org.opentripplanner.routing.graphfinder.PlaceAtDistance;
-import org.opentripplanner.routing.vehicle_parking.VehicleParking;
+import org.opentripplanner.service.vehicleparking.model.VehicleParking;
import org.opentripplanner.service.vehiclerental.model.VehicleRentalStation;
import org.opentripplanner.service.vehiclerental.model.VehicleRentalVehicle;
import org.opentripplanner.transit.model.network.Route;
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/OpeningHoursImpl.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/OpeningHoursImpl.java
similarity index 100%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/OpeningHoursImpl.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/OpeningHoursImpl.java
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/PatternImpl.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/PatternImpl.java
similarity index 99%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/PatternImpl.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/PatternImpl.java
index 88db00c3c4e..fbab1e95400 100644
--- a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/PatternImpl.java
+++ b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/PatternImpl.java
@@ -18,7 +18,6 @@
import org.opentripplanner.apis.gtfs.generated.GraphQLTypes;
import org.opentripplanner.apis.support.SemanticHash;
import org.opentripplanner.framework.graphql.GraphQLUtils;
-import org.opentripplanner.framework.time.ServiceDateUtils;
import org.opentripplanner.routing.alertpatch.EntitySelector;
import org.opentripplanner.routing.alertpatch.TransitAlert;
import org.opentripplanner.routing.services.TransitAlertService;
@@ -31,6 +30,7 @@
import org.opentripplanner.transit.model.timetable.Trip;
import org.opentripplanner.transit.model.timetable.TripTimes;
import org.opentripplanner.transit.service.TransitService;
+import org.opentripplanner.utils.time.ServiceDateUtils;
public class PatternImpl implements GraphQLDataFetchers.GraphQLPattern {
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/PlaceImpl.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/PlaceImpl.java
similarity index 98%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/PlaceImpl.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/PlaceImpl.java
index 145321f809c..abb3a607ab9 100644
--- a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/PlaceImpl.java
+++ b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/PlaceImpl.java
@@ -11,7 +11,7 @@
import org.opentripplanner.model.plan.Place;
import org.opentripplanner.model.plan.StopArrival;
import org.opentripplanner.model.plan.VertexType;
-import org.opentripplanner.routing.vehicle_parking.VehicleParking;
+import org.opentripplanner.service.vehicleparking.model.VehicleParking;
import org.opentripplanner.service.vehiclerental.model.VehicleRentalPlace;
import org.opentripplanner.service.vehiclerental.model.VehicleRentalStation;
import org.opentripplanner.service.vehiclerental.model.VehicleRentalVehicle;
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/PlaceInterfaceTypeResolver.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/PlaceInterfaceTypeResolver.java
similarity index 96%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/PlaceInterfaceTypeResolver.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/PlaceInterfaceTypeResolver.java
index cb2bfc77c32..a1f08fe3dc9 100644
--- a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/PlaceInterfaceTypeResolver.java
+++ b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/PlaceInterfaceTypeResolver.java
@@ -5,7 +5,7 @@
import graphql.schema.GraphQLSchema;
import graphql.schema.TypeResolver;
import org.opentripplanner.routing.graphfinder.PatternAtStop;
-import org.opentripplanner.routing.vehicle_parking.VehicleParking;
+import org.opentripplanner.service.vehicleparking.model.VehicleParking;
import org.opentripplanner.service.vehiclerental.model.VehicleRentalStation;
import org.opentripplanner.service.vehiclerental.model.VehicleRentalVehicle;
import org.opentripplanner.transit.model.site.RegularStop;
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/PlanConnectionImpl.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/PlanConnectionImpl.java
similarity index 100%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/PlanConnectionImpl.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/PlanConnectionImpl.java
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/PlanImpl.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/PlanImpl.java
similarity index 100%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/PlanImpl.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/PlanImpl.java
diff --git a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/QueryTypeImpl.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/QueryTypeImpl.java
similarity index 90%
rename from src/main/java/org/opentripplanner/apis/gtfs/datafetchers/QueryTypeImpl.java
rename to application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/QueryTypeImpl.java
index 0e70c13074b..bb8de508953 100644
--- a/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/QueryTypeImpl.java
+++ b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/QueryTypeImpl.java
@@ -27,21 +27,22 @@
import org.locationtech.jts.geom.Envelope;
import org.opentripplanner.apis.gtfs.GraphQLRequestContext;
import org.opentripplanner.apis.gtfs.GraphQLUtils;
-import org.opentripplanner.apis.gtfs.PatternByServiceDatesFilter;
import org.opentripplanner.apis.gtfs.generated.GraphQLDataFetchers;
import org.opentripplanner.apis.gtfs.generated.GraphQLTypes;
import org.opentripplanner.apis.gtfs.generated.GraphQLTypes.GraphQLQueryTypeStopsByRadiusArgs;
import org.opentripplanner.apis.gtfs.mapping.routerequest.LegacyRouteRequestMapper;
import org.opentripplanner.apis.gtfs.mapping.routerequest.RouteRequestMapper;
+import org.opentripplanner.apis.gtfs.support.filter.PatternByDateFilterUtil;
import org.opentripplanner.apis.gtfs.support.time.LocalDateRangeUtil;
import org.opentripplanner.ext.fares.impl.DefaultFareService;
import org.opentripplanner.ext.fares.impl.GtfsFaresService;
import org.opentripplanner.ext.fares.model.FareRuleSet;
-import org.opentripplanner.framework.application.OTPFeature;
-import org.opentripplanner.framework.time.ServiceDateUtils;
import org.opentripplanner.graph_builder.issue.api.DataImportIssueStore;
import org.opentripplanner.gtfs.mapping.DirectionMapper;
import org.opentripplanner.model.TripTimeOnDate;
+import org.opentripplanner.model.plan.Leg;
+import org.opentripplanner.model.plan.legreference.LegReference;
+import org.opentripplanner.model.plan.legreference.LegReferenceSerializer;
import org.opentripplanner.routing.alertpatch.EntitySelector;
import org.opentripplanner.routing.alertpatch.TransitAlert;
import org.opentripplanner.routing.api.request.RouteRequest;
@@ -54,8 +55,8 @@
import org.opentripplanner.routing.graphfinder.PatternAtStop;
import org.opentripplanner.routing.graphfinder.PlaceAtDistance;
import org.opentripplanner.routing.graphfinder.PlaceType;
-import org.opentripplanner.routing.vehicle_parking.VehicleParking;
-import org.opentripplanner.routing.vehicle_parking.VehicleParkingService;
+import org.opentripplanner.service.vehicleparking.VehicleParkingService;
+import org.opentripplanner.service.vehicleparking.model.VehicleParking;
import org.opentripplanner.service.vehiclerental.VehicleRentalService;
import org.opentripplanner.service.vehiclerental.model.VehicleRentalPlace;
import org.opentripplanner.service.vehiclerental.model.VehicleRentalStation;
@@ -71,6 +72,7 @@
import org.opentripplanner.transit.model.timetable.Trip;
import org.opentripplanner.transit.service.TransitService;
import org.opentripplanner.updater.GtfsRealtimeFuzzyTripMatcher;
+import org.opentripplanner.utils.time.ServiceDateUtils;
public class QueryTypeImpl implements GraphQLDataFetchers.GraphQLQueryType {
@@ -85,7 +87,7 @@ public class QueryTypeImpl implements GraphQLDataFetchers.GraphQLQueryType {
@Override
public DataFetcher> agencies() {
- return environment -> getTransitService(environment).getAgencies();
+ return environment -> getTransitService(environment).listAgencies();
}
@Override
@@ -95,7 +97,7 @@ public DataFetcher agency() {
new GraphQLTypes.GraphQLQueryTypeAgencyArgs(environment.getArguments()).getGraphQLId()
);
- return getTransitService(environment).getAgencyForId(id);
+ return getTransitService(environment).getAgency(id);
};
}
@@ -120,7 +122,8 @@ public DataFetcher bikePark() {
.vehicleParkingService();
return vehicleParkingService
- .getBikeParks()
+ .listBikeParks()
+ .stream()
.filter(bikePark -> bikePark.getId().getId().equals(args.getGraphQLId()))
.findAny()
.orElse(null);
@@ -134,7 +137,7 @@ public DataFetcher> bikeParks() {
.getContext()
.vehicleParkingService();
- return vehicleParkingService.getBikeParks().toList();
+ return vehicleParkingService.listBikeParks().stream().toList();
};
}
@@ -207,7 +210,8 @@ public DataFetcher carPark() {
.vehicleParkingService();
return vehicleParkingService
- .getCarParks()
+ .listCarParks()
+ .stream()
.filter(carPark -> carPark.getId().getId().equals(args.getGraphQLId()))
.findAny()
.orElse(null);
@@ -228,14 +232,15 @@ public DataFetcher> carParks() {
if (!idList.isEmpty()) {
Map carParkMap = vehicleParkingService
- .getCarParks()
+ .listCarParks()
+ .stream()
.collect(Collectors.toMap(station -> station.getId().getId(), station -> station));
return idList.stream().map(carParkMap::get).toList();
}
}
- return vehicleParkingService.getCarParks().toList();
+ return vehicleParkingService.listCarParks();
};
}
@@ -260,7 +265,7 @@ public DataFetcher departureRow() {
@Override
public DataFetcher> feeds() {
- return environment -> getTransitService(environment).getFeedIds();
+ return environment -> getTransitService(environment).listFeedIds();
}
@Override
@@ -272,7 +277,7 @@ public DataFetcher fuzzyTrip() {
return new GtfsRealtimeFuzzyTripMatcher(transitService)
.getTrip(
- transitService.getRouteForId(FeedScopedId.parse(args.getGraphQLRoute())),
+ transitService.getRoute(FeedScopedId.parse(args.getGraphQLRoute())),
DIRECTION_MAPPER.map(args.getGraphQLDirection()),
args.getGraphQLTime(),
ServiceDateUtils.parseString(args.getGraphQLDate())
@@ -362,6 +367,20 @@ public DataFetcher> nearest() {
};
}
+ @Override
+ public DataFetcher leg() {
+ return environment -> {
+ TransitService transitService = getTransitService(environment);
+ var args = new GraphQLTypes.GraphQLQueryTypeLegArgs(environment.getArguments());
+ String id = args.getGraphQLId();
+ LegReference ref = LegReferenceSerializer.decode(id);
+ if (ref == null) {
+ return null;
+ }
+ return ref.getLeg(transitService);
+ };
+ }
+
@Override
public DataFetcher