package com.metaweb.gridworks.commands.browsing; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.metaweb.gridworks.browsing.Engine; import com.metaweb.gridworks.clustering.Clusterer; import com.metaweb.gridworks.clustering.binning.BinningClusterer; import com.metaweb.gridworks.clustering.knn.kNNClusterer; import com.metaweb.gridworks.commands.Command; import com.metaweb.gridworks.model.Project; public class ComputeClustersCommand extends Command { final static Logger logger = LoggerFactory.getLogger("compute-clusters_command"); @Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { long start = System.currentTimeMillis(); Project project = getProject(request); Engine engine = getEngine(request, project); JSONObject clusterer_conf = getJsonParameter(request,"clusterer"); Clusterer clusterer = null; String type = clusterer_conf.has("type") ? clusterer_conf.getString("type") : "binning"; if ("knn".equals(type)) { clusterer = new kNNClusterer(); } else { clusterer = new BinningClusterer(); } clusterer.initializeFromJSON(project, clusterer_conf); clusterer.computeClusters(engine); respondJSON(response, clusterer); logger.info("computed clusters [{},{}] in {}ms", new Object[] { type, clusterer_conf.getString("function"), Long.toString(System.currentTimeMillis() - start) }); } catch (Exception e) { respondException(response, e); } } }