Browse Source

Implements Logging

Adds holeg package
TomTroppmann 2 years ago
parent
commit
e9575b31dc
100 changed files with 1034 additions and 1014 deletions
  1. 6 0
      .gitignore
  2. 26 0
      config/log.properties
  3. 0 270
      src/algorithm/objective_function/ObjectiveFunctionByCarlos.java
  4. 3 3
      src/holeg/adapter/AbstractCpsObjectAdapter.java
  5. 1 1
      src/holeg/adapter/PairAdapter.java
  6. 2 2
      src/holeg/adapter/PositionAdapter.java
  7. 11 11
      src/holeg/addon/InformationPanel.java
  8. 11 8
      src/holeg/addon/RandomOfferdFlexibility.java
  9. 4 4
      src/holeg/addon/RandomSwitch.java
  10. 11 14
      src/holeg/addon/Randomizer.java
  11. 2 2
      src/holeg/addon/helper/EmailNotification.java
  12. 1 1
      src/holeg/addon/helper/FlexibilitySketch.java
  13. 7 7
      src/holeg/addon/helper/HolonElementSketch.java
  14. 8 6
      src/holeg/addon/helper/RandomPriotity.java
  15. 4 3
      src/holeg/algorithm/binary/AcoAlgorithm.java
  16. 13 12
      src/holeg/algorithm/binary/BaseLine.java
  17. 3 2
      src/holeg/algorithm/binary/GaAlgorithm.java
  18. 3 2
      src/holeg/algorithm/binary/PsoAlgorithm.java
  19. 10 10
      src/holeg/algorithm/example/DemoAlgo.java
  20. 17 16
      src/holeg/algorithm/example/FlexExample.java
  21. 8 9
      src/holeg/algorithm/objective_function/Evaluation.java
  22. 17 37
      src/holeg/algorithm/objective_function/GraphMetrics.java
  23. 244 0
      src/holeg/algorithm/objective_function/ObjectiveFunctionByCarlos.java
  24. 3 3
      src/holeg/algorithm/objective_function/SwitchObjectiveFunction.java
  25. 32 35
      src/holeg/algorithm/objective_function/TopologieObjectiveFunction.java
  26. 5 5
      src/holeg/algorithm/topologie/AcoAlgorithm.java
  27. 5 5
      src/holeg/algorithm/topologie/GaAlgorithm.java
  28. 6 6
      src/holeg/algorithm/topologie/PsoAlgorithm.java
  29. 2 2
      src/holeg/api/AddOn.java
  30. 22 22
      src/holeg/api/AlgorithmFrameworkFlex.java
  31. 17 17
      src/holeg/api/TopologieAlgorithmFramework.java
  32. 8 8
      src/holeg/connect/ConnectHandheld.java
  33. 8 8
      src/holeg/connect/ConnectPhysical.java
  34. 6 6
      src/holeg/connect/socket/Server.java
  35. 2 2
      src/holeg/interfaces/GraphEditable.java
  36. 1 1
      src/holeg/interfaces/LocalMode.java
  37. 1 1
      src/holeg/interfaces/TimelineDependent.java
  38. 4 4
      src/holeg/model/AbstractCanvasObject.java
  39. 1 1
      src/holeg/model/Constrain.java
  40. 1 1
      src/holeg/model/Edge.java
  41. 1 1
      src/holeg/model/Flexibility.java
  42. 1 1
      src/holeg/model/GroupNode.java
  43. 8 7
      src/holeg/model/HolonElement.java
  44. 1 1
      src/holeg/model/HolonObject.java
  45. 6 5
      src/holeg/model/HolonSwitch.java
  46. 1 1
      src/holeg/model/Node.java
  47. 3 3
      src/holeg/preferences/ColorPreference.java
  48. 2 2
      src/holeg/ui/controller/AutoSaveController.java
  49. 11 11
      src/holeg/ui/controller/CanvasController.java
  50. 8 9
      src/holeg/ui/controller/CategoryController.java
  51. 9 9
      src/holeg/ui/controller/ClipboardController.java
  52. 13 13
      src/holeg/ui/controller/Control.java
  53. 3 3
      src/holeg/ui/controller/GlobalController.java
  54. 3 3
      src/holeg/ui/controller/IndexTranslator.java
  55. 9 8
      src/holeg/ui/controller/LoadController.java
  56. 8 7
      src/holeg/ui/controller/MultiPurposeController.java
  57. 7 8
      src/holeg/ui/controller/NodeController.java
  58. 6 7
      src/holeg/ui/controller/ObjectController.java
  59. 7 8
      src/holeg/ui/controller/SaveController.java
  60. 90 79
      src/holeg/ui/controller/SimulationManager.java
  61. 2 2
      src/holeg/ui/model/Consumer.java
  62. 7 7
      src/holeg/ui/model/DecoratedGroupNode.java
  63. 2 2
      src/holeg/ui/model/DecoratedHolonObject.java
  64. 7 6
      src/holeg/ui/model/DecoratedNetwork.java
  65. 3 3
      src/holeg/ui/model/DecoratedState.java
  66. 2 2
      src/holeg/ui/model/DecoratedSwitch.java
  67. 3 3
      src/holeg/ui/model/ExitCable.java
  68. 1 1
      src/holeg/ui/model/IdCounter.java
  69. 4 4
      src/holeg/ui/model/IntermediateCalculationCable.java
  70. 7 7
      src/holeg/ui/model/MinimumModel.java
  71. 4 4
      src/holeg/ui/model/MinimumNetwork.java
  72. 18 15
      src/holeg/ui/model/Model.java
  73. 2 2
      src/holeg/ui/model/Passiv.java
  74. 2 2
      src/holeg/ui/model/Supplier.java
  75. 7 7
      src/holeg/ui/model/VisualRepresentationalState.java
  76. 10 10
      src/holeg/ui/view/canvas/AbstractCanvas.java
  77. 26 23
      src/holeg/ui/view/canvas/Canvas.java
  78. 20 20
      src/holeg/ui/view/canvas/GroupNodeCanvas.java
  79. 1 1
      src/holeg/ui/view/component/ButtonTabComponent.java
  80. 2 2
      src/holeg/ui/view/component/Console.java
  81. 1 1
      src/holeg/ui/view/component/TrippleCheckBox.java
  82. 2 2
      src/holeg/ui/view/dialog/AboutUsPopUp.java
  83. 5 5
      src/holeg/ui/view/dialog/AddElementPopUp.java
  84. 7 7
      src/holeg/ui/view/dialog/AddObjectPopUp.java
  85. 6 7
      src/holeg/ui/view/dialog/BackgroundPopUp.java
  86. 9 8
      src/holeg/ui/view/dialog/CanvasResizePopUp.java
  87. 3 3
      src/holeg/ui/view/dialog/CreateNewDialog.java
  88. 7 7
      src/holeg/ui/view/dialog/CreateTemplatePopUp.java
  89. 4 4
      src/holeg/ui/view/dialog/EditEdgesPopUp.java
  90. 4 4
      src/holeg/ui/view/dialog/SearchPopUp.java
  91. 14 14
      src/holeg/ui/view/information/FilterableGroupNode.java
  92. 16 16
      src/holeg/ui/view/information/HolonInformationPanel.java
  93. 9 9
      src/holeg/ui/view/inspector/Inspector.java
  94. 14 14
      src/holeg/ui/view/inspector/InspectorTable.java
  95. 9 9
      src/holeg/ui/view/inspector/UnitGraph.java
  96. 3 3
      src/holeg/ui/view/inspector/UnitGraphPoint.java
  97. 2 2
      src/holeg/ui/view/main/Category.java
  98. 32 32
      src/holeg/ui/view/main/GUI.java
  99. 19 6
      src/holeg/ui/view/main/Main.java
  100. 5 5
      src/holeg/ui/view/main/TimePanel.java

+ 6 - 0
.gitignore

@@ -2,6 +2,12 @@ build/
 .gradle/
 target/
 
+# logging
+*.log
+*.lck
+
+
+
 # Created by:
 # https://www.gitignore.io/api/eclipse
 # https://www.gitignore.io/api/intellij

+ 26 - 0
config/log.properties

@@ -0,0 +1,26 @@
+handlers = java.util.logging.FileHandler, java.util.logging.ConsoleHandler
+.level = ALL
+
+java.util.logging.FileHandler.level     = ALL
+java.util.logging.FileHandler.filter    =
+java.util.logging.FileHandler.formatter =
+java.util.logging.FileHandler.encoding  =
+java.util.logging.FileHandler.limit     =
+java.util.logging.FileHandler.count     =
+java.util.logging.FileHandler.append    = false
+java.util.logging.FileHandler.pattern   = all.%u.%g.log
+
+java.util.logging.ConsoleHandler.level     = ALL
+java.util.logging.ConsoleHandler.filter    =
+java.util.logging.ConsoleHandler.formatter =
+java.util.logging.ConsoleHandler.encoding  =
+
+
+
+# 
+holeg.level = INFO
+holeg.ui.level = FINE
+# Disable Swing and Awt Logging
+java.awt.level  = OFF
+sun.awt.level = OFF
+javax.swing.level = OFF

+ 0 - 270
src/algorithm/objective_function/ObjectiveFunctionByCarlos.java

@@ -1,270 +0,0 @@
-package algorithm.objective_function;
-
-import java.util.List;
-
-import model.Flexibility;
-import model.Flexibility.FlexState;
-import model.HolonElement.Priority;
-import ui.model.DecoratedNetwork;
-import ui.model.DecoratedState;
-
-public class ObjectiveFunctionByCarlos {
-	//Parameters
-	
-	//weight for f_g(H)
-	static double w_eb = .3, w_state = .3, w_pro = .2, w_perf = .1, w_holon=.1;
-	//killswitch weights
-	//static double w_eb = 0.5, w_state = 0.5, w_pro = 0.0f, w_perf = .0, w_holon=.0;
-	
-	//kappas for squashing function
-//	
-	//static double k_eb = 1050000.f, k_state = 10000, k_pro = 2000, k_perf = 11000, k_holon= 150000;
-//  oversupplied
-	static double k_eb = 750000.f, k_state = 20000, k_pro = 3000, k_perf = 15000, k_holon= 200000;
-	
-//	old values undersupplied 
-//	static double k_eb = 1000000.f, k_state = 15000, k_pro = 2100, k_perf = 12000, k_holon= 200000;
-	
-	//theta for f_pro
-	static double theta = 3;
-	
-	//kappas for f_perf:
-	static double kappa_f_unre = 120;
-	static double kappa_f_cool = 60*60*24;
-	static double kappa_f_dur = 60*60;
-	
-	//lambdas for f_perf:
-	static double lambda_f_unre = 10;
-	static double lambda_f_cool = 10;
-	static double lambda_f_dur = 10;
-	
-	static double lambda_f_change = 1000;
-	
-	
-	
-	//pre-calculated parameters for partial function terms:
-	/** 
-	 * Pre calculated for the squash function
-	 * <br>
-	 *  {@link ObjectiveFunctionByCarlos#squash}
-	 */
-	static double squash_subtract = 100.f / (1.f + (float) Math.exp(5.0));
-	static double range_for_kappa_f_unre = range(kappa_f_unre);
-	static double range_for_kappa_f_cool = range(kappa_f_cool);
-	static double range_for_kappa_f_dur = range(kappa_f_dur);
-	
-	
-	public static void main(String[] args) {
-		System.out.println("Hello World");
-		System.out.println("range_for_kappa_f_unre:" + range_for_kappa_f_unre);
-		double input = 0;
-		System.out.println(input + ": " + durationPenalty(input));
-		input = 60;
-		System.out.println(input + ": " + durationPenalty(input));
-		input = 1000;
-		System.out.println(input + ": " + durationPenalty(input));
-		input = 3600;
-		System.out.println(input + ": " + durationPenalty(input));
-	}
-	static {
-        //init
-		checkParameter();
-    }
-	
-	/**
-	 * Check parameter Setting and print error when wrong values are put in.
-	 * Here should all invariants be placed to be checked on initialization.
-	 */
-	private static void checkParameter() {
-		if(!(Math.abs(w_eb + w_state + w_pro + w_perf + w_holon - 1) < 0.001)) {
-			System.err.println("ParameterError in ObjectiveFunction: w1 + w2 + w3 + w4 + w5 should be 1");
-		}
-	}
-	
-	/**
-	 * ObjectifeFunction by Carlos.
-	 * Function computes f_g:
-	 * f_g = w1 * squash(f_eb, k1) + w2 * squash(f_state, k2) + w3 * squash(f_pro, k3) + w4 * squash(f_perf, k4) + w5 * squash(f_holon, k5) 
-	 * 
-	 * 
-	 * squash is the squashing function {@link ObjectiveFunctionByCarlos#squash}
-	 * 
-	 * 
-	 * @param state
-	 * @return f_g value between 0 and 100
-	 */
-	static public double getFitnessValueForState(DecoratedState state) {
-		
-		//Calculate f_eb the penalty for unbalenced energy in the network
-		double f_eb = 0;
-		//sum over all objects
-		for(DecoratedNetwork net : state.getNetworkList()) {
-			double netEnergyDifference = 0;
-			netEnergyDifference += net.getConsumerList().stream().map(con -> con.getEnergySelfSupplied() - con.getEnergyFromConsumingElemnets()).reduce(0.f, Float::sum);
-			netEnergyDifference += net.getConsumerSelfSuppliedList().stream().map(con -> con.getEnergySelfSupplied() - con.getEnergyFromConsumingElemnets()).reduce(0.f, Float::sum);
-			netEnergyDifference += net.getSupplierList().stream().map(sup -> sup.getEnergyProducing() - sup.getEnergySelfConsuming()).reduce(0.f, Float::sum);
-			//abs
-			f_eb += Math.abs(netEnergyDifference);
-		}
-		
-		//Calculate f_state the penalty function for the supply state
-		double f_state = 0;
-		for(DecoratedNetwork net : state.getNetworkList()) {
-			f_state += net.getConsumerList().stream().map(con -> supplyPenalty(con.getSupplyBarPercentage())).reduce(0., Double::sum);
-		}
-		
-		//calculate f_pro the penalty function for priority usage 
-		// for each active flexibility punish
-		
-		List<Flexibility> allFlexOrdered = state.getAllFlex().filter(flex -> flex.getState().equals(FlexState.IN_USE)).toList();
-		double f_pro = 0;
-		f_pro = allFlexOrdered.stream().map(flex -> Math.pow(theta, priorityToDouble(flex.getElement().getPriority()) ) - 1.0).reduce(0.0, Double::sum);
-		
-		//calculate f_perf the penalty function for the quality of a flexibility used
-		
-		// and the subfuction f_unre, f_cool, f_dur
-		double f_perf = 0;
-		for(Flexibility flex : allFlexOrdered) {
-			double f_unre =  unresponsivnessPenalty(flex.getSpeed());
-			double f_cool = cooldownPenalty(flex.getCooldown());
-			double f_dur = durationPenalty(flex.getDuration());
-			f_perf += f_unre + f_cool + f_dur;
-		}
-		
-		//calculate f_holon
-		double f_holon = 0;
-		for(DecoratedNetwork net : state.getNetworkList()) {
-			double f_elements_diviation_production = net.getDeviationInProductionInNetworkForHolonObjects();
-			double f_elements_diviation_consumption = net.getDeviationInProductionInNetworkForHolonObjects();
-			double f_flexibility_diviation_consumption = net.getDiviationInFlexibilityConsumption();
-			double f_flexibility_diviation_production = net.getDiviationInFlexibilityProduction();
-			
-			
-			double con = net.getTotalConsumption();
-			double prod = net.getTotalProduction();
-			double flexcapProd = net.getFlexibilityProductionCapacity();
-			double flexcapCon = net.getFlexibilityConsumptionCapacity();
-			double f_change_positive = lambda_f_change - lambda_f_change * Math.min(1, (con > 0.0)?  flexcapProd / con : 1.0 );
-			double f_change_negativ = lambda_f_change - lambda_f_change * Math.min(1, (prod > 0.0)? flexcapCon / prod: 1.0);
-			
-			
-			
-
-			
-			double f_element = f_elements_diviation_production +f_elements_diviation_consumption;
-			double f_flexibility = f_flexibility_diviation_consumption +f_flexibility_diviation_production;
-			double f_change = f_change_positive + f_change_negativ;
-			
-			f_holon += f_element + f_flexibility + f_change;
-//			System.out.print( "f_element=" + doubleToString(f_element));
-//			System.out.print( " f_flexibility=" + doubleToString(f_flexibility));
-//			System.out.println( " f_change=" + doubleToString(f_change));
-//			System.out.print( "f+elements=" + doubleToString(f_elements_diviation_production));
-//			System.out.print( " f-elements=" + doubleToString(f_elements_diviation_consumption));
-//			System.out.print( " f+flexibility" + doubleToString(f_flexibility_diviation_consumption));
-//			System.out.print( " f-flexibility" + doubleToString(f_flexibility_diviation_production));
-//			System.out.print( " f+change(" +  doubleToString(flexcapProd) + "/" + doubleToString(con) + ")=" + doubleToString(f_change_positive));
-//			System.out.print( " f-change(" +  doubleToString(flexcapCon) + "/" + doubleToString(prod) + ")="+ doubleToString(f_change_negativ));
-//			System.out.println( " sum=" + doubleToString(sum));
-		}
-		
-		
-		
-		
-//		System.out.print( "f_ebVALUE=" + f_eb);
-//		System.out.print( " f_state=" + f_state);
-//		System.out.print( " f_pro=" + f_pro);
-//		System.out.print( " f_perf=" + f_perf);
-//		System.out.println( " f_holon=" + f_holon);
-		double q1 = squash(f_eb, k_eb);
-		double q2 = squash(f_state, k_state);
-		double q3 = squash(f_pro, k_pro);
-		double q4 = squash(f_perf, k_perf);
-		double q5 = squash(f_holon, k_holon);
-//		System.out.print( "f_eb=" + q1);
-//		System.out.print( " f_state=" + q2);
-//		System.out.println( " f_pro=" + q3);
-//		System.out.println( " f_perf=" + q4);
-//		System.out.println( " f_holon=" + q5);
-//		
-		return  w_eb * q1 + w_state * q2 + w_pro * q3 + w_perf * q4 + w_holon * q5;
-		//return (float) (f_eb + f_state + f_pro + f_perf + f_holon);
-	}
-
-	
-	
-	
-	
-	
-	/**
-	 * The squashing function in paper
-	 * @param x the input
-	 * @param kappa the corresponding kappa
-	 * @return
-	 */
-	static public double squash(double x, double kappa) {
-		return 100.f/(1.0f + Math.exp(-(10.f * (x - kappa/2.f))/ kappa)) - squash_subtract;
-	}
-	
-	/**
-	 * f_sup in paper
-	 * @param supply from 0 to 1
-	 * @return
-	 */
-	static public double supplyPenalty(double supply) {
-		double supplyPercentage = 100 * supply;
-		//	double test = (supplyPercentage < 100) ? -0.5 * supplyPercentage + 50: supplyPercentage - 100;
-		return (supplyPercentage < 100) ? -0.5 * supplyPercentage + 50: supplyPercentage - 100;
-	}
-	
-	/**
-	 * prio function in the paper
-	 * @param priority
-	 * @return
-	 */
-	private static double priorityToDouble(Priority priority) {
-		switch(priority) {
-		case Essential:
-			return 3.;
-		case High:
-			return 2.;
-		case Medium:
-			return 1.;
-		case Low:
-		default:		
-			return 0.;
-		}
-	}
-	
-	/**
-	 * Attention Math.log calcultae ln not log
-	 * @param kappa
-	 * @return
-	 */
-	private static double range(double kappa) {
-		return - kappa / Math.log(Math.pow(2.0, 0.05) - 1.0 );
-	}
-	/**
-	 * f_unre
-	 * @param unresponsiv
-	 * @return
-	 */
-	private static double unresponsivnessPenalty(double unresponsiv) {
-		return (2.0 * lambda_f_unre) / (1 + Math.exp(- unresponsiv/ range_for_kappa_f_unre)) - lambda_f_unre;
-	}
-	/**
-	 * f_cool
-	 * @param cooldown
-	 * @return
-	 */
-	private static double cooldownPenalty(double cooldown) {
-		return (2.0 * lambda_f_cool) / (1 + Math.exp(- cooldown/ range_for_kappa_f_cool)) - lambda_f_cool;
-	}
-
-	
-	private static double durationPenalty(double duration) {
-		double lambda_dur_times2 = 2.0 * lambda_f_dur;
-		return - lambda_dur_times2 / (1 + Math.exp(- duration/ range_for_kappa_f_dur)) + lambda_dur_times2;
-	}
-
-}

