Browse Source

#76: changed behaviour of element-table for single selection, meaning of totalEnergy and behaviour when switching flexibility

I. Dix 7 years ago
parent
commit
ae9ede5e61

+ 42 - 33
src/classes/HolonElement.java

@@ -28,7 +28,7 @@ public class HolonElement {
     @Expose
     private boolean active;
     /*
-     * Gives us whether this element is flexible and can flexibly use any part of the energy in flexibility
+     * Gives us whether this element is flexible and can flexibly use any part of the energy in flexibleEnergyAvailable
      */
     @Expose
     private boolean flexible;
@@ -36,7 +36,7 @@ public class HolonElement {
      * Flexibility (meaning the actual
      */
     @Expose
-    private float flexibility;
+    private float flexibleEnergyAvailable;
     /* Total Energy */
     @Expose
     private float totalEnergy;
@@ -74,7 +74,7 @@ public class HolonElement {
         setEnergyAt(energy);
         setGraphPoints(new LinkedList<>());
         setId(IdCounterElem.nextId());
-        setFlexibleEnergyAmount(0);
+        setFlexibleEnergyAvailable(0);
         setFlexible(false);
     }
 
@@ -90,7 +90,7 @@ public class HolonElement {
         setEnergyAt(energy);
         setGraphPoints(new LinkedList<>());
         setId(id);
-        setFlexibleEnergyAmount(0);
+        setFlexibleEnergyAvailable(0);
         setFlexible(false);
     }
 
@@ -115,7 +115,7 @@ public class HolonElement {
         }
         setSaving(null);
         setId(IdCounterElem.nextId());
-        setFlexibleEnergyAmount(0);
+        setFlexibleEnergyAvailable(0);
         setFlexible(false);
     }
 
@@ -231,12 +231,11 @@ public class HolonElement {
      * @return totalEnergy (actual)
      */
     public float getTotalEnergy() {
-        // TODO: anpassen
-        if (flexible) {
-            totalEnergy = ((float) amount) * (energy + flexibility);
-        } else {
-            totalEnergy = ((float) amount) * energy;
-        }
+//        if (flexible) {
+//            totalEnergy = ((float) amount) * (energy + flexibleEnergyAvailable);
+//        } else {
+        totalEnergy = ((float) amount) * energy;
+//        }
         return totalEnergy;
     }
 
@@ -247,13 +246,13 @@ public class HolonElement {
      * @return energy value
      */
     public float getTotalEnergyAtTimeStep(int x) {
-        float result;
-        if (flexible) {
-            result = ((float) amount) * (energyAt[x] + flexibility);
-        } else {
-            result = ((float) amount) * energyAt[x];
-        }
-        return result;
+//        float result =((float) amount) * energyAt[x];
+//        if (flexible) {
+//            result = ((float) amount) * (energyAt[x] + flexibleEnergyAvailable);
+//        } else {
+//            result = ((float) amount) * energyAt[x];
+//        }
+        return ((float) amount) * energyAt[x];
     }
 
     /**
@@ -296,46 +295,56 @@ public class HolonElement {
     }
 
     /**
-     * Get the flexibility of an element
+     * Get the flexibleEnergyAvailable of an element
      */
-    public float getFlexibleEnergyAmount() {
-        return this.flexibility;
+    public float getFlexibleEnergyAvailable() {
+        return this.flexibleEnergyAvailable;
     }
 
     /**
-     * Set the flexibility of an element
+     * Set the flexibleEnergyAvailable of an element
      */
-    public void setFlexibleEnergyAmount(float f) {
-        this.flexibility = f;
+    public void setFlexibleEnergyAvailable(float f) {
+        this.flexibleEnergyAvailable = f;
     }
 
     /**
-     * Get the flexibility of an element
+     * Get the flexibleEnergyAvailable of an element
      */
     public boolean isFlexible() {
         return this.flexible;
     }
 
     /**
-     * Set the flexibility of an element
+     * Set the flexibleEnergyAvailable of an element
      */
     public void setFlexible(boolean b) {
         this.flexible = b;
 
-        // if flexibility was set to true
+        // if flexibleEnergyAvailable was set to true
         if (b) {
             // set active to false
             this.active = false;
 
-            // move energy to flexibility (becomes the possible-to-use energy)
-            setFlexibleEnergyAmount(getEnergy());
-            // and set actually used energy to zero (can be changed by algorithms, the grid itself or the user)
-            setEnergy(0);
+            // move energy to flexibleEnergyAvailable (becomes the possible-to-use energy)
+            if (getEnergy() != 0) {
+                setFlexibleEnergyAvailable(getEnergy());
+                // and set actually used energy to zero (can be changed by algorithms, the grid itself or the user)
+                setEnergy(0);
+                setEnergyAt(0);
+            }
         } else {
             // move the energy to actually used energy and set flexible amount to 0
-            setEnergy(getFlexibleEnergyAmount());
-            setFlexibleEnergyAmount(0);
+            if (getFlexibleEnergyAvailable() != 0) {
+                setEnergy(getFlexibleEnergyAvailable());
+                setEnergyAt(getFlexibleEnergyAvailable());
+            }
+            setFlexibleEnergyAvailable(0);
         }
+
+//        System.out.println("after setFlexible(" + String.valueOf(b) + "):");
+//        System.out.println("flexible " + flexible + ", active: " + active + ", energy: " + energy
+//                + ", flexible energy: " + flexibleEnergyAvailable + "\n");
     }
 
     /**

+ 5 - 5
src/classes/HolonObject.java

@@ -372,7 +372,7 @@ public class HolonObject extends AbstractCpsObject {
         float tempFlex = 0;
         for (HolonElement e : getElements()) {
             if (e.isFlexible()) {
-                tempFlex += e.getFlexibleEnergyAmount() * e.getAmount();
+                tempFlex += e.getFlexibleEnergyAvailable() * e.getAmount();
             }
         }
         this.totalFlex = tempFlex;
@@ -384,8 +384,8 @@ public class HolonObject extends AbstractCpsObject {
     public float getFlexProd() {
         float tempFlex = 0;
         for (HolonElement e : getElements()) {
-            if (e.getFlexibleEnergyAmount() > 0) {
-                tempFlex += e.getFlexibleEnergyAmount();
+            if (e.getFlexibleEnergyAvailable() > 0) {
+                tempFlex += e.getFlexibleEnergyAvailable();
             }
         }
         return tempFlex;
@@ -397,8 +397,8 @@ public class HolonObject extends AbstractCpsObject {
     public float getFlexCons() {
         float tempFlex = 0;
         for (HolonElement e : getElements()) {
-            if (e.getFlexibleEnergyAmount() < 0) {
-                tempFlex += e.getFlexibleEnergyAmount();
+            if (e.getFlexibleEnergyAvailable() < 0) {
+                tempFlex += e.getFlexibleEnergyAvailable();
             }
         }
         return tempFlex;

+ 4 - 4
src/ui/controller/UpdateController.java

@@ -59,8 +59,8 @@ public class UpdateController {
 				if (o instanceof HolonObject) {
 					for (HolonElement he : ((HolonObject) o).getElements()) {
 						Object[] temp = { o.getName() + ", " + o.getId(), he.getId(), he.getEleName(), he.getEnergy(),
-                                he.getFlexibleEnergyAmount(), he.getAmount(), he.isActive(), he.isFlexible()};
-                        table.addRow(temp);
+								he.getFlexibleEnergyAvailable(), he.getAmount(), he.isActive(), he.isFlexible()};
+						table.addRow(temp);
 					}
 				}
 			}
@@ -68,8 +68,8 @@ public class UpdateController {
 			AbstractCpsObject o = objects.get(0);
 			if (o instanceof HolonObject) {
 				for (HolonElement he : ((HolonObject) o).getElements()) {
-                    Object[] temp = {he.getId(), he.getEleName(), he.getEnergy(), he.getFlexibleEnergyAmount(), he.getAmount(),
-                            he.isActive(), he.isFlexible()};
+					Object[] temp = {he.getId(), he.getEleName(), he.getEnergy(), he.getFlexibleEnergyAvailable(), he.getAmount(),
+							he.isActive(), he.isFlexible()};
                     table.addRow(temp);
 				}
 			}

+ 19 - 6
src/ui/view/GUI.java

@@ -1004,7 +1004,7 @@ public class GUI implements CategoryListener {
                             // Flexibility
                             else if (selectedValueX == 4) {
                                 Float ftemp = Float.parseFloat(newStuff);
-                                eleTemp.setFlexibleEnergyAmount(ftemp);
+                                eleTemp.setFlexibleEnergyAvailable(ftemp);
                             }
                             // Amount of Elements update
                             else if (selectedValueX == 5) {
@@ -1035,10 +1035,9 @@ public class GUI implements CategoryListener {
                             Boolean bTemp = Boolean.parseBoolean(newBStuff);
                             eleBTemp.setFlexible(bTemp);
 
-                            // set inactive, if flexible was clicked
-                            if (bTemp) {
-                                model.getSingleTable().setValueAt(Boolean.FALSE, selectedValueBY, 5);
-                            }
+                            // set energy/flexibility/active cells anew, if flexible was clicked
+                            setTableNewCellsAfterFlexibilityClick(bTemp, eleBTemp, selectedValueBY);
+
                         } else {
                             // Update of HolonElement
                             HolonElement eleTemp = updCon.getActualHolonElement((HolonObject) updCon.getActualCps(),
@@ -1055,7 +1054,7 @@ public class GUI implements CategoryListener {
                             } // Flexibility
                             else if (selectedValueX == 3) {
                                 Float ftemp = Float.parseFloat(newStuff);
-                                eleTemp.setFlexibleEnergyAmount(ftemp);
+                                eleTemp.setFlexibleEnergyAvailable(ftemp);
                             }
                             // Amount of Elements update
                             else if (selectedValueX == 4) {
@@ -2232,6 +2231,20 @@ public class GUI implements CategoryListener {
         }
     }
 
+    /**
+     * if flexibility was turned on, then active needs to be turned off, the energy currently produced/consumed
+     *
+     * @param eleBTemp
+     * @param selectedValueBY
+     */
+    private void setTableNewCellsAfterFlexibilityClick(boolean bTemp, HolonElement eleBTemp, int selectedValueBY) {
+        if (bTemp) {
+            model.getSingleTable().setValueAt(Boolean.FALSE, selectedValueBY, 5);
+        }
+        model.getSingleTable().setValueAt(eleBTemp.getFlexibleEnergyAvailable(), selectedValueBY, 3);
+        model.getSingleTable().setValueAt(eleBTemp.getEnergy(), selectedValueBY, 2);
+    }
+
     /**
      * Custom Mouse adapter makes contentPane gain focus once mouse leaves this component
      * so copy/paste/cut and "select all" works

+ 5 - 5
src/ui/view/StatisticGraph.java

@@ -182,7 +182,7 @@ public class StatisticGraph extends JPanel {
                 case TrackedDataSet.CONSUMPTION:
                     for (HolonElement h : ((HolonObject) set.getCpsObject()).getElements()) {
                         if (h.getEnergy() < 0) {
-                            val += (h.getEnergy() + h.getFlexibleEnergyAmount()) * h.getAmount();
+                            val += (h.getEnergy() + h.getFlexibleEnergyAvailable()) * h.getAmount();
                         }
                     }
                     val *= -1;
@@ -190,7 +190,7 @@ public class StatisticGraph extends JPanel {
                 case TrackedDataSet.PRODUCTION:
                     for (HolonElement h : ((HolonObject) set.getCpsObject()).getElements()) {
                         if (h.getEnergy() > 0) {
-                            val += (h.getEnergy() + h.getFlexibleEnergyAmount()) * h.getAmount();
+                            val += (h.getEnergy() + h.getFlexibleEnergyAvailable()) * h.getAmount();
                         }
                     }
                     break;
@@ -612,7 +612,7 @@ public class StatisticGraph extends JPanel {
             if (obj instanceof HolonObject) {
                 for (HolonElement ele : ((HolonObject) obj).getElements()) {
                     if (ele.getEnergy() > 0) {
-                        val += (ele.getEnergy() + ele.getFlexibleEnergyAmount()) * ele.getAmount();
+                        val += (ele.getEnergy() + ele.getFlexibleEnergyAvailable()) * ele.getAmount();
                     }
                 }
             } else if (obj instanceof CpsUpperNode) {
@@ -632,7 +632,7 @@ public class StatisticGraph extends JPanel {
             if (obj instanceof HolonObject) {
                 for (HolonElement ele : ((HolonObject) obj).getElements()) {
                     if (ele.getEnergy() < 0) {
-                        val += (ele.getEnergy() + ele.getFlexibleEnergyAmount()) * ele.getAmount();
+                        val += (ele.getEnergy() + ele.getFlexibleEnergyAvailable()) * ele.getAmount();
                     }
                 }
             } else if (obj instanceof CpsUpperNode) {
@@ -653,7 +653,7 @@ public class StatisticGraph extends JPanel {
         for (AbstractCpsObject obj : objects) {
             if (obj instanceof HolonObject) {
                 for (HolonElement ele : ((HolonObject) obj).getElements()) {
-                    val += (ele.getEnergy() + ele.getFlexibleEnergyAmount()) * ele.getAmount();
+                    val += (ele.getEnergy() + ele.getFlexibleEnergyAvailable()) * ele.getAmount();
                 }
             } else if (obj instanceof CpsUpperNode) {
                 val += getMaxWastedEnergy(((CpsUpperNode) obj).getNodes());