springBoot swing 界面实现配置和日志打印

废话少说,直接贴代码,

代码全在一个包下面不需要展示目录结构了。

ConfigFrame
package com.adao.simulater.swing;

import org.apache.log4j.Logger;

import javax.swing.*;
import java.awt.*;

public class ConfigFrame {
    private final static Logger logger = Logger.getLogger(ConfigFrame.class);

    public static void show() {

        JPanel panel = new JPanel();
        panel.setLayout(null);
        panel = new ConfigDB().buildJpanel(panel);
        panel = new ConfigSocket().buildJpanel(panel);
        panel = new ConfigEvent().buildJpanel(panel);
        panel = new ConfigTask().buildJpanel(panel);
        panel = new ConfigPrint().buildJpanel(panel);
        buildFrame(panel);
    }

    protected static JButton buildJButton(String name, int x, int y, int width, int height) {
        JButton button = new JButton(name);
        button.setBounds(x, y, width, height);
        return button;
    }

    // 文本框
    protected JTextField buildJTextField(JTextField jtf, String value, String name, int columns, int x, int y, int width, int height) {
        jtf = new JTextField(columns);
        jtf.setText(value);
        jtf.setName(name);
        jtf.setBounds(x, y, width, height);
        logger.info(name + "======" + value);
        return jtf;
    }

    protected static JLabel buildJLabel(String name, int x, int y, int width, int height) {
        JLabel label = new JLabel(name);
        label.setBounds(x, y, width, height);

        return label;
    }

    protected JLabel buildJBorder(String name, int x, int y, int width, int height) {
        JLabel label = new JLabel();
        label.setBounds(x, y, width, height);
        label.setBorder(BorderFactory.createTitledBorder(name));
        return label;
    }

    protected static void saveResult(String msg) {
        if ("true".equals(msg)) {
            JOptionPane.showMessageDialog(null, "保存成功!", "提示", JOptionPane.PLAIN_MESSAGE);
        } else {
            Toolkit.getDefaultToolkit().beep();
            JOptionPane.showMessageDialog(null, "保存异常!", "提示", JOptionPane.ERROR_MESSAGE);
        }
    }

    private static void buildFrame(JComponent component) {
        JFrame frame = new JFrame("Simulater Terminal");
        component.setBounds(0, 0, 1152, 864);
        frame.add(component);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(new BorderLayout());
        frame.getContentPane().setLayout(null);
        frame.getContentPane().add(BorderLayout.CENTER, component);
        // 设置窗口最小尺寸
        frame.setMinimumSize(new Dimension(1152, 864));

        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
        frame.setResizable(true);
    }


}
ConfigDB
package com.adao.simulater.swing;

import com.linyang.simulater.common.Constant;
import com.linyang.simulater.common.PropertiesUtil;
import com.linyang.simulater.util.ComMethod;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.Map;

/**
 * @Classname ConfigDB
 * @Date 2020/7/17
 * @Created adao
 */
public class ConfigDB {
    private final static Logger logger = Logger.getLogger(ConfigDB.class);

    @Autowired
    PropertiesUtil propertiesUtil;

    private JTextField urlTextField;
    private JTextField usernameTextField;
    private JTextField passwordTextField;

