实现服务的配置与接口的增删改查

This commit is contained in:
peng
2021-10-27 20:02:55 +08:00
parent 136f8d62ac
commit 306664b3df
16 changed files with 686 additions and 41 deletions

View File

@@ -0,0 +1,112 @@
package com.dayrain.handle;
import com.dayrain.entity.ConfigHolder;
import com.dayrain.entity.ServerConfig;
import com.dayrain.entity.ServerUrl;
import com.dayrain.server.ServerThread;
import com.dayrain.utils.ListViewHelper;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.stage.Modality;
import javafx.stage.Stage;
import java.util.HashMap;
import java.util.List;
/**
* 添加路径
* @author peng
* @date 2021/10/27
*/
public class AddUrlHandler implements EventHandler<ActionEvent> {
private final ServerConfig serverConfig;
private final ListView<ServerUrl> serverUrlListView;
private final HashMap<String, ServerThread> threadMap;
private final Stage primaryStage;
public AddUrlHandler(ServerConfig serverConfig, ListView<ServerUrl> serverUrlListView, HashMap<String, ServerThread> threadMap, Stage primaryStage) {
this.serverConfig = serverConfig;
this.serverUrlListView = serverUrlListView;
this.threadMap = threadMap;
this.primaryStage = primaryStage;
}
@Override
public void handle(ActionEvent event) {
Stage stage = new Stage();
Label nameLabel = new Label("接口名称:");
nameLabel.setPrefWidth(80);
TextField nameField = new TextField();
Label urlLabel = new Label("接口地址:");
TextField urlField = new TextField();
urlField.setPrefWidth(80);
Label respLabel = new Label("返回结果:");
TextArea textArea = new TextArea();
textArea.setPrefWidth(80);
HBox btnHBox = new HBox();
Button saveButton = new Button("保存");
btnHBox.getChildren().add(saveButton);
btnHBox.setAlignment(Pos.CENTER_RIGHT);
GridPane gridPane = new GridPane();
gridPane.add(nameLabel, 0, 0);
gridPane.add(nameField, 1, 0);
gridPane.add(urlLabel, 0, 1);
gridPane.add(urlField, 1, 1);
gridPane.add(respLabel, 0, 2);
gridPane.add(textArea, 1, 2);
gridPane.add(btnHBox, 1, 3);
gridPane.setAlignment(Pos.CENTER);
gridPane.setHgap(20d);
gridPane.setVgap(10d);
stage.setWidth(500);
stage.setHeight(400);
stage.initOwner(primaryStage);
stage.initModality(Modality.WINDOW_MODAL);
stage.setScene(new Scene(gridPane));
stage.show();
saveButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
String name = nameField.getText();
List<ServerUrl> serverUrls = serverConfig.getServerUrls();
for (ServerUrl serverUrl : serverUrls) {
if(serverUrl.getUrlName().equals(name)) {
return;
}
}
String url = urlField.getText();
String resp = textArea.getText();
ServerUrl serverUrl = new ServerUrl(name, url, null, resp);
serverUrls.add(serverUrl);
ServerThread serverThread = threadMap.getOrDefault(serverConfig.getServerName(), null);
if(serverThread != null) {
serverThread.addContext(serverUrl);
}
ListViewHelper.addAndRefresh(serverUrl, serverUrlListView);
ConfigHolder.save();
stage.close();
}
});
}
}

View File

@@ -0,0 +1,44 @@
package com.dayrain.handle;
import com.dayrain.entity.ConfigHolder;
import com.dayrain.entity.ServerConfig;
import com.dayrain.entity.ServerUrl;
import com.dayrain.server.ServerThread;
import com.dayrain.utils.ListViewHelper;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.ListView;
import java.util.HashMap;
import java.util.List;
/**
* 删除路径
* @author peng
* @date 2021/10/27
*/
public class DeleteUrlHandler implements EventHandler<ActionEvent> {
private final ServerConfig serverConfig;
private final ListView<ServerUrl> serverUrlListView;
private final HashMap<String, ServerThread> threadMap;
private final ServerUrl serverUrl;
public DeleteUrlHandler(ServerUrl serverUrl, ServerConfig serverConfig, ListView<ServerUrl> serverUrlListView, HashMap<String, ServerThread> threadMap) {
this.serverUrl = serverUrl;
this.serverConfig = serverConfig;
this.serverUrlListView = serverUrlListView;
this.threadMap = threadMap;
}
@Override
public void handle(ActionEvent event) {
List<ServerUrl> serverUrls = serverConfig.getServerUrls();
serverUrls.remove(serverUrl);
ConfigHolder.save();
ListViewHelper.deleteAndRefresh(serverUrl, serverUrlListView);
}
}

View File

@@ -0,0 +1,54 @@
package com.dayrain.handle;
import com.dayrain.entity.Server;
import com.dayrain.entity.ServerConfig;
import com.dayrain.server.ServerThread;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.Button;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import java.util.HashMap;
/**
* 服务启动与关闭控制器
* @author peng
* @date 2021/10/27
*/
public class StartServerHandler implements EventHandler<ActionEvent> {
private final Button openButton;
private final Circle statusCircle;
private final ServerConfig serverConfig;
private final HashMap<String, ServerThread> threadMap;
public StartServerHandler(Button openButton, Circle statusCircle, ServerConfig serverConfig, HashMap<String, ServerThread> threadMap) {
this.openButton = openButton;
this.statusCircle = statusCircle;
this.serverConfig = serverConfig;
this.threadMap = threadMap;
}
@Override
public void handle(ActionEvent event) {
String serverName = serverConfig.getServerName();
if(threadMap.containsKey(serverName)) {
ServerThread serverThread = threadMap.get(serverName);
if(serverThread != null) {
serverThread.stopServer();
}
threadMap.remove(serverName);
openButton.setText("开启服务");
statusCircle.setFill(Color.RED);
}else {
ServerThread serverThread = new ServerThread(new Server(serverConfig));
serverThread.start();
threadMap.put(serverName, serverThread);
openButton.setText("关闭服务");
statusCircle.setFill(Color.GREEN);
}
}
}

