From 3313ebd072e756f8502fed32fa0bbf2b8aa1bd8a Mon Sep 17 00:00:00 2001
From: Philipp Spohr <spohr.philipp@web.de>
Date: Mon, 11 Dec 2017 11:10:42 +0100
Subject: [PATCH] Identifying results with unique ID Returning result ID via
 CyRest

---
 .../ba/yoshikoWrapper/core/ResultList.java    | 28 +++++++++++++++++++
 .../cytoUtil/GraphAnalyzer.java               |  4 +--
 .../graphModel/YoshikoResult.java             | 20 +++++++++----
 .../hhu/ba/yoshikoWrapper/help/HelpLinks.java |  2 +-
 .../swing/components/MainPanel.java           |  1 +
 .../yoshikoWrapper/tasks/AlgorithmTask.java   |  7 +++--
 6 files changed, 50 insertions(+), 12 deletions(-)
 create mode 100644 src/main/java/de/hhu/ba/yoshikoWrapper/core/ResultList.java

diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/core/ResultList.java b/src/main/java/de/hhu/ba/yoshikoWrapper/core/ResultList.java
new file mode 100644
index 0000000..5bc2b23
--- /dev/null
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/core/ResultList.java
@@ -0,0 +1,28 @@
+package de.hhu.ba.yoshikoWrapper.core;
+
+import java.util.HashMap;
+
+import de.hhu.ba.yoshikoWrapper.graphModel.YoshikoResult;
+
+public class ResultList {
+
+	private static HashMap<Integer,YoshikoResult> map = new HashMap<Integer,YoshikoResult>();
+
+	public static void add(YoshikoResult yoshikoResult) {
+		int i = 0;
+		while (true) {
+			if (!map.containsKey(i)) {
+				map.put(i, yoshikoResult);
+				yoshikoResult.setID(i);
+				return;
+			}
+			i++;
+		}
+	}
+
+	public static void remove(int resultID) {
+		map.remove(resultID);
+	}
+
+
+}
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/cytoUtil/GraphAnalyzer.java b/src/main/java/de/hhu/ba/yoshikoWrapper/cytoUtil/GraphAnalyzer.java
index c600391..b569a77 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/cytoUtil/GraphAnalyzer.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/cytoUtil/GraphAnalyzer.java
@@ -144,6 +144,4 @@ public class GraphAnalyzer {
 		}
 		return false;
 	}
-
-
-}
+}
\ No newline at end of file
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 7394b3e..d3e1236 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoResult.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoResult.java
@@ -25,6 +25,7 @@ import java.util.ArrayList;
 
 import org.cytoscape.model.CyNetwork;
 
+import de.hhu.ba.yoshikoWrapper.core.ResultList;
 import de.hhu.ba.yoshikoWrapper.swig.SolutionFlags;
 
 
@@ -39,12 +40,20 @@ public class YoshikoResult{
 
 	private SolutionFlags flags;
 
+	private int id;
 
 	public YoshikoResult(CyNetwork net, SolutionFlags flags) {
 		solutions = new ArrayList<YoshikoSolution>();
-
 		this.originalGraph = net;
 		this.flags = flags;
+		ResultList.add(this);
+	}
+
+	public void delete() {
+		for (YoshikoSolution s: solutions) {
+			s.delete();
+		}
+		ResultList.remove(this.id);
 	}
 
 	//___________SETTER GETTER_____________//
@@ -71,11 +80,12 @@ public class YoshikoResult{
 		return originalGraph;
 	}
 
-	public void delete() {
-		for (YoshikoSolution s: solutions) {
-			s.delete();
-		}
+	public void setID(int id) {
+		this.id = id;
 	}
 
+	public int getID() {
+		return id;
+	}
 
 }
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/help/HelpLinks.java b/src/main/java/de/hhu/ba/yoshikoWrapper/help/HelpLinks.java
index 597eca4..58fdf46 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/help/HelpLinks.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/help/HelpLinks.java
@@ -27,7 +27,7 @@ public final class HelpLinks {
 
 	public static final HashMap<String,Object> mainInfo = new HashMap<String,Object>();
 	static {
-		mainInfo.put("url", "https://spqrph.github.io/cytoscape-tutorials/presentations/yoshiko/yoshiko.html#/title");
+		mainInfo.put("url", "https://spqrph.github.io/cytoscape-tutorials/presentations/yoshiko.html#/title");
 	}
 
 }
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/MainPanel.java b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/MainPanel.java
index c14921d..b0771da 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/MainPanel.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/MainPanel.java
@@ -120,6 +120,7 @@ public class MainPanel extends JPanel implements CytoPanelComponent {
 			@Override
 			public void actionPerformed(ActionEvent e) {
 				CommandExecutor.executeCommand("cybrowser", "show",HelpLinks.mainInfo , null);
+				//TODO: Auto select CyBrowser tab
 			}
 
 		});
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/tasks/AlgorithmTask.java b/src/main/java/de/hhu/ba/yoshikoWrapper/tasks/AlgorithmTask.java
index 8920a78..30f4bb5 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/tasks/AlgorithmTask.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/tasks/AlgorithmTask.java
@@ -287,11 +287,12 @@ public class AlgorithmTask extends AbstractTask implements ObservableTask {
 		super.cancel();
 	}
 
+	@SuppressWarnings("unchecked")
 	@Override
 	public <R> R getResults(Class<? extends R> type) {
-		//TODO: Return Result in some format that is suitable for console applications
-		if (type.equals(YoshikoResult.class)) {
-			return (R) (result!=null ? result : null);
+		//We return the id of the result so we can work with the result from CMD
+		if (type.equals(String.class)) {
+			return (R) (""+result.getID());
 		}
 		return null;
 	}
-- 
GitLab