    public ConfigFrame cf = new ConfigFrame();
    public JPanel buildJpanel(JPanel panel) {
        String url = propertiesUtil.getConUrl();
        String username = propertiesUtil.getConUserName();
        String password = propertiesUtil.getConPassWord();

        int y0 = 0;

        panel.add(cf.buildJBorder("数据库配置", 5, y0 + 10, 490, 180));

        // URL
        panel.add(cf.buildJLabel("URL:", 15, y0 + 40, 80, 25));
        urlTextField = cf.buildJTextField(urlTextField, url, "dbUrl", 20, 100, y0 + 40, 350, 25);
        panel.add(urlTextField);
        // 用户名
        panel.add(cf.buildJLabel("用户名:", 15, y0 + 70, 80, 25));
        usernameTextField = cf.buildJTextField(usernameTextField, username, "dbUserName", 20, 100, y0 + 70, 165, 25);
        panel.add(usernameTextField);

        // 密码
        panel.add(cf.buildJLabel("密码:", 15, y0 + 100, 80, 25));
        passwordTextField = cf.buildJTextField(passwordTextField, password, "dbPassWord", 20, 100, y0 + 100, 165, 25);
        panel.add(passwordTextField);

        // 添加按钮,绑定事件监听
        JButton saveButton = cf.buildJButton("保存", 100, y0 + 140, 80, 25);
        addActionListener(saveButton);
        panel.add(saveButton);

        return panel;
    }

    // 为按钮绑定监听
    private void addActionListener(JButton saveButton) {
        saveButton.addActionListener(
                new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        activeEvent();
                    }
                });

    }

    // save event
    private void activeEvent() {
        String url = propertiesUtil.getConUrl();
        String username = propertiesUtil.getConUserName();
        String password = propertiesUtil.getConPassWord();
        String textUrl = urlTextField.getText().toString();
        String textUsername = usernameTextField.getText().toString();
        String textPassword = passwordTextField.getText().toString();
        if (ComMethod.isEmpty(textUrl)) {
            Toolkit.getDefaultToolkit().beep();
            JOptionPane.showMessageDialog(null, "请输入数据库URL!", "提示", JOptionPane.INFORMATION_MESSAGE);
        } else if (ComMethod.isEmpty(textUsername)) {
            Toolkit.getDefaultToolkit().beep();
            JOptionPane.showMessageDialog(null, "请输入用户名!", "提示", JOptionPane.INFORMATION_MESSAGE);
        } else if (ComMethod.isEmpty(textPassword)) {
            Toolkit.getDefaultToolkit().beep();
            JOptionPane.showMessageDialog(null, "请输入密码!", "提示", JOptionPane.INFORMATION_MESSAGE);
        } else if (url.equals(textUrl) && textUsername.equals(username) && textPassword.equals(password) ) {
            Toolkit.getDefaultToolkit().beep();
            JOptionPane.showMessageDialog(null, "配置参数未更改!", "提示", JOptionPane.INFORMATION_MESSAGE);
        } else {

            propertiesUtil.setConUrl(textUrl);
            propertiesUtil.setConUserName(textUsername);
            propertiesUtil.setConPassWord(textPassword);

        }
    }
}
ConfigEvent
package com.adao.simulater.swing;

import com.adao.simulater.common.Constant;
import com.adao.simulater.common.PropertiesUtil;
import com.adao.simulater.util.ComMethod;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.Map;

/**
 * @Classname ConfigTask
 * @Date 2020/7/20
 * @Created adao
 */
public class ConfigEvent {
    private final static Logger logger = Logger.getLogger(ConfigEvent.class);

    @Autowired
    PropertiesUtil propertiesUtil;

    private JTextField eventPeriodUnitField;
    private JTextField eventPeriodMinField;
    private JTextField eventPeriodMaxField;

    private ConfigFrame cf = new ConfigFrame();

