📄 staxmonitortestcaseextension.java
字号:
/*****************************************************************************//* Software Testing Automation Framework (STAF) *//* (C) Copyright IBM Corp. 2002, 2004 *//* *//* This software is licensed under the Common Public License (CPL) V1.0. *//*****************************************************************************/package com.ibm.staf.service.stax;import javax.swing.*;import javax.swing.event.*;import com.ibm.staf.*;import java.util.*;import java.awt.*;import java.lang.reflect.*;import java.io.*;public class STAXMonitorTestcaseExtension implements STAXMonitorExtension, ListSelectionListener{ // Column indexes in fTestcaseTable static final int NUM_ELEMENTS = 6; static final int NAME_INDEX = 0; static final int PASS_INDEX = 1; static final int FAIL_INDEX = 2; static final int DURATION_INDEX = 3; static final int STARTS_INDEX = 4; static final int INFO_INDEX = 5; JPanel fPanel; STAFHandle fHandle; String fStaxMachine; String fStaxServiceName; String fJobNumber; Vector fTestcaseColumns; JTable fTestcaseTable; STAXMonitorTableModel fTestcaseTableModel; STAXMonitorTableSorter fTestcaseModelSorter; STAXMonitorFrame fMonitorFrame; String fTitle; public JComponent init(STAXMonitorFrame monitorFrame, boolean newJob, String staxMachineName, String staxServiceName, String jobNumber) throws STAFException { fMonitorFrame = monitorFrame; fStaxMachine = staxMachineName; fStaxServiceName = staxServiceName; fJobNumber = jobNumber; fTitle = "Testcase Info"; fPanel = new JPanel(); fPanel.setLayout(new BorderLayout()); try { fHandle = STAXMonitorUtil.getNewSTAFHandle( "STAFMonitorTestcaseTableExtension"); } catch (STAFException ex) { } fTestcaseColumns = new Vector(); fTestcaseColumns.addElement(" Name "); fTestcaseColumns.addElement(" PASS "); fTestcaseColumns.addElement(" FAIL "); // The extra spaces after Duration are to make the column big enough // to allow <Pending> to fit so it doesn't keep resizing. fTestcaseColumns.addElement(" Duration "); fTestcaseColumns.addElement(" Starts "); fTestcaseColumns.addElement(" Information "); fTestcaseTableModel = new STAXMonitorTableModel(fTestcaseColumns, 0); fTestcaseModelSorter = new STAXMonitorTableSorter(fTestcaseTableModel, 0); fTestcaseTable = new JTable(fTestcaseModelSorter); fTestcaseModelSorter.addMouseListenerToHeaderInTable( fTestcaseTable, INFO_INDEX); fTestcaseTable.getColumnModel().getColumn(NAME_INDEX).setCellRenderer( new STAXMonitorTableCellRenderer(Color.blue)); fTestcaseTable.getColumnModel().getColumn(NAME_INDEX). setHeaderRenderer(new STAXMonitorTableCellRenderer(Color.black, true, new Font("Dialog", Font.BOLD, 12))); fTestcaseTable.getColumnModel().getColumn(PASS_INDEX).setCellRenderer( new STAXMonitorTableCellRenderer(new Color(0, 130, 0))); fTestcaseTable.getColumnModel().getColumn(PASS_INDEX). setHeaderRenderer(new STAXMonitorTableCellRenderer(Color.black, true, new Font("Dialog", Font.BOLD, 12))); fTestcaseTable.getColumnModel().getColumn(FAIL_INDEX).setCellRenderer( new STAXMonitorTableCellRenderer(Color.red)); fTestcaseTable.getColumnModel().getColumn(FAIL_INDEX). setHeaderRenderer(new STAXMonitorTableCellRenderer(Color.black, true, new Font("Dialog", Font.BOLD, 12))); fTestcaseTable.getColumnModel().getColumn(DURATION_INDEX). setCellRenderer(new STAXMonitorTableCellRenderer( Color.black, false, new Font("Dialog", Font.BOLD, 12))); fTestcaseTable.getColumnModel().getColumn(DURATION_INDEX). setHeaderRenderer(new STAXMonitorTableCellRenderer(Color.black, true, new Font("Dialog", Font.BOLD, 12))); fTestcaseTable.getColumnModel().getColumn(STARTS_INDEX). setCellRenderer(new STAXMonitorTableCellRenderer( Color.black, false, new Font("Dialog", Font.BOLD, 12))); fTestcaseTable.getColumnModel().getColumn(STARTS_INDEX). setHeaderRenderer(new STAXMonitorTableCellRenderer(Color.black, true, new Font("Dialog", Font.BOLD, 12))); fTestcaseTable.getColumnModel().getColumn(INFO_INDEX).setCellRenderer( new STAXMonitorTableCellRenderer(Color.black, false, new Font("Dialog", Font.BOLD, 12))); fTestcaseTable.getColumnModel().getColumn(INFO_INDEX). setHeaderRenderer(new STAXMonitorTableCellRenderer(Color.black, true, new Font("Dialog", Font.BOLD, 12))); fTestcaseTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); if (!newJob) { String request = "LIST JOB " + fJobNumber + " TESTCASES"; STAFResult listResult = fHandle.submit2( fStaxMachine, fStaxServiceName, request); if (listResult.rc != 0) { throw new STAFException( listResult.rc, "Error listing Job TESTCASES\n" + listResult.result); } STAFMarshallingContext mc = STAFMarshallingContext.unmarshall(listResult.result); java.util.List tcList = (java.util.List)mc.getRootObject(); Iterator iter = tcList.iterator(); while (iter.hasNext()) { Map tcMap = (Map)iter.next(); Object rowData[] = new Object[NUM_ELEMENTS]; rowData[NAME_INDEX] = (String)tcMap.get("testcaseName"); rowData[PASS_INDEX] = new Integer( (String)tcMap.get("numPasses")); rowData[FAIL_INDEX] = new Integer( (String)tcMap.get("numFails")); String elapsedTime = (String)tcMap.get("elapsedTime"); if ((elapsedTime.equals("<Pending>")) || (elapsedTime.indexOf(":") != 1)) { rowData[DURATION_INDEX] = elapsedTime; } else { rowData[DURATION_INDEX] = "??:??:??"; } rowData[STARTS_INDEX] = new Integer( (String)tcMap.get("numStarts")); rowData[INFO_INDEX] = ""; fTestcaseTableModel.addRow(rowData); } updateTestcaseTotals(); STAXMonitorUtil.updateRowHeights(fTestcaseTable, INFO_INDEX); STAXMonitorUtil.sizeColumnsToFitText(fTestcaseTable); } STAXMonitorUtil.sizeColumnsToFitText(fTestcaseTable); return fTestcaseTable; } public String getNotificationEventTypes() { return "testcasestatus testcase"; } public void term() { STAXMonitorUtil.freeHandle(fHandle.getHandle()); } public String getTitle() { return fTitle; } public int getExtensionType() { return STAXMonitorFrame.EXTENSION_INFO; } public JComponent getComponent() { return fTestcaseTable; } public void valueChanged(ListSelectionEvent e) { } public void handleEvent(Map map) { String status = (String)map.get("status"); String name = (String)map.get("name"); String pass = (String)map.get("status-pass"); if (pass.equals("")) { pass = "0"; } String fail = (String)map.get("status-fail"); if (fail.equals("")) { fail = "0"; } String tcMessage = (String)map.get("message"); if (tcMessage == null) { tcMessage = new String(""); } String elapsedTime = (String)map.get("elapsed-time"); String numStarts = (String)map.get("num-starts"); if (numStarts == null) { numStarts = "1"; } synchronized (fTestcaseTableModel) { Vector tcVector = fTestcaseTableModel.getDataVector(); boolean found = false; int rowIndex = 0; for (int j = 0; j < tcVector.size(); j++) { if (!found) { if (((Vector)(tcVector.elementAt(j))). elementAt(NAME_INDEX).equals(name)) { found = true; rowIndex = j; } } } if (found && tcMessage.equals("")) { // save existing message tcMessage = (String)((Vector)(tcVector.elementAt(rowIndex))). elementAt(INFO_INDEX); } if (!found) { Object rowData[] = new Object[NUM_ELEMENTS]; rowData[NAME_INDEX] = name; rowData[PASS_INDEX] = new Integer(pass); rowData[FAIL_INDEX] = new Integer(fail); rowData[DURATION_INDEX] = elapsedTime; rowData[STARTS_INDEX] = new Integer(numStarts); rowData[INFO_INDEX] = tcMessage; fTestcaseTableModel.addRow(rowData); } else { // don't need to update the name // NOTE: since the row has already been added to the table // we must call setValueAt on the fTestcaseModelSorter fTestcaseModelSorter.setValueAt(new Integer(pass), fTestcaseModelSorter.map(rowIndex), PASS_INDEX); fTestcaseModelSorter.setValueAt(new Integer(fail), fTestcaseModelSorter.map(rowIndex), FAIL_INDEX); if (elapsedTime != null) { fTestcaseModelSorter.setValueAt( elapsedTime, fTestcaseModelSorter.map(rowIndex), DURATION_INDEX); } if (numStarts != null) { fTestcaseModelSorter.setValueAt(new Integer(numStarts), fTestcaseModelSorter.map(rowIndex), STARTS_INDEX); } if (!tcMessage.equals("")) { fTestcaseModelSorter.setValueAt(tcMessage, fTestcaseModelSorter.map(rowIndex), INFO_INDEX); } } updateTestcaseTotals(); STAXMonitorUtil.updateRowHeights(fTestcaseTable, INFO_INDEX); STAXMonitorUtil.sizeColumnsToFitText(fTestcaseTable); fTestcaseTable.getTableHeader().repaint(); } } public void updateTestcaseTotals() { synchronized (fTestcaseTableModel) { Vector testcaseData = fTestcaseTableModel.getDataVector(); int passTotal = 0; int failTotal = 0; for (int j = 0; j < testcaseData.size(); j++) { Vector row = (Vector)(testcaseData.elementAt(j)); passTotal += ((Integer)row.elementAt(PASS_INDEX)).intValue(); failTotal += ((Integer)row.elementAt(FAIL_INDEX)).intValue(); } fTestcaseTable.getColumnModel().getColumn(PASS_INDEX). setHeaderValue(" PASS: " + passTotal + " "); fTestcaseTable.getColumnModel().getColumn(FAIL_INDEX). setHeaderValue(" FAIL: " + failTotal + " "); } } public void addRow(Vector vector, String name, String value) { Vector newRow = new Vector(2); newRow.add(name); newRow.add(value); vector.add(newRow); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -