/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.symcomp.webwupsi.rest;
import java.util.Map;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.UriInfo;
import org.codehaus.jettison.json.JSONStringer;
import org.symcomp.scscp.SCSCPClient;
import org.symcomp.wupsi.Wupsifer;
/**
*
* @author hornp
*/
@Path("/systems")
public class SystemsResource {
@GET
@Produces("application/json")
public String index() {
Wupsifer w = Wupsifer.getInstance();
Map<String, SCSCPClient> systems = w.getClients();
JSONStringer js = new JSONStringer();
try {
// Begin array
js.array();
for (String k : systems.keySet()) {
SCSCPClient sys = systems.get(k);
js.object();
js.key("id").value(k);
js.key("name").value(sys.getServiceName());
js.key("version").value(sys.getServiceVersion());
js.key("host").value(sys.getSCSCPUri());
js.key("port").value(sys.getSCSCPPort());
js.endObject();
}
js.endArray();
// end array
} catch(Exception e) {
e.printStackTrace();
System.exit(1);
}
return js.toString();
}
@GET
@Produces("application/json")
@Path("/{id}")
public String show(@PathParam("id") String idd) {
String id = java.net.URLDecoder.decode(idd);
SCSCPClient sys = Wupsifer.getInstance().getClients().get(id);
JSONStringer js = new JSONStringer();
try {
js.object();
js.key("id").value(id);
js.key("name").value(sys.getServiceName());
js.key("version").value(sys.getServiceVersion());
js.key("host").value(sys.getSCSCPUri());
js.key("port").value(sys.getSCSCPPort());
js.key("computations").value(sys.getComputations().size());
js.endObject();
} catch(Exception e) {
e.printStackTrace();
System.exit(1);
}
return js.toString();
}
@POST
@Produces("application/json")
public String create(@Context UriInfo ui) {
MultivaluedMap<String, String> queryParams = ui.getQueryParameters();
String host = queryParams.getFirst("host");
String port = queryParams.getFirst("port");
String id = queryParams.getFirst("id");
// System.out.println(" ------> "+host+" "+port+" "+id);
Wupsifer w = Wupsifer.getInstance();
if (w.connect(host + ":" + port, id)) {
return "OK";
}
return "FAILURE";
}
}