    public JPanel buildJpanel(JPanel panel) {
        ConfigFrame cf = new ConfigFrame();
        String eventPeriodUnit = String.valueOf(propertiesUtil.getConEventPeriodUnit());
        String eventPeriodMin = String.valueOf(propertiesUtil.getConEventPeriodMin());
        String eventPeriodMax = String.valueOf(propertiesUtil.getConEventPeriodMax());

        int y0 = 360;

        //添加服务器配置区
        panel.add(cf.buildJBorder("事件配置", 5, y0, 490, 180));
        //事件周期基数unit
        panel.add(cf.buildJLabel("周期基数:", 15, y0 + 30, 80, 25));
        eventPeriodUnitField = cf.buildJTextField(eventPeriodUnitField, eventPeriodUnit, "serverAddr", 20, 100, y0 + 30, 165, 25);
        panel.add(eventPeriodUnitField);
        //事件上报周期范围最小数
        panel.add(cf.buildJLabel("周期最小数:", 15, y0 + 60, 80, 25));
        eventPeriodMinField = cf.buildJTextField(eventPeriodMinField, eventPeriodMin, "serverPort", 20, 100, y0 + 60, 165, 25);
        panel.add(eventPeriodMinField);

        //事件上报周期范围最大数
        panel.add(cf.buildJLabel("周期最大数:", 15, y0 + 90, 80, 25));
        eventPeriodMaxField = cf.buildJTextField(eventPeriodMaxField, eventPeriodMax, "serverPort", 20, 100, y0 + 90, 165, 25);
        panel.add(eventPeriodMaxField);

        // 添加按钮,绑定事件监听
        JButton saveButton = cf.buildJButton("保存", 100, y0 + 130, 80, 25);
        addActionListener(saveButton);
        panel.add(saveButton);

        return panel;
    }

    // 为按钮绑定监听
    private void addActionListener(JButton button) {
        button.addActionListener(
                new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        save();
                    }
                });

    }

    // save event
    private void save() {
        String eventPeriodUnit = String.valueOf(propertiesUtil.getConEventPeriodUnit());
        String eventPeriodMin = String.valueOf(propertiesUtil.getConEventPeriodMin());
        String eventPeriodMax = String.valueOf(propertiesUtil.getConEventPeriodMax());
        String eventPeriodUnitText = eventPeriodUnitField.getText().toString();
        String eventPeriodMinText = eventPeriodMinField.getText().toString();
        String eventPeriodMaxText = eventPeriodMaxField.getText().toString();
        if (ComMethod.isEmpty(eventPeriodUnitText)) {
            Toolkit.getDefaultToolkit().beep();
            JOptionPane.showMessageDialog(null, "请输入事件上报周期基数(毫秒)!", "提示", JOptionPane.INFORMATION_MESSAGE);
        } else if (ComMethod.isEmpty(eventPeriodMinText)) {
            Toolkit.getDefaultToolkit().beep();
            JOptionPane.showMessageDialog(null, "请输入事件上报周期随机最小数!", "提示", JOptionPane.INFORMATION_MESSAGE);
        } else if (ComMethod.isEmpty(eventPeriodMaxText)) {
            Toolkit.getDefaultToolkit().beep();
            JOptionPane.showMessageDialog(null, "请输入事件上报周期随机最大数!", "提示", JOptionPane.INFORMATION_MESSAGE);
        } else if (Integer.valueOf(eventPeriodMinText) >= Integer.valueOf(eventPeriodMaxText)) {
            Toolkit.getDefaultToolkit().beep();
            JOptionPane.showMessageDialog(null, "最小数要小于最大数,请修改!", "提示", JOptionPane.INFORMATION_MESSAGE);
        } else if (eventPeriodUnit.equals(eventPeriodUnitText) && eventPeriodMin.equals(eventPeriodMinText) && eventPeriodMax.equals(eventPeriodMaxText) ) {
            Toolkit.getDefaultToolkit().beep();
            JOptionPane.showMessageDialog(null, "配置参数未更改!", "提示", JOptionPane.INFORMATION_MESSAGE);
        } else {
            propertiesUtil.setConEventPeriodUnit(Long.valueOf(eventPeriodUnitText));
            propertiesUtil.setConEventPeriodMin(Integer.valueOf(eventPeriodMinText));
            propertiesUtil.setConEventPeriodMax(Integer.valueOf(eventPeriodMaxText));

        }
    }

}
ConfigPrint

package com.adao.simulater.swing;

import org.apache.log4j.Appender;
import org.apache.log4j.Logger;
import org.apache.log4j.WriterAppender;

import javax.swing.*;
import java.io.PipedReader;
import java.io.PipedWriter;
import java.io.Writer;

