package com.ibm.personafusion.controller;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import com.ibm.personafusion.Config;
import com.ibm.personafusion.model.Person;
import com.ibm.personafusion.service.WatsonUserModeller;
/** Handles the /api/viz API endpoint.
* Visualizes a person's personality traits.
* Requires 'fname' and 'lname' query parameters to search.
* Returns an HTML string of the visualization.
* @author Sean Welleck **/
@Path("/viz")
public class VizController
{
/** Returns people results as a JSON string. **/
@GET
public Response handleViz(@Context UriInfo ui)
{
MultivaluedMap<String, String> queryParams = ui.getQueryParameters();
String fname = SearchController.getParam("fname", queryParams);
String lname = SearchController.getParam("lname", queryParams);
if (fname == null || lname == null)
{
return error();
}
String fullName = fname + " " + lname;
System.out.println("fname=" + fname + " lname=" + lname);
Person p = Config.cc.getPerson(fullName.toUpperCase());
if (p == null)
{
return error();
}
WatsonUserModeller WUM = new WatsonUserModeller();
String vizHTML = WUM.getPersonVizHTML(p);
if (vizHTML == null)
{
return error();
}
return Response.ok(vizHTML).header("Access-Control-Allow-Origin", "*")
.header("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT")
.build();
}
private Response error()
{
return Response.serverError()
.header("Access-Control-Allow-Origin", "*")
.header("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT")
.build();
}
}