From dc4af77a19e9d836fdd2fda326b7ba172ce0116b Mon Sep 17 00:00:00 2001
From: Ludovic Apvrille <ludovic.apvrille@telecom-paristech.fr>
Date: Sat, 20 Feb 2016 11:40:32 +0000
Subject: [PATCH] Update on met elements in avatar simulations

---
 .../MetElementsTableModel.java                | 212 ++++++++++++++++++
 1 file changed, 212 insertions(+)
 create mode 100755 src/ui/avatarinteractivesimulation/MetElementsTableModel.java

diff --git a/src/ui/avatarinteractivesimulation/MetElementsTableModel.java b/src/ui/avatarinteractivesimulation/MetElementsTableModel.java
new file mode 100755
index 0000000000..22ff4838fe
--- /dev/null
+++ b/src/ui/avatarinteractivesimulation/MetElementsTableModel.java
@@ -0,0 +1,212 @@
+/**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille
+
+   ludovic.apvrille AT enst.fr
+
+   This software is a computer program whose purpose is to allow the
+   edition of TURTLE analysis, design and deployment diagrams, to
+   allow the generation of RT-LOTOS or Java code from this diagram,
+   and at last to allow the analysis of formal validation traces
+   obtained from external tools, e.g. RTL from LAAS-CNRS and CADP
+   from INRIA Rhone-Alpes.
+
+   This software is governed by the CeCILL  license under French law and
+   abiding by the rules of distribution of free software.  You can  use,
+   modify and/ or redistribute the software under the terms of the CeCILL
+   license as circulated by CEA, CNRS and INRIA at the following URL
+   "http://www.cecill.info".
+
+   As a counterpart to the access to the source code and  rights to copy,
+   modify and redistribute granted by the license, users are provided only
+   with a limited warranty  and the software's author,  the holder of the
+   economic rights,  and the successive licensors  have only  limited
+   liability.
+
+   In this respect, the user's attention is drawn to the risks associated
+   with loading,  using,  modifying and/or developing or reproducing the
+   software by the user in light of its specific status of free software,
+   that may mean  that it is complicated to manipulate,  and  that  also
+   therefore means  that it is reserved for developers  and  experienced
+   professionals having in-depth computer knowledge. Users are therefore
+   encouraged to load and test the software's suitability as regards their
+   requirements in conditions enabling the security of their systems and/or
+   data to be ensured and,  more generally, to use and operate it in the
+   same conditions as regards security.
+
+   The fact that you are presently reading this means that you have had
+   knowledge of the CeCILL license and that you accept its terms.
+
+   /**
+   * Class MetElementsTableModel
+   * Information on elements mets by the simulation
+   * Creation: 02/20/2016
+   * @version 1.0 02/20/2016
+   * @author Ludovic APVRILLE
+   * @see
+   */
+
+package ui.avatarinteractivesimulation;
+
+import java.util.*;
+import javax.swing.table.*;
+
+import myutil.*;
+import avatartranslator.*;
+import avatartranslator.directsimulation.*;
+import ui.avatarsmd.*;
+
+public class MetElementsTableModel extends AbstractTableModel {
+    private static String ERROR_STRING = "-";
+
+    private AvatarSpecificationSimulation ass;
+
+    private int nbOfRows;
+
+    //private String [] names;
+    public MetElementsTableModel(AvatarSpecificationSimulation _ass) {
+        ass = _ass;
+        computeData();
+    }
+
+    // From AbstractTableModel
+    public int getRowCount() {
+        return nbOfRows;
+    }
+
+    public int getColumnCount() {
+        return 3;
+    }
+
+    public Object getValueAt(int row, int column) {
+        if (ass == null) {
+            return ERROR_STRING;
+        }
+
+        if (column == 0) {
+            return getBlockName(row);
+        } else if (column == 1) {
+            return getElementID(row);
+        } else if (column == 2) {
+            return getMetValue(row);
+        } 
+        return "";
+    }
+
+    public String getColumnName(int columnIndex) {
+        switch(columnIndex) {
+        case 0:
+            return "Block Name";
+        case 1:
+            return "Elt";
+        case 2:
+            return "Met value";
+         }
+        return "unknown";
+    }
+
+    private AvatarSimulationBlock getBlockByRow(int _row) {
+        int indexBlock = 0;
+        AvatarSimulationBlock block = null;
+
+        Vector<AvatarSimulationBlock>  blocks = ass.getSimulationBlocks();
+        if (blocks.size() == 0) {
+            return null;
+        }
+
+
+        while(_row >= 0) {
+            block = blocks.get(indexBlock);
+            if (_row < block.getBlock().stateNb()) {
+                return block;
+            }
+            _row = _row - block.getBlock().stateNb();
+            indexBlock ++;
+        }
+
+        return block;
+    }
+
+    private AvatarState getStateByRow(int _row) {
+        int indexBlock = 0;
+        Vector<AvatarSimulationBlock>  blocks = ass.getSimulationBlocks();
+        if (blocks.size() == 0) {
+            return null;
+        }
+
+        AvatarSimulationBlock block = null;
+        while(_row >= 0) {
+            block = blocks.get(indexBlock);
+            if (_row < block.getBlock().stateNb()) {
+                return block.getBlock().getState(_row);
+            }
+            _row = _row - block.getBlock().stateNb();
+            indexBlock ++;
+        }
+
+        return null;
+    }
+
+    private String getAttributeValueByRow(int _row) {
+        int indexBlock = 0;
+        Vector<AvatarSimulationBlock>  blocks = ass.getSimulationBlocks();
+        if (blocks.size() == 0) {
+            return ERROR_STRING;
+        }
+
+        AvatarSimulationBlock block;
+        while(_row >= 0) {
+            block = blocks.get(indexBlock);
+            if (_row < block.getBlock().stateNb()) {
+                return block.getAttributeValue(_row);
+            }
+            _row = _row - block.getBlock().stateNb();
+            indexBlock ++;
+        }
+
+        return ERROR_STRING;
+    }
+
+    // Assumes tmlm != null
+    private String getBlockName(int row) {
+        return getBlockByRow(row).getName();
+    }
+
+    // Assumes tmlm != null
+    private String getElementID(int row) {
+        AvatarState as = getStateByRow(row);
+        if (as == null) {
+            return ERROR_STRING;
+        }
+        return as.getName();
+    }
+
+    private String getMetValue(int row) {
+        AvatarState as = getStateByRow(row);
+	try {
+	    AvatarSMDState  asmds = (AvatarSMDState)(as.getReferenceObject());
+	    return ""+asmds.getAVATARMet();
+	} catch (Exception e) {
+	    return ERROR_STRING;
+	}
+     }
+
+
+    private void computeData() {
+        nbOfRows = 0;
+        if (ass == null) {
+            return ;
+        }
+
+        Vector<AvatarSimulationBlock>  blocks = ass.getSimulationBlocks();
+
+        if( blocks.size() == 0) {
+            return ;
+        }
+
+        for(AvatarSimulationBlock block: blocks) {
+            nbOfRows += block.getBlock().stateNb();
+        }
+
+        return;
+    }
+
+}
-- 
GitLab