📄 staxmonitorprocessextension.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.awt.event.*;import java.lang.reflect.*;import java.io.*;public class STAXMonitorProcessExtension implements STAXMonitorExtension, MouseListener{ JPanel fPanel; STAFHandle fHandle; JTable fProcessTable; STAXMonitorTableModel fProcessTableModel; STAXMonitorTableSorter fProcessModelSorter; Vector fProcessColumns; Vector fProcessVector = new Vector(); Hashtable fProcessIDs = new Hashtable(); boolean fContinueProcessMonitor = true; STAFProcessMonitor fProcessMonitor; Hashtable fProcessStartTimes = new Hashtable(); String fStaxMachine; String fStaxServiceName; String fJobNumber; MonitorElapsedTime fElapsedTime; boolean fContinueElapsedTime = true; STAXMonitorFrame fMonitorFrame; String fTitle; Hashtable fProcessHashtable = new Hashtable(); public JComponent init(STAXMonitorFrame monitorFrame, boolean newJob, String staxMachineName, String staxServiceName, String jobNumber) throws STAFException { fMonitorFrame = monitorFrame; fStaxMachine = staxMachineName; fStaxServiceName = staxServiceName; fJobNumber = jobNumber; fTitle = "Active Processes"; fPanel = new JPanel(); fPanel.setLayout(new BorderLayout()); try { fHandle = STAXMonitorUtil.getNewSTAFHandle( "STAX/JobMonitor/Extension/ProcessTable"); } catch (STAFException ex) { } fProcessColumns = new Vector(); fProcessColumns.addElement("Process Name"); fProcessColumns.addElement("Elapsed Time"); fProcessColumns.addElement("Status"); fProcessColumns.addElement("Block"); fProcessColumns.addElement("Machine:Handle"); fProcessColumns.addElement("Command"); fProcessTableModel = new STAXMonitorTableModel(fProcessColumns, 0); fProcessModelSorter = new STAXMonitorTableSorter(fProcessTableModel, 0); fProcessTable = new JTable(fProcessModelSorter); fProcessModelSorter.addMouseListenerToHeaderInTable( fProcessTable, 3); fProcessTable.setRowSelectionAllowed(true); fProcessTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); fProcessTable.addMouseListener(this); fProcessTable.getColumnModel().getColumn(0).setCellRenderer( new STAXMonitorTableCellRenderer(new Color(0, 130, 0))); fProcessTable.getColumnModel().getColumn(0). setHeaderRenderer(new STAXMonitorTableCellRenderer(Color.black, true, new Font("Dialog", Font.BOLD, 12))); fProcessTable.getColumnModel().getColumn(1).setCellRenderer( new STAXMonitorTableCellRenderer(Color.blue)); fProcessTable.getColumnModel().getColumn(1). setHeaderRenderer(new STAXMonitorTableCellRenderer(Color.black, true, new Font("Dialog", Font.BOLD, 12))); fProcessTable.getColumnModel().getColumn(2).setCellRenderer( new STAXMonitorTableCellRenderer(Color.blue)); fProcessTable.getColumnModel().getColumn(2). setHeaderRenderer(new STAXMonitorTableCellRenderer(Color.black, true, new Font("Dialog", Font.BOLD, 12))); fProcessTable.getColumnModel().getColumn(3).setCellRenderer( new STAXMonitorTableCellRenderer(new Color(0, 130, 0))); fProcessTable.getColumnModel().getColumn(3). setHeaderRenderer(new STAXMonitorTableCellRenderer(Color.black, true, new Font("Dialog", Font.BOLD, 12))); fProcessTable.getColumnModel().getColumn(4).setCellRenderer( new STAXMonitorTableCellRenderer(new Color(0, 130, 0))); fProcessTable.getColumnModel().getColumn(4). setHeaderRenderer(new STAXMonitorTableCellRenderer(Color.black, true, new Font("Dialog", Font.BOLD, 12))); fProcessTable.getColumnModel().getColumn(5).setCellRenderer( new STAXMonitorTableCellRenderer(new Color(0, 130, 0))); fProcessTable.getColumnModel().getColumn(5). setHeaderRenderer(new STAXMonitorTableCellRenderer(Color.black, true, new Font("Dialog", Font.BOLD, 12))); fPanel.add(BorderLayout.CENTER, new JScrollPane(fProcessTable)); fProcessTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); STAXMonitorUtil.sizeColumnsToFitText(fProcessTable); if (!newJob) { // Determine the processes that are currently running in the job String request = "LIST JOB " + fJobNumber + " PROCESSES"; STAFResult listResult = fHandle.submit2( fStaxMachine, fStaxServiceName, request); if (listResult.rc != 0) { throw new STAFException( listResult.rc, "Error listing Job PROCESSES\n" + listResult.result); } STAFMarshallingContext mc = STAFMarshallingContext.unmarshall(listResult.result); java.util.List processList = (java.util.List)mc.getRootObject(); Iterator iter = processList.iterator(); while (iter.hasNext()) { Map processMap = (Map)iter.next(); String location = (String)processMap.get("location"); String handleNumber = (String)processMap.get("handle"); request = "QUERY JOB " + fJobNumber + " PROCESS " + location + ":" + handleNumber; STAFResult queryResult = fHandle.submit2( fStaxMachine, fStaxServiceName, request); if (queryResult.rc != 0) { continue; } mc = STAFMarshallingContext.unmarshall(queryResult.result); processMap = (HashMap)mc.getRootObject(); String block = (String)processMap.get("blockName"); String processName = (String)processMap.get("processName"); String command = (String)processMap.get("command"); String processID = location + ":" + handleNumber; String machineHandleText = location + ":"; machineHandleText += handleNumber; String startTimestamp = (String)processMap.get("startTimestamp"); String startDate = startTimestamp.substring(0, 8); String startTime = startTimestamp.substring(9); synchronized(fProcessStartTimes) { fProcessStartTimes.put( processID, STAXMonitorUtil.getCalendar2(startDate, startTime)); } Object rowData[] = new Object[6]; rowData[0] = processName; rowData[1] = ""; rowData[2] = ""; rowData[3] = block; rowData[4] = machineHandleText; rowData[5] = command; fProcessTableModel.addRow(rowData); Vector procDataVector = new Vector(); STAXMonitorUtil.assignProcessInfo(processMap, procDataVector); synchronized(fProcessHashtable) { fProcessHashtable.put(processID, procDataVector); } STAXMonitorUtil.updateRowHeights(fProcessTable, 1); STAXMonitorUtil.sizeColumnsToFitText(fProcessTable); } } fProcessMonitor = new STAFProcessMonitor(); fProcessMonitor.start(); fElapsedTime = new MonitorElapsedTime(); fElapsedTime.start(); return fProcessTable; } public String getNotificationEventTypes() { return "process"; } public String getTitle() { return fTitle; } public int getExtensionType() { return STAXMonitorFrame.EXTENSION_ACTIVE; } public JComponent getComponent() { return fProcessTable; } public void mouseClicked(MouseEvent e) { int selectedRow = fProcessTable.getSelectedRow(); if (selectedRow == -1) return; String processID = (String) fProcessTable.getValueAt(selectedRow, 4); synchronized(fProcessHashtable) { fMonitorFrame.updateCurrentSelection((String)fProcessTable.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -