Pārlūkot izejas kodu

get dataSet und neue property sachen

Kevin Trometer 7 gadi atpakaļ
vecāks
revīzija
91b2274bdc
2 mainītis faili ar 106 papildinājumiem un 13 dzēšanām
  1. 40 4
      src/ui/model/Model.java
  2. 66 9
      src/ui/view/StatisticGraph.java

+ 40 - 4
src/ui/model/Model.java

@@ -9,8 +9,11 @@ import java.util.List;
 
 import javax.swing.JTable;
 
+import com.sun.xml.internal.bind.v2.runtime.unmarshaller.XsiNilLoader.Array;
+
 import classes.Category;
 import classes.CpsEdge;
+import classes.CpsUpperNode;
 import classes.AbstractCpsObject;
 import classes.HolonElement;
 import classes.HolonObject;
@@ -110,7 +113,6 @@ public class Model {
 	private Object algorithm = null;
 	private int selectedHolonBody;
 
-
 	/**
 	 * Constructor for the model. It initializes the categories and
 	 * objectsOnCanvas by default values. Listeners are also initialized by
@@ -759,10 +761,9 @@ public class Model {
 	public void setSelectedHolonBody(int i) {
 		selectedHolonBody = i;
 	}
-	
-	
+
 	/**
-	 *  Returns the ID of the selected HolonBody
+	 * Returns the ID of the selected HolonBody
 	 * 
 	 * @return selectedHolonBody
 	 */
@@ -770,4 +771,39 @@ public class Model {
 		return selectedHolonBody;
 	}
 
+	/**
+	 * get all Switches
+	 */
+	public ArrayList<HolonSwitch> getSwitches() {
+		ArrayList<HolonSwitch> switches = new ArrayList<>();
+		for (AbstractCpsObject obj : getObjectsOnCanvas()) {
+			if (obj instanceof HolonSwitch) {
+				switches.add((HolonSwitch) obj);
+			} else if (obj instanceof CpsUpperNode) {
+				getSwitchesRec(((CpsUpperNode) obj).getNodes(), switches);
+			}
+		}
+		return switches;
+	}
+
+	/**
+	 * get the Amount of Switches help function
+	 *
+	 * @param objects
+	 *            objects
+	 * @param switches
+	 *            List of switches
+	 */
+	private ArrayList<HolonSwitch> getSwitchesRec(ArrayList<AbstractCpsObject> objects,
+			ArrayList<HolonSwitch> switches) {
+		for (AbstractCpsObject obj : objects) {
+			if (obj instanceof HolonSwitch) {
+				switches.add((HolonSwitch) obj);
+			} else if (obj instanceof CpsUpperNode) {
+				getSwitchesRec(((CpsUpperNode) obj).getNodes(), switches);
+			}
+		}
+		return switches;
+	}
+
 }

+ 66 - 9
src/ui/view/StatisticGraph.java

@@ -15,11 +15,14 @@ import javax.swing.ImageIcon;
 import javax.swing.JPanel;
 import javax.swing.Timer;
 
+import com.sun.media.jfxmedia.track.Track;
+
 import classes.AbstractCpsObject;
 import classes.CpsUpperNode;
 import classes.HolonElement;
 import classes.HolonObject;
 import classes.HolonSwitch;
+import classes.SubNet;
 import classes.TrackedDataSet;
 import ui.controller.Control;
 import ui.model.Model;
