/* * Licensed to GraphHopper GmbH under one or more contributor * license agreements. See the NOTICE file distributed with this work for * additional information regarding copyright ownership. * * GraphHopper GmbH licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.graphhopper.http; import com.fasterxml.jackson.databind.node.JsonNodeFactory; import com.fasterxml.jackson.databind.node.ObjectNode; import com.graphhopper.storage.GraphHopperStorage; import com.graphhopper.storage.StorableProperties; import com.graphhopper.util.Constants; import com.graphhopper.util.Helper; import com.graphhopper.util.Parameters; import com.graphhopper.util.shapes.BBox; import javax.inject.Inject; import javax.inject.Named; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; import java.util.List; /** * @author Peter Karich */ public class InfoServlet extends GHBaseServlet { @Inject private GraphHopperStorage storage; @Inject @Named("hasElevation") private boolean hasElevation; @Override public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { BBox bb = storage.getBounds(); List<Double> list = new ArrayList<>(4); list.add(bb.minLon); list.add(bb.minLat); list.add(bb.maxLon); list.add(bb.maxLat); final JsonNodeFactory jsonNodeFactory = new JsonNodeFactory(false); final ObjectNode json = jsonNodeFactory.objectNode(); json.putPOJO("bbox", list); String[] vehicles = storage.getEncodingManager().toString().split(","); json.putPOJO("supported_vehicles", vehicles); ObjectNode features = json.putObject("features"); for (String v : vehicles) { ObjectNode perVehicleJson = features.putObject(v); perVehicleJson.put("elevation", hasElevation); } json.put("version", Constants.VERSION); json.put("build_date", Constants.BUILD_DATE); StorableProperties props = storage.getProperties(); json.put("import_date", props.get("datareader.import.date")); if (!Helper.isEmpty(props.get("datareader.data.date"))) json.put("data_date", props.get("datareader.data.date")); String tmpDate = props.get(Parameters.CH.PREPARE + "date"); if (!Helper.isEmpty(tmpDate)) { json.put("prepare_ch_date", tmpDate); json.put("prepare_date", tmpDate); } writeJson(req, res, json); } }