public class ConfigPrint {

    JTextArea logTextArea;

    public ConfigFrame cf = new ConfigFrame();

    public JPanel buildJpanel(JPanel panel) {

        int y0 = 0;

        panel.add(cf.buildJBorder("日志", 500, y0 + 10, 630, 720));

        logTextArea = new JTextArea();
        panel.add(logTextArea);

        JScrollPane logScrollPane = new JScrollPane();
        logScrollPane.setBounds(510, y0 + 40, 610, 680);
        logScrollPane.getViewport().add(logTextArea);
        panel.add(logScrollPane);

        Logger root = Logger.getRootLogger();
        try {
            Appender appender = root.getAppender("WriterAppender");
            PipedReader reader = new PipedReader();
            Writer writer = new PipedWriter(reader);

            ((WriterAppender) appender).setWriter(writer);

            Thread t = new Appendered(reader, logTextArea, logScrollPane);
            t.start();

        } catch (Exception e) {
        }
        return panel;
    }

}
Appendered
package com.adao.simulater.swing;

import javax.swing.*;
import java.io.PipedReader;
import java.util.Scanner;

public class Appendered extends Thread {
    PipedReader reader;
    JTextArea textArea;
    JScrollPane scroll;
   
    public Appendered(PipedReader reader,JTextArea textArea, JScrollPane scroll) {
        this.reader = reader;
        this.textArea=textArea;
        this.scroll=scroll;
        
    }

    public void run() {
        Scanner scanner = new Scanner(reader);
        while (scanner.hasNext()) {
           // System.out.println(scanner.nextLine());
            textArea.append(scanner.nextLine());
            textArea.append("\n");
          //使垂直滚动条自动向下滚动
            scroll.getVerticalScrollBar().setValue(scroll.getVerticalScrollBar().getMaximum());
        }
    }
}
ConfigSocket
package com.adao.simulater.swing;

import com.adao.simulater.common.Constant;
import com.adao.simulater.common.PropertiesUtil;
import com.adao.simulater.util.ComMethod;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Pattern;

/**
 * @Classname ConfigSocket
 * @Date 2020/7/20
 * @Created YinTao
 */
public class ConfigSocket {
    private final static Logger logger = Logger.getLogger(ConfigDB.class);
    private JTextField serverAddrField;
    private JTextField serverPortField;

    @Autowired
    PropertiesUtil propertiesUtil;

    private ConfigFrame cf = new ConfigFrame();
    public JPanel buildJpanel(JPanel panel) {
        ConfigFrame cf = new ConfigFrame();
        String serverAddr =  propertiesUtil.getConServerAddress();
        String serverPort = String.valueOf(propertiesUtil.getConServerPort());

        int y0 = 200;

        /**
         * 服务器配置
         */
        //添加服务器配置区
        panel.add(cf.buildJBorder("Socket服务配置", 5, y0, 490,150));
        //添加服务器地址标签
        panel.add(cf.buildJLabel("服务器地址:", 15, y0 + 30, 80, 25));
        serverAddrField = cf.buildJTextField(serverAddrField, serverAddr, "serverAddr", 20, 100, y0 + 30, 165, 25);
        panel.add(serverAddrField);
        //添加服务器端口
        panel.add(cf.buildJLabel("服务器端口:", 15, y0 + 60, 80, 25));
        serverPortField = cf.buildJTextField(serverPortField, serverPort, "serverPort", 20, 100, y0 + 60, 165, 25);
        panel.add(serverPortField);

        //添加保存按钮
        JButton linkOrBreak = cf.buildJButton("保存", 100, y0 + 100, 80, 25);
        addActionListener(linkOrBreak);
        panel.add(linkOrBreak);
        // 添加测试按钮
        JButton saveButton = cf.buildJButton("测试", 200, y0 + 100, 80, 25);
        addActionListener(saveButton);
        panel.add(saveButton);

        return panel;
    }

