/** * This file is part of CloudML [ http://cloudml.org ] * * Copyright (C) 2012 - SINTEF ICT * Contact: Franck Chauvel <franck.chauvel@sintef.no> * * Module: root * * CloudML is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 3 of * the License, or (at your option) any later version. * * CloudML is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with CloudML. If not, see * <http://www.gnu.org/licenses/>. */ package org.cloudml.ui.graph; import java.lang.reflect.Field; import javax.swing.table.AbstractTableModel; import org.cloudml.codecs.Vertex; import org.cloudml.core.InternalComponentInstance; import org.cloudml.core.VMInstance; public class CPSMTable extends AbstractTableModel{ private Vertex v; private final String[] heads = {"Property", "Value"}; private final Field[] properties; public CPSMTable(Vertex v){ super(); this.v=v; Class c; if(v.getType().equals("node")) c=((VMInstance)v.getInstance()).getClass(); else c=((InternalComponentInstance)v.getInstance()).getClass(); this.properties=c.getDeclaredFields(); } public int getRowCount() { return properties.length; } @Override public String getColumnName(int pCol) { return heads[pCol]; } public int getColumnCount() { return heads.length; } public Object getValueAt(int rowIndex, int columnIndex) { Object o=null; switch(columnIndex){ case 0: return properties[rowIndex].getName(); default: try { properties[rowIndex].setAccessible(true); if(v.getType().equals("node")) o=properties[rowIndex].get(((VMInstance)v.getInstance())); else o=properties[rowIndex].get(((InternalComponentInstance)v.getInstance())); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } return o+""; } } }