edu.isi.karma.webserver.ExtractSpatialInformationFromWikimapiaServiceHandler.java Source code

Java tutorial

Introduction

Here is the source code for edu.isi.karma.webserver.ExtractSpatialInformationFromWikimapiaServiceHandler.java

Source

/*******************************************************************************
 * Copyright 2012 University of Southern California
 * 
 * Licensed 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.
 * 
 * This code was developed by the Information Integration Group as part 
 * of the Karma project at the Information Sciences Institute of the 
 * University of Southern California.  For more information, publications, 
 * and related projects, please see: http://www.isi.edu/integration
 ******************************************************************************/

package edu.isi.karma.webserver;

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.apache.log4j.Logger;

import edu.isi.karma.er.helper.ConnectPostgis;
import edu.isi.karma.model.serialization.MimeType;
import edu.isi.karma.webserver.helper.CreateWikimapiaInformation;

public class ExtractSpatialInformationFromWikimapiaServiceHandler extends HttpServlet {

    private static final long serialVersionUID = 1L;
    private static Logger logger = Logger.getLogger(LinkedApiServiceHandler.class);
    private String url;
    private Connection connection = null;
    private String osmFile_path = "/tmp/GET_WIKIMAPIA.xml";

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        logger.debug("Request URL: " + request.getRequestURI());
        logger.debug("Request Path Info: " + request.getPathInfo());
        logger.debug("Request Param: " + request.getQueryString());

        String jsonOutput = null;

        String lon_min = request.getParameter("lon_min");
        String lat_min = request.getParameter("lat_min");
        String lon_max = request.getParameter("lon_max");
        String lat_max = request.getParameter("lat_max");
        //String type = request.getParameter("type");

        String url = "&lon_min=" + lon_min + "&lat_min=" + lat_min + "&lon_max=" + lon_max + "&lat_max=" + lat_max;

        try {
            System.out.println("Please Wait for extracting information from Web Site...");
            outputToOSM(url);
            System.out.println("You have got the OSM File at location: /tmp/GET_WIKIMAPIA.xml ...");
        } catch (SQLException e) {
            e.printStackTrace();
        }

        System.out.println("Opening PostGis Connection...");
        openConnection();
        System.out.println("Creating the CSV file from OSM file...");

        CreateWikimapiaInformation cwi = new CreateWikimapiaInformation(this.connection, this.osmFile_path);
        System.out.println("Extracting the Street Information from OSM file...");

        jsonOutput = cwi.createWikiMapiaTable();
        System.out.println("You have created the CSV file for STREETS at location:/tmp/buildings_geo.csv");

        /*Close connection*/
        this.closeConnection(this.connection);

        /*Output the JSON content to Web Page*/
        response.setCharacterEncoding("UTF8");
        PrintWriter pw = response.getWriter();
        response.setContentType(MimeType.APPLICATION_JSON);
        pw.write(jsonOutput);
        return;

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // doPost;

    }

    protected void outputToOSM(String url) throws SQLException, ClientProtocolException, IOException {
        //String url = "http://api.wikimapia.org/?function=box&count=100&lon_min=-118.29244&lat_min=34.01794&lon_max=-118.28&lat_max=34.02587&key=156E90A4-57B03618-05BDBEA0-ED9C6E97-DD2116A6-A5229FEC-091E312A-2856C8BA";      
        this.url = "http://api.wikimapia.org/?function=box&count=100" + url
                + "&key=156E90A4-57B03618-05BDBEA0-ED9C6E97-DD2116A6-A5229FEC-091E312A-2856C8BA";
        DefaultHttpClient client = new DefaultHttpClient();
        HttpGet get = new HttpGet(this.url);
        HttpResponse response = client.execute(get);
        HttpEntity entity = response.getEntity();
        String result = EntityUtils.toString(entity);
        FileOutputStream fout = new FileOutputStream(osmFile_path);
        OutputStream bout = new BufferedOutputStream(fout);
        OutputStreamWriter out = new OutputStreamWriter(bout, "UTF8");
        out.write(result);
        out.close();
    }

    private void openConnection() {
        ConnectPostgis conPostgis = new ConnectPostgis();
        this.connection = conPostgis.ConnectingPostgis();
    }

    private void closeConnection(Connection connection) {
        try {
            connection.close();
        } catch (Exception ex) {
            ex.getMessage();
        }
    }

}