@@ -46,7 +49,7 @@ public class StatisticGraph extends JPanel {
 	GeneralPath path = new GeneralPath();
 
 	// Data
-	public ArrayList<TrackedDataSet> objects = new ArrayList<>();
+	private ArrayList<TrackedDataSet> dataSets = new ArrayList<>();
 
 	/**
 	 * Constructor.
@@ -59,7 +62,6 @@ public class StatisticGraph extends JPanel {
 	public StatisticGraph(final Model model, Control control) {
 		this.controller = control;
 		this.model = model;
-
 		this.setBackground(Color.WHITE);
 	}
 
@@ -101,7 +103,7 @@ public class StatisticGraph extends JPanel {
 			addValues();
 
 			// Create Paths and draw them
-			for (TrackedDataSet set : objects) {
+			for (TrackedDataSet set : dataSets) {
 				path.reset();
 				switch (set.getProperty()) {
 				case TrackedDataSet.CONSUMPTION:
@@ -112,6 +114,9 @@ public class StatisticGraph extends JPanel {
 				case TrackedDataSet.AMOUNT_HOLONS:
 				case TrackedDataSet.GROUP_CONSUMPTION:
 				case TrackedDataSet.GROUP_PRODUCTION:
+				case TrackedDataSet.AMOUNT_CLOSED_SWITCHES:
+				case TrackedDataSet.AVG_AMOUNT_OBJECTS_IN_HOLONS:
+				case TrackedDataSet.AVG_AMOUNT_ELEMENTS_IN_HOLONS:
 					createPathFloats(set);
 					break;
 				case TrackedDataSet.ON_OFF:
@@ -139,7 +144,7 @@ public class StatisticGraph extends JPanel {
 	 *            the Object to add
 	 */
 	public void addObject(TrackedDataSet set) {
-		objects.add(set);
+		dataSets.add(set);
 	}
 
 	/**
@@ -149,7 +154,7 @@ public class StatisticGraph extends JPanel {
 	 *            the id of the Object to remove
 	 */
 	public void removeObject(int id) {
-		objects.remove(id);
+		dataSets.remove(id);
 	}
 
 	/**
@@ -184,7 +189,7 @@ public class StatisticGraph extends JPanel {
 	 */
 	public void calcMaximum() {
 		maximum = 0;
-		for (TrackedDataSet set : objects) {
+		for (TrackedDataSet set : dataSets) {
 			float val = 0;
 			switch (set.getProperty()) {
 			case TrackedDataSet.CONSUMPTION:
@@ -237,6 +242,28 @@ public class StatisticGraph extends JPanel {
 					}
 				}
 				break;
+			case TrackedDataSet.AMOUNT_CLOSED_SWITCHES:
+				val = model.getSwitches().size();
+				break;
+			case TrackedDataSet.AVG_AMOUNT_OBJECTS_IN_HOLONS:
+				for (SubNet sub : controller.getSimManager().getSubNets()) {
+					if (val < sub.getObjects().size()) {
+						val = sub.getObjects().size();
+					}
+				}
+				break;
+			case TrackedDataSet.AVG_AMOUNT_ELEMENTS_IN_HOLONS:
+				float eCount = 0;
+				for (SubNet sub : controller.getSimManager().getSubNets()) {
+					for (HolonObject obj : sub.getObjects()) {
+						eCount += obj.getElements().size();
+					}
+					if (val < eCount) {
+						val = eCount;
+					}
+					eCount = 0;
+				}
+				break;
 			default:
 				maximum = 0;
 				break;
@@ -252,7 +279,7 @@ public class StatisticGraph extends JPanel {
 	 * Add the Current Values to each set
 	 */
 	private void addValues() {
-		for (TrackedDataSet set : objects) {
+		for (TrackedDataSet set : dataSets) {
 			float val = 0;
 			switch (set.getProperty()) {
 			case TrackedDataSet.CONSUMPTION:
@@ -316,16 +343,42 @@ public class StatisticGraph extends JPanel {
 						model.getCurIteration());
 				break;
 			case TrackedDataSet.GROUP_PRODUCTION:
-				set.setValAt(getTotalProductionAt(((CpsUpperNode) set.getCpsObject()).getNodes(), model.getCurIteration()),
+				set.setValAt(
+						getTotalProductionAt(((CpsUpperNode) set.getCpsObject()).getNodes(), model.getCurIteration()),
 						model.getCurIteration());
 				break;
 			case TrackedDataSet.GROUP_CONSUMPTION:
-				set.setValAt(-getTotalConsumptionAt(((CpsUpperNode) set.getCpsObject()).getNodes(), model.getCurIteration()),
+				set.setValAt(
+						-getTotalConsumptionAt(((CpsUpperNode) set.getCpsObject()).getNodes(), model.getCurIteration()),
 						model.getCurIteration());
 				break;
 			case TrackedDataSet.AMOUNT_HOLONS:
 				set.setValAt(controller.getSimManager().getSubNets().size(), model.getCurIteration());
 				break;
+			case TrackedDataSet.AMOUNT_CLOSED_SWITCHES:
+				for (HolonSwitch s : model.getSwitches()) {
+					if (s.getState(model.getCurIteration())) {
+						val++;
+					}
+				}
+				set.setValAt(val, model.getCurIteration());
+				break;
+			case TrackedDataSet.AVG_AMOUNT_OBJECTS_IN_HOLONS:
+				for (SubNet sub : controller.getSimManager().getSubNets()) {
+					val += sub.getObjects().size();
+				}
+				val /= controller.getSimManager().getSubNets().size();
+				set.setValAt(val, model.getCurIteration());
+				break;
+			case TrackedDataSet.AVG_AMOUNT_ELEMENTS_IN_HOLONS:
+				for (SubNet sub : controller.getSimManager().getSubNets()) {
+					for (HolonObject obj : sub.getObjects()) {
+						val += obj.getElements().size();
+					}
+				}
+				val /=controller.getSimManager().getSubNets().size();
+				set.setValAt(val, model.getCurIteration());
+				break;
 			default:
 				break;
 			}
@@ -514,5 +567,9 @@ public class StatisticGraph extends JPanel {
 
 		return stateObjectss / count;
 	}
+	
+	public ArrayList<TrackedDataSet> getDataSets(){
+		return dataSets;
+	}
 
 }