diff 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 diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/de/mpiwg/anteater/places/impl/PlacemakerPlaceFinder.java	Fri Sep 14 10:30:43 2012 +0200
@@ -0,0 +1,65 @@
+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();
+	}
+
+}