    // 为按钮绑定监听
    private void addActionListener(JButton saveButton) {
        saveButton.addActionListener(
                new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {

                        if(saveButton.getText()=="保存")
                        {
                            activeEvent();
                        }
                        else if(saveButton.getText()=="测试")
                        {
                            testLink();
                        }

                    }
                });

    }

    // save event
    private void activeEvent() {
        String serverAddr =  propertiesUtil.getConServerAddress();
        String serverPort = String.valueOf(propertiesUtil.getConServerPort());
        String serverAddrText = serverAddrField.getText().toString();
        String serverPortText = serverPortField.getText().toString();
        if (ComMethod.isEmpty(serverAddrText)) {
            Toolkit.getDefaultToolkit().beep();
            JOptionPane.showMessageDialog(null, "请输入Socker服务地址!", "提示", JOptionPane.INFORMATION_MESSAGE);
        } else if (!ComMethod.isIp(serverAddrText)) {
            Toolkit.getDefaultToolkit().beep();
            JOptionPane.showMessageDialog(null, "Socker 服务地址格式错误!", "提示", JOptionPane.INFORMATION_MESSAGE);
        } else if (ComMethod.isEmpty(serverPortText)) {
            Toolkit.getDefaultToolkit().beep();
            JOptionPane.showMessageDialog(null, "请输入Socker服务端口!", "提示", JOptionPane.INFORMATION_MESSAGE);
        } else if (Integer.valueOf(serverPortText) < 1 || Integer.valueOf(serverPortText) > 65535) {
            Toolkit.getDefaultToolkit().beep();
            JOptionPane.showMessageDialog(null, "端口配置错误,或超出范围[1,65535]", "提示", JOptionPane.INFORMATION_MESSAGE);
        } else if (!Pattern.matches("^\\d{1,5}$", serverPortText)) {
            Toolkit.getDefaultToolkit().beep();
            JOptionPane.showMessageDialog(null, "Socker端口配置错误,请输入数字5位数字", "提示", JOptionPane.INFORMATION_MESSAGE);
        } else if (serverAddr.equals(serverAddrText) && serverPort.equals(serverPortText)) {
            Toolkit.getDefaultToolkit().beep();
            JOptionPane.showMessageDialog(null, "配置参数未更改!", "提示", JOptionPane.INFORMATION_MESSAGE);
        } else {

            propertiesUtil.setConServerAddress(serverAddrText);
            propertiesUtil.setConServerPort(Integer.valueOf(serverPortText));

        }
    }
    // 测试连接
    private void testLink() {
        String serverAddrText = serverAddrField.getText().toString();
        String serverPortText = serverPortField.getText().toString();
        if (ComMethod.isEmpty(serverAddrText)) {
            Toolkit.getDefaultToolkit().beep();
            JOptionPane.showMessageDialog(null, "请输入Socker服务地址!", "提示", JOptionPane.INFORMATION_MESSAGE);
        } else if (!ComMethod.isIp(serverAddrText)) {
            Toolkit.getDefaultToolkit().beep();
            JOptionPane.showMessageDialog(null, "Socker服务地址格式错误!", "提示", JOptionPane.INFORMATION_MESSAGE);
        } else if (ComMethod.isEmpty(serverPortText)) {
            Toolkit.getDefaultToolkit().beep();
            JOptionPane.showMessageDialog(null, "请输入Socker服务端口!", "提示", JOptionPane.INFORMATION_MESSAGE);
        } else if (Integer.valueOf(serverPortText) < 1 || Integer.valueOf(serverPortText) > 65535) {
            Toolkit.getDefaultToolkit().beep();
            JOptionPane.showMessageDialog(null, "端口配置超出范围[1,65535]", "提示", JOptionPane.INFORMATION_MESSAGE);
        } else if (!Pattern.matches("^\\d{1,5}$", serverPortText)) {
            Toolkit.getDefaultToolkit().beep();
            JOptionPane.showMessageDialog(null, "Socker端口配置错误,请输入数字5位数字", "提示", JOptionPane.INFORMATION_MESSAGE);
        } else {

            try {
                SocketAddress address = new InetSocketAddress(serverAddrText, Integer.parseInt(serverPortText));
                Socket socket = new Socket();
                socket.connect(address, 2 * 1000);
                socket.close();
                JOptionPane.showMessageDialog(null, "测试连接正常", "提示", JOptionPane.INFORMATION_MESSAGE);

            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, "测试连接异常", "提示", JOptionPane.INFORMATION_MESSAGE);
            }

        }
    }
}
taskStart
package com.adao.simulater.swing;

