view src/de/mpiwg/anteater/places/impl/PlacemakerPlaceFinder.java @ 0:036535fcd179

anteater
author jdamerow
date Fri, 14 Sep 2012 10:30:43 +0200
parents
children
line wrap: on
line source

package de.mpiwg.anteater.places.impl;

import java.net.URI;

import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.UriBuilder;

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.UniformInterfaceException;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.config.ClientConfig;
import com.sun.jersey.api.client.config.DefaultClientConfig;
import com.sun.jersey.core.util.MultivaluedMapImpl;

import de.mpiwg.anteater.logging.IAnteaterLogger;
import de.mpiwg.anteater.places.IPlaceFinder;

public class PlacemakerPlaceFinder implements IPlaceFinder {
	
	public final static String COMPONENT_NAME = PlacemakerPlaceFinder.class.getSimpleName();
	
	private IAnteaterLogger logger;
	
	public PlacemakerPlaceFinder(IAnteaterLogger logger) {
		this.logger = logger;
	}

	@Override
	public String findPlaces(String text) {
		logger.logMessage(COMPONENT_NAME, "Waiting 1 second to not be blocked by Yahoo! Placemaker...");
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		logger.logMessage(COMPONENT_NAME, "Sending place extraction request to Yahoo! Placemaker...");
	
		ClientConfig config = new DefaultClientConfig();
		Client client = Client.create(config);
		WebResource service = client.resource(getBaseURI());

		MultivaluedMap<String, String> values = new MultivaluedMapImpl();
		values.add("documentContent", text);
		values.add("documentType", "text/plain");
		values.add("appid",
				"nV7rNc_V34F5EjG5VjBaFxIxpwxemBhUa0h4N2To8CnfjVBBmLrTVOgaCsXXU7EP");
		
		String result = "";
		try {
			result = service.accept(MediaType.TEXT_XML).post(String.class, values);
		} catch (UniformInterfaceException ex) {
			logger.logMessage(COMPONENT_NAME, "Received exception from Placemaker: " + ex.getMessage());
		}
		
		return result;
	}

	private static URI getBaseURI() {
		return UriBuilder.fromUri("http://wherein.yahooapis.com/").path("v1")
				.path("document").build();
	}

}