View File

@@ -0,0 +1,77 @@
package com.dayrain.handle;
import com.dayrain.entity.ConfigHolder;
import com.dayrain.entity.ServerConfig;
import com.dayrain.utils.ListViewHelper;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.stage.Modality;
import javafx.stage.Stage;
public class UpdateServerConfigHandler implements EventHandler<ActionEvent> {
private final ServerConfig serverConfig;
private final Stage primaryStage;
public UpdateServerConfigHandler(ServerConfig serverConfig, Stage primaryStage) {
this.serverConfig = serverConfig;
this.primaryStage = primaryStage;
}
@Override
public void handle(ActionEvent event) {
Stage stage = new Stage();
Label serverName = new Label("服务名称:");
serverName.setPrefWidth(80);
TextField nameField = new TextField(serverConfig.getServerName());
Label portLabel = new Label("端口:");
TextField portField = new TextField(String.valueOf(serverConfig.getPort()));
portField.setPrefWidth(80);
HBox btnHBox = new HBox();
Label saveTips = new Label("重启后生效");
saveTips.setStyle("-fx-background-color: #ff0000");
Button saveButton = new Button("保存");
btnHBox.getChildren().addAll(saveTips, saveButton);
btnHBox.setAlignment(Pos.CENTER_RIGHT);
btnHBox.setSpacing(20d);
GridPane gridPane = new GridPane();
gridPane.add(serverName, 0, 0);
gridPane.add(nameField, 1, 0);
gridPane.add(portLabel, 0, 1);
gridPane.add(portField, 1, 1);
gridPane.add(btnHBox, 1, 3);
gridPane.setAlignment(Pos.CENTER);
gridPane.setHgap(20d);
gridPane.setVgap(10d);
stage.setWidth(400);
stage.setHeight(300);
stage.initOwner(primaryStage);
stage.initModality(Modality.WINDOW_MODAL);
stage.setScene(new Scene(gridPane));
stage.show();
saveButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
String name = nameField.getText();
int port = Integer.parseInt(portField.getText());
serverConfig.setPort(port);
serverConfig.setServerName(name);
ConfigHolder.save();
stage.close();
}
});
}
}

View File

@@ -0,0 +1,95 @@
package com.dayrain.handle;
import com.dayrain.entity.ConfigHolder;
import com.dayrain.entity.ServerConfig;
import com.dayrain.entity.ServerUrl;
import com.dayrain.server.ServerThread;
import com.dayrain.utils.ListViewHelper;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.stage.Modality;
import javafx.stage.Stage;
import java.util.HashMap;
public class UpdateUrlHandler implements EventHandler<ActionEvent> {
private final ListView<ServerUrl> serverUrlListView;
private final ServerUrl serverUrl;
private final Stage primaryStage;
public UpdateUrlHandler(ServerUrl serverUrl, ListView<ServerUrl> serverUrlListView, Stage primaryStage) {
this.serverUrl = serverUrl;
this.serverUrlListView = serverUrlListView;
this.primaryStage = primaryStage;
}
@Override
public void handle(ActionEvent event) {
Stage stage = new Stage();
Label nameLabel = new Label("接口名称:");
nameLabel.setPrefWidth(80);
TextField nameField = new TextField(serverUrl.getUrlName());
Label urlLabel = new Label("接口地址:");
TextField urlField = new TextField(serverUrl.getUrl());
urlField.setPrefWidth(80);
Label respLabel = new Label("返回结果:");
TextArea textArea = new TextArea(serverUrl.getResponseBody());
textArea.setPrefWidth(80);
HBox btnHBox = new HBox();
Label saveTips = new Label("重启后生效");
saveTips.setStyle("-fx-background-color: #ff0000");
Button saveButton = new Button("保存");
btnHBox.getChildren().addAll(saveTips, saveButton);
btnHBox.setAlignment(Pos.CENTER_RIGHT);
btnHBox.setSpacing(20d);
GridPane gridPane = new GridPane();
gridPane.add(nameLabel, 0, 0);
gridPane.add(nameField, 1, 0);
gridPane.add(urlLabel, 0, 1);
gridPane.add(urlField, 1, 1);
gridPane.add(respLabel, 0, 2);
gridPane.add(textArea, 1, 2);
gridPane.add(btnHBox, 1, 3);
gridPane.setAlignment(Pos.CENTER);
gridPane.setHgap(20d);
gridPane.setVgap(10d);
stage.setWidth(500);
stage.setHeight(400);
stage.initOwner(primaryStage);
stage.initModality(Modality.WINDOW_MODAL);
stage.setScene(new Scene(gridPane));
stage.show();
saveButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
String name = nameField.getText();
String url = urlField.getText();
String resp = textArea.getText();
serverUrl.setUrlName(name);
serverUrl.setUrl(url);
serverUrl.setResponseBody(resp);
ListViewHelper.refresh(serverUrlListView);
ConfigHolder.save();
stage.close();
}
});
}
}