import com.adao.simulater.common.AppContextUtil;
import com.adao.simulater.common.PropertiesUtil;
import com.adao.simulater.pojo.TaskInfoBean;
import com.adao.simulater.service.FreezeDayService;
import com.adao.simulater.service.TaskService;
import com.adao.simulater.service.impl.TaskServiceImpl;
import com.adao.simulater.task.TaskManager;
import com.adao.simulater.util.ComMethod;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;

/**
 * @Classname ConfigTask
 * @Description TODO
 * @Date 2020/7/21
 * @Created adao
 */
public class ConfigTask {
    private final static Logger logger = Logger.getLogger(ConfigEvent.class);

    @Autowired
    PropertiesUtil propertiesUtil;

    private JButton reportEnd;
    private JButton reportStart;
    private JComboBox codeTypeBox;

    private ConfigFrame cf = new ConfigFrame();
    private static String defaultTest = "-- 选择要执行的任务名称 --";
    private static String choseTask = null;

    private AppContextUtil appContextUtil = new AppContextUtil();
    private TaskService taskService = appContextUtil.getContext().getBean(TaskService.class);

    public JPanel buildJpanel(JPanel panel) {
        ConfigFrame cf = new ConfigFrame();

        int y0 = 550;
        List<TaskInfoBean> tasks = taskService.getAllTaskInfo();

        panel.add(cf.buildJBorder("任务配置", 5, y0, 490, 180));
        panel.add(cf.buildJLabel("选择任务:", 15, y0 + 30, 80, 25));
        codeTypeBox = buildJComboBox( tasks, 100, y0 + 30, 350, 25);
        addItemListener(codeTypeBox);
        panel.add(codeTypeBox);

        //开始上报按钮
        reportStart = cf.buildJButton("开始上报", 100, y0 + 120, 100, 25);
        addActionListener(reportStart);
        panel.add(reportStart);

        //添加停止上报按钮
        reportEnd = cf.buildJButton("停止上报", 300, y0 + 120, 100, 25);
        reportEnd.setEnabled(false);
        addActionListener(reportEnd);
        panel.add(reportEnd);
        return panel;
    }

    // 为按钮绑定监听
    private void addActionListener(JButton button) {
        button.addActionListener(
                new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        if (button.getText() == "开始上报") {
                            taskStart();
                        } else if (button.getText() == "停止上报") {
                            taskStop();
                        }
                    }
                });

    }

    // 为下拉事件监听器
    private void addItemListener(JComboBox comboBox) {
        comboBox.addItemListener(
                new ItemListener() {
                    @Override
                    public void itemStateChanged(ItemEvent e) {
                        if (e.getStateChange() == ItemEvent.SELECTED) {
                            // 选择的下拉框选项
                            choseTask = e.getItem().toString();
                        }
                    }
                });

    }

    private static JComboBox buildJComboBox(List<TaskInfoBean> elements, int x, int y, int width, int height) {

        DefaultComboBoxModel codeTypeModel = new DefaultComboBoxModel();
        // elements 下拉框中的选项
        codeTypeModel.addElement(defaultTest);
        for (int i = 0; i < elements.size(); i++) {
            TaskInfoBean taskInfo = elements.get(i);
            String taskName = taskInfo.getTaskName();
            codeTypeModel.addElement(taskName);
        }

        JComboBox codeTypeBox = new JComboBox(codeTypeModel);
        codeTypeBox.setBounds(x, y, width, height);
        return codeTypeBox;
    }

    // 上报开始
    private void taskStart() {
        // 开始执行任务
        if (ComMethod.isEmpty(choseTask) ||  choseTask.equals(defaultTest)){
            JOptionPane.showMessageDialog(null, "选择要执行的任务名称!", "提示", JOptionPane.INFORMATION_MESSAGE);
        } else {
            propertiesUtil.setConTaskEnable(true);
           
            TaskManager taskManager = new TaskManager();
            taskManager.init(choseTask);
            reportStart.setEnabled(false);
            reportEnd.setEnabled(true);
            logger.info("客户端连接成功,上报开始");
        }

    }

    // 上报停止
    private void taskStop() {
        propertiesUtil.setConTaskEnable(false);
       
        reportStart.setEnabled(true);
        reportEnd.setEnabled(false);
        logger.info("上报即将停止,需等待本次全部完成");
    }

}

