diff --git a/src/main/java/com/casic/swing/bean/FrequencyBean.java b/src/main/java/com/casic/swing/bean/FrequencyBean.java new file mode 100644 index 0000000..c74f611 --- /dev/null +++ b/src/main/java/com/casic/swing/bean/FrequencyBean.java @@ -0,0 +1,187 @@ +package com.casic.swing.bean; + +/** + * @author a203 + */ +public class FrequencyBean { + + /** + * code : 200 + * data : {"createTime":"2022-01-06 09:33:57","createUser":"1","delFlag":"0","id":"1478903164676395008","paraName":"NTP_FREQUENCY","paraValue":"10","system":"","systemName":"","title":"NTP时间同步频度","type":"1","typeName":"","updateTime":"","updateUser":""} + * message : 请求成功 + * success : true + */ + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + /** + * createTime : 2022-01-06 09:33:57 + * createUser : 1 + * delFlag : 0 + * id : 1478903164676395008 + * paraName : NTP_FREQUENCY + * paraValue : 10 + * system : + * systemName : + * title : NTP时间同步频度 + * type : 1 + * typeName : + * updateTime : + * updateUser : + */ + + private String createTime; + private String createUser; + private String delFlag; + private String id; + private String paraName; + private String paraValue; + private String system; + private String systemName; + private String title; + private String type; + private String typeName; + private String updateTime; + private String updateUser; + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getDelFlag() { + return delFlag; + } + + public void setDelFlag(String delFlag) { + this.delFlag = delFlag; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getParaName() { + return paraName; + } + + public void setParaName(String paraName) { + this.paraName = paraName; + } + + public String getParaValue() { + return paraValue; + } + + public void setParaValue(String paraValue) { + this.paraValue = paraValue; + } + + public String getSystem() { + return system; + } + + public void setSystem(String system) { + this.system = system; + } + + public String getSystemName() { + return systemName; + } + + public void setSystemName(String systemName) { + this.systemName = systemName; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getTypeName() { + return typeName; + } + + public void setTypeName(String typeName) { + this.typeName = typeName; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUser() { + return updateUser; + } + + public void setUpdateUser(String updateUser) { + this.updateUser = updateUser; + } + } +} diff --git a/src/main/java/com/casic/swing/bean/FrequencyBean.java b/src/main/java/com/casic/swing/bean/FrequencyBean.java new file mode 100644 index 0000000..c74f611 --- /dev/null +++ b/src/main/java/com/casic/swing/bean/FrequencyBean.java @@ -0,0 +1,187 @@ +package com.casic.swing.bean; + +/** + * @author a203 + */ +public class FrequencyBean { + + /** + * code : 200 + * data : {"createTime":"2022-01-06 09:33:57","createUser":"1","delFlag":"0","id":"1478903164676395008","paraName":"NTP_FREQUENCY","paraValue":"10","system":"","systemName":"","title":"NTP时间同步频度","type":"1","typeName":"","updateTime":"","updateUser":""} + * message : 请求成功 + * success : true + */ + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + /** + * createTime : 2022-01-06 09:33:57 + * createUser : 1 + * delFlag : 0 + * id : 1478903164676395008 + * paraName : NTP_FREQUENCY + * paraValue : 10 + * system : + * systemName : + * title : NTP时间同步频度 + * type : 1 + * typeName : + * updateTime : + * updateUser : + */ + + private String createTime; + private String createUser; + private String delFlag; + private String id; + private String paraName; + private String paraValue; + private String system; + private String systemName; + private String title; + private String type; + private String typeName; + private String updateTime; + private String updateUser; + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getDelFlag() { + return delFlag; + } + + public void setDelFlag(String delFlag) { + this.delFlag = delFlag; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getParaName() { + return paraName; + } + + public void setParaName(String paraName) { + this.paraName = paraName; + } + + public String getParaValue() { + return paraValue; + } + + public void setParaValue(String paraValue) { + this.paraValue = paraValue; + } + + public String getSystem() { + return system; + } + + public void setSystem(String system) { + this.system = system; + } + + public String getSystemName() { + return systemName; + } + + public void setSystemName(String systemName) { + this.systemName = systemName; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getTypeName() { + return typeName; + } + + public void setTypeName(String typeName) { + this.typeName = typeName; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUser() { + return updateUser; + } + + public void setUpdateUser(String updateUser) { + this.updateUser = updateUser; + } + } +} diff --git a/src/main/java/com/casic/swing/ui/TimeGuardNtp.form b/src/main/java/com/casic/swing/ui/TimeGuardNtp.form index 8732b4b..27e654a 100644 --- a/src/main/java/com/casic/swing/ui/TimeGuardNtp.form +++ b/src/main/java/com/casic/swing/ui/TimeGuardNtp.form @@ -12,7 +12,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -31,10 +31,10 @@ - + - + @@ -44,7 +44,7 @@ - + @@ -55,7 +55,7 @@ - + @@ -89,7 +89,7 @@ - + @@ -101,34 +101,10 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -157,49 +133,52 @@ - + - + - + - + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - + + - - - - - - - - - - - - diff --git a/src/main/java/com/casic/swing/bean/FrequencyBean.java b/src/main/java/com/casic/swing/bean/FrequencyBean.java new file mode 100644 index 0000000..c74f611 --- /dev/null +++ b/src/main/java/com/casic/swing/bean/FrequencyBean.java @@ -0,0 +1,187 @@ +package com.casic.swing.bean; + +/** + * @author a203 + */ +public class FrequencyBean { + + /** + * code : 200 + * data : {"createTime":"2022-01-06 09:33:57","createUser":"1","delFlag":"0","id":"1478903164676395008","paraName":"NTP_FREQUENCY","paraValue":"10","system":"","systemName":"","title":"NTP时间同步频度","type":"1","typeName":"","updateTime":"","updateUser":""} + * message : 请求成功 + * success : true + */ + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + /** + * createTime : 2022-01-06 09:33:57 + * createUser : 1 + * delFlag : 0 + * id : 1478903164676395008 + * paraName : NTP_FREQUENCY + * paraValue : 10 + * system : + * systemName : + * title : NTP时间同步频度 + * type : 1 + * typeName : + * updateTime : + * updateUser : + */ + + private String createTime; + private String createUser; + private String delFlag; + private String id; + private String paraName; + private String paraValue; + private String system; + private String systemName; + private String title; + private String type; + private String typeName; + private String updateTime; + private String updateUser; + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getDelFlag() { + return delFlag; + } + + public void setDelFlag(String delFlag) { + this.delFlag = delFlag; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getParaName() { + return paraName; + } + + public void setParaName(String paraName) { + this.paraName = paraName; + } + + public String getParaValue() { + return paraValue; + } + + public void setParaValue(String paraValue) { + this.paraValue = paraValue; + } + + public String getSystem() { + return system; + } + + public void setSystem(String system) { + this.system = system; + } + + public String getSystemName() { + return systemName; + } + + public void setSystemName(String systemName) { + this.systemName = systemName; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getTypeName() { + return typeName; + } + + public void setTypeName(String typeName) { + this.typeName = typeName; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUser() { + return updateUser; + } + + public void setUpdateUser(String updateUser) { + this.updateUser = updateUser; + } + } +} diff --git a/src/main/java/com/casic/swing/ui/TimeGuardNtp.form b/src/main/java/com/casic/swing/ui/TimeGuardNtp.form index 8732b4b..27e654a 100644 --- a/src/main/java/com/casic/swing/ui/TimeGuardNtp.form +++ b/src/main/java/com/casic/swing/ui/TimeGuardNtp.form @@ -12,7 +12,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -31,10 +31,10 @@ - + - + @@ -44,7 +44,7 @@ - + @@ -55,7 +55,7 @@ - + @@ -89,7 +89,7 @@ - + @@ -101,34 +101,10 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -157,49 +133,52 @@ - + - + - + - + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - + + - - - - - - - - - - - - diff --git a/src/main/java/com/casic/swing/ui/TimeGuardNtp.java b/src/main/java/com/casic/swing/ui/TimeGuardNtp.java index 885031d..03ecd56 100644 --- a/src/main/java/com/casic/swing/ui/TimeGuardNtp.java +++ b/src/main/java/com/casic/swing/ui/TimeGuardNtp.java @@ -8,11 +8,8 @@ import javax.swing.*; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; import java.net.InetAddress; +import java.util.List; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; @@ -22,16 +19,16 @@ */ public class TimeGuardNtp extends JFrame { private JPanel ntpPanel; - private JLabel timeValueLabel; - private JButton updateTimeButton; private JLabel currentTimeLabel; - private JCheckBox autoCheckBox; - private JComboBox periodComboBox; - private JLabel stateView; private JPanel dotPanel; + private JLabel stateView; + private JLabel recentlyTimeLabel; + private JLabel frequencyLabel; private JTextField hostTextField; private JComboBox localHostBox; - private JTextField serverTextField; + private JCheckBox autoCheckBox; + private JButton updateTimeButton; + private final ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor( 1, new ThreadFactoryBuilder().setNameFormat("demo-pool-%d").build()); @@ -46,43 +43,13 @@ setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pack(); - setSize(400, 330); + setSize(400, 300); //居中 setLocationRelativeTo(null); setVisible(true); stateView.setText("未同步"); setStateView(Color.GRAY); - StringHelper.createLogFile(); - - /** - * 时间间隔,单位为毫秒 - * */ - currentTimeLabel.setForeground(Color.BLUE); - new Timer(1000, new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - String systemTime = TimeOrDateUtil.timestampToTime(System.currentTimeMillis()); - currentTimeLabel.setText(systemTime); - } - }).start(); - - String assertsData = StringHelper.getAssertsData(); - if (!"".equals(assertsData)) { - timeValueLabel.setText(assertsData); - } else { - timeValueLabel.setText("无法确定最近同步时间"); - } - - //初始化JComboBox - for (Integer integer : Constant.PERIOD) { - periodComboBox.addItem(integer); - } - java.util.List addressList = HttpRequestHelper.localHost(); - for (InetAddress address : addressList) { - localHostBox.addItem(address.getHostAddress()); - } - //检查环境 new SwingWorker() { @@ -103,59 +70,64 @@ } }.execute(); - autoCheckBox.addActionListener(new ActionListener() { + StringHelper.createLogFile(); + /** + * 时间间隔,单位为毫秒 + * */ + currentTimeLabel.setForeground(Color.BLUE); + new Timer(1000, e -> { + String systemTime = TimeOrDateUtil.timestampToTime(System.currentTimeMillis()); + currentTimeLabel.setText(systemTime); + }).start(); + + String assertsData = StringHelper.getAssertsData(); + if (!"".equals(assertsData)) { + recentlyTimeLabel.setText(assertsData); + } else { + recentlyTimeLabel.setText("无法确定最近同步时间"); + } + + Request request = new Request.Builder().url(Constant.FREQUENCY_URL).build(); + HttpRequestHelper.doHttpRequest(request, new IHttpCallback() { @Override - public void actionPerformed(ActionEvent e) { - JCheckBox checkBox = (JCheckBox) e.getSource(); - if (checkBox.isSelected()) { - updateTimeButton.setEnabled(false); - periodComboBox.setEnabled(true); - hostTextField.setEnabled(false); - serverTextField.setEnabled(false); - startAutoSynchronize(Constant.PERIOD[0]); - } else { - updateTimeButton.setEnabled(true); - periodComboBox.setEnabled(false); - hostTextField.setEnabled(true); - serverTextField.setEnabled(true); - } + public void onSuccess(String s) { + frequencyLabel.setText(StringHelper.parseJson(s)); + } + + @Override + public void onFailure(Exception e) { + } }); - periodComboBox.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - int period = (Integer) e.getItem(); - if (e.getStateChange() == ItemEvent.SELECTED) { - startAutoSynchronize(period); - } + //初始化JComboBox + List addressList = HttpRequestHelper.localHost(); + for (InetAddress address : addressList) { + localHostBox.addItem(address.getHostAddress()); + } + + autoCheckBox.addActionListener(e -> { + JCheckBox checkBox = (JCheckBox) e.getSource(); + if (checkBox.isSelected()) { + updateTimeButton.setEnabled(false); + hostTextField.setEnabled(false); + /** + * 开启同步,只能开启一个同步线程 + * + * scheduleAtFixedRate + * 是以上一个任务开始的时间计时,period时间过去后,检测上一个任务是否执行完毕 + * 如果上一个任务执行完毕,则当前任务立即执行 + * 如果上一个任务没有执行完毕,则需要等上一个任务执行完毕后立即执行 + * */ + executorService.scheduleAtFixedRate(this::updateView, 0, Integer.parseInt(frequencyLabel.getText()), TimeUnit.MINUTES); + } else { + updateTimeButton.setEnabled(true); + hostTextField.setEnabled(true); } }); //按钮点击事件 - updateTimeButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - updateView(); - } - }); - } - - private void startAutoSynchronize(int period) { - /** - * 开启同步,只能开启一个同步线程 - * - * scheduleAtFixedRate - * 是以上一个任务开始的时间计时,period时间过去后,检测上一个任务是否执行完毕 - * 如果上一个任务执行完毕,则当前任务立即执行 - * 如果上一个任务没有执行完毕,则需要等上一个任务执行完毕后立即执行 - * */ - executorService.scheduleAtFixedRate(new Runnable() { - @Override - public void run() { - updateView(); - } - }, 0, period, TimeUnit.MINUTES); + updateTimeButton.addActionListener(e -> updateView()); } private void updateView() { @@ -165,12 +137,6 @@ JOptionPane.showMessageDialog(ntpPanel, "授时中心服务器输入错误,请检查", "Runtime Error", JOptionPane.ERROR_MESSAGE); return; } - String server = serverTextField.getText().trim(); - if (server.isEmpty()) { - autoCheckBox.setSelected(false); - JOptionPane.showMessageDialog(ntpPanel, "后台服务器地址输入错误,请检查", "Runtime Error", JOptionPane.ERROR_MESSAGE); - return; - } // String result = "5 Jan 11:20:24 ntpdate[807910]: adjust time server 114.118.7.161 offset -0.004064 sec"; // String result = "5 Jan 11:24:06 ntpdate[824403]: no server suitable for synchronization found"; String result = CommandUtil.ntpDate(host); @@ -179,7 +145,7 @@ if ("".equals(result)) { setStateView(Color.RED); stateView.setText("同步失败"); - timeValueLabel.setText(""); + recentlyTimeLabel.setText(""); } else { String systemTime = TimeOrDateUtil.timestampToTime(System.currentTimeMillis()); @@ -188,13 +154,13 @@ if (isSuccess) { setStateView(Color.GREEN); stateView.setText("同步成功"); - timeValueLabel.setText(systemTime); + recentlyTimeLabel.setText(systemTime); //同步成功之后将时间存入本地 StringHelper.saveAssertsData(systemTime); } else { setStateView(Color.RED); stateView.setText("同步失败"); - timeValueLabel.setText(""); + recentlyTimeLabel.setText(""); } //POST提交 JSONObject object = new JSONObject(); @@ -205,19 +171,14 @@ String[] dataSplit = resultString.split(" "); object.put("deltaTime", dataSplit[6]); object.put("createTime", systemTime); - if (autoCheckBox.isSelected()) { - object.put("frequency", periodComboBox.getSelectedItem()); - } else { - object.put("frequency", ""); - } } catch (JSONException e) { e.printStackTrace(); } Request request = new Request.Builder() - .url("http://" + server + "/ntp/saveResult") + .url(Constant.SYNCHRONIZE_URL) .post(HttpRequestHelper.createRequestBody(object.toJSONString())) .build(); - HttpRequestHelper.doPost(request, new IHttpCallback() { + HttpRequestHelper.doHttpRequest(request, new IHttpCallback() { @Override public void onSuccess(String s) { diff --git a/src/main/java/com/casic/swing/bean/FrequencyBean.java b/src/main/java/com/casic/swing/bean/FrequencyBean.java new file mode 100644 index 0000000..c74f611 --- /dev/null +++ b/src/main/java/com/casic/swing/bean/FrequencyBean.java @@ -0,0 +1,187 @@ +package com.casic.swing.bean; + +/** + * @author a203 + */ +public class FrequencyBean { + + /** + * code : 200 + * data : {"createTime":"2022-01-06 09:33:57","createUser":"1","delFlag":"0","id":"1478903164676395008","paraName":"NTP_FREQUENCY","paraValue":"10","system":"","systemName":"","title":"NTP时间同步频度","type":"1","typeName":"","updateTime":"","updateUser":""} + * message : 请求成功 + * success : true + */ + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + /** + * createTime : 2022-01-06 09:33:57 + * createUser : 1 + * delFlag : 0 + * id : 1478903164676395008 + * paraName : NTP_FREQUENCY + * paraValue : 10 + * system : + * systemName : + * title : NTP时间同步频度 + * type : 1 + * typeName : + * updateTime : + * updateUser : + */ + + private String createTime; + private String createUser; + private String delFlag; + private String id; + private String paraName; + private String paraValue; + private String system; + private String systemName; + private String title; + private String type; + private String typeName; + private String updateTime; + private String updateUser; + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getDelFlag() { + return delFlag; + } + + public void setDelFlag(String delFlag) { + this.delFlag = delFlag; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getParaName() { + return paraName; + } + + public void setParaName(String paraName) { + this.paraName = paraName; + } + + public String getParaValue() { + return paraValue; + } + + public void setParaValue(String paraValue) { + this.paraValue = paraValue; + } + + public String getSystem() { + return system; + } + + public void setSystem(String system) { + this.system = system; + } + + public String getSystemName() { + return systemName; + } + + public void setSystemName(String systemName) { + this.systemName = systemName; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getTypeName() { + return typeName; + } + + public void setTypeName(String typeName) { + this.typeName = typeName; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUser() { + return updateUser; + } + + public void setUpdateUser(String updateUser) { + this.updateUser = updateUser; + } + } +} diff --git a/src/main/java/com/casic/swing/ui/TimeGuardNtp.form b/src/main/java/com/casic/swing/ui/TimeGuardNtp.form index 8732b4b..27e654a 100644 --- a/src/main/java/com/casic/swing/ui/TimeGuardNtp.form +++ b/src/main/java/com/casic/swing/ui/TimeGuardNtp.form @@ -12,7 +12,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -31,10 +31,10 @@ - + - + @@ -44,7 +44,7 @@ - + @@ -55,7 +55,7 @@ - + @@ -89,7 +89,7 @@ - + @@ -101,34 +101,10 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -157,49 +133,52 @@ - + - + - + - + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - + + - - - - - - - - - - - - diff --git a/src/main/java/com/casic/swing/ui/TimeGuardNtp.java b/src/main/java/com/casic/swing/ui/TimeGuardNtp.java index 885031d..03ecd56 100644 --- a/src/main/java/com/casic/swing/ui/TimeGuardNtp.java +++ b/src/main/java/com/casic/swing/ui/TimeGuardNtp.java @@ -8,11 +8,8 @@ import javax.swing.*; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; import java.net.InetAddress; +import java.util.List; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; @@ -22,16 +19,16 @@ */ public class TimeGuardNtp extends JFrame { private JPanel ntpPanel; - private JLabel timeValueLabel; - private JButton updateTimeButton; private JLabel currentTimeLabel; - private JCheckBox autoCheckBox; - private JComboBox periodComboBox; - private JLabel stateView; private JPanel dotPanel; + private JLabel stateView; + private JLabel recentlyTimeLabel; + private JLabel frequencyLabel; private JTextField hostTextField; private JComboBox localHostBox; - private JTextField serverTextField; + private JCheckBox autoCheckBox; + private JButton updateTimeButton; + private final ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor( 1, new ThreadFactoryBuilder().setNameFormat("demo-pool-%d").build()); @@ -46,43 +43,13 @@ setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pack(); - setSize(400, 330); + setSize(400, 300); //居中 setLocationRelativeTo(null); setVisible(true); stateView.setText("未同步"); setStateView(Color.GRAY); - StringHelper.createLogFile(); - - /** - * 时间间隔,单位为毫秒 - * */ - currentTimeLabel.setForeground(Color.BLUE); - new Timer(1000, new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - String systemTime = TimeOrDateUtil.timestampToTime(System.currentTimeMillis()); - currentTimeLabel.setText(systemTime); - } - }).start(); - - String assertsData = StringHelper.getAssertsData(); - if (!"".equals(assertsData)) { - timeValueLabel.setText(assertsData); - } else { - timeValueLabel.setText("无法确定最近同步时间"); - } - - //初始化JComboBox - for (Integer integer : Constant.PERIOD) { - periodComboBox.addItem(integer); - } - java.util.List addressList = HttpRequestHelper.localHost(); - for (InetAddress address : addressList) { - localHostBox.addItem(address.getHostAddress()); - } - //检查环境 new SwingWorker() { @@ -103,59 +70,64 @@ } }.execute(); - autoCheckBox.addActionListener(new ActionListener() { + StringHelper.createLogFile(); + /** + * 时间间隔,单位为毫秒 + * */ + currentTimeLabel.setForeground(Color.BLUE); + new Timer(1000, e -> { + String systemTime = TimeOrDateUtil.timestampToTime(System.currentTimeMillis()); + currentTimeLabel.setText(systemTime); + }).start(); + + String assertsData = StringHelper.getAssertsData(); + if (!"".equals(assertsData)) { + recentlyTimeLabel.setText(assertsData); + } else { + recentlyTimeLabel.setText("无法确定最近同步时间"); + } + + Request request = new Request.Builder().url(Constant.FREQUENCY_URL).build(); + HttpRequestHelper.doHttpRequest(request, new IHttpCallback() { @Override - public void actionPerformed(ActionEvent e) { - JCheckBox checkBox = (JCheckBox) e.getSource(); - if (checkBox.isSelected()) { - updateTimeButton.setEnabled(false); - periodComboBox.setEnabled(true); - hostTextField.setEnabled(false); - serverTextField.setEnabled(false); - startAutoSynchronize(Constant.PERIOD[0]); - } else { - updateTimeButton.setEnabled(true); - periodComboBox.setEnabled(false); - hostTextField.setEnabled(true); - serverTextField.setEnabled(true); - } + public void onSuccess(String s) { + frequencyLabel.setText(StringHelper.parseJson(s)); + } + + @Override + public void onFailure(Exception e) { + } }); - periodComboBox.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - int period = (Integer) e.getItem(); - if (e.getStateChange() == ItemEvent.SELECTED) { - startAutoSynchronize(period); - } + //初始化JComboBox + List addressList = HttpRequestHelper.localHost(); + for (InetAddress address : addressList) { + localHostBox.addItem(address.getHostAddress()); + } + + autoCheckBox.addActionListener(e -> { + JCheckBox checkBox = (JCheckBox) e.getSource(); + if (checkBox.isSelected()) { + updateTimeButton.setEnabled(false); + hostTextField.setEnabled(false); + /** + * 开启同步,只能开启一个同步线程 + * + * scheduleAtFixedRate + * 是以上一个任务开始的时间计时,period时间过去后,检测上一个任务是否执行完毕 + * 如果上一个任务执行完毕,则当前任务立即执行 + * 如果上一个任务没有执行完毕,则需要等上一个任务执行完毕后立即执行 + * */ + executorService.scheduleAtFixedRate(this::updateView, 0, Integer.parseInt(frequencyLabel.getText()), TimeUnit.MINUTES); + } else { + updateTimeButton.setEnabled(true); + hostTextField.setEnabled(true); } }); //按钮点击事件 - updateTimeButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - updateView(); - } - }); - } - - private void startAutoSynchronize(int period) { - /** - * 开启同步,只能开启一个同步线程 - * - * scheduleAtFixedRate - * 是以上一个任务开始的时间计时,period时间过去后,检测上一个任务是否执行完毕 - * 如果上一个任务执行完毕,则当前任务立即执行 - * 如果上一个任务没有执行完毕,则需要等上一个任务执行完毕后立即执行 - * */ - executorService.scheduleAtFixedRate(new Runnable() { - @Override - public void run() { - updateView(); - } - }, 0, period, TimeUnit.MINUTES); + updateTimeButton.addActionListener(e -> updateView()); } private void updateView() { @@ -165,12 +137,6 @@ JOptionPane.showMessageDialog(ntpPanel, "授时中心服务器输入错误,请检查", "Runtime Error", JOptionPane.ERROR_MESSAGE); return; } - String server = serverTextField.getText().trim(); - if (server.isEmpty()) { - autoCheckBox.setSelected(false); - JOptionPane.showMessageDialog(ntpPanel, "后台服务器地址输入错误,请检查", "Runtime Error", JOptionPane.ERROR_MESSAGE); - return; - } // String result = "5 Jan 11:20:24 ntpdate[807910]: adjust time server 114.118.7.161 offset -0.004064 sec"; // String result = "5 Jan 11:24:06 ntpdate[824403]: no server suitable for synchronization found"; String result = CommandUtil.ntpDate(host); @@ -179,7 +145,7 @@ if ("".equals(result)) { setStateView(Color.RED); stateView.setText("同步失败"); - timeValueLabel.setText(""); + recentlyTimeLabel.setText(""); } else { String systemTime = TimeOrDateUtil.timestampToTime(System.currentTimeMillis()); @@ -188,13 +154,13 @@ if (isSuccess) { setStateView(Color.GREEN); stateView.setText("同步成功"); - timeValueLabel.setText(systemTime); + recentlyTimeLabel.setText(systemTime); //同步成功之后将时间存入本地 StringHelper.saveAssertsData(systemTime); } else { setStateView(Color.RED); stateView.setText("同步失败"); - timeValueLabel.setText(""); + recentlyTimeLabel.setText(""); } //POST提交 JSONObject object = new JSONObject(); @@ -205,19 +171,14 @@ String[] dataSplit = resultString.split(" "); object.put("deltaTime", dataSplit[6]); object.put("createTime", systemTime); - if (autoCheckBox.isSelected()) { - object.put("frequency", periodComboBox.getSelectedItem()); - } else { - object.put("frequency", ""); - } } catch (JSONException e) { e.printStackTrace(); } Request request = new Request.Builder() - .url("http://" + server + "/ntp/saveResult") + .url(Constant.SYNCHRONIZE_URL) .post(HttpRequestHelper.createRequestBody(object.toJSONString())) .build(); - HttpRequestHelper.doPost(request, new IHttpCallback() { + HttpRequestHelper.doHttpRequest(request, new IHttpCallback() { @Override public void onSuccess(String s) { diff --git a/src/main/java/com/casic/swing/utils/Constant.java b/src/main/java/com/casic/swing/utils/Constant.java index f4a6742..495a62a 100644 --- a/src/main/java/com/casic/swing/utils/Constant.java +++ b/src/main/java/com/casic/swing/utils/Constant.java @@ -4,10 +4,11 @@ * @author a203 */ public class Constant { - public static final String[] HOST_NAME = {"NTP服务器(上海)", "中国国家授时中心", "清华大学", "北京大学", "自定义"}; + private static final String BASE_URL = "http://localhost:11410"; + public static final String FREQUENCY_URL = BASE_URL + "/config/findSingle?paraName=NTP_FREQUENCY"; + public static final String SYNCHRONIZE_URL = BASE_URL + "/ntp/saveResult"; + + + public static final String[] HOST_NAME = {"NTP服务器(上海)", "中国国家授时中心", "清华大学", "北京大学"}; public static final String[] HOST_IP = {"ntp.api.bz", "ntp.ntsc.ac.cn", "s1b.time.edu.cn", "s2m.time.edu.cn"}; - /** - * 同步周期,单位:分钟 - */ - public static final Integer[] PERIOD = {10, 20, 30}; } diff --git a/src/main/java/com/casic/swing/bean/FrequencyBean.java b/src/main/java/com/casic/swing/bean/FrequencyBean.java new file mode 100644 index 0000000..c74f611 --- /dev/null +++ b/src/main/java/com/casic/swing/bean/FrequencyBean.java @@ -0,0 +1,187 @@ +package com.casic.swing.bean; + +/** + * @author a203 + */ +public class FrequencyBean { + + /** + * code : 200 + * data : {"createTime":"2022-01-06 09:33:57","createUser":"1","delFlag":"0","id":"1478903164676395008","paraName":"NTP_FREQUENCY","paraValue":"10","system":"","systemName":"","title":"NTP时间同步频度","type":"1","typeName":"","updateTime":"","updateUser":""} + * message : 请求成功 + * success : true + */ + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + /** + * createTime : 2022-01-06 09:33:57 + * createUser : 1 + * delFlag : 0 + * id : 1478903164676395008 + * paraName : NTP_FREQUENCY + * paraValue : 10 + * system : + * systemName : + * title : NTP时间同步频度 + * type : 1 + * typeName : + * updateTime : + * updateUser : + */ + + private String createTime; + private String createUser; + private String delFlag; + private String id; + private String paraName; + private String paraValue; + private String system; + private String systemName; + private String title; + private String type; + private String typeName; + private String updateTime; + private String updateUser; + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getDelFlag() { + return delFlag; + } + + public void setDelFlag(String delFlag) { + this.delFlag = delFlag; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getParaName() { + return paraName; + } + + public void setParaName(String paraName) { + this.paraName = paraName; + } + + public String getParaValue() { + return paraValue; + } + + public void setParaValue(String paraValue) { + this.paraValue = paraValue; + } + + public String getSystem() { + return system; + } + + public void setSystem(String system) { + this.system = system; + } + + public String getSystemName() { + return systemName; + } + + public void setSystemName(String systemName) { + this.systemName = systemName; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getTypeName() { + return typeName; + } + + public void setTypeName(String typeName) { + this.typeName = typeName; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUser() { + return updateUser; + } + + public void setUpdateUser(String updateUser) { + this.updateUser = updateUser; + } + } +} diff --git a/src/main/java/com/casic/swing/ui/TimeGuardNtp.form b/src/main/java/com/casic/swing/ui/TimeGuardNtp.form index 8732b4b..27e654a 100644 --- a/src/main/java/com/casic/swing/ui/TimeGuardNtp.form +++ b/src/main/java/com/casic/swing/ui/TimeGuardNtp.form @@ -12,7 +12,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -31,10 +31,10 @@ - + - + @@ -44,7 +44,7 @@ - + @@ -55,7 +55,7 @@ - + @@ -89,7 +89,7 @@ - + @@ -101,34 +101,10 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -157,49 +133,52 @@ - + - + - + - + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - + + - - - - - - - - - - - - diff --git a/src/main/java/com/casic/swing/ui/TimeGuardNtp.java b/src/main/java/com/casic/swing/ui/TimeGuardNtp.java index 885031d..03ecd56 100644 --- a/src/main/java/com/casic/swing/ui/TimeGuardNtp.java +++ b/src/main/java/com/casic/swing/ui/TimeGuardNtp.java @@ -8,11 +8,8 @@ import javax.swing.*; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; import java.net.InetAddress; +import java.util.List; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; @@ -22,16 +19,16 @@ */ public class TimeGuardNtp extends JFrame { private JPanel ntpPanel; - private JLabel timeValueLabel; - private JButton updateTimeButton; private JLabel currentTimeLabel; - private JCheckBox autoCheckBox; - private JComboBox periodComboBox; - private JLabel stateView; private JPanel dotPanel; + private JLabel stateView; + private JLabel recentlyTimeLabel; + private JLabel frequencyLabel; private JTextField hostTextField; private JComboBox localHostBox; - private JTextField serverTextField; + private JCheckBox autoCheckBox; + private JButton updateTimeButton; + private final ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor( 1, new ThreadFactoryBuilder().setNameFormat("demo-pool-%d").build()); @@ -46,43 +43,13 @@ setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pack(); - setSize(400, 330); + setSize(400, 300); //居中 setLocationRelativeTo(null); setVisible(true); stateView.setText("未同步"); setStateView(Color.GRAY); - StringHelper.createLogFile(); - - /** - * 时间间隔,单位为毫秒 - * */ - currentTimeLabel.setForeground(Color.BLUE); - new Timer(1000, new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - String systemTime = TimeOrDateUtil.timestampToTime(System.currentTimeMillis()); - currentTimeLabel.setText(systemTime); - } - }).start(); - - String assertsData = StringHelper.getAssertsData(); - if (!"".equals(assertsData)) { - timeValueLabel.setText(assertsData); - } else { - timeValueLabel.setText("无法确定最近同步时间"); - } - - //初始化JComboBox - for (Integer integer : Constant.PERIOD) { - periodComboBox.addItem(integer); - } - java.util.List addressList = HttpRequestHelper.localHost(); - for (InetAddress address : addressList) { - localHostBox.addItem(address.getHostAddress()); - } - //检查环境 new SwingWorker() { @@ -103,59 +70,64 @@ } }.execute(); - autoCheckBox.addActionListener(new ActionListener() { + StringHelper.createLogFile(); + /** + * 时间间隔,单位为毫秒 + * */ + currentTimeLabel.setForeground(Color.BLUE); + new Timer(1000, e -> { + String systemTime = TimeOrDateUtil.timestampToTime(System.currentTimeMillis()); + currentTimeLabel.setText(systemTime); + }).start(); + + String assertsData = StringHelper.getAssertsData(); + if (!"".equals(assertsData)) { + recentlyTimeLabel.setText(assertsData); + } else { + recentlyTimeLabel.setText("无法确定最近同步时间"); + } + + Request request = new Request.Builder().url(Constant.FREQUENCY_URL).build(); + HttpRequestHelper.doHttpRequest(request, new IHttpCallback() { @Override - public void actionPerformed(ActionEvent e) { - JCheckBox checkBox = (JCheckBox) e.getSource(); - if (checkBox.isSelected()) { - updateTimeButton.setEnabled(false); - periodComboBox.setEnabled(true); - hostTextField.setEnabled(false); - serverTextField.setEnabled(false); - startAutoSynchronize(Constant.PERIOD[0]); - } else { - updateTimeButton.setEnabled(true); - periodComboBox.setEnabled(false); - hostTextField.setEnabled(true); - serverTextField.setEnabled(true); - } + public void onSuccess(String s) { + frequencyLabel.setText(StringHelper.parseJson(s)); + } + + @Override + public void onFailure(Exception e) { + } }); - periodComboBox.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - int period = (Integer) e.getItem(); - if (e.getStateChange() == ItemEvent.SELECTED) { - startAutoSynchronize(period); - } + //初始化JComboBox + List addressList = HttpRequestHelper.localHost(); + for (InetAddress address : addressList) { + localHostBox.addItem(address.getHostAddress()); + } + + autoCheckBox.addActionListener(e -> { + JCheckBox checkBox = (JCheckBox) e.getSource(); + if (checkBox.isSelected()) { + updateTimeButton.setEnabled(false); + hostTextField.setEnabled(false); + /** + * 开启同步,只能开启一个同步线程 + * + * scheduleAtFixedRate + * 是以上一个任务开始的时间计时,period时间过去后,检测上一个任务是否执行完毕 + * 如果上一个任务执行完毕,则当前任务立即执行 + * 如果上一个任务没有执行完毕,则需要等上一个任务执行完毕后立即执行 + * */ + executorService.scheduleAtFixedRate(this::updateView, 0, Integer.parseInt(frequencyLabel.getText()), TimeUnit.MINUTES); + } else { + updateTimeButton.setEnabled(true); + hostTextField.setEnabled(true); } }); //按钮点击事件 - updateTimeButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - updateView(); - } - }); - } - - private void startAutoSynchronize(int period) { - /** - * 开启同步,只能开启一个同步线程 - * - * scheduleAtFixedRate - * 是以上一个任务开始的时间计时,period时间过去后,检测上一个任务是否执行完毕 - * 如果上一个任务执行完毕,则当前任务立即执行 - * 如果上一个任务没有执行完毕,则需要等上一个任务执行完毕后立即执行 - * */ - executorService.scheduleAtFixedRate(new Runnable() { - @Override - public void run() { - updateView(); - } - }, 0, period, TimeUnit.MINUTES); + updateTimeButton.addActionListener(e -> updateView()); } private void updateView() { @@ -165,12 +137,6 @@ JOptionPane.showMessageDialog(ntpPanel, "授时中心服务器输入错误,请检查", "Runtime Error", JOptionPane.ERROR_MESSAGE); return; } - String server = serverTextField.getText().trim(); - if (server.isEmpty()) { - autoCheckBox.setSelected(false); - JOptionPane.showMessageDialog(ntpPanel, "后台服务器地址输入错误,请检查", "Runtime Error", JOptionPane.ERROR_MESSAGE); - return; - } // String result = "5 Jan 11:20:24 ntpdate[807910]: adjust time server 114.118.7.161 offset -0.004064 sec"; // String result = "5 Jan 11:24:06 ntpdate[824403]: no server suitable for synchronization found"; String result = CommandUtil.ntpDate(host); @@ -179,7 +145,7 @@ if ("".equals(result)) { setStateView(Color.RED); stateView.setText("同步失败"); - timeValueLabel.setText(""); + recentlyTimeLabel.setText(""); } else { String systemTime = TimeOrDateUtil.timestampToTime(System.currentTimeMillis()); @@ -188,13 +154,13 @@ if (isSuccess) { setStateView(Color.GREEN); stateView.setText("同步成功"); - timeValueLabel.setText(systemTime); + recentlyTimeLabel.setText(systemTime); //同步成功之后将时间存入本地 StringHelper.saveAssertsData(systemTime); } else { setStateView(Color.RED); stateView.setText("同步失败"); - timeValueLabel.setText(""); + recentlyTimeLabel.setText(""); } //POST提交 JSONObject object = new JSONObject(); @@ -205,19 +171,14 @@ String[] dataSplit = resultString.split(" "); object.put("deltaTime", dataSplit[6]); object.put("createTime", systemTime); - if (autoCheckBox.isSelected()) { - object.put("frequency", periodComboBox.getSelectedItem()); - } else { - object.put("frequency", ""); - } } catch (JSONException e) { e.printStackTrace(); } Request request = new Request.Builder() - .url("http://" + server + "/ntp/saveResult") + .url(Constant.SYNCHRONIZE_URL) .post(HttpRequestHelper.createRequestBody(object.toJSONString())) .build(); - HttpRequestHelper.doPost(request, new IHttpCallback() { + HttpRequestHelper.doHttpRequest(request, new IHttpCallback() { @Override public void onSuccess(String s) { diff --git a/src/main/java/com/casic/swing/utils/Constant.java b/src/main/java/com/casic/swing/utils/Constant.java index f4a6742..495a62a 100644 --- a/src/main/java/com/casic/swing/utils/Constant.java +++ b/src/main/java/com/casic/swing/utils/Constant.java @@ -4,10 +4,11 @@ * @author a203 */ public class Constant { - public static final String[] HOST_NAME = {"NTP服务器(上海)", "中国国家授时中心", "清华大学", "北京大学", "自定义"}; + private static final String BASE_URL = "http://localhost:11410"; + public static final String FREQUENCY_URL = BASE_URL + "/config/findSingle?paraName=NTP_FREQUENCY"; + public static final String SYNCHRONIZE_URL = BASE_URL + "/ntp/saveResult"; + + + public static final String[] HOST_NAME = {"NTP服务器(上海)", "中国国家授时中心", "清华大学", "北京大学"}; public static final String[] HOST_IP = {"ntp.api.bz", "ntp.ntsc.ac.cn", "s1b.time.edu.cn", "s2m.time.edu.cn"}; - /** - * 同步周期,单位:分钟 - */ - public static final Integer[] PERIOD = {10, 20, 30}; } diff --git a/src/main/java/com/casic/swing/utils/HttpRequestHelper.java b/src/main/java/com/casic/swing/utils/HttpRequestHelper.java index ae7f057..0c6c943 100644 --- a/src/main/java/com/casic/swing/utils/HttpRequestHelper.java +++ b/src/main/java/com/casic/swing/utils/HttpRequestHelper.java @@ -22,7 +22,7 @@ return RequestBody.create(MediaType.parse("application/json; charset=utf-8"), value); } - public static void doPost(Request request, IHttpCallback httpCallback) { + public static void doHttpRequest(Request request, IHttpCallback httpCallback) { OkHttpClient httpClient = new OkHttpClient.Builder() .connectTimeout(15, TimeUnit.SECONDS) .writeTimeout(15, TimeUnit.SECONDS) @@ -32,7 +32,7 @@ call.enqueue(new Callback() { @Override public void onFailure(@NotNull Call call, @NotNull IOException e) { - + httpCallback.onFailure(e); } @Override diff --git a/src/main/java/com/casic/swing/bean/FrequencyBean.java b/src/main/java/com/casic/swing/bean/FrequencyBean.java new file mode 100644 index 0000000..c74f611 --- /dev/null +++ b/src/main/java/com/casic/swing/bean/FrequencyBean.java @@ -0,0 +1,187 @@ +package com.casic.swing.bean; + +/** + * @author a203 + */ +public class FrequencyBean { + + /** + * code : 200 + * data : {"createTime":"2022-01-06 09:33:57","createUser":"1","delFlag":"0","id":"1478903164676395008","paraName":"NTP_FREQUENCY","paraValue":"10","system":"","systemName":"","title":"NTP时间同步频度","type":"1","typeName":"","updateTime":"","updateUser":""} + * message : 请求成功 + * success : true + */ + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + /** + * createTime : 2022-01-06 09:33:57 + * createUser : 1 + * delFlag : 0 + * id : 1478903164676395008 + * paraName : NTP_FREQUENCY + * paraValue : 10 + * system : + * systemName : + * title : NTP时间同步频度 + * type : 1 + * typeName : + * updateTime : + * updateUser : + */ + + private String createTime; + private String createUser; + private String delFlag; + private String id; + private String paraName; + private String paraValue; + private String system; + private String systemName; + private String title; + private String type; + private String typeName; + private String updateTime; + private String updateUser; + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getDelFlag() { + return delFlag; + } + + public void setDelFlag(String delFlag) { + this.delFlag = delFlag; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getParaName() { + return paraName; + } + + public void setParaName(String paraName) { + this.paraName = paraName; + } + + public String getParaValue() { + return paraValue; + } + + public void setParaValue(String paraValue) { + this.paraValue = paraValue; + } + + public String getSystem() { + return system; + } + + public void setSystem(String system) { + this.system = system; + } + + public String getSystemName() { + return systemName; + } + + public void setSystemName(String systemName) { + this.systemName = systemName; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getTypeName() { + return typeName; + } + + public void setTypeName(String typeName) { + this.typeName = typeName; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUser() { + return updateUser; + } + + public void setUpdateUser(String updateUser) { + this.updateUser = updateUser; + } + } +} diff --git a/src/main/java/com/casic/swing/ui/TimeGuardNtp.form b/src/main/java/com/casic/swing/ui/TimeGuardNtp.form index 8732b4b..27e654a 100644 --- a/src/main/java/com/casic/swing/ui/TimeGuardNtp.form +++ b/src/main/java/com/casic/swing/ui/TimeGuardNtp.form @@ -12,7 +12,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -31,10 +31,10 @@ - + - + @@ -44,7 +44,7 @@ - + @@ -55,7 +55,7 @@ - + @@ -89,7 +89,7 @@ - + @@ -101,34 +101,10 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -157,49 +133,52 @@ - + - + - + - + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - + + - - - - - - - - - - - - diff --git a/src/main/java/com/casic/swing/ui/TimeGuardNtp.java b/src/main/java/com/casic/swing/ui/TimeGuardNtp.java index 885031d..03ecd56 100644 --- a/src/main/java/com/casic/swing/ui/TimeGuardNtp.java +++ b/src/main/java/com/casic/swing/ui/TimeGuardNtp.java @@ -8,11 +8,8 @@ import javax.swing.*; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; import java.net.InetAddress; +import java.util.List; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; @@ -22,16 +19,16 @@ */ public class TimeGuardNtp extends JFrame { private JPanel ntpPanel; - private JLabel timeValueLabel; - private JButton updateTimeButton; private JLabel currentTimeLabel; - private JCheckBox autoCheckBox; - private JComboBox periodComboBox; - private JLabel stateView; private JPanel dotPanel; + private JLabel stateView; + private JLabel recentlyTimeLabel; + private JLabel frequencyLabel; private JTextField hostTextField; private JComboBox localHostBox; - private JTextField serverTextField; + private JCheckBox autoCheckBox; + private JButton updateTimeButton; + private final ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor( 1, new ThreadFactoryBuilder().setNameFormat("demo-pool-%d").build()); @@ -46,43 +43,13 @@ setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pack(); - setSize(400, 330); + setSize(400, 300); //居中 setLocationRelativeTo(null); setVisible(true); stateView.setText("未同步"); setStateView(Color.GRAY); - StringHelper.createLogFile(); - - /** - * 时间间隔,单位为毫秒 - * */ - currentTimeLabel.setForeground(Color.BLUE); - new Timer(1000, new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - String systemTime = TimeOrDateUtil.timestampToTime(System.currentTimeMillis()); - currentTimeLabel.setText(systemTime); - } - }).start(); - - String assertsData = StringHelper.getAssertsData(); - if (!"".equals(assertsData)) { - timeValueLabel.setText(assertsData); - } else { - timeValueLabel.setText("无法确定最近同步时间"); - } - - //初始化JComboBox - for (Integer integer : Constant.PERIOD) { - periodComboBox.addItem(integer); - } - java.util.List addressList = HttpRequestHelper.localHost(); - for (InetAddress address : addressList) { - localHostBox.addItem(address.getHostAddress()); - } - //检查环境 new SwingWorker() { @@ -103,59 +70,64 @@ } }.execute(); - autoCheckBox.addActionListener(new ActionListener() { + StringHelper.createLogFile(); + /** + * 时间间隔,单位为毫秒 + * */ + currentTimeLabel.setForeground(Color.BLUE); + new Timer(1000, e -> { + String systemTime = TimeOrDateUtil.timestampToTime(System.currentTimeMillis()); + currentTimeLabel.setText(systemTime); + }).start(); + + String assertsData = StringHelper.getAssertsData(); + if (!"".equals(assertsData)) { + recentlyTimeLabel.setText(assertsData); + } else { + recentlyTimeLabel.setText("无法确定最近同步时间"); + } + + Request request = new Request.Builder().url(Constant.FREQUENCY_URL).build(); + HttpRequestHelper.doHttpRequest(request, new IHttpCallback() { @Override - public void actionPerformed(ActionEvent e) { - JCheckBox checkBox = (JCheckBox) e.getSource(); - if (checkBox.isSelected()) { - updateTimeButton.setEnabled(false); - periodComboBox.setEnabled(true); - hostTextField.setEnabled(false); - serverTextField.setEnabled(false); - startAutoSynchronize(Constant.PERIOD[0]); - } else { - updateTimeButton.setEnabled(true); - periodComboBox.setEnabled(false); - hostTextField.setEnabled(true); - serverTextField.setEnabled(true); - } + public void onSuccess(String s) { + frequencyLabel.setText(StringHelper.parseJson(s)); + } + + @Override + public void onFailure(Exception e) { + } }); - periodComboBox.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - int period = (Integer) e.getItem(); - if (e.getStateChange() == ItemEvent.SELECTED) { - startAutoSynchronize(period); - } + //初始化JComboBox + List addressList = HttpRequestHelper.localHost(); + for (InetAddress address : addressList) { + localHostBox.addItem(address.getHostAddress()); + } + + autoCheckBox.addActionListener(e -> { + JCheckBox checkBox = (JCheckBox) e.getSource(); + if (checkBox.isSelected()) { + updateTimeButton.setEnabled(false); + hostTextField.setEnabled(false); + /** + * 开启同步,只能开启一个同步线程 + * + * scheduleAtFixedRate + * 是以上一个任务开始的时间计时,period时间过去后,检测上一个任务是否执行完毕 + * 如果上一个任务执行完毕,则当前任务立即执行 + * 如果上一个任务没有执行完毕,则需要等上一个任务执行完毕后立即执行 + * */ + executorService.scheduleAtFixedRate(this::updateView, 0, Integer.parseInt(frequencyLabel.getText()), TimeUnit.MINUTES); + } else { + updateTimeButton.setEnabled(true); + hostTextField.setEnabled(true); } }); //按钮点击事件 - updateTimeButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - updateView(); - } - }); - } - - private void startAutoSynchronize(int period) { - /** - * 开启同步,只能开启一个同步线程 - * - * scheduleAtFixedRate - * 是以上一个任务开始的时间计时,period时间过去后,检测上一个任务是否执行完毕 - * 如果上一个任务执行完毕,则当前任务立即执行 - * 如果上一个任务没有执行完毕,则需要等上一个任务执行完毕后立即执行 - * */ - executorService.scheduleAtFixedRate(new Runnable() { - @Override - public void run() { - updateView(); - } - }, 0, period, TimeUnit.MINUTES); + updateTimeButton.addActionListener(e -> updateView()); } private void updateView() { @@ -165,12 +137,6 @@ JOptionPane.showMessageDialog(ntpPanel, "授时中心服务器输入错误,请检查", "Runtime Error", JOptionPane.ERROR_MESSAGE); return; } - String server = serverTextField.getText().trim(); - if (server.isEmpty()) { - autoCheckBox.setSelected(false); - JOptionPane.showMessageDialog(ntpPanel, "后台服务器地址输入错误,请检查", "Runtime Error", JOptionPane.ERROR_MESSAGE); - return; - } // String result = "5 Jan 11:20:24 ntpdate[807910]: adjust time server 114.118.7.161 offset -0.004064 sec"; // String result = "5 Jan 11:24:06 ntpdate[824403]: no server suitable for synchronization found"; String result = CommandUtil.ntpDate(host); @@ -179,7 +145,7 @@ if ("".equals(result)) { setStateView(Color.RED); stateView.setText("同步失败"); - timeValueLabel.setText(""); + recentlyTimeLabel.setText(""); } else { String systemTime = TimeOrDateUtil.timestampToTime(System.currentTimeMillis()); @@ -188,13 +154,13 @@ if (isSuccess) { setStateView(Color.GREEN); stateView.setText("同步成功"); - timeValueLabel.setText(systemTime); + recentlyTimeLabel.setText(systemTime); //同步成功之后将时间存入本地 StringHelper.saveAssertsData(systemTime); } else { setStateView(Color.RED); stateView.setText("同步失败"); - timeValueLabel.setText(""); + recentlyTimeLabel.setText(""); } //POST提交 JSONObject object = new JSONObject(); @@ -205,19 +171,14 @@ String[] dataSplit = resultString.split(" "); object.put("deltaTime", dataSplit[6]); object.put("createTime", systemTime); - if (autoCheckBox.isSelected()) { - object.put("frequency", periodComboBox.getSelectedItem()); - } else { - object.put("frequency", ""); - } } catch (JSONException e) { e.printStackTrace(); } Request request = new Request.Builder() - .url("http://" + server + "/ntp/saveResult") + .url(Constant.SYNCHRONIZE_URL) .post(HttpRequestHelper.createRequestBody(object.toJSONString())) .build(); - HttpRequestHelper.doPost(request, new IHttpCallback() { + HttpRequestHelper.doHttpRequest(request, new IHttpCallback() { @Override public void onSuccess(String s) { diff --git a/src/main/java/com/casic/swing/utils/Constant.java b/src/main/java/com/casic/swing/utils/Constant.java index f4a6742..495a62a 100644 --- a/src/main/java/com/casic/swing/utils/Constant.java +++ b/src/main/java/com/casic/swing/utils/Constant.java @@ -4,10 +4,11 @@ * @author a203 */ public class Constant { - public static final String[] HOST_NAME = {"NTP服务器(上海)", "中国国家授时中心", "清华大学", "北京大学", "自定义"}; + private static final String BASE_URL = "http://localhost:11410"; + public static final String FREQUENCY_URL = BASE_URL + "/config/findSingle?paraName=NTP_FREQUENCY"; + public static final String SYNCHRONIZE_URL = BASE_URL + "/ntp/saveResult"; + + + public static final String[] HOST_NAME = {"NTP服务器(上海)", "中国国家授时中心", "清华大学", "北京大学"}; public static final String[] HOST_IP = {"ntp.api.bz", "ntp.ntsc.ac.cn", "s1b.time.edu.cn", "s2m.time.edu.cn"}; - /** - * 同步周期,单位:分钟 - */ - public static final Integer[] PERIOD = {10, 20, 30}; } diff --git a/src/main/java/com/casic/swing/utils/HttpRequestHelper.java b/src/main/java/com/casic/swing/utils/HttpRequestHelper.java index ae7f057..0c6c943 100644 --- a/src/main/java/com/casic/swing/utils/HttpRequestHelper.java +++ b/src/main/java/com/casic/swing/utils/HttpRequestHelper.java @@ -22,7 +22,7 @@ return RequestBody.create(MediaType.parse("application/json; charset=utf-8"), value); } - public static void doPost(Request request, IHttpCallback httpCallback) { + public static void doHttpRequest(Request request, IHttpCallback httpCallback) { OkHttpClient httpClient = new OkHttpClient.Builder() .connectTimeout(15, TimeUnit.SECONDS) .writeTimeout(15, TimeUnit.SECONDS) @@ -32,7 +32,7 @@ call.enqueue(new Callback() { @Override public void onFailure(@NotNull Call call, @NotNull IOException e) { - + httpCallback.onFailure(e); } @Override diff --git a/src/main/java/com/casic/swing/utils/StringHelper.java b/src/main/java/com/casic/swing/utils/StringHelper.java index 53797ee..d290cfe 100644 --- a/src/main/java/com/casic/swing/utils/StringHelper.java +++ b/src/main/java/com/casic/swing/utils/StringHelper.java @@ -1,5 +1,8 @@ package com.casic.swing.utils; +import com.alibaba.fastjson.JSON; +import com.casic.swing.bean.FrequencyBean; + import java.io.*; /** @@ -57,4 +60,14 @@ } return ""; } + + public static String parseJson(String json) { + FrequencyBean bean = JSON.parseObject(json, FrequencyBean.class); + if (bean.getCode() == 200) { + FrequencyBean.DataBean data = bean.getData(); + return data.getParaValue(); + } else { + return "10"; + } + } }