package org.iplantc.phyloviewer.viewer.server;
import org.iplantc.phyloviewer.shared.model.INode;
import org.iplantc.phyloviewer.viewer.client.model.RemoteNode;
import org.iplantc.phyloviewer.viewer.client.services.CombinedService;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
public class CombinedServiceImpl extends RemoteServiceServlet implements CombinedService
{
private static final long serialVersionUID = 2839219371009200675L;
private ITreeData getTreeData() {
return (ITreeData) this.getServletContext().getAttribute(Constants.TREE_DATA_KEY);
}
private ILayoutData getLayoutData() {
return (ILayoutData) this.getServletContext().getAttribute(Constants.LAYOUT_DATA_KEY);
}
public RemoteNode[] getChildren(int parentID) {
return this.getTreeData().getChildren(parentID);
}
@Override
public NodeResponse getRootNode(int treeId) throws Exception
{
ITreeData treeData = this.getTreeData();
RemoteNode node = treeData.getRootNode(treeId);
NodeResponse response = new NodeResponse();
response.node = node;
response.layout = this.getLayout(node);
return response;
}
public LayoutResponse getLayout(INode node) throws Exception {
return this.getLayoutData().getLayout(node);
}
public LayoutResponse[] getLayout(INode[] nodes) throws Exception {
LayoutResponse[] response = new LayoutResponse[nodes.length];
for (int i = 0; i < nodes.length; i++) {
response[i] = getLayout(nodes[i]);
}
return response;
}
@Override
public CombinedResponse getChildrenAndLayout(int parentID) throws Exception
{
CombinedResponse response = new CombinedResponse();
response.parentID = parentID;
response.nodes = getChildren(parentID);
response.layouts = getLayout(response.nodes);
return response;
}
@Override
public CombinedResponse[] getChildrenAndLayout(int[] parentIDs) throws Exception
{
// Util.simulateDelay(this.getThreadLocalRequest(), 100);
//System.out.println("Getting children and layouts for " + parentIDs.length + " parents");
CombinedResponse[] responses = new CombinedResponse[parentIDs.length];
for (int i = 0; i < parentIDs.length; i++) {
responses[i] = getChildrenAndLayout(parentIDs[i]);
}
return responses;
}
}