其他文件:

PropertiesUtil
package com.adao.simulater.common;

import com.adao.simulater.util.ComMethod;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Map;
import java.util.Properties;

/**
 * 配置
 * @author adao
 */
@Component
public class PropertiesUtil {
    private final static Logger logger = Logger.getLogger(PropertiesUtil.class);

    public static final String propertiesPath = "src/main/resources/constant.properties";

    private static Constant constant;

    @Autowired
    public void setConfig(Constant constant) {
        PropertiesUtil.constant = constant;
    }

    public static boolean getConTaskEnable() {
        return constant.isTaskEnable();
    }

    public static void setConTaskEnable(boolean taskEnable) {
        constant.setTaskEnable(taskEnable);
    }

    public static String getConServerAddress() {
        return constant.getServerAddress();
    }

    public static void setConServerAddress(String serverAddress) {
        constant.setServerAddress(serverAddress);
    }

    public static Integer getConServerPort() {
        return constant.getServerPort();
    }

    public static void setConServerPort(Integer serverPort) {
        constant.setServerPort(serverPort);
    }

    public static Long getConEventPeriodUnit() {
        return constant.getEventPeriodUnit();
    }

    public static void setConEventPeriodUnit(Long eventPeriodUnit) {
        constant.setEventPeriodUnit(eventPeriodUnit);
    }

    public static Integer getConEventPeriodMax() {
        return constant.getEventPeriodMax();
    }

    public static void setConEventPeriodMax(int eventPeriodMax) {
        constant.setEventPeriodMax(eventPeriodMax);
    }

    public static Integer getConEventPeriodMin() {
        return constant.getEventPeriodMin();
    }

    public static void setConEventPeriodMin(Integer eventPeriodMin) {
        constant.setEventPeriodMin(eventPeriodMin);
    }

    public static String getConUrl() {
        return constant.getUrl();
    }

    public static void setConUrl(String url) {
        constant.setUrl(url);
    }

    public static String getConUserName() {
        return constant.getUserName();
    }

    public static void setConUserName(String userName) {
        constant.setUserName(userName);
    }

    public static String getConPassWord() {
        return constant.getPassWord();
    }

    public static void setConPassWord(String passWord) {
        constant.setPassWord(passWord);
    }

    public static boolean getConHeartEnable() {
        return constant.isHeartEnable();
    }


}
Constant
package com.adao.simulater.common;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

/**
 **/
@Configuration
@ConfigurationProperties(prefix = "constant")
@PropertySource(value = "classpath:constant.properties")
public class Constant {

    private boolean taskEnable;
    private Long taskDelay;
    private boolean heartEnable;
    private Long clientHeart;
    private String serverAddress;
    private Integer serverPort;
    private Integer connectTimeout;
    private Long eventPeriodUnit;
    private Integer eventPeriodMax;
    private Integer eventPeriodMin;
    private String url;
    private String userName;
    private String passWord;

