From 8b49e01e4ed5a0fa69fc44df8030a5f10d5a4302 Mon Sep 17 00:00:00 2001 From: Philipp Spohr <spohr.philipp@web.de> Date: Mon, 11 Dec 2017 12:11:29 +0100 Subject: [PATCH] Support for retrieving clusters via CyRest --- .../de/hhu/ba/yoshikoWrapper/CyActivator.java | 7 +++++++ .../yoshikoWrapper/graphModel/YoshikoResult.java | 4 ++++ .../graphModel/YoshikoSolution.java | 1 - .../taskFactories/CommandTaskFactory.java | 10 ++++++---- .../taskFactories/YoshikoCommand.java | 6 +++++- .../ba/yoshikoWrapper/tasks/GetClustersTask.java | 15 ++++++++++----- 6 files changed, 32 insertions(+), 11 deletions(-) diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/CyActivator.java b/src/main/java/de/hhu/ba/yoshikoWrapper/CyActivator.java index ee46985..15bcfce 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/CyActivator.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/CyActivator.java @@ -127,6 +127,13 @@ public class CyActivator extends AbstractCyActivator { props_GET_SOLUTIONS.setProperty(COMMAND_DESCRIPTION,"Retrieve solutions associated with a result"); registerService(context, commandTaskFactory_GET_SOLUTIONS, TaskFactory.class, props_GET_SOLUTIONS); + TaskFactory commandTaskFactory_GET_CLUSTERS = new CommandTaskFactory(YoshikoCommand.GET_CLUSTERS); + Properties props_GET_CLUSTERS = new Properties(); + props_GET_CLUSTERS.setProperty(COMMAND_NAMESPACE, "yoshiko"); + props_GET_CLUSTERS.setProperty(COMMAND, YoshikoCommand.GET_CLUSTERS.toString()); + props_GET_CLUSTERS.setProperty(COMMAND_DESCRIPTION,"Retrieve clusters associated with a solution"); + registerService(context, commandTaskFactory_GET_CLUSTERS, TaskFactory.class, props_GET_CLUSTERS); + //Initialize and register main panel MainPanel mainPanel = new MainPanel(); registerService(context,mainPanel,CytoPanelComponent.class, new Properties()); diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoResult.java b/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoResult.java index 47f1c4d..0a4ea3b 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoResult.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoResult.java @@ -88,4 +88,8 @@ public class YoshikoResult{ return id; } + public YoshikoSolution getSolution(long solutionID) { + return solutions.get(solutionID); + } + } diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoSolution.java b/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoSolution.java index bf8eb5e..1a20245 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoSolution.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoSolution.java @@ -22,7 +22,6 @@ package de.hhu.ba.yoshikoWrapper.graphModel; import java.util.Collection; -import java.util.Comparator; import java.util.HashMap; import java.util.List; diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/taskFactories/CommandTaskFactory.java b/src/main/java/de/hhu/ba/yoshikoWrapper/taskFactories/CommandTaskFactory.java index 53e7fbb..dc9e5cc 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/taskFactories/CommandTaskFactory.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/taskFactories/CommandTaskFactory.java @@ -4,9 +4,7 @@ import org.cytoscape.work.TaskFactory; import org.cytoscape.work.TaskIterator; import de.hhu.ba.yoshikoWrapper.core.ParameterSet; -import de.hhu.ba.yoshikoWrapper.tasks.AlgorithmTask; -import de.hhu.ba.yoshikoWrapper.tasks.CreateClusterViewsTask; -import de.hhu.ba.yoshikoWrapper.tasks.GetSolutionsTask; +import de.hhu.ba.yoshikoWrapper.tasks.*; public class CommandTaskFactory implements TaskFactory{ @@ -39,7 +37,11 @@ public class CommandTaskFactory implements TaskFactory{ new GetSolutionsTask() ); } - + else if (command == YoshikoCommand.GET_CLUSTERS) { + return new TaskIterator( + new GetClustersTask() + ); + } else if (command == YoshikoCommand.PERFORM_ALGORITHM) { return new TaskIterator( new AlgorithmTask( diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/taskFactories/YoshikoCommand.java b/src/main/java/de/hhu/ba/yoshikoWrapper/taskFactories/YoshikoCommand.java index 25ead63..3f4913c 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/taskFactories/YoshikoCommand.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/taskFactories/YoshikoCommand.java @@ -12,7 +12,8 @@ public enum YoshikoCommand { CREATE_CLUSTER_VIEW, CREATE_META_GRAPH, PERFORM_ALGORITHM, - GET_SOLUTIONS; + GET_SOLUTIONS, + GET_CLUSTERS; @Override public String toString() { @@ -22,6 +23,9 @@ public enum YoshikoCommand { else if (this==CREATE_CLUSTER_VIEW) { return "createcvs"; } + else if (this==GET_CLUSTERS) { + return "clusters"; //TODO: maybe smarter names for the commands + } else if (this==GET_SOLUTIONS) { return "solutions"; } diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/tasks/GetClustersTask.java b/src/main/java/de/hhu/ba/yoshikoWrapper/tasks/GetClustersTask.java index 78888ae..9975bba 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/tasks/GetClustersTask.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/tasks/GetClustersTask.java @@ -1,6 +1,6 @@ package de.hhu.ba.yoshikoWrapper.tasks; -import java.util.ArrayList; +import java.util.Collection; import org.cytoscape.work.ObservableTask; import org.cytoscape.work.TaskMonitor; @@ -17,9 +17,9 @@ public class GetClustersTask implements ObservableTask { public int resultID = -1; @Tunable(description="The solution ID for which the solutions should be displayed", context="nogui") - public int solutionID = -1; + public long solutionID = -1; - private ArrayList<YoshikoCluster> clusters; + private Collection<YoshikoCluster> clusters; @Override public void run(TaskMonitor taskMonitor) throws Exception { @@ -27,11 +27,14 @@ public class GetClustersTask implements ObservableTask { if (result == null) { throw new Exception("No result with ID: "+resultID+" was found!"); //TODO: Localization } + if (result.getSolution(solutionID)== null) { + throw new Exception("No solution with ID: "+solutionID+" was found!"); //TODO: Localization + } + clusters = result.getSolution(solutionID).getClusters(); } @Override public void cancel() { - // TODO Auto-generated method stub } @@ -40,7 +43,9 @@ public class GetClustersTask implements ObservableTask { public <R> R getResults(Class<? extends R> type) { if (type.equals(String.class)) { String ret = ""; - + for (YoshikoCluster c: clusters) { + ret+="Cluster[ID="+c.getID()+"]: "+c.getSize()+" nodes\n"; + } return (R) ret; } return null; -- GitLab