package com.graphhopper.http; import com.google.inject.AbstractModule; import com.google.inject.Provides; import com.graphhopper.GraphHopperAPI; import com.graphhopper.json.GHJson; import com.graphhopper.json.GHJsonFactory; import com.graphhopper.reader.gtfs.GraphHopperGtfs; import com.graphhopper.reader.gtfs.GtfsStorage; import com.graphhopper.reader.gtfs.PtFlagEncoder; import com.graphhopper.reader.gtfs.RealtimeFeed; import com.graphhopper.routing.util.EncodingManager; import com.graphhopper.storage.GHDirectory; import com.graphhopper.storage.GraphHopperStorage; import com.graphhopper.storage.index.LocationIndex; import com.graphhopper.util.CmdArgs; import com.graphhopper.util.TranslationMap; import javax.inject.Named; import javax.inject.Singleton; import java.util.Arrays; import java.util.Collections; public final class PtModule extends AbstractModule { private final CmdArgs args; public PtModule(CmdArgs args) { this.args = CmdArgs.readFromConfigAndMerge(args, "config", "graphhopper.config"); } @Override protected void configure() { install(new CmdArgsModule(args)); bind(GHJson.class).toInstance(new GHJsonFactory().create()); } @Provides @Singleton GraphHopperAPI createGraphHopper(PtFlagEncoder flagEncoder, TranslationMap translationMap, GraphHopperStorage graphHopperStorage, LocationIndex locationIndex, GtfsStorage gtfsStorage) { return new GraphHopperGtfs(flagEncoder, translationMap, graphHopperStorage, locationIndex, gtfsStorage, RealtimeFeed.empty()); } @Provides @Singleton GHDirectory createGHDirectory(CmdArgs args) { return GraphHopperGtfs.createGHDirectory(args.get("graph.location", "target/tmp")); } @Provides @Singleton GraphHopperStorage createGraphHopperStorage(CmdArgs args, GHDirectory directory, EncodingManager encodingManager, PtFlagEncoder ptFlagEncoder, GtfsStorage gtfsStorage) { return GraphHopperGtfs.createOrLoad(directory, encodingManager, ptFlagEncoder, gtfsStorage, args.getBool("gtfs.createwalknetwork", false), args.has("gtfs.file") ? Arrays.asList(args.get("gtfs.file", "").split(",")) : Collections.emptyList(), args.has("datareader.file") ? Arrays.asList(args.get("datareader.file", "").split(",")) : Collections.emptyList()); } @Provides @Singleton LocationIndex createLocationIndex(GraphHopperStorage graphHopperStorage, GHDirectory directory) { return GraphHopperGtfs.createOrLoadIndex(directory, graphHopperStorage); } @Provides @Singleton @Named("hasElevation") boolean hasElevation() { return false; } @Provides @Singleton GtfsStorage createGtfsStorage() { return GraphHopperGtfs.createGtfsStorage(); } @Provides @Singleton EncodingManager createEncodingManager(PtFlagEncoder ptFlagEncoder) { return new EncodingManager(Arrays.asList(ptFlagEncoder), 8); } @Provides @Singleton PtFlagEncoder createPtFlagEncoder() { return new PtFlagEncoder(); } @Provides @Singleton TranslationMap createTranslationMap() { return GraphHopperGtfs.createTranslationMap(); } @Provides @Singleton RouteSerializer getRouteSerializer(GraphHopperStorage storage) { return new SimpleRouteSerializer(storage.getBounds()); } @Provides GraphHopperService getGraphHopperService(GraphHopperStorage storage, LocationIndex locationIndex) { return new GraphHopperService() { @Override public void start() { } @Override public void close() throws Exception { storage.close(); locationIndex.close(); } }; } }