| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- package com.leanwo.management;
- import java.awt.BorderLayout;
- import java.util.HashSet;
- import java.util.List;
- import java.util.Set;
- import java.util.Timer;
- import java.util.TimerTask;
- import javax.swing.JPanel;
- import javax.swing.JScrollPane;
- import javax.swing.JTable;
- import javax.swing.ListSelectionModel;
- import javax.swing.SwingUtilities;
- import javax.swing.event.ListSelectionEvent;
- import javax.swing.event.ListSelectionListener;
- import javax.swing.table.DefaultTableModel;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import com.leanwo.management.model.ApplicationSetting;
- import com.leanwo.management.service.ProcessService;
- import com.leanwo.management.util.SpringUtil;
- import com.leanwo.management.util.Variable;
- import com.leanwo.management.widget.ColorCellRenderer;
- import com.leanwo.management.widget.SelectEventListener;
- import com.leanwo.management.widget.SelectObject;
- /**
- * 服务器管理界面
- *
- * @author YangZhiJie
- *
- */
- public class ServerFrame extends JPanel {
- private static Log logger = LogFactory.getLog(ServerFrame.class);
- private JTable table = null;
- private List<ApplicationSetting> settings = null;
- private DefaultTableModel tableModel = null;
- private Set<SelectEventListener> listeners = null;
- private boolean isRunning = false;
- private ProcessService processService = null;
- private Timer timer = null;
- public ServerFrame(List<ApplicationSetting> settings) {
- this.settings = settings;
- initData();
- initView();
- }
- /**
- * 初始化
- */
- private void initData() {
- processService = (ProcessService) SpringUtil.getSingleBean(ProcessService.class);
- listeners = new HashSet<SelectEventListener>();
- tableModel = new DefaultTableModel();
- Object[][] dataVector = null;
- if (settings != null && settings.size() > 0) {
- dataVector = new Object[settings.size()][6];
- for (int i = 0; i < settings.size(); i++) {
- ApplicationSetting setting = settings.get(i);
- dataVector[i] = new Object[3];
- dataVector[i][0] = String.valueOf(i + 1);
- dataVector[i][1] = setting.getName();
- dataVector[i][2] = Variable.LOADING;
- }
- }
- Object[] columnIdentifiers = new Object[] { "序号", "程序", "状态" };
- tableModel.setDataVector(dataVector, columnIdentifiers);
- }
- private void initView() {
- this.setLayout(new BorderLayout());
- table = new JTable(tableModel);
- table.getColumn("序号").setPreferredWidth(50);
- table.getColumn("程序").setPreferredWidth(150);
- table.getColumn("状态").setPreferredWidth(90);
- table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
- table.setRowSelectionAllowed(false);
- ListSelectionModel cellSelectionModel = table.getSelectionModel();
- cellSelectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
- cellSelectionModel.addListSelectionListener(new ListSelectionListener() {
- public void valueChanged(ListSelectionEvent e) {
- int[] selectedRows = table.getSelectedRows();
- if (selectedRows.length > 0) {
- int selectedRow = selectedRows[0];
- fireSelectEvent(selectedRow);
- }
- }
- });
- //设置渲染器
- ColorCellRenderer rcr = new ColorCellRenderer();
- table.setDefaultRenderer(Object.class, rcr);
-
- JScrollPane scroll = new JScrollPane(table);
- add(scroll);
- timer = new Timer("定时器:定时更新服务器状态");
- timer.schedule(timerTask, 2000L, 2000L);
- }
- /**
- * 添加选择事件
- *
- * @param listener
- */
- public void addStateChangeListener(SelectEventListener listener) {
- listeners.add(listener);
- }
- /**
- * 触发选择事件
- *
- * @param selectedRow
- */
- public void fireSelectEvent(int selectedRow) {
- SelectObject event = new SelectObject(table, selectedRow);
- if (listeners != null) {
- for (SelectEventListener selectEventListener : listeners) {
- selectEventListener.onSelect(event);
- }
- }
- }
- /**
- * 获取选中的行
- *
- * @return
- */
- public int getSelectedRow() {
- return table.getSelectedRow();
- }
- /**
- * 更新表格
- */
- private void updateTable() {
- SwingUtilities.invokeLater(new Runnable() {
- public void run() {
- table.validate();
- table.updateUI();
- }
- });
- }
- private TimerTask timerTask = new TimerTask() {
- @Override
- public void run() {
- if (isRunning) {
- logger.debug("上个定时程序还未运行完成,本次运行跳过");
- return;
- }
- isRunning = true;
- int selectedRow = getSelectedRow();
- if (settings != null && settings.size() > 0) {
- for (int i = 0; i < settings.size(); i++) {
- ApplicationSetting setting = settings.get(i);
- boolean oldStatus = setting.isOnline();
- boolean online = false;
- try {
- online = processService.getStatus(setting);
- }catch(Exception ex) {
- logger.error(setting.getName() + "状态获取异常");
- }
- setting.setOnline(online);
- String status = online ? Variable.RUNNING : Variable.NOT_RUNNING;
-
- final int tempI = i;
- table.setValueAt(status, tempI, 2);
-
- if (selectedRow == i) {
- if(oldStatus != online) {
- fireSelectEvent(selectedRow);
- }
- }
- }
- }
- isRunning = false;
-
- updateTable();
- }
- };
- }
|