diff --git a/config/config.json b/config/config.json
index 2148a9c..d747ee9 100644
--- a/config/config.json
+++ b/config/config.json
@@ -4,5 +4,69 @@
"height" : 800,
"stringLen" : 8,
"intLen" : 8,
- "serverConfigs" : null
+ "serverConfigs" : [ {
+ "serverName" : "天津众华-唯智WMS",
+ "port" : 8081,
+ "serverUrls" : [ {
+ "urlName" : "上报入库订单完成信息",
+ "url" : "/wz/accept/report",
+ "serverName" : "天津众华-唯智WMS",
+ "requestType" : "POST",
+ "responseBody" : "{\n\t\"status\": 1,\n\t\"statusMsg\": \"success\"\n}",
+ "hiddenLog" : false,
+ "headerMap" : null
+ }, {
+ "urlName" : "出库任务完成上报",
+ "url" : "/wz/order/report",
+ "serverName" : "天津众华-唯智WMS",
+ "requestType" : "POST",
+ "responseBody" : "{\n\t\"status\": 1,\n\t\"statusMsg\": \"success\"\n}",
+ "hiddenLog" : false,
+ "headerMap" : null
+ }, {
+ "urlName" : "上传盘点结果",
+ "url" : "/wz/invent/resp",
+ "serverName" : "天津众华-唯智WMS",
+ "requestType" : "POST",
+ "responseBody" : "{\n\t\"status\": 1,\n\t\"statusMsg\": \"success\"\n}",
+ "hiddenLog" : false,
+ "headerMap" : null
+ }, {
+ "urlName" : "库存同步",
+ "url" : "/wz/stock/sync",
+ "serverName" : "天津众华-唯智WMS",
+ "requestType" : "POST",
+ "responseBody" : "{\n\t\"status\": 1,\n\t\"statusMsg\": \"success\"\n}",
+ "hiddenLog" : false,
+ "headerMap" : null
+ } ]
+ }, {
+ "serverName" : "天津众华-AIOT",
+ "port" : 8000,
+ "serverUrls" : [ {
+ "urlName" : "查询状态",
+ "url" : "/aiot/task/info",
+ "serverName" : "天津众华-AIOT",
+ "requestType" : "POST",
+ "responseBody" : "{\n \"msg\": \"ok\",\n \"code\": 0,\n \"status\": 3\n}",
+ "hiddenLog" : true,
+ "headerMap" : null
+ }, {
+ "urlName" : "派发任务",
+ "url" : "/aiot/task/add",
+ "serverName" : "天津众华-AIOT",
+ "requestType" : "POST",
+ "responseBody" : "{\n \"msg\": \"ok\",\n \"code\": 0,\n \"data\": \"$int$\"\n}",
+ "hiddenLog" : false,
+ "headerMap" : null
+ }, {
+ "urlName" : "查询区域内设备状态",
+ "url" : "/tjzh/area/device/status",
+ "serverName" : "天津众华-AIOT",
+ "requestType" : "POST",
+ "responseBody" : "[\n {\n \"areaId\": 1,\n \"valid\": true\n },\n {\n \"areaId\": 2,\n \"valid\": true\n },\n {\n \"areaId\": 3,\n \"valid\": true\n },\n {\n \"areaId\": 4,\n \"valid\": true\n },\n {\n \"areaId\": 10,\n \"valid\": true\n },\n {\n \"areaId\": 11,\n \"valid\": true\n },\n {\n \"areaId\": 20,\n \"valid\": true\n },\n {\n \"areaId\": 21,\n \"valid\": true\n }\n]",
+ "hiddenLog" : false,
+ "headerMap" : null
+ } ]
+ } ]
}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 4e11796..2c2792c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
com.dayrain
http-server-simulator
- 1.4
+ 1.5
8
diff --git a/src/main/java/com/dayrain/Version.java b/src/main/java/com/dayrain/Version.java
new file mode 100644
index 0000000..e9ea696
--- /dev/null
+++ b/src/main/java/com/dayrain/Version.java
@@ -0,0 +1,9 @@
+package com.dayrain;
+/**
+ * 版本信息
+ * @author peng
+ * @date 2021/12/1
+ */
+public class Version {
+ public static final String VERSION_NAME = "HTTP SERVER 模拟器 V1.5";
+}
diff --git a/src/main/java/com/dayrain/component/Configuration.java b/src/main/java/com/dayrain/component/Configuration.java
index 68c4cba..72463fa 100644
--- a/src/main/java/com/dayrain/component/Configuration.java
+++ b/src/main/java/com/dayrain/component/Configuration.java
@@ -1,5 +1,6 @@
package com.dayrain.component;
+import java.util.ArrayList;
import java.util.List;
/**
* 配置文件
@@ -8,7 +9,7 @@ import java.util.List;
*/
public class Configuration {
- private String projectName = "HTTP SERVER 模拟器 V1.4";
+ private String projectName;
private int width;
@@ -39,6 +40,9 @@ public class Configuration {
}
public List getServerConfigs() {
+ if(serverConfigs == null) {
+ serverConfigs = new ArrayList<>();
+ }
return serverConfigs;
}
diff --git a/src/main/java/com/dayrain/component/ConsoleLog.java b/src/main/java/com/dayrain/component/ConsoleLog.java
deleted file mode 100644
index 11b1eda..0000000
--- a/src/main/java/com/dayrain/component/ConsoleLog.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package com.dayrain.component;
-
-import com.dayrain.views.LogArea;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-/**
- * 请求日志打印
- * @author peng
- * @date 2021/11/8
- */
-public class ConsoleLog {
-
- private static final HashMap logs = new HashMap<>();
-
- private static final String NO_REQUEST = "暂无请求";
-
- private static LogArea logArea;
-
- public static void initTextArea(LogArea area) {
- logArea = area;
- }
-
- public synchronized static void log(ServerUrl serverUrl, String params, String resp) {
- String log = logs.getOrDefault(serverUrl.getServerName(), null);
- if (log == null || NO_REQUEST.equals(log)) {
- log = "";
- }
-
- if (params == null || "".equals(params)) {
- params = "空";
- }
- StringBuilder stringBuilder = new StringBuilder();
- stringBuilder.append("[").append(now()).append("]");
- stringBuilder.append(serverUrl.getUrlName()).append(" ");
- stringBuilder.append(serverUrl.getUrl()).append(" ").append(serverUrl.getRequestType().name()).append("\n");
- stringBuilder.append("参数: ").append("\n");
- stringBuilder.append(params).append("\n");
- stringBuilder.append("返回值: ").append("\n");
- stringBuilder.append(resp);
- stringBuilder.append("\n\n");
-
- log += stringBuilder.toString();
-
- if(log.length() > 5000) {
- log = log.substring(log.length() - 5000);
- System.out.println(log.length());
- }
-
- logs.put(serverUrl.getServerName(), log);
-
- if (serverUrl.getServerName().equals(logArea.getServerName())) {
- if (NO_REQUEST.equals(logArea.getText())) {
- logArea.setText(log);
- } else {
- logArea.setText("");
- logArea.appendText(log);
- }
- logArea.setScrollTop(Double.MAX_VALUE);
- }
- }
-
- public synchronized static void resetTextArea(String serverName) {
- if (!logs.containsKey(serverName)) {
- logs.put(serverName, NO_REQUEST);
- }
-
- logArea.setServerName(serverName);
- logArea.setText(logs.get(serverName));
- logArea.appendText("");
- logArea.setScrollTop(Double.MAX_VALUE);
- }
-
- private static String now() {
- SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-DD-mm HH:mm:ss");
- return simpleDateFormat.format(new Date());
- }
-}
diff --git a/src/main/java/com/dayrain/component/RequestHandler.java b/src/main/java/com/dayrain/component/RequestHandler.java
index 29aea55..504c789 100644
--- a/src/main/java/com/dayrain/component/RequestHandler.java
+++ b/src/main/java/com/dayrain/component/RequestHandler.java
@@ -1,12 +1,15 @@
package com.dayrain.component;
import com.dayrain.utils.FileUtils;
+import com.dayrain.views.ViewHolder;
+import com.sun.net.httpserver.Headers;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
import java.util.UUID;
/**
* 请求处理
@@ -39,7 +42,7 @@ public class RequestHandler implements HttpHandler {
String resp = replaceResp(serverUrl.getResponseBody());
- ConsoleLog.log(serverUrl, param, resp);
+ ViewHolder.log(serverUrl, param, resp);
response(exchange, resp);
}
@@ -55,8 +58,8 @@ public class RequestHandler implements HttpHandler {
private void response(HttpExchange exchange, String jsonBody) {
try {
byte[] bytes = jsonBody.getBytes(StandardCharsets.UTF_8);
+ exchange.getResponseHeaders().add("Content-Type", "application/json; charset=utf-8");
exchange.sendResponseHeaders(200, bytes.length);
- exchange.setAttribute("Content-Type", "application/json; charset=utf-8");
OutputStream outputStream = exchange.getResponseBody();
outputStream.write(jsonBody.getBytes(StandardCharsets.UTF_8));
outputStream.close();
diff --git a/src/main/java/com/dayrain/component/ServerThreadHolder.java b/src/main/java/com/dayrain/component/ServerThreadHolder.java
index bd8f251..f5aa448 100644
--- a/src/main/java/com/dayrain/component/ServerThreadHolder.java
+++ b/src/main/java/com/dayrain/component/ServerThreadHolder.java
@@ -52,13 +52,6 @@ public class ServerThreadHolder {
serverThread.addContext(serverUrl);
}
- public synchronized static void restart(String serverName) {
- if(contains(serverName)) {
- ServerThread serverThread = threadMap.get(serverName);
- serverThread.restartServer();
- }
- }
-
public static void replaceUrl(String beforeName, String beforeUrl, ServerUrl serverUrl) {
if(contains(beforeName)) {
ServerThread serverThread = threadMap.get(beforeName);
diff --git a/src/main/java/com/dayrain/component/ServerUrl.java b/src/main/java/com/dayrain/component/ServerUrl.java
index e1b3ac7..52d4249 100644
--- a/src/main/java/com/dayrain/component/ServerUrl.java
+++ b/src/main/java/com/dayrain/component/ServerUrl.java
@@ -28,6 +28,10 @@ public class ServerUrl {
* 响应体
*/
private String responseBody;
+ /**
+ * 是否隐藏日志
+ */
+ private boolean hiddenLog;
/**
* 请求头
*/
@@ -91,4 +95,12 @@ public class ServerUrl {
public void setServerName(String serverName) {
this.serverName = serverName;
}
+
+ public boolean isHiddenLog() {
+ return hiddenLog;
+ }
+
+ public void setHiddenLog(boolean hiddenLog) {
+ this.hiddenLog = hiddenLog;
+ }
}
diff --git a/src/main/java/com/dayrain/server/ServerThread.java b/src/main/java/com/dayrain/server/ServerThread.java
index 66ac3a8..b4025d8 100644
--- a/src/main/java/com/dayrain/server/ServerThread.java
+++ b/src/main/java/com/dayrain/server/ServerThread.java
@@ -16,10 +16,6 @@ public class ServerThread extends Thread {
server.stop();
}
- public void restartServer() {
- server.restart();
- }
-
public void addContext(ServerUrl serverUrl) {
server.addContext(serverUrl);
}
diff --git a/src/main/java/com/dayrain/utils/ListViewHelper.java b/src/main/java/com/dayrain/utils/ListViewHelper.java
index b7347e8..ced2a5c 100644
--- a/src/main/java/com/dayrain/utils/ListViewHelper.java
+++ b/src/main/java/com/dayrain/utils/ListViewHelper.java
@@ -21,4 +21,5 @@ public class ListViewHelper {
serverUrls.setItems(null);
serverUrls.setItems(items);
}
+
}
diff --git a/src/main/java/com/dayrain/views/ApplicationStarter.java b/src/main/java/com/dayrain/views/ApplicationStarter.java
index cbb4eb1..e064c70 100644
--- a/src/main/java/com/dayrain/views/ApplicationStarter.java
+++ b/src/main/java/com/dayrain/views/ApplicationStarter.java
@@ -23,7 +23,9 @@ public class ApplicationStarter extends Application {
try {
ConfigHolder.init();
ViewHolder.setPrimaryStage(primaryStage);
- new HomeView().start();
+ HomeView homeView = new HomeView();
+ ViewHolder.setHomePage(homeView);
+ homeView.start();
}catch (Exception e) {
e.printStackTrace();
logger.error(e.getMessage());
diff --git a/src/main/java/com/dayrain/views/HomeView.java b/src/main/java/com/dayrain/views/HomeView.java
index 25ec748..7bdcd94 100644
--- a/src/main/java/com/dayrain/views/HomeView.java
+++ b/src/main/java/com/dayrain/views/HomeView.java
@@ -1,13 +1,11 @@
package com.dayrain.views;
+import com.dayrain.Version;
import com.dayrain.component.ConfigHolder;
-import com.dayrain.component.ConsoleLog;
import com.dayrain.component.ServerConfig;
import com.dayrain.component.ServerThreadHolder;
import com.dayrain.style.IconFactory;
import javafx.application.Platform;
-import javafx.beans.value.ChangeListener;
-import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.control.SplitPane;
import javafx.scene.layout.VBox;
@@ -37,9 +35,7 @@ public class HomeView {
SplitPane splitPane = new SplitPane();
//日志
LogArea logArea = new LogArea();
- ConsoleLog.initTextArea(logArea);
ViewHolder.setLogArea(logArea);
-
//server
ServerContainer serverContainer = initServer();
ViewHolder.setServerContainer(serverContainer);
@@ -47,7 +43,7 @@ public class HomeView {
splitPane.setDividerPositions(0.55f, 0.45f);
vBox.getChildren().addAll(menuBar, splitPane);
- primaryStage.setTitle(ConfigHolder.get().getProjectName());
+ primaryStage.setTitle(Version.VERSION_NAME);
primaryStage.setScene(new Scene(vBox));
primaryStage.setWidth(ConfigHolder.get().getWidth());
primaryStage.setHeight(ConfigHolder.get().getHeight());
@@ -58,6 +54,7 @@ public class HomeView {
ConfigHolder.save();
ServerThreadHolder.stopAll();
Platform.exit();
+ System.exit(0);
});
}
diff --git a/src/main/java/com/dayrain/views/LogArea.java b/src/main/java/com/dayrain/views/LogArea.java
index 1087bb8..699fc0b 100644
--- a/src/main/java/com/dayrain/views/LogArea.java
+++ b/src/main/java/com/dayrain/views/LogArea.java
@@ -1,9 +1,20 @@
package com.dayrain.views;
import com.dayrain.component.ConfigHolder;
+import com.dayrain.component.ServerUrl;
+import javafx.application.Platform;
+import javafx.event.ActionEvent;
+import javafx.event.EventHandler;
+import javafx.scene.control.ContextMenu;
+import javafx.scene.control.MenuItem;
import javafx.scene.control.TextArea;
import javafx.scene.text.Font;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.concurrent.ConcurrentHashMap;
+
/**
* 打印日志的组件
* 每个服务都有各自的组件
@@ -11,7 +22,53 @@ import javafx.scene.text.Font;
* @date 2021/11/8
*/
public class LogArea extends TextArea {
- private String serverName;
+
+ private static final ConcurrentHashMap LOG_MAP = new ConcurrentHashMap<>();
+
+ private static final int LOG_LENGTH = 5000;
+
+ private ContextMenu contextMenu;
+
+ private MenuItem clearMenu;
+
+ /**
+ * 当前服务名
+ */
+ private String currentServerName;
+
+ public synchronized void log(ServerUrl serverUrl, String params, String resp) {
+ if(serverUrl.isHiddenLog()) {
+ return;
+ }
+
+ String str = "[" + now() + "]" +
+ serverUrl.getUrlName() + " " +
+ serverUrl.getUrl() + " " + serverUrl.getRequestType().name() + "\n" +
+ "参数: " + "\n" +
+ params + "\n" +
+ "返回值: " + "\n" +
+ resp +
+ "\n\n";
+
+ logAppend(serverUrl.getServerName(), str);
+
+ refresh();
+
+ }
+
+ public void logAppend(String serverName, String logContent) {
+ String log = LOG_MAP.getOrDefault(serverName, null);
+ if(log == null) {
+ LOG_MAP.put(serverName, logContent);
+ return;
+ }
+
+ log += logContent;
+ if(log.length() > LOG_LENGTH) {
+ log = log.substring(log.length() - LOG_LENGTH);
+ }
+ LOG_MAP.put(serverName, log);
+ }
public LogArea() {
createView();
@@ -22,13 +79,39 @@ public class LogArea extends TextArea {
this.setFont(Font.font("Microsoft YaHei", 16));
this.setPrefWidth(582);
this.setPrefHeight(ConfigHolder.get().getHeight());
+
+ clearMenu = new MenuItem("清空");
+ contextMenu = new ContextMenu();
+ contextMenu.getItems().addAll(clearMenu);
+ this.setContextMenu(contextMenu);
+
+ clearMenu.setOnAction(event -> {
+ clear();
+ });
}
- public String getServerName() {
- return serverName;
+ public String getCurrentServerName() {
+ return currentServerName;
}
- public void setServerName(String serverName) {
- this.serverName = serverName;
+ public synchronized void setCurrentServerName(String currentServerName) {
+ this.currentServerName = currentServerName;
+ }
+
+ private static String now() {
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-DD-mm HH:mm:ss");
+ return simpleDateFormat.format(new Date());
+ }
+
+ public void refresh() {
+ if(currentServerName == null) {
+ //拒绝刷新
+ return;
+ }
+ Platform.runLater(()->{
+ setText("");
+ appendText(LOG_MAP.getOrDefault(currentServerName, ""));
+ setScrollTop(Double.MAX_VALUE);
+ });
}
}
diff --git a/src/main/java/com/dayrain/views/MenuBarView.java b/src/main/java/com/dayrain/views/MenuBarView.java
index 20e616a..04b9236 100644
--- a/src/main/java/com/dayrain/views/MenuBarView.java
+++ b/src/main/java/com/dayrain/views/MenuBarView.java
@@ -1,5 +1,6 @@
package com.dayrain.views;
+import com.dayrain.Version;
import com.dayrain.component.ConfigHolder;
import com.dayrain.component.Configuration;
import com.dayrain.component.ServerConfig;
@@ -30,6 +31,7 @@ import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
+import java.util.List;
/**
* 菜单栏
@@ -119,11 +121,15 @@ public class MenuBarView extends MenuBar {
Stage stage = new Stage();
stage.initOwner(ViewHolder.getPrimaryStage());
FileChooser fileChooser = new FileChooser();
- String projectName = ConfigHolder.get().getProjectName();
- if (projectName == null) {
- projectName = "";
+ String projectName = Version.VERSION_NAME;
+ Configuration configuration = ConfigHolder.get();
+ List serverConfigs = configuration.getServerConfigs();
+ if(serverConfigs != null && serverConfigs.size()>1) {
+ String serverName = serverConfigs.get(0).getServerName();
+ if(serverName != null && !"".equals(serverName.trim())) {
+ projectName = serverName;
+ }
}
- projectName += "server";
fileChooser.setTitle("导出配置");
fileChooser.setInitialFileName(projectName + ".json");
File file = fileChooser.showSaveDialog(stage);
@@ -184,7 +190,7 @@ public class MenuBarView extends MenuBar {
String port = portField.getText();
ServerConfig serverConfig = new ServerConfig(name, Integer.parseInt(port), new ArrayList<>());
ConfigHolder.get().getServerConfigs().add(serverConfig);
- ViewHolder.getServerContainer().refresh();
+ ViewHolder.getServerContainer().addServer(serverConfig);
ConfigHolder.save();
stage.close();
});
diff --git a/src/main/java/com/dayrain/views/ServerContainer.java b/src/main/java/com/dayrain/views/ServerContainer.java
index 07d2bf6..13acf78 100644
--- a/src/main/java/com/dayrain/views/ServerContainer.java
+++ b/src/main/java/com/dayrain/views/ServerContainer.java
@@ -1,5 +1,6 @@
package com.dayrain.views;
+import com.dayrain.component.ServerConfig;
import javafx.scene.layout.VBox;
import java.util.List;
@@ -10,7 +11,7 @@ import java.util.List;
*/
public class ServerContainer extends VBox {
- private List serverPanes;
+ private final List serverPanes;
public ServerContainer(List serverPanes) {
this.serverPanes = serverPanes;
@@ -22,7 +23,20 @@ public class ServerContainer extends VBox {
}
public void refresh() {
- getChildren().removeAll();
+ getChildren().clear();
getChildren().addAll(serverPanes);
}
+
+ public synchronized void addServer(ServerConfig serverConfig) {
+ serverPanes.add(new ServerPane(serverConfig));
+ refresh();
+ }
+
+ public synchronized void removeServer(ServerConfig serverConfig) {
+ if(serverConfig == null) {
+ return;
+ }
+ serverPanes.removeIf(serverPane -> serverConfig.getServerName().equals(serverPane.getServerConfig().getServerName()));
+ refresh();
+ }
}
diff --git a/src/main/java/com/dayrain/views/ServerPane.java b/src/main/java/com/dayrain/views/ServerPane.java
index abe0876..451ce6c 100644
--- a/src/main/java/com/dayrain/views/ServerPane.java
+++ b/src/main/java/com/dayrain/views/ServerPane.java
@@ -1,7 +1,6 @@
package com.dayrain.views;
import com.dayrain.component.ConfigHolder;
-import com.dayrain.component.ConsoleLog;
import com.dayrain.component.RequestType;
import com.dayrain.component.Server;
import com.dayrain.component.ServerConfig;
@@ -21,7 +20,6 @@ import com.dayrain.utils.ListViewHelper;
import javafx.collections.FXCollections;
import javafx.event.ActionEvent;
-import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
@@ -40,7 +38,6 @@ import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.text.Font;
-import javafx.stage.Modality;
import javafx.stage.Stage;
import java.util.List;
@@ -99,8 +96,9 @@ public class ServerPane extends TitledPane {
this.setExpanded(false);
this.setBackground(BackGroundFactory.getBackGround());
this.setOnMouseClicked(event -> {
- if (!serverConfig.getServerName().equals(ViewHolder.getLogArea().getServerName())) {
- ConsoleLog.resetTextArea(serverConfig.getServerName());
+ if (!serverConfig.getServerName().equals(ViewHolder.getLogArea().getCurrentServerName())) {
+ ViewHolder.setLogOwner(serverConfig.getServerName());
+ ViewHolder.refreshLog();
}
});
@@ -178,8 +176,12 @@ public class ServerPane extends TitledPane {
alert.setHeaderText("是否确定删除该服务?");
Button okButton = (Button) alert.getDialogPane().lookupButton(ButtonType.OK);
okButton.setOnAction(event1 -> {
+ //从配置文件中移除
ConfigHolder.get().getServerConfigs().remove(serverConfig);
- ViewHolder.getServerContainer().refresh();
+ //从视图中移除
+ ViewHolder.getServerContainer().removeServer(serverConfig);
+ //如果当前线程未关闭,则关闭
+ ServerThreadHolder.remove(serverConfig.getServerName());
ConfigHolder.save();
});
alert.show();
@@ -202,14 +204,20 @@ public class ServerPane extends TitledPane {
choiceBox.setValue("POST");
HBox hBox3 = FormFactory.getLine(typeLabel, choiceBox, 120, 70, 500);
+ Label logLabel = LabelFactory.getLabel("日志记录:");
+ ChoiceBox choiceBox2 = new ChoiceBox<>();
+ choiceBox2.setItems(FXCollections.observableArrayList("显示", "隐藏"));
+ choiceBox2.setValue("显示");
+ HBox hBox4 = FormFactory.getLine(logLabel, choiceBox2, 120, 70, 500);
+
Label respLabel = LabelFactory.getLabel("返回结果:");
TextArea textArea = new TextArea();
- HBox hBox4 = FormFactory.getLine(respLabel, textArea, 120, 300, 500);
+ HBox hBox5 = FormFactory.getLine(respLabel, textArea, 120, 300, 500);
Button saveButton = ButtonFactory.getButton("保存");
- HBox hBox5 = FormFactory.getButtonLine(saveButton, 120, 500);
+ HBox hBox6 = FormFactory.getButtonLine(saveButton, 120, 500);
- vBox.getChildren().addAll(hBox1, hBox2, hBox3, hBox4, hBox5);
+ vBox.getChildren().addAll(hBox1, hBox2, hBox3, hBox4, hBox5, hBox6);
vBox.setSpacing(20d);
vBox.setAlignment(Pos.CENTER);
@@ -226,9 +234,10 @@ public class ServerPane extends TitledPane {
}
String url = urlField.getText();
String resp = textArea.getText();
-
String type = choiceBox.getValue();
+ String hidLog = choiceBox.getValue();
ServerUrl serverUrl = new ServerUrl(serverConfig.getServerName(), name, url, type.equals(RequestType.POST.name()) ? RequestType.POST : RequestType.GET, resp);
+ serverUrl.setHiddenLog("隐藏".equals(hidLog));
serverUrls.add(serverUrl);
ServerThreadHolder.addUrl(serverUrl);
ListViewHelper.addAndRefresh(serverUrl, serverUrlListView);
@@ -236,4 +245,8 @@ public class ServerPane extends TitledPane {
stage.close();
});
}
+
+ public ServerConfig getServerConfig() {
+ return serverConfig;
+ }
}
diff --git a/src/main/java/com/dayrain/views/ServerUrlPaneView.java b/src/main/java/com/dayrain/views/ServerUrlPaneView.java
index 28b48e3..1b96285 100644
--- a/src/main/java/com/dayrain/views/ServerUrlPaneView.java
+++ b/src/main/java/com/dayrain/views/ServerUrlPaneView.java
@@ -113,26 +113,32 @@ public class ServerUrlPaneView extends BorderPane {
choiceBox.setValue(serverUrl.getRequestType().name());
HBox hBox3 = FormFactory.getLine(typeLabel, choiceBox, 120, 70, 500);
+ Label logLabel = LabelFactory.getLabel("日志记录:");
+ ChoiceBox choiceBox2 = new ChoiceBox<>();
+ choiceBox2.setItems(FXCollections.observableArrayList("显示", "隐藏"));
+ choiceBox2.setValue(serverUrl.isHiddenLog() ? "隐藏" : "显示");
+ HBox hBox4 = FormFactory.getLine(logLabel, choiceBox2, 120, 70, 500);
+
Label respLabel = LabelFactory.getLabel("返回结果:");
TextArea textArea = new TextArea(serverUrl.getResponseBody());
- HBox hBox4 = FormFactory.getLine(respLabel, textArea, 120, 300, 500);
+ HBox hBox5 = FormFactory.getLine(respLabel, textArea, 120, 300, 500);
Button saveButton = ButtonFactory.getButton("保存");
- HBox hBox5 = FormFactory.getButtonLine(saveButton, 120, 500);
+ HBox hBox6 = FormFactory.getButtonLine(saveButton, 120, 500);
- vBox.getChildren().addAll(hBox1, hBox2, hBox3, hBox4, hBox5);
+ vBox.getChildren().addAll(hBox1, hBox2, hBox3, hBox4, hBox5, hBox6);
vBox.setSpacing(20d);
vBox.setAlignment(Pos.CENTER);
Stage stage = StageFactory.getPopStage("更新接口信息", new Scene(vBox));
stage.show();
-
saveButton.setOnAction(event1 -> {
String name = nameField.getText();
String url = urlField.getText();
String resp = textArea.getText();
String type = choiceBox.getValue();
+ String hidLog = choiceBox2.getValue();
if(url == null) {
return;
}
@@ -144,6 +150,7 @@ public class ServerUrlPaneView extends BorderPane {
serverUrl.setUrlName(name);
serverUrl.setUrl(url);
serverUrl.setResponseBody(resp);
+ serverUrl.setHiddenLog("隐藏".equals(hidLog));
serverUrl.setRequestType(type.equals(RequestType.POST.name()) ? RequestType.POST : RequestType.GET);
ListViewHelper.refresh(serverListViews);
ConfigHolder.save();
diff --git a/src/main/java/com/dayrain/views/ViewHolder.java b/src/main/java/com/dayrain/views/ViewHolder.java
index b8d7b55..22ee204 100644
--- a/src/main/java/com/dayrain/views/ViewHolder.java
+++ b/src/main/java/com/dayrain/views/ViewHolder.java
@@ -1,5 +1,6 @@
package com.dayrain.views;
+import com.dayrain.component.ServerUrl;
import javafx.stage.Stage;
/**
* 主要视图的句柄
@@ -28,7 +29,7 @@ public class ViewHolder {
ViewHolder.logArea = logArea;
}
- public static LogArea getLogArea() {
+ public synchronized static LogArea getLogArea() {
return logArea;
}
@@ -47,4 +48,18 @@ public class ViewHolder {
public static HomeView getHomeView() {
return ViewHolder.homeView;
}
+
+ public static void log(ServerUrl serverUrl, String params, String resp) {
+ if(logArea != null) {
+ logArea.log(serverUrl, params, resp);
+ }
+ }
+
+ public static void refreshLog() {
+ logArea.refresh();
+ }
+
+ public static void setLogOwner(String serverName) {
+ logArea.setCurrentServerName(serverName);
+ }
}