    public boolean isTaskEnable() {
        return taskEnable;
    }

    public void setTaskEnable(boolean taskEnable) {
        this.taskEnable = taskEnable;
    }

    public Long getTaskDelay() {
        return taskDelay;
    }

    public void setTaskDelay(Long taskDelay) {
        this.taskDelay = taskDelay;
    }

    public boolean isHeartEnable() {
        return heartEnable;
    }

    public void setHeartEnable(boolean heartEnable) {
        this.heartEnable = heartEnable;
    }

    public Long getClientHeart() {
        return clientHeart;
    }

    public void setClientHeart(Long clientHeart) {
        this.clientHeart = clientHeart;
    }

    public String getServerAddress() {
        return serverAddress;
    }

    public void setServerAddress(String serverAddress) {
        this.serverAddress = serverAddress;
    }

    public Integer getServerPort() {
        return serverPort;
    }

    public void setServerPort(Integer serverPort) {
        this.serverPort = serverPort;
    }

    public Integer getConnectTimeout() {
        return connectTimeout;
    }

    public void setConnectTimeout(Integer connectTimeout) {
        this.connectTimeout = connectTimeout;
    }

    public Long getEventPeriodUnit() {
        return eventPeriodUnit;
    }

    public void setEventPeriodUnit(Long eventPeriodUnit) {
        this.eventPeriodUnit = eventPeriodUnit;
    }

    public Integer getEventPeriodMax() {
        return eventPeriodMax;
    }

    public void setEventPeriodMax(Integer eventPeriodMax) {
        this.eventPeriodMax = eventPeriodMax;
    }

    public Integer getEventPeriodMin() {
        return eventPeriodMin;
    }

    public void setEventPeriodMin(Integer eventPeriodMin) {
        this.eventPeriodMin = eventPeriodMin;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }
}

proterties

constant.taskEnable=true
constant.taskDelay=1000
constant.heartEnable=true
constant.clientHeart=60000
constant.serverAddress=127.0.0.1
constant.serverPort=8511
constant.connectTimeout=3000
constant.eventPeriodUnit=60000
constant.eventPeriodMax=10
constant.eventPeriodMin=1
constant.url=jdbc:oracle:thin:@192.168.127.150:1521:ORCL
constant.userName=coll_platform
constant.passWord=coll_platform

log.properties

log4j.rootLogger=DEBUG,stdout,file,WriterAppender
log4j.additivity.org.apache=true

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.threshold=INFO
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#log4j.appender.stdout.layout.ConversionPattern=%-5p %c{1}:%L - %m%n
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.DatePattern='.'yyyy-MM-dd-HH-mm
#log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %d %p [%c] - %m%n
log4j.appender.file.Threshold=INFO
log4j.appender.file.append=true
#log4j.appender.file.File=/workspaces/logs/simulater/simulater.log
log4j.appender.file.File=./logs/simulator.log

log4j.appender.WriterAppender=org.apache.log4j.WriterAppender
log4j.appender.WriterAppender.Threshold=debug
log4j.appender.WriterAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.WriterAppender.layout.ConversionPattern= - %m%n
SimulaterApplication
@SpringBootApplication
// 扫描 mybatis 通用 mapper 所在的包
@MapperScan(basePackages = "com.adao.simulater.mapper")
// 扫描所有包以及相关组件包
@ComponentScan(basePackages = {"com.adao.simulater"})
@EnableConfigurationProperties(Constant.class)
public class SimulaterApplication {
    private final static Logger logger = Logger.getLogger(SimulaterApplication.class);

    public static void main(String[] args) {
        SpringApplication.run(SimulaterApplication.class, args);

        logger.info("程序开始启动...");

        // 可视化界面模型
        ConfigFrame cf=new ConfigFrame();
        cf.show();
    }

}

执行结果

 

猜你喜欢

转载自www.cnblogs.com/adao21/p/13393134.html