From 375627f50dc1b82224ee9878da97b07bc17e3ac6 Mon Sep 17 00:00:00 2001
From: Philipp Spohr <spohr.philipp@web.de>
Date: Fri, 29 Dec 2017 13:52:15 +0100
Subject: [PATCH] various fixes

---
 .../de/hhu/ba/yoshikoWrapper/core/ParameterSet.java  |  9 ++++++++-
 .../yoshikoWrapper/swig/ClusterEditingSolutions.java |  4 ++++
 .../hhu/ba/yoshikoWrapper/swig/LibraryInterface.java |  4 ++--
 .../ba/yoshikoWrapper/swig/LibraryInterfaceJNI.java  |  3 ++-
 .../swing/components/ClusterCountChooser.java        |  3 ++-
 .../swing/components/IntegerInputField.java          | 12 ++++++------
 .../swing/components/OperationModePanel.java         |  2 +-
 .../hhu/ba/yoshikoWrapper/tasks/AlgorithmTask.java   |  2 ++
 8 files changed, 27 insertions(+), 12 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 62271fa..ce7fbd1 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/core/ParameterSet.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/core/ParameterSet.java
@@ -52,7 +52,7 @@ public class ParameterSet implements TunableValidator
 	/**Describes whether auto configuration of the reduction rules is to be used. Overrides the bit mask.**/
 	public boolean suggestReduction = true;
 
-	@Tunable(description="Determines the number of clusters that are to be generated. -1 generates the optimal amount of clusters in the sense of WCE")
+	@Tunable(description="Determines the number of clusters that are to be generated. -1 generates the optimal amount of clusters in the sense of WCE",context="nogui")
 	public int clusterCount = -1;
 
 	@Override
@@ -101,5 +101,12 @@ public class ParameterSet implements TunableValidator
 		return true;
 	}
 
+	@Override
+	public String toString(){
+		String ret = "";
+		ret += "Target Cluster Count: "+clusterCount+"\n";
+		//TODO
+		return ret;
+	}
 
 }
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/swig/ClusterEditingSolutions.java b/src/main/java/de/hhu/ba/yoshikoWrapper/swig/ClusterEditingSolutions.java
index 10eab62..ae586e7 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/swig/ClusterEditingSolutions.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/swig/ClusterEditingSolutions.java
@@ -59,6 +59,10 @@ public class ClusterEditingSolutions {
     LibraryInterfaceJNI.ClusterEditingSolutions_setFlags(swigCPtr, this, SolutionFlags.getCPtr(f), f);
   }
 
+  public void printSolution(long index) {
+    LibraryInterfaceJNI.ClusterEditingSolutions_printSolution(swigCPtr, this, index);
+  }
+
   public ClusterEditingSolutions() {
     this(LibraryInterfaceJNI.new_ClusterEditingSolutions(), true);
   }
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/swig/LibraryInterface.java b/src/main/java/de/hhu/ba/yoshikoWrapper/swig/LibraryInterface.java
index 82e0dee..227ab8a 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/swig/LibraryInterface.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/swig/LibraryInterface.java
@@ -25,8 +25,8 @@ public class LibraryInterface {
     LibraryInterfaceJNI.setVerbosity(level);
   }
 