+ 3 - 3
src/adapter/AbstractCpsObjectAdapter.java → src/holeg/adapter/AbstractCpsObjectAdapter.java

@@ -1,4 +1,4 @@
-package adapter;
+package holeg.adapter;
 
 import java.lang.reflect.Type;
 
@@ -11,8 +11,8 @@ import com.google.gson.JsonPrimitive;
 import com.google.gson.JsonSerializationContext;
 import com.google.gson.JsonSerializer;
 
-import model.AbstractCanvasObject;
-import model.GroupNode;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.GroupNode;
 
 public class AbstractCpsObjectAdapter
 		implements JsonSerializer<AbstractCanvasObject>, JsonDeserializer<AbstractCanvasObject> {

+ 1 - 1
src/adapter/PairAdapter.java → src/holeg/adapter/PairAdapter.java

@@ -1,4 +1,4 @@
-package adapter;
+package holeg.adapter;
 
 import java.lang.reflect.Type;
 import java.util.AbstractMap.SimpleEntry;

+ 2 - 2
src/adapter/PositionAdapter.java → src/holeg/adapter/PositionAdapter.java

@@ -1,4 +1,4 @@
-package adapter;
+package holeg.adapter;
 
 import java.lang.reflect.Type;
 
@@ -9,7 +9,7 @@ import com.google.gson.JsonPrimitive;
 import com.google.gson.JsonSerializationContext;
 import com.google.gson.JsonSerializer;
 
-import utility.Vector2Int;
+import holeg.utility.Vector2Int;
 
 public class PositionAdapter implements JsonSerializer<Vector2Int>, JsonDeserializer<Vector2Int> {
 

+ 11 - 11
src/addon/InformationPanel.java → src/holeg/addon/InformationPanel.java

@@ -1,4 +1,4 @@
-package addon;
+package holeg.addon;
 
 import java.awt.BorderLayout;
 import java.awt.Dimension;
@@ -21,16 +21,16 @@ import javax.swing.JScrollPane;
 import javax.swing.JSeparator;
 import javax.swing.JTextField;
 
-import api.AddOn;
-import model.Flexibility;
-import model.Flexibility.FlexState;
-import model.HolonElement;
-import model.HolonElement.Priority;
-import ui.controller.Control;
-import ui.model.DecoratedHolonObject.HolonObjectState;
-import ui.model.DecoratedState;
-import ui.model.DecoratedSwitch.SwitchState;
-import ui.model.VisualRepresentationalState;
+import holeg.api.AddOn;
+import holeg.model.Flexibility;
+import holeg.model.HolonElement;
+import holeg.model.Flexibility.FlexState;
+import holeg.model.HolonElement.Priority;
+import holeg.ui.controller.Control;
+import holeg.ui.model.DecoratedState;
+import holeg.ui.model.VisualRepresentationalState;
+import holeg.ui.model.DecoratedHolonObject.HolonObjectState;
+import holeg.ui.model.DecoratedSwitch.SwitchState;
 
 public class InformationPanel implements AddOn {
 	Control control;

+ 11 - 8
src/addon/RandomOfferdFlexibility.java → src/holeg/addon/RandomOfferdFlexibility.java

@@ -1,4 +1,4 @@
-package addon;
+package holeg.addon;
 
 import java.awt.BorderLayout;
 import java.awt.ComponentOrientation;
@@ -14,6 +14,7 @@ import java.util.Hashtable;
 import java.util.List;
 import java.util.Locale;
 import java.util.Random;
+import java.util.logging.Logger;
 import java.util.stream.Collectors;
 
 import javax.swing.BorderFactory;
@@ -25,11 +26,12 @@ import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JSlider;
 import javax.swing.text.NumberFormatter;
-import api.AddOn;
-import model.Flexibility;
-import model.Flexibility.FlexState;
-import model.HolonElement.Priority;
-import ui.controller.Control;
+
+import holeg.api.AddOn;
+import holeg.model.Flexibility;
+import holeg.model.Flexibility.FlexState;
+import holeg.model.HolonElement.Priority;
+import holeg.ui.controller.Control;
 
 /**
  * A short algorithm to distribute the Priorities for the whole Canvas.
@@ -39,6 +41,7 @@ import ui.controller.Control;
 
 
 public class RandomOfferdFlexibility implements AddOn {
+	private static final Logger LOGGER = Logger.getLogger(RandomOfferdFlexibility.class.getName());
 	
 	
 	
@@ -175,9 +178,9 @@ public class RandomOfferdFlexibility implements AddOn {
 		low.offer.negative.maximumOffered = low.offer.negative.actualOffered = 2000;
 		double distribution = 0.8; 
 		low.offer.updateTarget(distribution);
-		System.out.println("distribution:" + distribution + " Positive:" + low.offer.positive.targetOffered
+		LOGGER.info("distribution:" + distribution + " Positive:" + low.offer.positive.targetOffered
 				+ " Negative:" + low.offer.negative.targetOffered);
-		System.out.println("actualDistribution:" + low.offer.getActualProportion());
+		LOGGER.info("actualDistribution:" + low.offer.getActualProportion());
 		
 		
 		content.setLayout(new BorderLayout());

+ 4 - 4
src/addon/RandomSwitch.java → src/holeg/addon/RandomSwitch.java

@@ -1,4 +1,4 @@
-package addon;
+package holeg.addon;
 
 import java.awt.BorderLayout;
 import java.awt.Dimension;
@@ -11,9 +11,9 @@ import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JSlider;
 
-import api.AddOn;
-import model.HolonSwitch;
-import ui.controller.Control;
+import holeg.api.AddOn;
+import holeg.model.HolonSwitch;
+import holeg.ui.controller.Control;
 
 public class RandomSwitch implements AddOn {
 	private double  randomChance = 0.5;

+ 11 - 14
src/addon/Randomizer.java → src/holeg/addon/Randomizer.java

@@ -1,4 +1,4 @@
-package addon;
+package holeg.addon;
 
 import java.awt.BorderLayout;
 import java.awt.Dimension;
@@ -37,16 +37,16 @@ import com.google.gson.JsonIOException;
 import com.google.gson.JsonParser;
 import com.google.gson.JsonSyntaxException;
 
-import addon.helper.HolonElementSketch;
-import addon.helper.RandomPriotity;
-import api.AddOn;
-import model.AbstractCanvasObject;
-import model.GroupNode;
-import model.HolonElement;
-import model.HolonObject;
-import ui.controller.Control;
-import utility.ImageImport;
-import utility.Random;
+import holeg.addon.helper.HolonElementSketch;
+import holeg.addon.helper.RandomPriotity;
+import holeg.api.AddOn;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.GroupNode;
+import holeg.model.HolonElement;
+import holeg.model.HolonObject;
+import holeg.ui.controller.Control;
+import holeg.utility.ImageImport;
+import holeg.utility.Random;
 
 public class Randomizer implements AddOn {
 	private Control  control;
@@ -145,7 +145,6 @@ public class Randomizer implements AddOn {
 			checkbox.setSelected(true);
 			checkbox.addItemListener(change -> {
 				objectMap.put(hObject, checkbox.isSelected());
-				System.out.println("hObject:" + hObject + " changed to " + checkbox.isSelected());
 			});
 			checkboxList.add(checkbox);
 			entryPanel.add(checkbox);
@@ -312,8 +311,6 @@ public class Randomizer implements AddOn {
 				JsonArray jsonArray = jsonTreeRoot.getAsJsonArray();
 				jsonArray.forEach(jsonObject -> {
 					HolonElementSketch newObject= gson.fromJson( jsonObject, HolonElementSketch.class);
-					System.out.println(gson.toJson(newObject));
-					
 					catalog.add(newObject);
 				});
 			}	

+ 2 - 2
src/addon/helper/EmailNotification.java → src/holeg/addon/helper/EmailNotification.java

@@ -1,4 +1,4 @@
-package addon.helper;
+package holeg.addon.helper;
 import java.awt.BorderLayout;
 import java.awt.ComponentOrientation;
 import java.awt.Dimension;
@@ -16,7 +16,7 @@ import javax.swing.JTextField;
 
 import org.apache.commons.mail.*;
 
-import utility.ImageImport;
+import holeg.utility.ImageImport;
 
 
 public class EmailNotification {

+ 1 - 1
src/addon/helper/FlexibilitySketch.java → src/holeg/addon/helper/FlexibilitySketch.java

@@ -1,4 +1,4 @@
-package addon.helper;
+package holeg.addon.helper;
 
 public class FlexibilitySketch{
 	public double flexChance;

+ 7 - 7
src/addon/helper/HolonElementSketch.java → src/holeg/addon/helper/HolonElementSketch.java

@@ -1,11 +1,11 @@
-package addon.helper;
+package holeg.addon.helper;
 
-import model.Constrain;
-import model.Flexibility;
-import model.HolonElement;
-import model.HolonObject;
-import model.HolonElement.Priority;
-import utility.Random;
+import holeg.model.Constrain;
+import holeg.model.Flexibility;
+import holeg.model.HolonElement;
+import holeg.model.HolonObject;
+import holeg.model.HolonElement.Priority;
+import holeg.utility.Random;
 
 public class HolonElementSketch {
 	//HolonElement

+ 8 - 6
src/addon/helper/RandomPriotity.java → src/holeg/addon/helper/RandomPriotity.java

@@ -1,6 +1,7 @@
-package addon.helper;
+package holeg.addon.helper;
 
 import java.util.Hashtable;
+import java.util.logging.Logger;
 
 import javax.swing.BorderFactory;
 import javax.swing.BoxLayout;
@@ -8,9 +9,10 @@ import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JSlider;
 
-import model.HolonElement.Priority;
+import holeg.model.HolonElement.Priority;
 
 public class RandomPriotity extends JPanel{
+	private static final Logger LOGGER = Logger.getLogger("holeg");
 	/**
 	 * Its like a Gradient the Values are on one Axis from Start to End:
 	 * |--start--lm--mh--he--end--|
@@ -41,27 +43,27 @@ public class RandomPriotity extends JPanel{
 			setLM(lowChanceSlider.getValue());
 			updateSliders();
 			lowChanceSlider.setToolTipText("" +((double)lowChanceSlider.getValue()/ 100.0));
-			System.out.println("lowChance = " +lowChanceSlider.getValue());
+			LOGGER.info("lowChance = " +lowChanceSlider.getValue());
 		});
 		mediumChanceSlider.addChangeListener(actionEvent ->{
 			if(lm + mediumChanceSlider.getValue() <= 100) setMH(lm + mediumChanceSlider.getValue());
 			else setLM(end - mediumChanceSlider.getValue());
 			updateSliders();
 			mediumChanceSlider.setToolTipText("" +((double)mediumChanceSlider.getValue()/ 100.0));
-			System.out.println("mediumChance = " +  mediumChanceSlider.getValue());
+			LOGGER.info("mediumChance = " +  mediumChanceSlider.getValue());
 		});
 		highChanceSlider.addChangeListener(actionEvent ->{
 			if(mh + highChanceSlider.getValue() <= 100) setHE(mh + highChanceSlider.getValue());
 			else setMH(end - highChanceSlider.getValue());
 			updateSliders();
 			highChanceSlider.setToolTipText("" +((double)highChanceSlider.getValue()/ 100.0));
-			System.out.println("highChance = " +highChanceSlider.getValue());
+			LOGGER.info("highChance = " +highChanceSlider.getValue());
 		});
 		essentialChanceSlider.addChangeListener(actionEvent ->{
 			setHE(end - essentialChanceSlider.getValue());
 			updateSliders();
 			essentialChanceSlider.setToolTipText("" +((double)essentialChanceSlider.getValue()/ 100.0));
-			System.out.println("essentialChance = " +essentialChanceSlider.getValue());
+			LOGGER.info("essentialChance = " +essentialChanceSlider.getValue());
 		});
 	}
 

+ 4 - 3
src/algorithm/binary/AcoAlgorithm.java → src/holeg/algorithm/binary/AcoAlgorithm.java

@@ -1,12 +1,13 @@
-package algorithm.binary;
+package holeg.algorithm.binary;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.ListIterator;
 
 import javax.swing.JFrame;
-import api.AlgorithmFrameworkFlex;
-import utility.FormatFloat;
+
+import holeg.api.AlgorithmFrameworkFlex;
+import holeg.utility.FormatFloat;
 
 public class AcoAlgorithm extends AlgorithmFrameworkFlex{
 	

+ 13 - 12
src/algorithm/binary/BaseLine.java → src/holeg/algorithm/binary/BaseLine.java

@@ -1,4 +1,4 @@
-package algorithm.binary;
+package holeg.algorithm.binary;
 
 import java.awt.BorderLayout;
 import java.awt.Component;
@@ -22,17 +22,18 @@ import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JSplitPane;
 import javax.swing.JTextArea;
-import api.AddOn;
-import model.AbstractCanvasObject;
-import model.GroupNode;
-import model.HolonElement;
-import model.HolonObject;
-import model.HolonSwitch;
-import ui.controller.Control;
-import ui.model.Model;
-import ui.model.DecoratedGroupNode;
-import ui.model.DecoratedNetwork;
-import ui.model.DecoratedState;
+
+import holeg.api.AddOn;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.GroupNode;
+import holeg.model.HolonElement;
+import holeg.model.HolonObject;
+import holeg.model.HolonSwitch;
+import holeg.ui.controller.Control;
+import holeg.ui.model.DecoratedGroupNode;
+import holeg.ui.model.DecoratedNetwork;
+import holeg.ui.model.DecoratedState;
+import holeg.ui.model.Model;
 
 
 

+ 3 - 2
src/algorithm/binary/GaAlgorithm.java → src/holeg/algorithm/binary/GaAlgorithm.java

@@ -1,4 +1,4 @@
-package algorithm.binary;
+package holeg.algorithm.binary;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -6,7 +6,8 @@ import java.util.ListIterator;
 import java.util.TreeSet;
 
 import javax.swing.JFrame;
-import api.AlgorithmFrameworkFlex;
+
+import holeg.api.AlgorithmFrameworkFlex;
 
 public class GaAlgorithm extends AlgorithmFrameworkFlex{
 

+ 3 - 2
src/algorithm/binary/PsoAlgorithm.java → src/holeg/algorithm/binary/PsoAlgorithm.java

@@ -1,4 +1,4 @@
-package algorithm.binary;
+package holeg.algorithm.binary;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -6,7 +6,8 @@ import java.util.TreeSet;
 import java.util.stream.Collectors;
 
 import javax.swing.JFrame;
-import api.AlgorithmFrameworkFlex;
+
+import holeg.api.AlgorithmFrameworkFlex;
 
 public class PsoAlgorithm extends AlgorithmFrameworkFlex{
 	//Parameter for Algo with default Values:

+ 10 - 10
src/algorithm/example/DemoAlgo.java → src/holeg/algorithm/example/DemoAlgo.java

@@ -1,4 +1,4 @@
-package algorithm.example;
+package holeg.algorithm.example;
 
 import java.awt.BorderLayout;
 import java.awt.Component;
@@ -25,15 +25,15 @@ import javax.swing.JSplitPane;
 import javax.swing.JTextArea;
 import javax.swing.text.NumberFormatter;
 
-import api.AddOn;
-import model.AbstractCanvasObject;
-import model.GroupNode;
-import model.HolonElement;
-import model.HolonObject;
-import model.HolonSwitch;
-import ui.controller.Control;
-import ui.model.DecoratedGroupNode;
-import ui.model.Model;
+import holeg.api.AddOn;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.GroupNode;
+import holeg.model.HolonElement;
+import holeg.model.HolonObject;
+import holeg.model.HolonSwitch;
+import holeg.ui.controller.Control;
+import holeg.ui.model.DecoratedGroupNode;
+import holeg.ui.model.Model;
 
 public class DemoAlgo implements AddOn {
 

+ 17 - 16
src/algorithm/example/FlexExample.java → src/holeg/algorithm/example/FlexExample.java

@@ -1,4 +1,4 @@
-package algorithm.example;
+package holeg.algorithm.example;
 
 import java.awt.BorderLayout;
 import java.awt.Component;
@@ -26,21 +26,22 @@ import javax.swing.JScrollPane;
 import javax.swing.JSplitPane;
 import javax.swing.JTextArea;
 import javax.swing.text.NumberFormatter;
-import api.AddOn;
-import model.AbstractCanvasObject;
-import model.Flexibility;
-import model.GroupNode;
-import model.HolonElement;
-import model.HolonObject;
-import model.HolonSwitch;
-import model.Flexibility.FlexState;
-import model.HolonElement.Priority;
-import ui.controller.Control;
-import ui.model.DecoratedGroupNode;
-import ui.model.DecoratedNetwork;
-import ui.model.DecoratedState;
-import ui.model.Model;
-import ui.model.DecoratedHolonObject.HolonObjectState;
+
+import holeg.api.AddOn;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.Flexibility;
+import holeg.model.GroupNode;
+import holeg.model.HolonElement;
+import holeg.model.HolonObject;
+import holeg.model.HolonSwitch;
+import holeg.model.Flexibility.FlexState;
+import holeg.model.HolonElement.Priority;
+import holeg.ui.controller.Control;
+import holeg.ui.model.DecoratedGroupNode;
+import holeg.ui.model.DecoratedNetwork;
+import holeg.ui.model.DecoratedState;
+import holeg.ui.model.Model;
+import holeg.ui.model.DecoratedHolonObject.HolonObjectState;
 
 public class FlexExample implements AddOn {
 		

+ 8 - 9
src/algorithm/objective_function/Evaluation.java → src/holeg/algorithm/objective_function/Evaluation.java

@@ -1,14 +1,14 @@
-package algorithm.objective_function;
+package holeg.algorithm.objective_function;
 
-import ui.model.DecoratedNetwork;
-import ui.model.DecoratedState;
-import model.HolonObject;
-import model.Flexibility.FlexState;
 import java.util.List;
 
-import model.Flexibility;
-import model.HolonElement.Priority;
-import ui.model.DecoratedHolonObject.HolonObjectState;
+import holeg.model.Flexibility;
+import holeg.model.HolonObject;
+import holeg.model.Flexibility.FlexState;
+import holeg.model.HolonElement.Priority;
+import holeg.ui.model.DecoratedNetwork;
+import holeg.ui.model.DecoratedState;
+import holeg.ui.model.DecoratedHolonObject.HolonObjectState;
 
 public class Evaluation {
 	
@@ -123,7 +123,6 @@ public class Evaluation {
 		else {
 			result = Math.pow(6,(Math.abs((100 - (supplyPercentage*100)))/50 + 2)) - Math.pow(6, 2);
 		}
-		if(result > 1000)System.out.println("supplyPenalty(" + supplyPercentage + ")=" + result);
 		
 		return result;
 	}

+ 17 - 37
src/algorithm/objective_function/GraphMetrics.java → src/holeg/algorithm/objective_function/GraphMetrics.java

@@ -1,4 +1,4 @@
-package algorithm.objective_function;
+package holeg.algorithm.objective_function;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -7,19 +7,19 @@ import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map.Entry;
+import java.util.logging.Logger;
 
-import model.AbstractCanvasObject;
-import model.HolonSwitch;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.HolonSwitch;
+import holeg.ui.model.Consumer;
+import holeg.ui.model.DecoratedNetwork;
+import holeg.ui.model.Passiv;
+import holeg.ui.model.Supplier;
 
 import java.util.Set;
 
-import ui.model.Consumer;
-import ui.model.DecoratedNetwork;
-import ui.model.Passiv;
-import ui.model.Supplier;
-
 public class GraphMetrics {
-	
+	private static final Logger LOGGER = Logger.getLogger(GraphMetrics.class.getName());
 	
 	
 	public static class Vertex{
@@ -91,16 +91,16 @@ public class GraphMetrics {
 		
 		//Generate EdgeList 
 		List<Edge> edgeList = new ArrayList<Edge>();
-		for(model.Edge cable : net.getDecoratedCableList()){
+		for(holeg.model.Edge cable : net.getDecoratedCableList()){
 			
 			AbstractCanvasObject objectA = cable.getA();
 			AbstractCanvasObject objectB = cable.getB();
 			if(objectA == null) {
-				System.out.println("Edge: " + cable + "objectA == null");
+				LOGGER.warning("Edge: " + cable + "objectA == null");
 				continue;
 			}
 			if(objectB == null) {
-				System.out.println("Edge: " + cable + "objectB == null");
+				LOGGER.warning("Edge: " + cable + "objectB == null");
 				continue;
 			}
 			
@@ -173,10 +173,10 @@ public class GraphMetrics {
 		 G.S[1] = new Vertex(1);
 		 G.S[2] = new Vertex(2);
 		 G.S[3] = new Vertex(3);
-		 System.out.println(G);
-		 System.out.println("minimumCut: " + minimumCut(G.V, G.E));
-		 System.out.println("AvgShortestDistance " + averageShortestDistance(G));
-		 System.out.println("DisjointPath " + averageEdgeDisjointPathProblem(G));
+		 LOGGER.info(G.toString());
+		 LOGGER.info("minimumCut: " + minimumCut(G.V, G.E));
+		 LOGGER.info("AvgShortestDistance " + averageShortestDistance(G));
+		 LOGGER.info("DisjointPath " + averageEdgeDisjointPathProblem(G));
 	 }
 	 
 	 static int[][] generateDisjointWeightMatrix(Vertex[] V, Edge[] E){
@@ -428,26 +428,6 @@ public class GraphMetrics {
 		flag[source] = true;
 	}
 	
-	static void printMatrix(int[][] matrix) {
-		for(int i=0;i<matrix.length;i++)
-        {
-            for(int j=0;j<matrix.length;j++)
-            {
-                System.out.print(matrix[i][j] +  " ");
-            }
-            System.out.println();
-        }
-	}
-	static void printMatrix(double[][] matrix) {
-		for(int i=0;i<matrix.length;i++)
-        {
-            for(int j=0;j<matrix.length;j++)
-            {
-                System.out.print(matrix[i][j] +  " ");
-            }
-            System.out.println();
-        }
-	}
 	static double[][] generateWeightMatrix(Vertex[] V, Edge[] E){
 		double[][] L = new double[V.length][V.length];
 		for(int i = 0; i < E.length; i++) {
@@ -455,7 +435,7 @@ public class GraphMetrics {
 			L[E[i].idA][E[i].idB] = E[i].weight;
 			L[E[i].idB][E[i].idA] = E[i].weight;
 			}catch(java.lang.NullPointerException e) {
-				System.out.println("E[i].idA:" + E[i].idA + " E[i].idB:" + E[i].idB + " E[i].weight:" + E[i].weight);
+				LOGGER.info("E[i].idA:" + E[i].idA + " E[i].idB:" + E[i].idB + " E[i].weight:" + E[i].weight);
 			}
 		}
 		for(int i=0;i<L.length;i++)

+ 244 - 0
src/holeg/algorithm/objective_function/ObjectiveFunctionByCarlos.java

@@ -0,0 +1,244 @@
+package holeg.algorithm.objective_function;
+
+import java.util.List;
+import java.util.logging.Logger;
+
+import holeg.model.Flexibility;
+import holeg.model.Flexibility.FlexState;
+import holeg.model.HolonElement.Priority;
+import holeg.ui.model.DecoratedNetwork;
+import holeg.ui.model.DecoratedState;
+
+public class ObjectiveFunctionByCarlos {
+	// Parameters
+	private static final Logger LOGGER = Logger.getLogger(ObjectiveFunctionByCarlos.class.getName());
+	// weight for f_g(H)
+	static double w_eb = .3, w_state = .3, w_pro = .2, w_perf = .1, w_holon = .1;
+	// killswitch weights
+	// static double w_eb = 0.5, w_state = 0.5, w_pro = 0.0f, w_perf = .0,
+	// w_holon=.0;
+
+	// kappas for squashing function
+//	
+	// static double k_eb = 1050000.f, k_state = 10000, k_pro = 2000, k_perf =
+	// 11000, k_holon= 150000;
+//  oversupplied
+	static double k_eb = 750000.f, k_state = 20000, k_pro = 3000, k_perf = 15000, k_holon = 200000;
+
+//	old values undersupplied 
+//	static double k_eb = 1000000.f, k_state = 15000, k_pro = 2100, k_perf = 12000, k_holon= 200000;
+
+	// theta for f_pro
+	static double theta = 3;
+
+	// kappas for f_perf:
+	static double kappa_f_unre = 120;
+	static double kappa_f_cool = 60 * 60 * 24;
+	static double kappa_f_dur = 60 * 60;
+
+	// lambdas for f_perf:
+	static double lambda_f_unre = 10;
+	static double lambda_f_cool = 10;
+	static double lambda_f_dur = 10;
+
+	static double lambda_f_change = 1000;
+
+	// pre-calculated parameters for partial function terms:
+	/**
+	 * Pre calculated for the squash function <br>
+	 * {@link ObjectiveFunctionByCarlos#squash}
+	 */
+	static double squash_subtract = 100.f / (1.f + (float) Math.exp(5.0));
+	static double range_for_kappa_f_unre = range(kappa_f_unre);
+	static double range_for_kappa_f_cool = range(kappa_f_cool);
+	static double range_for_kappa_f_dur = range(kappa_f_dur);
+
+	static {
+		// init
+		checkParameter();
+	}
+
+	/**
+	 * Check parameter Setting and print error when wrong values are put in. Here
+	 * should all invariants be placed to be checked on initialization.
+	 */
+	private static void checkParameter() {
+		boolean parameterSumOne = Math.abs(w_eb + w_state + w_pro + w_perf + w_holon - 1) < 0.001;
+		if (!parameterSumOne) {
+			LOGGER.warning("ParameterError in ObjectiveFunction: w1 + w2 + w3 + w4 + w5 should be 1");
+		}
+	}
+
+	/**
+	 * ObjectifeFunction by Carlos. Function computes f_g: f_g = w1 * squash(f_eb,
+	 * k1) + w2 * squash(f_state, k2) + w3 * squash(f_pro, k3) + w4 * squash(f_perf,
+	 * k4) + w5 * squash(f_holon, k5)
+	 * 
+	 * 
+	 * squash is the squashing function {@link ObjectiveFunctionByCarlos#squash}
+	 * 
+	 * 
+	 * @param state
+	 * @return f_g value between 0 and 100
+	 */
+	static public double getFitnessValueForState(DecoratedState state) {
+
+		// Calculate f_eb the penalty for unbalenced energy in the network
+		double f_eb = 0;
+		// sum over all objects
+		for (DecoratedNetwork net : state.getNetworkList()) {
+			double netEnergyDifference = 0;
+			netEnergyDifference += net.getConsumerList().stream()
+					.map(con -> con.getEnergySelfSupplied() - con.getEnergyFromConsumingElemnets())
+					.reduce(0.f, Float::sum);
+			netEnergyDifference += net.getConsumerSelfSuppliedList().stream()
+					.map(con -> con.getEnergySelfSupplied() - con.getEnergyFromConsumingElemnets())
+					.reduce(0.f, Float::sum);
+			netEnergyDifference += net.getSupplierList().stream()
+					.map(sup -> sup.getEnergyProducing() - sup.getEnergySelfConsuming()).reduce(0.f, Float::sum);
+			// abs
+			f_eb += Math.abs(netEnergyDifference);
+		}
+
+		// Calculate f_state the penalty function for the supply state
+		double f_state = 0;
+		for (DecoratedNetwork net : state.getNetworkList()) {
+			f_state += net.getConsumerList().stream().map(con -> supplyPenalty(con.getSupplyBarPercentage())).reduce(0.,
+					Double::sum);
+		}
+
+		// calculate f_pro the penalty function for priority usage
+		// for each active flexibility punish
+
+		List<Flexibility> allFlexOrdered = state.getAllFlex().filter(flex -> flex.getState().equals(FlexState.IN_USE))
+				.toList();
+		double f_pro = 0;
+		f_pro = allFlexOrdered.stream()
+				.map(flex -> Math.pow(theta, priorityToDouble(flex.getElement().getPriority())) - 1.0)
+				.reduce(0.0, Double::sum);
+
+		// calculate f_perf the penalty function for the quality of a flexibility used
+
+		// and the subfuction f_unre, f_cool, f_dur
+		double f_perf = 0;
+		for (Flexibility flex : allFlexOrdered) {
+			double f_unre = unresponsivnessPenalty(flex.getSpeed());
+			double f_cool = cooldownPenalty(flex.getCooldown());
+			double f_dur = durationPenalty(flex.getDuration());
+			f_perf += f_unre + f_cool + f_dur;
+		}
+
+		// calculate f_holon
+		double f_holon = 0;
+		for (DecoratedNetwork net : state.getNetworkList()) {
+			double f_elements_diviation_production = net.getDeviationInProductionInNetworkForHolonObjects();
+			double f_elements_diviation_consumption = net.getDeviationInProductionInNetworkForHolonObjects();
+			double f_flexibility_diviation_consumption = net.getDiviationInFlexibilityConsumption();
+			double f_flexibility_diviation_production = net.getDiviationInFlexibilityProduction();
+
+			double con = net.getTotalConsumption();
+			double prod = net.getTotalProduction();
+			double flexcapProd = net.getFlexibilityProductionCapacity();
+			double flexcapCon = net.getFlexibilityConsumptionCapacity();
+			double f_change_positive = lambda_f_change
+					- lambda_f_change * Math.min(1, (con > 0.0) ? flexcapProd / con : 1.0);
+			double f_change_negativ = lambda_f_change
+					- lambda_f_change * Math.min(1, (prod > 0.0) ? flexcapCon / prod : 1.0);
+
+			double f_element = f_elements_diviation_production + f_elements_diviation_consumption;
+			double f_flexibility = f_flexibility_diviation_consumption + f_flexibility_diviation_production;
+			double f_change = f_change_positive + f_change_negativ;
+
+			f_holon += f_element + f_flexibility + f_change;
+		}
+		double q1 = squash(f_eb, k_eb);
+		double q2 = squash(f_state, k_state);
+		double q3 = squash(f_pro, k_pro);
+		double q4 = squash(f_perf, k_perf);
+		double q5 = squash(f_holon, k_holon);
+		LOGGER.finer("f_eb= " + f_eb + " f_state= " + f_state + " f_pro= " + f_pro + " f_perf= " + f_perf + " f_holon= "
+				+ f_holon + " q1= " + q1 + " q2= " + q2 + " q3= " + q3 + " q4= " + q4 + " q5= " + q5);
+
+		return w_eb * q1 + w_state * q2 + w_pro * q3 + w_perf * q4 + w_holon * q5;
+	}
+
+	/**
+	 * The squashing function in paper
+	 * 
+	 * @param x     the input
+	 * @param kappa the corresponding kappa
+	 * @return
+	 */
+	static public double squash(double x, double kappa) {
+		return 100.f / (1.0f + Math.exp(-(10.f * (x - kappa / 2.f)) / kappa)) - squash_subtract;
+	}
+
+	/**
+	 * f_sup in paper
+	 * 
+	 * @param supply from 0 to 1
+	 * @return
+	 */
+	static public double supplyPenalty(double supply) {
+		double supplyPercentage = 100 * supply;
+		// double test = (supplyPercentage < 100) ? -0.5 * supplyPercentage + 50:
+		// supplyPercentage - 100;
+		return (supplyPercentage < 100) ? -0.5 * supplyPercentage + 50 : supplyPercentage - 100;
+	}
+
+	/**
+	 * prio function in the paper
+	 * 
+	 * @param priority
+	 * @return
+	 */
+	private static double priorityToDouble(Priority priority) {
+		switch (priority) {
+		case Essential:
+			return 3.;
+		case High:
+			return 2.;
+		case Medium:
+			return 1.;
+		case Low:
+		default:
+			return 0.;
+		}
+	}
+
+	/**
+	 * Attention Math.log calcultae ln not log
+	 * 
+	 * @param kappa
+	 * @return
+	 */
+	private static double range(double kappa) {
+		return -kappa / Math.log(Math.pow(2.0, 0.05) - 1.0);
+	}
+
+	/**
+	 * f_unre
+	 * 
+	 * @param unresponsiv
+	 * @return
+	 */
+	private static double unresponsivnessPenalty(double unresponsiv) {
+		return (2.0 * lambda_f_unre) / (1 + Math.exp(-unresponsiv / range_for_kappa_f_unre)) - lambda_f_unre;
+	}
+
+	/**
+	 * f_cool
+	 * 
+	 * @param cooldown
+	 * @return
+	 */
+	private static double cooldownPenalty(double cooldown) {
+		return (2.0 * lambda_f_cool) / (1 + Math.exp(-cooldown / range_for_kappa_f_cool)) - lambda_f_cool;
+	}
+
+	private static double durationPenalty(double duration) {
+		double lambda_dur_times2 = 2.0 * lambda_f_dur;
+		return -lambda_dur_times2 / (1 + Math.exp(-duration / range_for_kappa_f_dur)) + lambda_dur_times2;
+	}
+
+}

+ 3 - 3
src/algorithm/objective_function/SwitchObjectiveFunction.java → src/holeg/algorithm/objective_function/SwitchObjectiveFunction.java

@@ -1,7 +1,7 @@
-package algorithm.objective_function;
+package holeg.algorithm.objective_function;
 
-import ui.model.DecoratedNetwork;
-import ui.model.DecoratedState;
+import holeg.ui.model.DecoratedNetwork;
+import holeg.ui.model.DecoratedState;
 public class SwitchObjectiveFunction {
 	
 	//weights

+ 32 - 35
src/algorithm/objective_function/TopologieObjectiveFunction.java → src/holeg/algorithm/objective_function/TopologieObjectiveFunction.java

@@ -1,18 +1,18 @@
-package algorithm.objective_function;
+package holeg.algorithm.objective_function;
 
 
-import ui.model.DecoratedHolonObject;
-import ui.model.DecoratedNetwork;
-import ui.model.DecoratedState;
-import utility.FloatLog;
-
 import java.util.Locale;
+import java.util.logging.Logger;
 
-import algorithm.objective_function.GraphMetrics.Graph;
+import holeg.algorithm.objective_function.GraphMetrics.Graph;
+import holeg.ui.model.DecoratedHolonObject;
+import holeg.ui.model.DecoratedNetwork;
+import holeg.ui.model.DecoratedState;
+import holeg.utility.FloatLog;
 
 public class TopologieObjectiveFunction {
+	private static final Logger LOGGER = Logger.getLogger(TopologieObjectiveFunction.class.getName());
 	//Parameters
-	
 	//weight for f_g(H)
 	static double w_eb = 0.2, w_max = 0.5, w_holon= 0.1, w_selection = .1, w_grid = 0.1;
 	
@@ -141,7 +141,7 @@ public class TopologieObjectiveFunction {
 		
 		//calculating f_selection
 		double f_selection = calculateTopologieCost(state, amountOfAddedSwitch, addedCableMeters);
-		//if(moreInformation)System.out.println("CostForWildcards:" + cost + ", CostSwitches(#" + amountOfAddedSwitch +"):" + cost_switch * amountOfAddedSwitch + ", CostCables(" +addedCableMeters+ "m):" + cost_of_cable_per_meter * addedCableMeters);
+		//if(moreInformation)LOGGER.info("CostForWildcards:" + cost + ", CostSwitches(#" + amountOfAddedSwitch +"):" + cost_switch * amountOfAddedSwitch + ", CostCables(" +addedCableMeters+ "m):" + cost_of_cable_per_meter * addedCableMeters);
 		
 		
 		//calculating f_grid
@@ -171,8 +171,7 @@ public class TopologieObjectiveFunction {
 		if(moreInformation) {
 			printWeightedValues(f_eb, f_maximum, f_holon, f_selection, f_grid);
 			if(useLog) {
-				System.out.println("Log");
-				System.out.println(log);
+				LOGGER.info(log.toString());
 			}
 		}
 		//printUnsquashedValues(f_eb, f_maximum, f_holon, f_selection, f_grid);
@@ -279,36 +278,34 @@ public class TopologieObjectiveFunction {
 	}
 	
 	static void printWeightedValues(double f_eb, double f_maximum, double f_holon, double f_selection, double f_grid){
-		 System.out.println("===================================================================");
-		 System.out.println(" f_eb: " + f_eb + ", k_eb: " + k_eb + ", w_eb: " + w_eb); 
-		 System.out.println(" squash(f_eb, k_eb): " + doubleToString(squash(f_eb, k_eb))); 
-		 System.out.println(" w_eb * squash(f_eb, k_eb): " + doubleToString(w_eb * squash(f_eb, k_eb))); 
-		 System.out.println("===================================================================");
-		 System.out.println(" f_maximum: " + f_maximum + ", k_max: " + k_max + ", w_max: " + w_max); 
-		 System.out.println(" squash(f_maximum, k_max): " + doubleToString(squash(f_maximum, k_max))); 
-		 System.out.println(" w_max * squash(f_maximum, k_max): " + doubleToString(w_max * squash(f_maximum, k_max))); 
-		 System.out.println("===================================================================");
-		 System.out.println(" f_selection: " + f_selection + ", k_selection: " + k_selection + ", w_selection: " + w_selection); 
-		 System.out.println(" squash(f_selection, k_selection): " + doubleToString(squash(f_selection, k_selection))); 
-		 System.out.println(" w_selection * squash(f_selection, k_selection): " + doubleToString(w_selection * squash(f_selection, k_selection))); 
-		 System.out.println("===================================================================");
-		 System.out.println(" f_holon: " + f_holon + ", k_holon: " + k_holon + ", w_holon: " + w_holon); 
-		 System.out.println(" squash(f_holon, k_holon): " + doubleToString(squash(f_holon, k_holon))); 
-		 System.out.println(" w_holon * squash(f_holon, k_holon): " + doubleToString(w_holon * squash(f_holon, k_holon))); 
-		 System.out.println("===================================================================");
-		 System.out.println(" f_grid: " + f_grid + ", k_grid: " + k_grid + ", w_grid: " + w_grid); 
-		 System.out.println(" squash(f_grid, k_grid): " + doubleToString(squash(f_grid, k_grid))); 
-		 System.out.println(" w_grid * squash(f_grid, k_grid): " + doubleToString(w_grid * squash(f_grid, k_grid))); 
-		 System.out.println("===================================================================");
-		 System.out.println();
-		 System.out.println();
+		 LOGGER.info("===================================================================");
+		 LOGGER.info(" f_eb: " + f_eb + ", k_eb: " + k_eb + ", w_eb: " + w_eb); 
+		 LOGGER.info(" squash(f_eb, k_eb): " + doubleToString(squash(f_eb, k_eb))); 
+		 LOGGER.info(" w_eb * squash(f_eb, k_eb): " + doubleToString(w_eb * squash(f_eb, k_eb))); 
+		 LOGGER.info("===================================================================");
+		 LOGGER.info(" f_maximum: " + f_maximum + ", k_max: " + k_max + ", w_max: " + w_max); 
+		 LOGGER.info(" squash(f_maximum, k_max): " + doubleToString(squash(f_maximum, k_max))); 
+		 LOGGER.info(" w_max * squash(f_maximum, k_max): " + doubleToString(w_max * squash(f_maximum, k_max))); 
+		 LOGGER.info("===================================================================");
+		 LOGGER.info(" f_selection: " + f_selection + ", k_selection: " + k_selection + ", w_selection: " + w_selection); 
+		 LOGGER.info(" squash(f_selection, k_selection): " + doubleToString(squash(f_selection, k_selection))); 
+		 LOGGER.info(" w_selection * squash(f_selection, k_selection): " + doubleToString(w_selection * squash(f_selection, k_selection))); 
+		 LOGGER.info("===================================================================");
+		 LOGGER.info(" f_holon: " + f_holon + ", k_holon: " + k_holon + ", w_holon: " + w_holon); 
+		 LOGGER.info(" squash(f_holon, k_holon): " + doubleToString(squash(f_holon, k_holon))); 
+		 LOGGER.info(" w_holon * squash(f_holon, k_holon): " + doubleToString(w_holon * squash(f_holon, k_holon))); 
+		 LOGGER.info("===================================================================");
+		 LOGGER.info(" f_grid: " + f_grid + ", k_grid: " + k_grid + ", w_grid: " + w_grid); 
+		 LOGGER.info(" squash(f_grid, k_grid): " + doubleToString(squash(f_grid, k_grid))); 
+		 LOGGER.info(" w_grid * squash(f_grid, k_grid): " + doubleToString(w_grid * squash(f_grid, k_grid))); 
+		 LOGGER.info("===================================================================");
 	}
 	static void printUnsquashedValues(double f_eb, double f_maximum, double f_holon, double f_selection, double f_grid){
 		 System.out.print(" f_eb(" + f_eb + ") ");
 		 System.out.print(" f_maximum(" + f_maximum + ") ");
 		 System.out.print(" f_holon(" + f_holon + ") ");
 		 System.out.print(" f_selection(" + f_selection + ") ");
-		 System.out.println(" f_grid(" + f_grid + ") ");
+		 LOGGER.info(" f_grid(" + f_grid + ") ");
 	}
 
 }

+ 5 - 5
src/algorithm/topologie/AcoAlgorithm.java → src/holeg/algorithm/topologie/AcoAlgorithm.java

@@ -1,14 +1,14 @@
-package algorithm.topologie;
+package holeg.algorithm.topologie;
 
 import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.ListIterator;
 
-import algorithm.objective_function.TopologieObjectiveFunction;
-import api.TopologieAlgorithmFramework;
-import ui.model.DecoratedState;
-import utility.Random;
+import holeg.algorithm.objective_function.TopologieObjectiveFunction;
+import holeg.api.TopologieAlgorithmFramework;
+import holeg.ui.model.DecoratedState;
+import holeg.utility.Random;
 
 public class AcoAlgorithm extends TopologieAlgorithmFramework {
 

+ 5 - 5
src/algorithm/topologie/GaAlgorithm.java → src/holeg/algorithm/topologie/GaAlgorithm.java

@@ -1,4 +1,4 @@
-package algorithm.topologie;
+package holeg.algorithm.topologie;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -7,10 +7,10 @@ import java.util.List;
 import java.util.ListIterator;
 import java.util.TreeSet;
 
-import algorithm.objective_function.TopologieObjectiveFunction;
-import api.TopologieAlgorithmFramework;
-import ui.model.DecoratedState;
-import utility.Random;
+import holeg.algorithm.objective_function.TopologieObjectiveFunction;
+import holeg.api.TopologieAlgorithmFramework;
+import holeg.ui.model.DecoratedState;
+import holeg.utility.Random;
 
 public class GaAlgorithm extends TopologieAlgorithmFramework {
 

+ 6 - 6
src/algorithm/topologie/PsoAlgorithm.java → src/holeg/algorithm/topologie/PsoAlgorithm.java

@@ -1,4 +1,4 @@
-package algorithm.topologie;
+package holeg.algorithm.topologie;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -7,11 +7,11 @@ import java.util.List;
 import java.util.TreeSet;
 import java.util.stream.Collectors;
 
-import algorithm.objective_function.TopologieObjectiveFunction;
-import api.TopologieAlgorithmFramework;
-import ui.model.DecoratedState;
-import utility.Maths;
-import utility.Random;
+import holeg.algorithm.objective_function.TopologieObjectiveFunction;
+import holeg.api.TopologieAlgorithmFramework;
+import holeg.ui.model.DecoratedState;
+import holeg.utility.Maths;
+import holeg.utility.Random;
 
 public class PsoAlgorithm extends TopologieAlgorithmFramework {
 

+ 2 - 2
src/api/AddOn.java → src/holeg/api/AddOn.java

@@ -1,8 +1,8 @@
-package api;
+package holeg.api;
 
 import javax.swing.JPanel;
 
-import ui.controller.Control;
+import holeg.ui.controller.Control;
 
 /**
  * Interface for a Standart Addon.

+ 22 - 22
src/api/AlgorithmFrameworkFlex.java → src/holeg/api/AlgorithmFrameworkFlex.java

@@ -1,4 +1,4 @@
-package api;
+package holeg.api;
 
 import java.awt.BorderLayout;
 import java.awt.Component;
@@ -43,27 +43,27 @@ import javax.swing.JScrollPane;
 import javax.swing.JSplitPane;
 import javax.swing.text.NumberFormatter;
 
-import addon.helper.EmailNotification;
-import algorithm.objective_function.ObjectiveFunctionByCarlos;
-import algorithm.objective_function.SwitchObjectiveFunction;
-import model.AbstractCanvasObject;
-import model.Flexibility;
-import model.Flexibility.FlexState;
-import model.GroupNode;
-import model.HolonElement;
-import model.HolonObject;
-import model.HolonSwitch;
-import model.HolonElement.Priority;
-import ui.controller.Control;
-import ui.model.DecoratedGroupNode;
-import ui.model.DecoratedState;
-import ui.model.Model;
-import ui.model.DecoratedHolonObject.HolonObjectState;
-import ui.model.DecoratedSwitch.SwitchState;
-import ui.view.component.Console;
-import ui.model.DecoratedNetwork;
-import utility.ImageImport;
-import utility.FormatFloat;
+import holeg.addon.helper.EmailNotification;
+import holeg.algorithm.objective_function.ObjectiveFunctionByCarlos;
+import holeg.algorithm.objective_function.SwitchObjectiveFunction;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.Flexibility;
+import holeg.model.GroupNode;
+import holeg.model.HolonElement;
+import holeg.model.HolonObject;
+import holeg.model.HolonSwitch;
+import holeg.model.Flexibility.FlexState;
+import holeg.model.HolonElement.Priority;
+import holeg.ui.controller.Control;
+import holeg.ui.model.DecoratedGroupNode;
+import holeg.ui.model.DecoratedNetwork;
+import holeg.ui.model.DecoratedState;
+import holeg.ui.model.Model;
+import holeg.ui.model.DecoratedHolonObject.HolonObjectState;
+import holeg.ui.model.DecoratedSwitch.SwitchState;
+import holeg.ui.view.component.Console;
+import holeg.utility.FormatFloat;
+import holeg.utility.ImageImport;
 
 public abstract class AlgorithmFrameworkFlex implements AddOn{
 	//Algo

+ 17 - 17
src/api/TopologieAlgorithmFramework.java → src/holeg/api/TopologieAlgorithmFramework.java

@@ -1,4 +1,4 @@
-package api;
+package holeg.api;
 
 import java.awt.BorderLayout;
 import java.awt.Dimension;
@@ -39,22 +39,22 @@ import javax.swing.JSeparator;
 import javax.swing.JSplitPane;
 import javax.swing.text.NumberFormatter;
 
-import algorithm.objective_function.TopologieObjectiveFunction;
-import model.AbstractCanvasObject;
-import model.Edge;
-import model.GroupNode;
-import model.HolonObject;
-import model.HolonSwitch;
-import model.Node;
-import ui.controller.Control;
-import ui.model.DecoratedGroupNode;
-import ui.model.DecoratedState;
-import ui.model.Model;
-import ui.model.DecoratedHolonObject.HolonObjectState;
-import ui.model.DecoratedSwitch.SwitchState;
-import ui.view.component.Console;
-import ui.view.main.Category;
-import ui.model.DecoratedNetwork;
+import holeg.algorithm.objective_function.TopologieObjectiveFunction;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.Edge;
+import holeg.model.GroupNode;
+import holeg.model.HolonObject;
+import holeg.model.HolonSwitch;
+import holeg.model.Node;
+import holeg.ui.controller.Control;
+import holeg.ui.model.DecoratedGroupNode;
+import holeg.ui.model.DecoratedNetwork;
+import holeg.ui.model.DecoratedState;
+import holeg.ui.model.Model;
+import holeg.ui.model.DecoratedHolonObject.HolonObjectState;
+import holeg.ui.model.DecoratedSwitch.SwitchState;
+import holeg.ui.view.component.Console;
+import holeg.ui.view.main.Category;
 
 public abstract class TopologieAlgorithmFramework implements AddOn{
 	//Algo

+ 8 - 8
src/connect/ConnectHandheld.java → src/holeg/connect/ConnectHandheld.java

@@ -1,4 +1,4 @@
-package connect;
+package holeg.connect;
 
 import java.awt.BorderLayout;
 import java.awt.Dimension;
@@ -21,13 +21,13 @@ import javax.swing.JSplitPane;
 import javax.swing.JTextArea;
 import javax.swing.text.NumberFormatter;
 
-import model.AbstractCanvasObject;
-import model.GroupNode;
-import model.HolonObject;
-import api.AddOn;
-import connect.socket.Server;
-import ui.controller.Control;
-import ui.view.component.Console;
+import holeg.api.AddOn;
+import holeg.connect.socket.Server;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.GroupNode;
+import holeg.model.HolonObject;
+import holeg.ui.controller.Control;
+import holeg.ui.view.component.Console;
 
 public class ConnectHandheld implements AddOn{
 	

+ 8 - 8
src/connect/ConnectPhysical.java → src/holeg/connect/ConnectPhysical.java

@@ -1,4 +1,4 @@
-package connect;
+package holeg.connect;
 import java.awt.BorderLayout;
 import java.awt.Component;
 import java.awt.Dimension;
@@ -30,13 +30,13 @@ import javax.swing.JScrollPane;
 import javax.swing.JSplitPane;
 import javax.swing.text.NumberFormatter;
 
-import api.AddOn;
-import model.AbstractCanvasObject;
-import model.GroupNode;
-import model.HolonElement;
-import model.HolonObject;
-import ui.controller.Control;
-import ui.view.component.Console;
+import holeg.api.AddOn;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.GroupNode;
+import holeg.model.HolonElement;
+import holeg.model.HolonObject;
+import holeg.ui.controller.Control;
+import holeg.ui.view.component.Console;
 /**
  * Easy Connection via Http Request. Repeat Request with a delay.
  * 

+ 6 - 6
src/connect/socket/Server.java → src/holeg/connect/socket/Server.java

@@ -1,12 +1,12 @@
-package connect.socket;
+package holeg.connect.socket;
 import java.net.*;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
-import model.HolonElement;
-import model.HolonObject;
-import ui.controller.Control;
+import holeg.model.HolonElement;
+import holeg.model.HolonObject;
+import holeg.ui.controller.Control;
 
 import java.io.*;
 
@@ -17,7 +17,7 @@ public class Server implements Runnable{
     private DataInputStream in;
     private boolean stopped = false;		
     private boolean connection = false;
-    private ui.view.component.Console console;
+    private holeg.ui.view.component.Console console;
     
     
     private HolonObject observed;
@@ -25,7 +25,7 @@ public class Server implements Runnable{
     private HolonObjectModel newModelField;
 	private Control control;
     
-    public Server(int port, ui.view.component.Console console, HolonObject observed, Control control) throws IOException {
+    public Server(int port, holeg.ui.view.component.Console console, HolonObject observed, Control control) throws IOException {
     	this.observed = observed;
     	this.console = console;
     	this.control = control;

+ 2 - 2
src/interfaces/GraphEditable.java → src/holeg/interfaces/GraphEditable.java

@@ -1,8 +1,8 @@
-package interfaces;
+package holeg.interfaces;
 
 import java.util.LinkedList;
 
-import utility.Vector2Float;
+import holeg.utility.Vector2Float;
 
 /**
  * Interface for all Elements that have a Graph to edit it state over time.

+ 1 - 1
src/interfaces/LocalMode.java → src/holeg/interfaces/LocalMode.java

@@ -1,4 +1,4 @@
-package interfaces;
+package holeg.interfaces;
 
 public interface LocalMode {
 	

+ 1 - 1
src/interfaces/TimelineDependent.java → src/holeg/interfaces/TimelineDependent.java

@@ -1,3 +1,3 @@
-package interfaces;
+package holeg.interfaces;
 
 public interface TimelineDependent extends GraphEditable, LocalMode {}

+ 4 - 4
src/model/AbstractCanvasObject.java → src/holeg/model/AbstractCanvasObject.java

@@ -1,10 +1,10 @@
-package model;
+package holeg.model;
 
 import com.google.gson.annotations.Expose;
 
-import ui.model.IdCounter;
-import ui.model.IdCounter.CounterType;
-import utility.Vector2Int;
+import holeg.ui.model.IdCounter;
+import holeg.ui.model.IdCounter.CounterType;
+import holeg.utility.Vector2Int;
 
 import java.util.ArrayList;
 

+ 1 - 1
src/model/Constrain.java → src/holeg/model/Constrain.java

@@ -1,4 +1,4 @@
-package model;
+package holeg.model;
 
 import java.util.function.Predicate;
 

+ 1 - 1
src/model/Edge.java → src/holeg/model/Edge.java

@@ -1,4 +1,4 @@
-package model;
+package holeg.model;
 
 import com.google.gson.annotations.Expose;
 

+ 1 - 1
src/model/Flexibility.java → src/holeg/model/Flexibility.java

@@ -1,4 +1,4 @@
-package model;
+package holeg.model;
 
 import java.util.ArrayList;
 import java.util.List;

+ 1 - 1
src/model/GroupNode.java → src/holeg/model/GroupNode.java

@@ -1,4 +1,4 @@
-package model;
+package holeg.model;
 
 import com.google.gson.annotations.Expose;
 

+ 8 - 7
src/model/HolonElement.java → src/holeg/model/HolonElement.java

@@ -1,14 +1,15 @@
-package model;
+package holeg.model;
 
 import com.google.gson.annotations.Expose;
 import com.google.gson.annotations.SerializedName;
 
-import interfaces.TimelineDependent;
-import model.Flexibility.FlexState;
-import ui.controller.IndexTranslator;
-import ui.model.IdCounter;
-import ui.model.IdCounter.CounterType;
-import utility.Vector2Float;
+import holeg.interfaces.TimelineDependent;
+import holeg.model.Flexibility.FlexState;
+import holeg.ui.controller.IndexTranslator;
+import holeg.ui.model.IdCounter;
+import holeg.ui.model.IdCounter.CounterType;
+import holeg.utility.Vector2Float;
+
 import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.ListIterator;

+ 1 - 1
src/model/HolonObject.java → src/holeg/model/HolonObject.java

@@ -1,4 +1,4 @@
-package model;
+package holeg.model;
 
 
 import java.util.ArrayList;

+ 6 - 5
src/model/HolonSwitch.java → src/holeg/model/HolonSwitch.java

@@ -1,13 +1,14 @@
-package model;
+package holeg.model;
 
 import java.util.LinkedList;
 import java.util.ListIterator;
 
 import com.google.gson.annotations.Expose;
-import interfaces.LocalMode;
-import interfaces.TimelineDependent;
-import ui.controller.IndexTranslator;
-import utility.Vector2Float;
+
+import holeg.interfaces.LocalMode;
+import holeg.interfaces.TimelineDependent;
+import holeg.ui.controller.IndexTranslator;
+import holeg.utility.Vector2Float;
 
 /**
  * The class HolonSwitch represents a Switch, which can be turned on and off.

+ 1 - 1
src/model/Node.java → src/holeg/model/Node.java

@@ -1,4 +1,4 @@
-package model;
+package holeg.model;
 
 /**
  * The class "CpsNode" represents empty Objects in the system. They are just

+ 3 - 3
src/preferences/ColorPreference.java → src/holeg/preferences/ColorPreference.java

@@ -1,9 +1,9 @@
-package preferences;
+package holeg.preferences;
 
 import java.awt.Color;
 
-import model.Flexibility.FlexState;
-import ui.model.DecoratedHolonObject.HolonObjectState;
+import holeg.model.Flexibility.FlexState;
+import holeg.ui.model.DecoratedHolonObject.HolonObjectState;
 
 /**
  * A Class to save all colors in Holeg.

+ 2 - 2
src/ui/controller/AutoSaveController.java → src/holeg/ui/controller/AutoSaveController.java

@@ -1,6 +1,6 @@
-package ui.controller;
+package holeg.ui.controller;
 
-import ui.model.Model;
+import holeg.ui.model.Model;
 
 /**
  * Autosave Controller.

+ 11 - 11
src/ui/controller/CanvasController.java → src/holeg/ui/controller/CanvasController.java

@@ -1,4 +1,4 @@
-package ui.controller;
+package holeg.ui.controller;
 
 import java.awt.Point;
 import java.util.ArrayList;
@@ -8,16 +8,16 @@ import java.util.ListIterator;
 import java.util.Optional;
 import java.util.stream.Collectors;
 
-import model.AbstractCanvasObject;
-import model.Edge;
-import model.GroupNode;
-import model.HolonObject;
-import model.HolonSwitch;
-import model.Node;
-import ui.model.DecoratedState;
-import ui.model.Model;
-import ui.view.main.GUI;
-import utility.Vector2Int;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.Edge;
+import holeg.model.GroupNode;
+import holeg.model.HolonObject;
+import holeg.model.HolonSwitch;
+import holeg.model.Node;
+import holeg.ui.model.DecoratedState;
+import holeg.ui.model.Model;
+import holeg.ui.view.main.GUI;
+import holeg.utility.Vector2Int;
 
 /**
  * Controller for the Canvas.

+ 8 - 9
src/ui/controller/CategoryController.java → src/holeg/ui/controller/CategoryController.java

@@ -1,20 +1,19 @@
-package ui.controller;
+package holeg.ui.controller;
 
 import java.util.AbstractMap.SimpleEntry;
 
-import model.AbstractCanvasObject;
-import model.HolonElement;
-import model.HolonObject;
-import model.HolonSwitch;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.HolonElement;
+import holeg.model.HolonObject;
+import holeg.model.HolonSwitch;
+import holeg.ui.model.Model;
+import holeg.ui.view.main.Category;
+import holeg.utility.events.Event;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
 
-import ui.model.Model;
-import ui.view.main.Category;
-import utility.events.Event;
-
 /**
  * Controller for the Categories.
  * 

+ 9 - 9
src/ui/controller/ClipboardController.java → src/holeg/ui/controller/ClipboardController.java

@@ -1,15 +1,15 @@
-package ui.controller;
+package holeg.ui.controller;
 
 import com.google.gson.*;
 
-import model.*;
-import ui.controller.SaveController.EDGETYPE;
-import ui.controller.SaveController.GRAPHTYPE;
-import ui.controller.SaveController.NUMTYPE;
-import ui.controller.SaveController.TYPE;
-import ui.model.Model;
-import utility.Vector2Float;
-import utility.Vector2Int;
+import holeg.model.*;
+import holeg.ui.controller.SaveController.EDGETYPE;
+import holeg.ui.controller.SaveController.GRAPHTYPE;
+import holeg.ui.controller.SaveController.NUMTYPE;
+import holeg.ui.controller.SaveController.TYPE;
+import holeg.ui.model.Model;
+import holeg.utility.Vector2Float;
+import holeg.utility.Vector2Int;
 
 import java.awt.*;
 import java.awt.datatransfer.*;

+ 13 - 13
src/ui/controller/Control.java → src/holeg/ui/controller/Control.java

@@ -1,4 +1,4 @@
-package ui.controller;
+package holeg.ui.controller;
 
 import java.awt.Point;
 import java.awt.datatransfer.UnsupportedFlavorException;
@@ -17,18 +17,18 @@ import org.apache.commons.compress.archivers.ArchiveException;
 
 import com.google.gson.JsonParseException;
 
-import model.AbstractCanvasObject;
-import model.Edge;
-import model.GroupNode;
-import model.HolonElement;
-import model.HolonObject;
-import model.Node;
-import ui.model.Model;
-import ui.model.Model.FairnessModel;
-import ui.view.dialog.CreateTemplatePopUp;
-import ui.view.main.Category;
-import ui.view.main.GUI;
-import utility.events.Event;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.Edge;
+import holeg.model.GroupNode;
+import holeg.model.HolonElement;
+import holeg.model.HolonObject;
+import holeg.model.Node;
+import holeg.ui.model.Model;
+import holeg.ui.model.Model.FairnessModel;
+import holeg.ui.view.dialog.CreateTemplatePopUp;
+import holeg.ui.view.main.Category;
+import holeg.ui.view.main.GUI;
+import holeg.utility.events.Event;
 
 /**
  * The Class represents the controller in the model, controller view Pattern.

+ 3 - 3
src/ui/controller/GlobalController.java → src/holeg/ui/controller/GlobalController.java

@@ -1,7 +1,7 @@
-package ui.controller;
+package holeg.ui.controller;
 
-import ui.model.Model;
-import ui.model.Model.FairnessModel;
+import holeg.ui.model.Model;
+import holeg.ui.model.Model.FairnessModel;
 
 /**
  * Controller for the Global Variables.

+ 3 - 3
src/ui/controller/IndexTranslator.java → src/holeg/ui/controller/IndexTranslator.java

@@ -1,7 +1,7 @@
-package ui.controller;
+package holeg.ui.controller;
 
-import interfaces.LocalMode;
-import ui.model.Model;
+import holeg.interfaces.LocalMode;
+import holeg.ui.model.Model;
 
 
 public class IndexTranslator {

+ 9 - 8
src/ui/controller/LoadController.java → src/holeg/ui/controller/LoadController.java

@@ -1,23 +1,23 @@
-package ui.controller;
+package holeg.ui.controller;
 
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 import com.google.gson.reflect.TypeToken;
 
-import model.*;
-import model.HolonElement.Priority;
+import holeg.model.*;
+import holeg.model.HolonElement.Priority;
+import holeg.ui.model.IdCounter;
+import holeg.ui.model.Model;
+import holeg.ui.model.IdCounter.CounterType;
+import holeg.ui.view.main.Category;
+import holeg.utility.Vector2Float;
 
 import org.apache.commons.compress.archivers.ArchiveEntry;
 import org.apache.commons.compress.archivers.ArchiveException;
 import org.apache.commons.compress.archivers.ArchiveInputStream;
 import org.apache.commons.compress.archivers.ArchiveStreamFactory;
 import org.apache.commons.compress.utils.IOUtils;
-import ui.model.IdCounter;
-import ui.model.Model;
-import utility.Vector2Float;
-import ui.model.IdCounter.CounterType;
-import ui.view.main.Category;
 
 import java.io.*;
 import java.nio.file.Files;
@@ -489,6 +489,7 @@ public class LoadController {
     void initCpsEdge(Edge edge) {
         edge.setA(null);
         edge.setB(null);
+        edge.setState(Edge.EdgeState.Working);
     }
 
     /**

+ 8 - 7
src/ui/controller/MultiPurposeController.java → src/holeg/ui/controller/MultiPurposeController.java

@@ -1,14 +1,15 @@
-package ui.controller;
+package holeg.ui.controller;
 
 import java.util.HashMap;
 import java.util.Map.Entry;
-import java.util.Optional;
 
-import model.AbstractCanvasObject;
-import model.Edge;
-import model.GroupNode;
-import ui.model.Model;
-import ui.view.main.Category;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.Edge;
+import holeg.model.GroupNode;
+import holeg.ui.model.Model;
+import holeg.ui.view.main.Category;
+
+import java.util.Optional;
 
 /**
  * Controller for Multiple Purposes.

+ 7 - 8
src/ui/controller/NodeController.java → src/holeg/ui/controller/NodeController.java

@@ -1,17 +1,16 @@
-package ui.controller;
-
-import ui.model.Model;
-import utility.Vector2Int;
+package holeg.ui.controller;
 
 import java.awt.*;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.LinkedList;
 
-import model.AbstractCanvasObject;
-import model.Edge;
-import model.GroupNode;
-import model.Node;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.Edge;
+import holeg.model.GroupNode;
+import holeg.model.Node;
+import holeg.ui.model.Model;
+import holeg.utility.Vector2Int;
 
 
 class NodeController {

+ 6 - 7
src/ui/controller/ObjectController.java → src/holeg/ui/controller/ObjectController.java

@@ -1,18 +1,17 @@
-package ui.controller;
+package holeg.ui.controller;
 
 import java.util.AbstractMap.SimpleEntry;
 
-import model.AbstractCanvasObject;
-import model.GroupNode;
-import model.HolonElement;
-import model.HolonObject;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.GroupNode;
+import holeg.model.HolonElement;
+import holeg.model.HolonObject;
+import holeg.ui.model.Model;
 
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Optional;
 
-import ui.model.Model;
-
 /**
  * Controller for Objects.
  *

+ 7 - 8
src/ui/controller/SaveController.java → src/holeg/ui/controller/SaveController.java

@@ -1,10 +1,15 @@
-package ui.controller;
+package holeg.ui.controller;
 
 import com.google.gson.JsonObject;
 import com.google.gson.JsonPrimitive;
 import com.google.gson.reflect.TypeToken;
 
-import model.*;
+import holeg.model.*;
+import holeg.ui.model.IdCounter;
+import holeg.ui.model.Model;
+import holeg.ui.model.IdCounter.CounterType;
+import holeg.ui.view.main.Category;
+import holeg.utility.Vector2Float;
 
 import org.apache.commons.compress.archivers.ArchiveException;
 import org.apache.commons.compress.archivers.ArchiveOutputStream;
@@ -12,12 +17,6 @@ import org.apache.commons.compress.archivers.ArchiveStreamFactory;
 import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
 import org.apache.commons.compress.utils.IOUtils;
 
-import ui.model.IdCounter;
-import ui.model.Model;
-import utility.Vector2Float;
-import ui.model.IdCounter.CounterType;
-import ui.view.main.Category;
-
 import java.io.BufferedInputStream;
 import java.io.File;
 import java.io.FileInputStream;

+ 90 - 79
src/ui/controller/SimulationManager.java → src/holeg/ui/controller/SimulationManager.java

@@ -1,24 +1,23 @@
-package ui.controller;
-
-import ui.model.DecoratedSwitch.SwitchState;
-import ui.model.DecoratedNetwork;
-import ui.model.DecoratedState;
-import ui.model.DecoratedSwitch;
-import ui.model.MinimumModel;
-import ui.model.MinimumNetwork;
-import ui.model.Model;
-import ui.model.Model.FairnessModel;
-import ui.model.VisualRepresentationalState;
+package holeg.ui.controller;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.ListIterator;
 import java.util.Optional;
+import java.util.logging.Logger;
 
-import model.*;
-import model.Edge.EdgeState;
-
+import holeg.model.*;
+import holeg.model.Edge.EdgeState;
+import holeg.ui.model.DecoratedNetwork;
+import holeg.ui.model.DecoratedState;
+import holeg.ui.model.DecoratedSwitch;
+import holeg.ui.model.MinimumModel;
+import holeg.ui.model.MinimumNetwork;
+import holeg.ui.model.Model;
+import holeg.ui.model.VisualRepresentationalState;
+import holeg.ui.model.DecoratedSwitch.SwitchState;
+import holeg.ui.model.Model.FairnessModel;
 
 /**
  * Controller for Simulation.
@@ -26,6 +25,7 @@ import model.Edge.EdgeState;
  * @author Gruppe14
  */
 public class SimulationManager {
+	private static final Logger LOGGER = Logger.getLogger(SimulationManager.class.getName());
 	private Model model;
 	private HashMap<Integer, VisualRepresentationalState> savesVisual = new HashMap<Integer, VisualRepresentationalState>();
 	private int timeStep;
@@ -34,134 +34,145 @@ public class SimulationManager {
 	/**
 	 * Constructor.
 	 *
-	 * @param m
-	 *            Model
+	 * @param m Model
 	 */
 	public SimulationManager(Model m) {
+		LOGGER.fine("Construct SimulationManager");
 		model = m;
 	}
-	
-	
-	
-	
-	
-	
+
 	/**
-	 * calculates the flow of the edges and the supply for objects and consider old timesteps for burned cables.
+	 * calculates the flow of the edges and the supply for objects and consider old
+	 * timesteps for burned cables.
 	 *
-	 * @param timestep
-	 *            current Iteration
-	 * @param updateVisual 
-	 * Determine if the Visuals should also be calculated
+	 * @param timestep     current Iteration
+	 * @param updateVisual Determine if the Visuals should also be calculated
 	 */
 	public void calculateStateForTimeStep(int timestep, boolean updateVisual) {
+		LOGGER.fine("Calculate");
 		timeStep = timestep;
-		ArrayList<MinimumNetwork> list =  new ArrayList<MinimumNetwork>();
-		MinimumModel minimumModel = new MinimumModel(model.getObjectsOnCanvas(), model.getEdgesOnCanvas(), model.getActualTimeStep());
+		long start = System.currentTimeMillis();
+		ArrayList<MinimumNetwork> list = new ArrayList<MinimumNetwork>();
+		MinimumModel minimumModel = new MinimumModel(model.getObjectsOnCanvas(), model.getEdgesOnCanvas(),
+				model.getActualTimeStep());
 		ArrayList<Edge> leftOver = new ArrayList<Edge>();
 
 		boolean doAnotherLoop = true;
-		while(doAnotherLoop) {
+		do {
 			doAnotherLoop = false;
 			list = calculateNetworks(minimumModel, timestep, leftOver);
-			for(MinimumNetwork net : list) {
-				float energyOnCables = net.getHolonObjectList().stream().map(object -> object.getActualEnergy()).filter(energy -> energy > 0.0f).reduce(0.0f, (Float::sum));
-				//find the cable with the energy supplied from his two connected objects are the biggest, from all cables that the network give more energy than the cablecapacity. 
-				Edge cable = net.getEdgeList().stream().filter(aCable -> energyOnCables > aCable.maxCapacity && !aCable.isUnlimitedCapacity()).max((lhs,rhs) -> Float.compare(lhs.getEnergyFromConneted(), rhs.getEnergyFromConneted())).orElse(null);
-				if(cable != null) {
+			for (MinimumNetwork net : list) {
+				float energyOnCables = net.getHolonObjectList().stream().map(object -> object.getActualEnergy())
+						.filter(energy -> energy > 0.0f).reduce(0.0f, (Float::sum));
+				// find the cable with the energy supplied from his two connected objects are
+				// the biggest, from all cables that the network give more energy than the
+				// cablecapacity.
+				Edge cable = net.getEdgeList().stream()
+						.filter(aCable -> energyOnCables > aCable.maxCapacity && !aCable.isUnlimitedCapacity())
+						.max((lhs, rhs) -> Float.compare(lhs.getEnergyFromConneted(), rhs.getEnergyFromConneted()))
+						.orElse(null);
+				if (cable != null) {
 					cable.setState(EdgeState.Burned);
 					doAnotherLoop = true;
 				}
 			}
-		}
+		} while (doAnotherLoop);
 		ArrayList<DecoratedNetwork> decorNetworks = new ArrayList<DecoratedNetwork>();
 		FairnessModel actualFairnessModel = model.getFairnessModel();
 		for (MinimumNetwork net : list) {
 			decorNetworks.add(new DecoratedNetwork(net, timestep, actualFairnessModel));
 		}
 
-		
-		
-		
-		for(Edge cable: leftOver) {
+		for (Edge cable : leftOver) {
 			cable.setActualFlow(0.0f);
 		}
 		ArrayList<DecoratedSwitch> listOfDecoratedSwitches = decorateSwitches(minimumModel, timestep);
-		DecoratedState stateFromThisTimestep = new DecoratedState(decorNetworks, leftOver, listOfDecoratedSwitches, timestep);
-		if(updateVisual)savesVisual.put(timestep, new VisualRepresentationalState(stateFromThisTimestep, minimumModel));
-		actualDecorState = Optional.of(stateFromThisTimestep);	
+		DecoratedState stateFromThisTimestep = new DecoratedState(decorNetworks, leftOver, listOfDecoratedSwitches,
+				timestep);
+		if (updateVisual)
+			savesVisual.put(timestep, new VisualRepresentationalState(stateFromThisTimestep, minimumModel));
+		actualDecorState = Optional.of(stateFromThisTimestep);
+		long end = System.currentTimeMillis();
+		LOGGER.finer("Simulation: " + (end - start) + "ms");
 	}
-	/** 
+
+	/**
 	 * Decorate a switch
+	 * 
 	 * @param minModel
 	 * @param iteration
 	 * @return
 	 */
 	public static ArrayList<DecoratedSwitch> decorateSwitches(MinimumModel minModel, int iteration) {
-		ArrayList<DecoratedSwitch> aListOfDecoratedSwitches = new ArrayList<DecoratedSwitch>(); 
-		for(HolonSwitch hSwitch: minModel.getSwitchList()) {
-			aListOfDecoratedSwitches.add(new DecoratedSwitch(hSwitch, hSwitch.getState(iteration) ? SwitchState.Closed : SwitchState.Open));
+		ArrayList<DecoratedSwitch> aListOfDecoratedSwitches = new ArrayList<DecoratedSwitch>();
+		for (HolonSwitch hSwitch : minModel.getSwitchList()) {
+			aListOfDecoratedSwitches.add(
+					new DecoratedSwitch(hSwitch, hSwitch.getState(iteration) ? SwitchState.Closed : SwitchState.Open));
 		}
 		return aListOfDecoratedSwitches;
 	}
+
 	/**
 	 * SubFunction to calculate the Networks from the model.
+	 * 
 	 * @param minModel
 	 * @param Iteration
 	 * @param leftOver
 	 * @return
 	 */
-	ArrayList<MinimumNetwork> calculateNetworks(MinimumModel minModel, int Iteration, ArrayList<Edge> leftOver){
-		//Copy minModel ObjectList
+	ArrayList<MinimumNetwork> calculateNetworks(MinimumModel minModel, int Iteration, ArrayList<Edge> leftOver) {
+		// Copy minModel ObjectList
 		ArrayList<HolonObject> holonObjectList = new ArrayList<HolonObject>();
-		for(HolonObject holonObject: minModel.getHolonObjectList()) {
+		for (HolonObject holonObject : minModel.getHolonObjectList()) {
 			holonObjectList.add(holonObject);
 		}
-		//Copy minModelEdgeList
+		// Copy minModelEdgeList
 		ArrayList<Edge> edgeList = new ArrayList<Edge>();
-		for(Edge cable: minModel.getEdgeList()) {
+		for (Edge cable : minModel.getEdgeList()) {
 			edgeList.add(cable);
 		}
-		
+
 		ArrayList<MinimumNetwork> listOfNetworks = new ArrayList<MinimumNetwork>();
-		while(!holonObjectList.isEmpty()) {
-			//lookAt the first holonObject and find his neighbors
+		while (!holonObjectList.isEmpty()) {
+			// lookAt the first holonObject and find his neighbors
 			HolonObject lookAtObject = holonObjectList.get(0);
-			//delete out of list
+			// delete out of list
 			holonObjectList.remove(0);
-			//create a new Network
+			// create a new Network
 			MinimumNetwork actualNetwork = new MinimumNetwork(new ArrayList<HolonObject>(), new ArrayList<Edge>());
 			actualNetwork.getHolonObjectList().add(lookAtObject);
-			//create List of neighbors
+			// create List of neighbors
 			LinkedList<AbstractCanvasObject> neighbors = new LinkedList<AbstractCanvasObject>();
 			populateListOfNeighbors(edgeList, lookAtObject, actualNetwork, neighbors);
-			while(!neighbors.isEmpty()) {
+			while (!neighbors.isEmpty()) {
 				AbstractCanvasObject lookAtNeighbor = neighbors.getFirst();
-				if(lookAtNeighbor instanceof HolonObject hO) {
+				if (lookAtNeighbor instanceof HolonObject hO) {
 					actualNetwork.getHolonObjectList().add(hO);
 					holonObjectList.remove(lookAtNeighbor);
-				}else {
+				} else {
 					actualNetwork.getNodeAndSwitches().add(lookAtNeighbor);
 				}
-				//When HolonSwitch Check if closed
-				if(!(lookAtNeighbor instanceof HolonSwitch sw) || sw.getState(Iteration)) {
+				// When HolonSwitch Check if closed
+				if (!(lookAtNeighbor instanceof HolonSwitch sw) || sw.getState(Iteration)) {
 					populateListOfNeighbors(edgeList, lookAtNeighbor, actualNetwork, neighbors);
 				}
-				
+
 				neighbors.removeFirst();
 			}
 			listOfNetworks.add(actualNetwork);
-		}	
-		if(leftOver!= null) {
+		}
+		if (leftOver != null) {
 			leftOver.clear();
-			for(Edge cable: edgeList) {
+			for (Edge cable : edgeList) {
 				leftOver.add(cable);
 			}
 		}
 		return listOfNetworks;
 	}
+
 	/**
 	 * Adds the neighbors.
+	 * 
 	 * @param edgeList
 	 * @param lookAtObject
 	 * @param actualNetwork
@@ -170,37 +181,37 @@ public class SimulationManager {
 	void populateListOfNeighbors(ArrayList<Edge> edgeList, AbstractCanvasObject lookAtObject,
 			MinimumNetwork actualNetwork, LinkedList<AbstractCanvasObject> neighbors) {
 		ListIterator<Edge> iter = edgeList.listIterator();
-		while(iter.hasNext())
-		{
+		while (iter.hasNext()) {
 			Edge lookAtEdge = iter.next();
-			if(lookAtEdge.getState() == EdgeState.Working && lookAtEdge.isConnectedTo(lookAtObject)) {
+			if (lookAtEdge.getState() == EdgeState.Working && lookAtEdge.isConnectedTo(lookAtObject)) {
 				iter.remove();
 				actualNetwork.getEdgeList().add(lookAtEdge);
-				
-				//Add neighbar
+
+				// Add neighbar
 				AbstractCanvasObject edgeNeighbor;
-				if(lookAtEdge.getA().equals(lookAtObject)) {
+				if (lookAtEdge.getA().equals(lookAtObject)) {
 					edgeNeighbor = lookAtEdge.getB();
-					
-				}else {
+
+				} else {
 					edgeNeighbor = lookAtEdge.getA();
 				}
-				if(!neighbors.contains(edgeNeighbor)) {
+				if (!neighbors.contains(edgeNeighbor)) {
 					neighbors.add(edgeNeighbor);
 				}
 			}
 		}
 	}
-	
+
 	public Optional<DecoratedState> getActualDecorState() {
 		return actualDecorState;
 	}
-	public Optional<VisualRepresentationalState> getActualVisualRepresentationalState(){
+
+	public Optional<VisualRepresentationalState> getActualVisualRepresentationalState() {
 		return Optional.ofNullable(savesVisual.get(timeStep));
 	}
+
 	public Optional<VisualRepresentationalState> getVisualRepresentationalState(int timestep) {
 		return Optional.ofNullable(savesVisual.get(timestep));
 	}
 
-
 }

+ 2 - 2
src/ui/model/Consumer.java → src/holeg/ui/model/Consumer.java

@@ -1,8 +1,8 @@
-package ui.model;
+package holeg.ui.model;
 
 import java.util.ArrayList;
 
-import model.HolonObject;
+import holeg.model.HolonObject;
 
 public class Consumer extends DecoratedHolonObject {
 

+ 7 - 7
src/ui/model/DecoratedGroupNode.java → src/holeg/ui/model/DecoratedGroupNode.java

@@ -1,15 +1,15 @@
-package ui.model;
+package holeg.ui.model;
 
 import java.util.ArrayList;
 import java.util.stream.Stream;
 
+import holeg.model.Edge;
+import holeg.model.Flexibility;
+import holeg.model.GroupNode;
+import holeg.model.HolonElement;
+import holeg.model.Node;
+import holeg.ui.model.DecoratedHolonObject.HolonObjectState;
 import jdk.jfr.Unsigned;
-import model.Edge;
-import model.Flexibility;
-import model.GroupNode;
-import model.HolonElement;
-import model.Node;
-import ui.model.DecoratedHolonObject.HolonObjectState;
 
 /**
  * For the @VisualRepresentationalState only.

+ 2 - 2
src/ui/model/DecoratedHolonObject.java → src/holeg/ui/model/DecoratedHolonObject.java

@@ -1,6 +1,6 @@
-package ui.model;
+package holeg.ui.model;
 
-import model.HolonObject;
+import holeg.model.HolonObject;
 
 public abstract class DecoratedHolonObject {
 	public enum HolonObjectState {

+ 7 - 6
src/ui/model/DecoratedNetwork.java → src/holeg/ui/model/DecoratedNetwork.java

@@ -1,12 +1,13 @@
-package ui.model;
+package holeg.ui.model;
 
 import java.util.ArrayList;
 import java.util.stream.Stream;
-import model.HolonElement;
-import model.HolonObject;
-import model.Edge;
-import ui.model.DecoratedHolonObject.HolonObjectState;
-import ui.model.Model.FairnessModel;
+
+import holeg.model.Edge;
+import holeg.model.HolonElement;
+import holeg.model.HolonObject;
+import holeg.ui.model.DecoratedHolonObject.HolonObjectState;
+import holeg.ui.model.Model.FairnessModel;
 
 public class DecoratedNetwork {
 	private ArrayList<Supplier> supplierList = new ArrayList<Supplier>();

+ 3 - 3
src/ui/model/DecoratedState.java → src/holeg/ui/model/DecoratedState.java

@@ -1,10 +1,10 @@
-package ui.model;
+package holeg.ui.model;
 
 import java.util.ArrayList;
 import java.util.stream.Stream;
 
-import model.Edge;
-import model.Flexibility;
+import holeg.model.Edge;
+import holeg.model.Flexibility;
 
 public class DecoratedState {
 	int timestepOfState;

+ 2 - 2
src/ui/model/DecoratedSwitch.java → src/holeg/ui/model/DecoratedSwitch.java

@@ -1,6 +1,6 @@
-package ui.model;
+package holeg.ui.model;
 
-import model.HolonSwitch;
+import holeg.model.HolonSwitch;
 
 public class DecoratedSwitch {
 	public enum SwitchState{

+ 3 - 3
src/ui/model/ExitCable.java → src/holeg/ui/model/ExitCable.java

@@ -1,7 +1,7 @@
-package ui.model;
+package holeg.ui.model;
 
-import model.AbstractCanvasObject;
-import model.Edge;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.Edge;
 /**
  * For the Visual State.
  * @author Tom

+ 1 - 1
src/ui/model/IdCounter.java → src/holeg/ui/model/IdCounter.java

@@ -1,4 +1,4 @@
-package ui.model;
+package holeg.ui.model;
 
 import com.google.gson.annotations.Expose;
 

+ 4 - 4
src/ui/model/IntermediateCalculationCable.java → src/holeg/ui/model/IntermediateCalculationCable.java

@@ -1,8 +1,8 @@
-package ui.model;
+package holeg.ui.model;
 
-import model.AbstractCanvasObject;
-import model.Edge;
-import model.GroupNode;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.Edge;
+import holeg.model.GroupNode;
 
 /**
  * A VisualRepresentation to represent a connection from a UpperNode to a AbstactCpsObject, but actually the UpperNode is not connected.

+ 7 - 7
src/ui/model/MinimumModel.java → src/holeg/ui/model/MinimumModel.java

@@ -1,14 +1,14 @@
-package ui.model;
+package holeg.ui.model;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 
-import model.AbstractCanvasObject;
-import model.Edge;
-import model.GroupNode;
-import model.HolonObject;
-import model.HolonSwitch;
-import model.Node;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.Edge;
+import holeg.model.GroupNode;
+import holeg.model.HolonObject;
+import holeg.model.HolonSwitch;
+import holeg.model.Node;
 
 /**
  * For DecoratedState And VisualRepresentationalState

+ 4 - 4
src/ui/model/MinimumNetwork.java → src/holeg/ui/model/MinimumNetwork.java

@@ -1,10 +1,10 @@
-package ui.model;
+package holeg.ui.model;
 
 import java.util.ArrayList;
 
-import model.AbstractCanvasObject;
-import model.Edge;
-import model.HolonObject;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.Edge;
+import holeg.model.HolonObject;
 
 public class MinimumNetwork {
 	private ArrayList<HolonObject> holonObjectList = new ArrayList<HolonObject>();

+ 18 - 15
src/ui/model/Model.java → src/holeg/ui/model/Model.java

@@ -1,6 +1,7 @@
-package ui.model;
+package holeg.ui.model;
 
 import java.util.AbstractMap.SimpleEntry;
+import java.util.logging.Logger;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -12,19 +13,19 @@ import java.util.stream.Collectors;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 
-import adapter.AbstractCpsObjectAdapter;
-import adapter.PairAdapter;
-import adapter.PositionAdapter;
-import model.AbstractCanvasObject;
-import model.Edge;
-import model.Flexibility;
-import model.GroupNode;
-import model.HolonElement;
-import model.HolonObject;
-import model.HolonSwitch;
-import model.Node;
-import ui.view.main.Category;
-import utility.Vector2Int;
+import holeg.adapter.AbstractCpsObjectAdapter;
+import holeg.adapter.PairAdapter;
+import holeg.adapter.PositionAdapter;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.Edge;
+import holeg.model.Flexibility;
+import holeg.model.GroupNode;
+import holeg.model.HolonElement;
+import holeg.model.HolonObject;
+import holeg.model.HolonSwitch;
+import holeg.model.Node;
+import holeg.ui.view.main.Category;
+import holeg.utility.Vector2Int;
 
 /**
  * The Class Model is the class where everything is saved. All changes made to
@@ -34,9 +35,10 @@ import utility.Vector2Int;
  */
 public class Model {
 
-	
+   private static final Logger LOGGER = Logger.getLogger(Model.class.getName());
     private static final int GRAPH_ITERATIONS = 100;
     // Global Variables
+    // TODO(Tom2021-12-07): REMOVE
     private static int scale = 50; // Picture Scale
     private static int halfScale = scale / 2;
     // Canvas Attributes
@@ -119,6 +121,7 @@ public class Model {
      * default values.
      */
     public Model() {
+    	LOGGER.fine("Init Model");
         setCategories(new ArrayList<>());
         setObjectsOnCanvas(new ArrayList<>());
         setEdgesOnCanvas(new ArrayList<>());

+ 2 - 2
src/ui/model/Passiv.java → src/holeg/ui/model/Passiv.java

@@ -1,6 +1,6 @@
-package ui.model;
+package holeg.ui.model;
 
-import model.HolonObject;
+import holeg.model.HolonObject;
 
 public class Passiv extends DecoratedHolonObject {
 	public Passiv(HolonObject objectToLookAt) {

+ 2 - 2
src/ui/model/Supplier.java → src/holeg/ui/model/Supplier.java

@@ -1,8 +1,8 @@
-package ui.model;
+package holeg.ui.model;
 
 import java.util.ArrayList;
 
-import model.HolonObject;
+import holeg.model.HolonObject;
 
 public class Supplier extends DecoratedHolonObject {
 

+ 7 - 7
src/ui/model/VisualRepresentationalState.java → src/holeg/ui/model/VisualRepresentationalState.java

@@ -1,4 +1,4 @@
-package ui.model;
+package holeg.ui.model;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -7,12 +7,12 @@ import java.util.List;
 import java.util.ListIterator;
 import java.util.stream.Collectors;
 
-import model.AbstractCanvasObject;
-import model.Edge;
-import model.GroupNode;
-import model.HolonObject;
-import model.Node;
-import ui.model.ExitCable.ExitCableState;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.Edge;
+import holeg.model.GroupNode;
+import holeg.model.HolonObject;
+import holeg.model.Node;
+import holeg.ui.model.ExitCable.ExitCableState;
 
 public class VisualRepresentationalState {
 	private ArrayList<Supplier> supplierList = new ArrayList<>();

+ 10 - 10
src/ui/view/canvas/AbstractCanvas.java → src/holeg/ui/view/canvas/AbstractCanvas.java

@@ -1,4 +1,4 @@
-package ui.view.canvas;
+package holeg.ui.view.canvas;
 
 import java.awt.BasicStroke;
 import java.awt.Color;
@@ -18,15 +18,15 @@ import javax.swing.JPanel;
 import javax.swing.JPopupMenu;
 import javax.swing.Timer;
 
-import model.AbstractCanvasObject;
-import model.Edge;
-import model.GroupNode;
-import model.HolonElement;
-import model.HolonObject;
-import model.Node;
-import ui.controller.Control;
-import ui.model.Model;
-import utility.Vector2Int;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.Edge;
+import holeg.model.GroupNode;
+import holeg.model.HolonElement;
+import holeg.model.HolonObject;
+import holeg.model.Node;
+import holeg.ui.controller.Control;
+import holeg.ui.model.Model;
+import holeg.utility.Vector2Int;
 
 /**
  * Collection of methods and values needed in both <code>MyCanvas</code> and

+ 26 - 23
src/ui/view/canvas/Canvas.java → src/holeg/ui/view/canvas/Canvas.java

@@ -1,4 +1,4 @@
-package ui.view.canvas;
+package holeg.ui.view.canvas;
 
 import java.awt.BasicStroke;
 import java.awt.Color;
@@ -27,28 +27,28 @@ import javax.swing.SwingUtilities;
 
 import com.google.gson.JsonParseException;
 
-import model.AbstractCanvasObject;
-import model.Edge;
-import model.GroupNode;
-import model.HolonObject;
-import model.HolonSwitch;
-import model.Node;
-import preferences.ColorPreference;
-import ui.controller.Control;
-import ui.model.Consumer;
-import ui.model.DecoratedGroupNode;
-import ui.model.DecoratedHolonObject;
-import ui.model.DecoratedHolonObject.HolonObjectState;
-import ui.model.DecoratedSwitch;
-import ui.model.ExitCable;
-import ui.model.DecoratedSwitch.SwitchState;
-import ui.view.inspector.UnitGraph;
-import ui.model.Model;
-import ui.model.Passiv;
-import ui.model.Supplier;
-import ui.model.VisualRepresentationalState;
-import utility.ImageImport;
-import utility.Vector2Int;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.Edge;
+import holeg.model.GroupNode;
+import holeg.model.HolonObject;
+import holeg.model.HolonSwitch;
+import holeg.model.Node;
+import holeg.preferences.ColorPreference;
+import holeg.ui.controller.Control;
+import holeg.ui.model.Consumer;
+import holeg.ui.model.DecoratedGroupNode;
+import holeg.ui.model.DecoratedHolonObject;
+import holeg.ui.model.DecoratedSwitch;
+import holeg.ui.model.ExitCable;
+import holeg.ui.model.Model;
+import holeg.ui.model.Passiv;
+import holeg.ui.model.Supplier;
+import holeg.ui.model.VisualRepresentationalState;
+import holeg.ui.model.DecoratedHolonObject.HolonObjectState;
+import holeg.ui.model.DecoratedSwitch.SwitchState;
+import holeg.ui.view.inspector.UnitGraph;
+import holeg.utility.ImageImport;
+import holeg.utility.Vector2Int;
 
 /**
  * This Class is the Canvas. All Objects will be visualized here
@@ -344,6 +344,9 @@ public class Canvas extends AbstractCanvas implements MouseListener, MouseMotion
 		float currentEnergy;
 		float capacity = eCable.getEdge().maxCapacity;
 		boolean unlimited = eCable.getEdge().isUnlimitedCapacity();
+		if(eCable.getEdge().getState() == null) {
+			System.err.print(eCable.getEdge());
+		}
 		switch (eCable.getEdge().getState()) {
 		case Burned:
 			currentEnergy = 0.0f;

+ 20 - 20
src/ui/view/canvas/GroupNodeCanvas.java → src/holeg/ui/view/canvas/GroupNodeCanvas.java

@@ -1,4 +1,4 @@
-package ui.view.canvas;
+package holeg.ui.view.canvas;
 
 import java.awt.BasicStroke;
 import java.awt.Color;
@@ -11,25 +11,25 @@ import java.io.IOException;
 import java.util.HashSet;
 import java.util.Optional;
 
-import model.AbstractCanvasObject;
-import model.Edge;
-import model.GroupNode;
-import model.HolonObject;
-import model.HolonSwitch;
-import model.Node;
-import preferences.ColorPreference;
-import ui.controller.Control;
-import ui.model.Consumer;
-import ui.model.DecoratedGroupNode;
-import ui.model.DecoratedSwitch;
-import ui.model.ExitCable;
-import ui.model.Model;
-import ui.model.Passiv;
-import ui.model.Supplier;
-import ui.model.VisualRepresentationalState;
-import ui.view.inspector.UnitGraph;
-import utility.ImageImport;
-import utility.Vector2Int;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.Edge;
+import holeg.model.GroupNode;
+import holeg.model.HolonObject;
+import holeg.model.HolonSwitch;
+import holeg.model.Node;
+import holeg.preferences.ColorPreference;
+import holeg.ui.controller.Control;
+import holeg.ui.model.Consumer;
+import holeg.ui.model.DecoratedGroupNode;
+import holeg.ui.model.DecoratedSwitch;
+import holeg.ui.model.ExitCable;
+import holeg.ui.model.Model;
+import holeg.ui.model.Passiv;
+import holeg.ui.model.Supplier;
+import holeg.ui.model.VisualRepresentationalState;
+import holeg.ui.view.inspector.UnitGraph;
+import holeg.utility.ImageImport;
+import holeg.utility.Vector2Int;
 
 //TODO(Tom2021-12-1) delete GroupNodeCanvas completely and only have canvas Class
 public class GroupNodeCanvas extends Canvas {

+ 1 - 1
src/ui/view/component/ButtonTabComponent.java → src/holeg/ui/view/component/ButtonTabComponent.java

@@ -1,4 +1,4 @@
-package ui.view.component;
+package holeg.ui.view.component;
 
 /*
  * Copyright (c) 1995, 2008, Oracle and/or its affiliates. All rights reserved.

+ 2 - 2
src/ui/view/component/Console.java → src/holeg/ui/view/component/Console.java

@@ -1,4 +1,4 @@
-package ui.view.component;
+package holeg.ui.view.component;
 
 import java.awt.BorderLayout;
 
@@ -11,7 +11,7 @@ import javax.swing.JTextArea;
 import javax.swing.JToolBar;
 import javax.swing.text.DefaultCaret;
 
-import utility.ImageImport;
+import holeg.utility.ImageImport;
 /**
  * Little new swing object to print data to a console.
  * @author tom

+ 1 - 1
src/ui/view/component/TrippleCheckBox.java → src/holeg/ui/view/component/TrippleCheckBox.java

@@ -1,4 +1,4 @@
-package ui.view.component;
+package holeg.ui.view.component;
 
 import java.awt.Color;
 import java.awt.Component;

+ 2 - 2
src/ui/view/dialog/AboutUsPopUp.java → src/holeg/ui/view/dialog/AboutUsPopUp.java

@@ -1,8 +1,8 @@
-package ui.view.dialog;
+package holeg.ui.view.dialog;
 
 import javax.swing.*;
 
-import utility.ImageImport;
+import holeg.utility.ImageImport;
 
 import java.awt.*;
 

+ 5 - 5
src/ui/view/dialog/AddElementPopUp.java → src/holeg/ui/view/dialog/AddElementPopUp.java

@@ -1,4 +1,4 @@
-package ui.view.dialog;
+package holeg.ui.view.dialog;
 
 import java.awt.BorderLayout;
 import java.awt.Color;
@@ -16,10 +16,10 @@ import javax.swing.JPanel;
 import javax.swing.JTextField;
 import javax.swing.border.EmptyBorder;
 
-import model.HolonElement;
-import model.HolonObject;
-import preferences.ColorPreference;
-import utility.ImageImport;
+import holeg.model.HolonElement;
+import holeg.model.HolonObject;
+import holeg.preferences.ColorPreference;
+import holeg.utility.ImageImport;
 
 /**
  * popup for adding an Holon Element to a holon Object.

+ 7 - 7
src/ui/view/dialog/AddObjectPopUp.java → src/holeg/ui/view/dialog/AddObjectPopUp.java

@@ -1,4 +1,4 @@
-package ui.view.dialog;
+package holeg.ui.view.dialog;
 
 import java.awt.BorderLayout;
 import java.awt.Color;
@@ -31,12 +31,12 @@ import javax.swing.SwingConstants;
 import javax.swing.border.EmptyBorder;
 import javax.swing.filechooser.FileNameExtensionFilter;
 
-import model.AbstractCanvasObject;
-import model.HolonElement;
-import model.HolonObject;
-import preferences.ColorPreference;
-import ui.controller.Control;
-import utility.ImageImport;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.HolonElement;
+import holeg.model.HolonObject;
+import holeg.preferences.ColorPreference;
+import holeg.ui.controller.Control;
+import holeg.utility.ImageImport;
 
 /**
  * Popup for adding a Holon Object to a Category.

+ 6 - 7
src/ui/view/dialog/BackgroundPopUp.java → src/holeg/ui/view/dialog/BackgroundPopUp.java

@@ -1,14 +1,13 @@
-package ui.view.dialog;
-
-import ui.controller.Control;
-import ui.model.Model;
-import ui.view.canvas.Canvas;
-import utility.ImageImport;
+package holeg.ui.view.dialog;
 
 import javax.swing.*;
 import javax.swing.filechooser.FileNameExtensionFilter;
 
-import model.GroupNode;
+import holeg.model.GroupNode;
+import holeg.ui.controller.Control;
+import holeg.ui.model.Model;
+import holeg.ui.view.canvas.Canvas;
+import holeg.utility.ImageImport;
 
 import java.awt.BorderLayout;
 import java.awt.Color;

+ 9 - 8
src/ui/view/dialog/CanvasResizePopUp.java → src/holeg/ui/view/dialog/CanvasResizePopUp.java

@@ -1,13 +1,14 @@
-package ui.view.dialog;
-
-import ui.controller.Control;
-import ui.model.Model;
-import ui.view.canvas.Canvas;
-import ui.view.canvas.GroupNodeCanvas;
-import utility.ImageImport;
-import utility.Vector2Int;
+package holeg.ui.view.dialog;
 
 import javax.swing.*;
+
+import holeg.ui.controller.Control;
+import holeg.ui.model.Model;
+import holeg.ui.view.canvas.Canvas;
+import holeg.ui.view.canvas.GroupNodeCanvas;
+import holeg.utility.ImageImport;
+import holeg.utility.Vector2Int;
+
 import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;

+ 3 - 3
src/ui/view/dialog/CreateNewDialog.java → src/holeg/ui/view/dialog/CreateNewDialog.java

@@ -1,4 +1,4 @@
-package ui.view.dialog;
+package holeg.ui.view.dialog;
 
 import java.awt.BorderLayout;
 import java.awt.CardLayout;
@@ -15,8 +15,8 @@ import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JTextField;
 
-import model.HolonObject;
-import ui.controller.Control;
+import holeg.model.HolonObject;
+import holeg.ui.controller.Control;
 
 
 

+ 7 - 7
src/ui/view/dialog/CreateTemplatePopUp.java → src/holeg/ui/view/dialog/CreateTemplatePopUp.java

@@ -1,4 +1,4 @@
-package ui.view.dialog;
+package holeg.ui.view.dialog;
 
 import java.awt.BorderLayout;
 import java.awt.Choice;
@@ -20,12 +20,12 @@ import javax.swing.JTextField;
 import javax.swing.border.EmptyBorder;
 import javax.swing.filechooser.FileNameExtensionFilter;
 
-import model.HolonElement;
-import model.HolonObject;
-import ui.controller.Control;
-import ui.model.Model;
-import ui.view.main.Category;
-import utility.ImageImport;
+import holeg.model.HolonElement;
+import holeg.model.HolonObject;
+import holeg.ui.controller.Control;
+import holeg.ui.model.Model;
+import holeg.ui.view.main.Category;
+import holeg.utility.ImageImport;
 
 /**
  * PopUp for creating Holon Object Template.

+ 4 - 4
src/ui/view/dialog/EditEdgesPopUp.java → src/holeg/ui/view/dialog/EditEdgesPopUp.java

@@ -1,4 +1,4 @@
-package ui.view.dialog;
+package holeg.ui.view.dialog;
 
 import java.awt.BorderLayout;
 import java.awt.Font;
@@ -16,9 +16,9 @@ import javax.swing.JRadioButton;
 import javax.swing.JTextField;
 import javax.swing.border.EmptyBorder;
 
-import model.Edge;
-import ui.controller.Control;
-import ui.view.canvas.Canvas;
+import holeg.model.Edge;
+import holeg.ui.controller.Control;
+import holeg.ui.view.canvas.Canvas;
 
 /**
  * Popup for Editing Edges.

+ 4 - 4
src/ui/view/dialog/SearchPopUp.java → src/holeg/ui/view/dialog/SearchPopUp.java

@@ -1,4 +1,4 @@
-package ui.view.dialog;
+package holeg.ui.view.dialog;
 
 import java.awt.BorderLayout;
 import java.awt.Font;
@@ -15,9 +15,9 @@ import javax.swing.JRadioButton;
 import javax.swing.JTextField;
 import javax.swing.border.EmptyBorder;
 
-import model.AbstractCanvasObject;
-import ui.controller.Control;
-import ui.view.canvas.Canvas;
+import holeg.model.AbstractCanvasObject;
+import holeg.ui.controller.Control;
+import holeg.ui.view.canvas.Canvas;
 
 /**
  * This Class represents a popup to seatch for Objects on the Canvas.

+ 14 - 14
src/ui/view/information/FilterableGroupNode.java → src/holeg/ui/view/information/FilterableGroupNode.java

@@ -1,24 +1,24 @@
-package ui.view.information;
+package holeg.ui.view.information;
 
 import java.util.ArrayList;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
+import holeg.model.Edge;
+import holeg.model.Flexibility;
+import holeg.model.GroupNode;
+import holeg.model.HolonElement;
+import holeg.model.Node;
+import holeg.ui.model.Consumer;
+import holeg.ui.model.DecoratedGroupNode;
+import holeg.ui.model.DecoratedHolonObject;
+import holeg.ui.model.DecoratedSwitch;
+import holeg.ui.model.ExitCable;
+import holeg.ui.model.Passiv;
+import holeg.ui.model.Supplier;
+import holeg.ui.model.DecoratedHolonObject.HolonObjectState;
 import jdk.jfr.Unsigned;
-import model.Edge;
-import model.Flexibility;
-import model.GroupNode;
-import model.HolonElement;
-import model.Node;
-import ui.model.Consumer;
-import ui.model.DecoratedGroupNode;
-import ui.model.DecoratedHolonObject;
-import ui.model.DecoratedHolonObject.HolonObjectState;
-import ui.model.DecoratedSwitch;
-import ui.model.ExitCable;
-import ui.model.Passiv;
-import ui.model.Supplier;
 
 /**
  * For the @VisualRepresentationalState only.

+ 16 - 16
src/ui/view/information/HolonInformationPanel.java → src/holeg/ui/view/information/HolonInformationPanel.java

@@ -1,4 +1,4 @@
-package ui.view.information;
+package holeg.ui.view.information;
 
 import java.awt.BorderLayout;
 import java.awt.Color;
@@ -28,20 +28,20 @@ import org.knowm.xchart.XChartPanel;
 import org.knowm.xchart.style.PieStyler;
 import org.knowm.xchart.style.PieStyler.LabelType;
 
-import model.Flexibility;
-import model.GroupNode;
-import model.HolonElement;
-import model.HolonObject;
-import preferences.ColorPreference;
-import ui.controller.Control;
-import ui.model.Consumer;
-import ui.model.DecoratedGroupNode;
-import ui.model.DecoratedHolonObject;
-import ui.model.DecoratedHolonObject.HolonObjectState;
-import ui.model.Passiv;
-import ui.model.Supplier;
-import ui.model.VisualRepresentationalState;
-import utility.FormatFloat;
+import holeg.model.Flexibility;
+import holeg.model.GroupNode;
+import holeg.model.HolonElement;
+import holeg.model.HolonObject;
+import holeg.preferences.ColorPreference;
+import holeg.ui.controller.Control;
+import holeg.ui.model.Consumer;
+import holeg.ui.model.DecoratedGroupNode;
+import holeg.ui.model.DecoratedHolonObject;
+import holeg.ui.model.Passiv;
+import holeg.ui.model.Supplier;
+import holeg.ui.model.VisualRepresentationalState;
+import holeg.ui.model.DecoratedHolonObject.HolonObjectState;
+import holeg.utility.FormatFloat;
 
 public class HolonInformationPanel extends JPanel {
 	private Predicate<DecoratedHolonObject> stateFilter = (object) -> true;// = (object) -> object.getState() ==
@@ -114,7 +114,7 @@ public class HolonInformationPanel extends JPanel {
 		panelHolonObject.updateToolTips();
 
 		// UPDATE PRIORITYS
-		ui.view.information.FilterableGroupNode.PriorityCounts priorityCounts = decoratedGroupNode
+		holeg.ui.view.information.FilterableGroupNode.PriorityCounts priorityCounts = decoratedGroupNode
 				.getPriorityCounts(stateFilter);
 
 		priorityChart.updatePieSeries("Essential", priorityCounts.essential);

+ 9 - 9
src/ui/view/inspector/Inspector.java → src/holeg/ui/view/inspector/Inspector.java

@@ -1,4 +1,4 @@
-package ui.view.inspector;
+package holeg.ui.view.inspector;
 
 import java.awt.BorderLayout;
 import java.awt.Color;
@@ -20,14 +20,14 @@ import javax.swing.JScrollPane;
 import javax.swing.JSplitPane;
 import javax.swing.JToolBar;
 
-import interfaces.TimelineDependent;
-import model.HolonElement;
-import model.HolonSwitch;
-import ui.controller.Control;
-import utility.FormatFloat;
-import utility.ImageImport;
-import utility.Maths;
-import utility.listener.ResizeListener;
+import holeg.interfaces.TimelineDependent;
+import holeg.model.HolonElement;
+import holeg.model.HolonSwitch;
+import holeg.ui.controller.Control;
+import holeg.utility.FormatFloat;
+import holeg.utility.ImageImport;
+import holeg.utility.Maths;
+import holeg.utility.listener.ResizeListener;
 
 public class Inspector extends JSplitPane {
 	private final UnitGraph unitGraph;

+ 14 - 14
src/ui/view/inspector/InspectorTable.java → src/holeg/ui/view/inspector/InspectorTable.java

@@ -1,4 +1,4 @@
-package ui.view.inspector;
+package holeg.ui.view.inspector;
 
 import java.awt.BorderLayout;
 import java.awt.Color;
@@ -36,20 +36,20 @@ import javax.swing.KeyStroke;
 import javax.swing.SwingConstants;
 import javax.swing.text.NumberFormatter;
 
-import model.AbstractCanvasObject;
-import model.GroupNode;
-import model.HolonElement;
-import model.HolonObject;
-import model.HolonElement.Priority;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.GroupNode;
+import holeg.model.HolonElement;
+import holeg.model.HolonObject;
+import holeg.model.HolonElement.Priority;
+import holeg.preferences.ColorPreference;
+import holeg.ui.controller.Control;
+import holeg.ui.view.component.TrippleCheckBox;
+import holeg.ui.view.component.TrippleCheckBox.State;
+import holeg.utility.ImageImport;
+import holeg.utility.Pool;
+import holeg.utility.events.Action;
+import holeg.utility.listener.SimpleDocumentListener;
 import net.miginfocom.swing.MigLayout;
-import preferences.ColorPreference;
-import ui.controller.Control;
-import ui.view.component.TrippleCheckBox;
-import ui.view.component.TrippleCheckBox.State;
-import utility.ImageImport;
-import utility.Pool;
-import utility.events.Action;
-import utility.listener.SimpleDocumentListener;
 
 public class InspectorTable extends JPanel {
 	private Pool<ElementRow> rowPool = new Pool<ElementRow>() {

+ 9 - 9
src/ui/view/inspector/UnitGraph.java → src/holeg/ui/view/inspector/UnitGraph.java

@@ -1,4 +1,4 @@
-package ui.view.inspector;
+package holeg.ui.view.inspector;
 
 import java.awt.BasicStroke;
 import java.awt.Color;
@@ -21,14 +21,14 @@ import java.util.Set;
 
 import javax.swing.JPanel;
 
-import interfaces.GraphEditable.GraphType;
-import model.HolonElement;
-import interfaces.TimelineDependent;
-import ui.controller.Control;
-import ui.model.Model;
-import utility.Maths;
-import utility.Vector2Float;
-import utility.Vector2Int;
+import holeg.interfaces.TimelineDependent;
+import holeg.interfaces.GraphEditable.GraphType;
+import holeg.model.HolonElement;
+import holeg.ui.controller.Control;
+import holeg.ui.model.Model;
+import holeg.utility.Maths;
+import holeg.utility.Vector2Float;
+import holeg.utility.Vector2Int;
 
 /**
  * This Class represents a Graph where the User can model the behavior of

+ 3 - 3
src/ui/view/inspector/UnitGraphPoint.java → src/holeg/ui/view/inspector/UnitGraphPoint.java

@@ -1,7 +1,7 @@
-package ui.view.inspector;
+package holeg.ui.view.inspector;
 
-import utility.Vector2Float;
-import utility.Vector2Int;
+import holeg.utility.Vector2Float;
+import holeg.utility.Vector2Int;
 
 /**
  * A class for saving all points of a Object with a editable state.

+ 2 - 2
src/ui/view/main/Category.java → src/holeg/ui/view/main/Category.java

@@ -1,11 +1,11 @@
-package ui.view.main;
+package holeg.ui.view.main;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 
 import com.google.gson.annotations.Expose;
 
-import model.AbstractCanvasObject;
+import holeg.model.AbstractCanvasObject;
 
 /**
  * Class "Category" performs the functionality of listing elements into groups.

+ 32 - 32
src/ui/view/main/GUI.java → src/holeg/ui/view/main/GUI.java

@@ -1,4 +1,4 @@
-package ui.view.main;
+package holeg.ui.view.main;
 
 import java.awt.BorderLayout;
 import java.awt.Color;
@@ -64,37 +64,37 @@ import org.apache.commons.compress.archivers.ArchiveException;
 
 import com.google.gson.JsonParseException;
 
-import model.AbstractCanvasObject;
-import model.Edge;
-import model.GroupNode;
-import model.HolonObject;
-import model.HolonSwitch;
-import preferences.ColorPreference;
-import ui.controller.Control;
-import ui.model.DecoratedState;
-import ui.model.IdCounter;
-import ui.model.Model;
-import ui.model.IdCounter.CounterType;
-import ui.model.Model.FairnessModel;
-import ui.view.canvas.AbstractCanvas;
-import ui.view.canvas.Canvas;
-import ui.view.canvas.GroupNodeCanvas;
-import ui.view.component.ButtonTabComponent;
-import ui.view.dialog.AboutUsPopUp;
-import ui.view.dialog.AddObjectPopUp;
-import ui.view.dialog.BackgroundPopUp;
-import ui.view.dialog.CanvasResizePopUp;
-import ui.view.dialog.CreateNewDialog;
-import ui.view.dialog.CreateNewDialog.Option;
-import ui.view.dialog.EditEdgesPopUp;
-import ui.view.dialog.SearchPopUp;
-import ui.view.information.HolonInformationPanel;
-import ui.view.inspector.Inspector;
-import ui.view.inspector.UnitGraph;
-import ui.view.window.AddOnWindow;
-import ui.view.window.FlexWindow;
-import ui.view.window.Outliner;
-import utility.ImageImport;
+import holeg.model.AbstractCanvasObject;
+import holeg.model.Edge;
+import holeg.model.GroupNode;
+import holeg.model.HolonObject;
+import holeg.model.HolonSwitch;
+import holeg.preferences.ColorPreference;
+import holeg.ui.controller.Control;
+import holeg.ui.model.DecoratedState;
+import holeg.ui.model.IdCounter;
+import holeg.ui.model.Model;
+import holeg.ui.model.IdCounter.CounterType;
+import holeg.ui.model.Model.FairnessModel;
+import holeg.ui.view.canvas.AbstractCanvas;
+import holeg.ui.view.canvas.Canvas;
+import holeg.ui.view.canvas.GroupNodeCanvas;
+import holeg.ui.view.component.ButtonTabComponent;
+import holeg.ui.view.dialog.AboutUsPopUp;
+import holeg.ui.view.dialog.AddObjectPopUp;
+import holeg.ui.view.dialog.BackgroundPopUp;
+import holeg.ui.view.dialog.CanvasResizePopUp;
+import holeg.ui.view.dialog.CreateNewDialog;
+import holeg.ui.view.dialog.EditEdgesPopUp;
+import holeg.ui.view.dialog.SearchPopUp;
+import holeg.ui.view.dialog.CreateNewDialog.Option;
+import holeg.ui.view.information.HolonInformationPanel;
+import holeg.ui.view.inspector.Inspector;
+import holeg.ui.view.inspector.UnitGraph;
+import holeg.ui.view.window.AddOnWindow;
+import holeg.ui.view.window.FlexWindow;
+import holeg.ui.view.window.Outliner;
+import holeg.utility.ImageImport;
 
 /**
  * Graphical User Interface.

+ 19 - 6
src/ui/view/main/Main.java → src/holeg/ui/view/main/Main.java

@@ -1,13 +1,18 @@
-package ui.view.main;
-
-import ui.controller.Control;
-import ui.controller.IndexTranslator;
-import ui.model.Model;
+package holeg.ui.view.main;
 
 import javax.swing.*;
 
+import holeg.ui.controller.Control;
+import holeg.ui.controller.IndexTranslator;
+import holeg.ui.model.Model;
+
 import java.awt.*;
+import java.io.FileInputStream;
+import java.io.IOException;
 import java.util.Locale;
+import java.util.logging.Level;
+import java.util.logging.LogManager;
+import java.util.logging.Logger;
 
 /**
  * The main Class in this Program. The GUI is created in this Class.
@@ -16,7 +21,15 @@ import java.util.Locale;
  * 
  */
 public class Main {
-
+	private static final LogManager logManager = LogManager.getLogManager();
+    private static final Logger LOGGER = Logger.getLogger(Main.class.getName());
+    static{
+        try {
+            logManager.readConfiguration(new FileInputStream("./config/log.properties"));
+        } catch (IOException exception) {
+            LOGGER.log(Level.SEVERE, "Error in loading configuration",exception);
+        }
+    }
 	/**
 	 * main method of this program.
 	 * 

+ 5 - 5
src/ui/view/main/TimePanel.java → src/holeg/ui/view/main/TimePanel.java

@@ -1,4 +1,4 @@
-package ui.view.main;
+package holeg.ui.view.main;
 
 import java.awt.BorderLayout;
 import java.awt.Color;
@@ -33,10 +33,10 @@ import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 import javax.swing.plaf.basic.BasicSliderUI;
 
-import preferences.ColorPreference;
-import ui.controller.Control;
-import utility.ImageImport;
-import utility.listener.LostFocusListener;
+import holeg.preferences.ColorPreference;
+import holeg.ui.controller.Control;
+import holeg.utility.ImageImport;
+import holeg.utility.listener.LostFocusListener;
 
 /**
  * This Class represents a Panel where the User can start and stop the

Some files were not shown because too many files changed in this diff