⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 staxmonitortestcaseextension.java

📁 Software Testing Automation Framework (STAF)的开发代码
💻 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 + -