-  public static CoreAlgorithm getRun(LibraryInput input, int nrOptimalSolutions, String rulesBitMask, double multiplicativeFactor, boolean useHeuristic, boolean separatePartitionCuts, boolean separateTriangles) {
-    long cPtr = LibraryInterfaceJNI.getRun(LibraryInput.getCPtr(input), input, nrOptimalSolutions, rulesBitMask, multiplicativeFactor, useHeuristic, separatePartitionCuts, separateTriangles);
+  public static CoreAlgorithm getRun(LibraryInput input, int nrOptimalSolutions, String rulesBitMask, double multiplicativeFactor, boolean useHeuristic, boolean separatePartitionCuts, boolean separateTriangles, int targetClusterCount) {
+    long cPtr = LibraryInterfaceJNI.getRun(LibraryInput.getCPtr(input), input, nrOptimalSolutions, rulesBitMask, multiplicativeFactor, useHeuristic, separatePartitionCuts, separateTriangles, targetClusterCount);
     return (cPtr == 0) ? null : new CoreAlgorithm(cPtr, false);
   }
 
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/swig/LibraryInterfaceJNI.java b/src/main/java/de/hhu/ba/yoshikoWrapper/swig/LibraryInterfaceJNI.java
index 10744f7..49549a4 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/swig/LibraryInterfaceJNI.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/swig/LibraryInterfaceJNI.java
@@ -53,6 +53,7 @@ public class LibraryInterfaceJNI {
   public final static native long ClusterEditingSolutions_getNumberOfSolutions(long jarg1, ClusterEditingSolutions jarg1_);
   public final static native long ClusterEditingSolutions_getFlags(long jarg1, ClusterEditingSolutions jarg1_);
   public final static native void ClusterEditingSolutions_setFlags(long jarg1, ClusterEditingSolutions jarg1_, long jarg2, SolutionFlags jarg2_);
+  public final static native void ClusterEditingSolutions_printSolution(long jarg1, ClusterEditingSolutions jarg1_, long jarg2);
   public final static native long new_ClusterEditingSolutions();
   public final static native void delete_ClusterEditingSolutions(long jarg1);
   public final static native long new_LibraryInput();
@@ -79,7 +80,7 @@ public class LibraryInterfaceJNI {
   public final static native void setTimeLimit(int jarg1);
   public final static native void setThreadLimit(int jarg1);
   public final static native void setVerbosity(int jarg1);
-  public final static native long getRun(long jarg1, LibraryInput jarg1_, int jarg2, String jarg3, double jarg4, boolean jarg5, boolean jarg6, boolean jarg7);
+  public final static native long getRun(long jarg1, LibraryInput jarg1_, int jarg2, String jarg3, double jarg4, boolean jarg5, boolean jarg6, boolean jarg7, int jarg8);
 
   public static void SwigDirector_CplexInformer_updateStatus__SWIG_0(CplexInformer jself, int state) {
     jself.updateStatus(YoshikoState.swigToEnum(state));
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/ClusterCountChooser.java b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/ClusterCountChooser.java
index 24932a0..983a68b 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/ClusterCountChooser.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/ClusterCountChooser.java
@@ -34,7 +34,8 @@ public class ClusterCountChooser extends JPanel {
 
 	public ClusterCountChooser() {
 		//Swing Component init
-		numSolutionsSetter = new IntegerInputField();
+		numSolutionsSetter = new IntegerInputField(1,Integer.MAX_VALUE);
+		numSolutionsSetter.setValue(2);
 		label = new JLabel(LocalizationManager.get("nrClusters"));
 		SwingUtil.addAll(this,label, numSolutionsSetter);
 	}
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/IntegerInputField.java b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/IntegerInputField.java
index d7d3376..7b39fd0 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/IntegerInputField.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/IntegerInputField.java
@@ -34,12 +34,12 @@ public class IntegerInputField extends JFormattedTextField{
 
 	private final NumberFormatter formatter;
 
-//	public IntegerInputField(int minValue, int maxValue) {
-//		super();
-//		formatter = FormatHelper.getIntegerFormatter(minValue,maxValue);
-//		this.setFormatter(formatter);
-//		this.setColumns(8);
-//	}
+	public IntegerInputField(int minValue, int maxValue) {
+		super();
+		formatter = FormatHelper.getIntegerFormatter(minValue,maxValue);
+		this.setFormatter(formatter);
+		this.setColumns(8);
+	}
 
 	public IntegerInputField() {
 		super();
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/OperationModePanel.java b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/OperationModePanel.java
index 8a4287c..e49f4ae 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/OperationModePanel.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/OperationModePanel.java
@@ -108,7 +108,7 @@ public class OperationModePanel extends JPanel{
 
 		layout.setHorizontalGroup(layout.createParallelGroup(Alignment.LEADING,true)
 				.addComponent(useClusterCount, DEFAULT_SIZE, DEFAULT_SIZE, Short.MAX_VALUE)
-				.addComponent(ccChooser, DEFAULT_SIZE, DEFAULT_SIZE, Short.MAX_VALUE)
+				.addComponent(ccChooser, DEFAULT_SIZE, DEFAULT_SIZE, DEFAULT_SIZE)
 				.addComponent(useHeuristic, DEFAULT_SIZE, DEFAULT_SIZE, Short.MAX_VALUE)
 				.addComponent(useILP, DEFAULT_SIZE, DEFAULT_SIZE, Short.MAX_VALUE)
 				.addComponent(solutionNumberChooser, DEFAULT_SIZE, DEFAULT_SIZE, Short.MAX_VALUE)
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 4031bdf..1f252f9 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/tasks/AlgorithmTask.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/tasks/AlgorithmTask.java
@@ -163,6 +163,8 @@ public class AlgorithmTask extends AbstractTask implements ObservableTask, Tunab
 		//Set the default value for insertion cost
 		c_input.setDefaultInsertionCost(parameterSet.defaultInsertionCost);
 
+		System.out.print(parameterSet.toString()); //TODO: Move to debug logger
+
 		//Call Yoshiko <<< Algorithm is performed here
 		c_algorithm = LibraryInterface.getRun(c_input,
 				parameterSet.solCount,
-- 
GitLab