From 26552aa112a72729a70b09b6eedeecd2906e5895 Mon Sep 17 00:00:00 2001
From: Philipp Spohr <spohr.philipp@web.de>
Date: Thu, 14 Dec 2017 16:20:42 +0100
Subject: [PATCH] Workaround for CyColumn being not tunable (as of now, Cyto
 3.7 maybe?)

---
 src/main/java/de/hhu/ba/yoshikoWrapper/core/ParameterSet.java | 2 +-
 .../de/hhu/ba/yoshikoWrapper/swing/components/MainPanel.java  | 2 +-
 .../hhu/ba/yoshikoWrapper/swing/components/SolutionTab.java   | 3 +++
 .../java/de/hhu/ba/yoshikoWrapper/tasks/AlgorithmTask.java    | 4 ++--
 .../de/hhu/ba/yoshikoWrapper/tasks/CreateMetaGraphTask.java   | 2 ++
 5 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/core/ParameterSet.java b/src/main/java/de/hhu/ba/yoshikoWrapper/core/ParameterSet.java
index 08ac18a..a3bb7fa 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/core/ParameterSet.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/core/ParameterSet.java
@@ -14,7 +14,7 @@ public class ParameterSet implements TunableValidator
 	public int timeLimit = -1;
 
 	@Tunable(description="A column in the edge table containing weights", context="nogui")
-	public CyColumn weightColumn;
+	public String weightColumnName;
 	@Tunable(description="A column containing boolean entries for edges that are to be treated as permanent",context="nogui")
 	public CyColumn permanentColumn;
 	@Tunable(description="A column containing boolean entries for edges that are to be treated as forbidden",context="nogui")
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 b0771da..0efd7a5 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
@@ -346,7 +346,7 @@ public class MainPanel extends JPanel implements CytoPanelComponent {
 	private ParameterSet fetchParameters(CyNetwork net) {
 		ParameterSet ret = new ParameterSet();
 		ret.timeLimit = opModePanel.getTimeLimit();
-		ret.weightColumn = ecPanel.getWeightColumn();
+		ret.weightColumnName = ecPanel.getWeightColumn().getName();
 		ret.permanentColumn = ecPanel.getPermanentColumn();
 		ret.forbiddenColumn = ecPanel.getForbiddenColumn();
 		ret.defaultInsertionCost = ecPanel.getDefaultInsertionCost();
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/SolutionTab.java b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/SolutionTab.java
index b0c4e99..86650f2 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/SolutionTab.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/SolutionTab.java
@@ -226,6 +226,9 @@ public class SolutionTab extends JPanel {
 		this.setLayout(layout);
 	}
 
+	/**
+	 * Simply disables the CCV and CMG graph to visually highlight the fact that those tasks are no longer possible
+	 */
 	public void invalidateResult() {
 		createClusterView.setEnabled(false);
 		createMetaGraph.setEnabled(false);
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 d764f9e..cbc64bb 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/tasks/AlgorithmTask.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/tasks/AlgorithmTask.java
@@ -138,7 +138,7 @@ public class AlgorithmTask extends AbstractTask implements ObservableTask {
 		c_input = NetworkParser.parseNetwork(
 				net,
 				nodeMap,
-				parameterSet.weightColumn,
+				net.getDefaultEdgeTable().getColumn(parameterSet.weightColumnName),
 				parameterSet.permanentColumn,
 				parameterSet.forbiddenColumn,
 				parameterSet.defaultDeletionCost
@@ -147,7 +147,7 @@ public class AlgorithmTask extends AbstractTask implements ObservableTask {
 
 		boolean containsRealValues = GraphAnalyzer.containsRealValues(
 				net,
-				parameterSet.weightColumn,
+				net.getDefaultEdgeTable().getColumn(parameterSet.weightColumnName),
 				parameterSet.permanentColumn,
 				parameterSet.forbiddenColumn,
 				parameterSet.defaultInsertionCost,
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/tasks/CreateMetaGraphTask.java b/src/main/java/de/hhu/ba/yoshikoWrapper/tasks/CreateMetaGraphTask.java
index cf0ffb6..dd1c24e 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/tasks/CreateMetaGraphTask.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/tasks/CreateMetaGraphTask.java
@@ -20,6 +20,8 @@ import de.hhu.ba.yoshikoWrapper.cytoUtil.StyleManager;
 import de.hhu.ba.yoshikoWrapper.graphModel.YoshikoCluster;
 import de.hhu.ba.yoshikoWrapper.graphModel.YoshikoSolution;
 
+//TODO: Should also not be possible / throw an exception if the result was invalidated (might currently just be disabled via GUI)
+
 public class CreateMetaGraphTask extends AbstractTask{
 
 	private final YoshikoSolution solution;
-- 
GitLab