📄 staxmonitorsubjobextension.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 STAXMonitorSubjobExtension extends JFrame implements STAXMonitorExtension, ActionListener, MouseListener, ListSelectionListener{ JPanel fPanel; STAFHandle fHandle; JTable fSubjobTable; STAXMonitorTableModel fSubjobTableModel; STAXMonitorTableSorter fSubjobModelSorter; Vector fSubjobColumns; Vector fSubjobVector = new Vector(); Hashtable fSubjobIDs = new Hashtable(); Hashtable fSubjobStartTimes = new Hashtable(); String fStaxMachine; String fStaxServiceName; String fStaxMachineNickname; String fJobNumber; MonitorElapsedTime fElapsedTime; boolean fContinueElapsedTime = true; STAXMonitorFrame fMonitorFrame; String fTitle; Hashtable fSubjobHashtable = new Hashtable(); JPopupMenu fSubjobPopupMenu = new JPopupMenu(); JMenuItem fSubjobStartMonitorMenuItem = new JMenuItem("Start Monitoring"); JMenuItem fSubjobShowJobLogMenuItem = new JMenuItem("Display Job Log"); JMenuItem fSubjobShowJobUserLogMenuItem = new JMenuItem("Display Job User Log"); JMenuItem fSubjobTerminateMenuItem = new JMenuItem("Terminate Job"); public JComponent init(STAXMonitorFrame monitorFrame, boolean newJob, String staxMachineName, String staxServiceName, String jobNumber) throws STAFException { fMonitorFrame = monitorFrame; fStaxMachine = staxMachineName; fStaxMachineNickname = monitorFrame.getSTAXMachineNickname(); fStaxServiceName = staxServiceName; fJobNumber = jobNumber; fTitle = "Sub-jobs"; fPanel = new JPanel(); fPanel.setLayout(new BorderLayout()); try { fHandle = STAXMonitorUtil.getNewSTAFHandle( "STAFMonitorSubjobTableExtension"); } catch (STAFException ex) { } fSubjobColumns = new Vector(); fSubjobColumns.addElement("Job ID"); fSubjobColumns.addElement("Job Name"); fSubjobColumns.addElement("Function"); fSubjobColumns.addElement("Status"); fSubjobColumns.addElement("Started"); fSubjobColumns.addElement("Elapsed Time"); fSubjobColumns.addElement("Result"); fSubjobTableModel = new STAXMonitorTableModel(fSubjobColumns, 0); fSubjobModelSorter = new STAXMonitorTableSorter(fSubjobTableModel, 0); fSubjobTable = new JTable(fSubjobModelSorter); fSubjobModelSorter.addMouseListenerToHeaderInTable( fSubjobTable, 6); fSubjobTable.setRowSelectionAllowed(true); fSubjobTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); fSubjobTable.addMouseListener(this); fSubjobTable.getSelectionModel().addListSelectionListener(this); fSubjobTable.getColumnModel().getColumn(0).setCellRenderer( new STAXMonitorTableCellRenderer(new Color(0, 130, 0))); fSubjobTable.getColumnModel().getColumn(0). setHeaderRenderer(new STAXMonitorTableCellRenderer(Color.black, true, new Font("Dialog", Font.BOLD, 12))); fSubjobTable.getColumnModel().getColumn(1).setCellRenderer( new STAXMonitorTableCellRenderer(Color.blue)); fSubjobTable.getColumnModel().getColumn(1). setHeaderRenderer(new STAXMonitorTableCellRenderer(Color.black, true, new Font("Dialog", Font.BOLD, 12))); fSubjobTable.getColumnModel().getColumn(2).setCellRenderer( new STAXMonitorTableCellRenderer(new Color(0, 130, 0))); fSubjobTable.getColumnModel().getColumn(2). setHeaderRenderer(new STAXMonitorTableCellRenderer(Color.black, true, new Font("Dialog", Font.BOLD, 12))); fSubjobTable.getColumnModel().getColumn(3).setCellRenderer( new STAXMonitorTableCellRenderer(new Color(0, 130, 0))); fSubjobTable.getColumnModel().getColumn(3). setHeaderRenderer(new STAXMonitorTableCellRenderer(Color.black, true, new Font("Dialog", Font.BOLD, 12))); fSubjobTable.getColumnModel().getColumn(4).setCellRenderer( new STAXMonitorTableCellRenderer(new Color(0, 130, 0))); fSubjobTable.getColumnModel().getColumn(4). setHeaderRenderer(new STAXMonitorTableCellRenderer(Color.black, true, new Font("Dialog", Font.BOLD, 12))); fSubjobTable.getColumnModel().getColumn(5).setCellRenderer( new STAXMonitorTableCellRenderer(new Color(0, 130, 0))); fSubjobTable.getColumnModel().getColumn(5). setHeaderRenderer(new STAXMonitorTableCellRenderer(Color.black, true, new Font("Dialog", Font.BOLD, 12))); fSubjobTable.getColumnModel().getColumn(6).setCellRenderer( new STAXMonitorTableCellRenderer(new Color(0, 130, 0))); fSubjobTable.getColumnModel().getColumn(6). setHeaderRenderer(new STAXMonitorTableCellRenderer(Color.black, true, new Font("Dialog", Font.BOLD, 12))); fSubjobTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); STAXMonitorUtil.sizeColumnsToFitText(fSubjobTable); if (!newJob) { String listRequest = "LIST JOB " + fJobNumber + " SUBJOBS"; STAFResult listResult = fHandle.submit2( fStaxMachine, fStaxServiceName, listRequest); if (listResult.rc != 0) { throw new STAFException( listResult.rc, "Error listing Job SUBJOBS\n" + listResult.result); } STAFMarshallingContext mc = STAFMarshallingContext.unmarshall(listResult.result); java.util.List subjobList = (java.util.List)mc.getRootObject(); Iterator iter = subjobList.iterator(); while (iter.hasNext()) { Map subjobMap = (Map)iter.next(); String jobID = (String)subjobMap.get("jobID"); String jobName = (String)subjobMap.get("jobName"); String function = (String)subjobMap.get("function"); // startTimestamp format is YYYYMMDD-HH:MM:SS String startTimestamp = (String)subjobMap.get("startTimestamp"); String startDate = startTimestamp.substring(0, 8); String startTime = startTimestamp.substring(9); fSubjobStartTimes.put(jobID, STAXMonitorUtil.getCalendar2(startDate, startTime)); STAFResult queryResult = fHandle.submit2( fStaxMachine, fStaxServiceName, "QUERY JOB " + jobID); String fileName = ""; String fileMachine = ""; String args = ""; String status = "Running"; if (queryResult.rc == 48) { status = "Complete"; } else if (queryResult.rc == 0) { mc = STAFMarshallingContext.unmarshall( queryResult.result); Map jobInfoMap = (HashMap)mc.getRootObject(); fileName = (String)jobInfoMap.get("xmlFileName"); fileMachine = (String)jobInfoMap.get("fileMachine"); args = (String)jobInfoMap.get("arguments"); } String elapsedTimestamp = "00:00:00"; Object rowData[] = new Object[8]; rowData[0] = new String(jobID); rowData[1] = jobName; rowData[2] = function; rowData[3] = status; rowData[4] = startTimestamp; rowData[5] = elapsedTimestamp; rowData[6] = ""; fSubjobTableModel.addRow(rowData); STAXMonitorUtil.updateRowHeights(fSubjobTable, 6); STAXMonitorUtil.sizeColumnsToFitText(fSubjobTable); STAXMonitorUtil.updateRowHeights(fSubjobTable, 6); STAXMonitorUtil.sizeColumnsToFitText(fSubjobTable); Vector subjobDataVector = new Vector(); addRow(subjobDataVector, "Job ID", jobID); addRow(subjobDataVector, "Job Name", jobName); addRow(subjobDataVector, "Job File", fileName); if (!fileMachine.equals("")) { addRow(subjobDataVector, "Job File Machine", fileMachine); } addRow(subjobDataVector, "Function", function); addRow(subjobDataVector, "Function Args", args); synchronized(fSubjobHashtable) { fSubjobHashtable.put("Job " + jobID + " - " + jobName, subjobDataVector); } } } fSubjobPopupMenu.add(fSubjobStartMonitorMenuItem); fSubjobStartMonitorMenuItem.addActionListener(this); fSubjobPopupMenu.addSeparator(); fSubjobPopupMenu.add(fSubjobShowJobLogMenuItem); fSubjobShowJobLogMenuItem.addActionListener(this); fSubjobPopupMenu.add(fSubjobShowJobUserLogMenuItem); fSubjobShowJobUserLogMenuItem.addActionListener(this); fSubjobPopupMenu.addSeparator(); fSubjobPopupMenu.add(fSubjobTerminateMenuItem); fSubjobTerminateMenuItem.addActionListener(this); fElapsedTime = new MonitorElapsedTime(); fElapsedTime.start(); return fSubjobTable; } public String getNotificationEventTypes() { return "subjob"; } public String getTitle() { return fTitle; } public int getExtensionType() { return STAXMonitorFrame.EXTENSION_ACTIVE; } public JComponent getComponent() { return fSubjobTable; } public void valueChanged(ListSelectionEvent e) { int selectedRow = fSubjobTable.getSelectedRow(); if (selectedRow == -1) return; String subjobID = (String) fSubjobTable.getValueAt(selectedRow, 0); String subjobName = (String) fSubjobTable.getValueAt(selectedRow, 1); synchronized(fSubjobHashtable) { fMonitorFrame.updateCurrentSelection("Job " + subjobID + " - " + subjobName, (Vector)fSubjobHashtable.get("Job " + subjobID + " - " + subjobName)); } } public void handleEvent(Map map) { String block = (String)map.get("block"); String jobID = (String)map.get("jobID"); String jobName = (String)map.get("jobName"); if (jobName == null) jobName = "<N/A>"; if (jobName.equals("")) jobName = "<N/A>"; String function = (String)map.get("function"); if (function == null) function = ""; String status = (String)map.get("status"); String jobFile = (String)map.get("jobfile"); if (jobFile == null) jobFile = ""; String jobFileMachine = (String)map.get("jobfilemachine"); if (jobFileMachine == null) jobFileMachine = ""; String functionArgs = (String)map.get("functionargs"); if (functionArgs == null) functionArgs = ""; String clearLogs = (String)map.get("clearlogs"); if (clearLogs == null) clearLogs = ""; String logTCElapsedTime = (String)map.get("logtcelapsedtime"); if (logTCElapsedTime == null) logTCElapsedTime = ""; String logTCNumStarts = (String)map.get("logtcnumstarts"); if (logTCNumStarts == null) logTCNumStarts = ""; String logTCStartStop = (String)map.get("logtcstartstop"); if (logTCStartStop == null) logTCStartStop = ""; String scriptFilesMachine = (String)map.get("scriptfilesmachine"); if (scriptFilesMachine == null) scriptFilesMachine = ""; if (status.equals("start")) { String startDate = (String)map.get("startdate"); if (startDate == null) startDate = ""; String startTime = (String)map.get("starttime"); if (startTime == null) startTime = ""; Object rowData[] = new Object[7]; rowData[0] = jobID; rowData[1] = jobName; rowData[2] = function; rowData[3] = "Running";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -