From 3c0943d2fa7a219b2d434a4a6120056334afa2d7 Mon Sep 17 00:00:00 2001
From: WenG <450292408@qq.com>
Date: Mon, 8 Mar 2021 22:08:59 +0800
Subject: [PATCH] =?UTF-8?q?=20=E6=96=B0=E5=A2=9E=E5=91=A2=E6=97=A5?=
=?UTF-8?q?=E7=94=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 13 +++++
.../controller/GenerateController.java | 32 ++++++++++++
.../factory/ButtonTableCellFactory.java | 14 ++++++
.../factory/CheckBoxTableCellFactory.java | 4 ++
.../factory/ChoiceBoxTableCellFactory.java | 15 ++++--
.../factory/RadioButtonTableCellFactory.java | 41 +++++++++++++++
.../code/factory/service/FieldService.java | 16 ++++--
.../code/factory/service/GenerateService.java | 11 ++--
.../ink/wgink/code/factory/vos/FieldVO.java | 50 +++++++++++++++++++
.../wgink/code/factory/vos/GenerateVO.java | 32 ++++++++++++
src/main/resources/route/generate.fxml | 22 ++++----
11 files changed, 228 insertions(+), 22 deletions(-)
create mode 100644 src/main/java/ink/wgink/code/factory/factory/ButtonTableCellFactory.java
create mode 100644 src/main/java/ink/wgink/code/factory/factory/RadioButtonTableCellFactory.java
create mode 100644 src/main/java/ink/wgink/code/factory/vos/GenerateVO.java
diff --git a/pom.xml b/pom.xml
index fb561b7..5d4826a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -39,6 +39,19 @@
2.5.1
+
+
+ org.slf4j
+ slf4j-api
+ 1.7.30
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.16
+ compile
+
diff --git a/src/main/java/ink/wgink/code/factory/controller/GenerateController.java b/src/main/java/ink/wgink/code/factory/controller/GenerateController.java
index e0973b3..968a0ff 100644
--- a/src/main/java/ink/wgink/code/factory/controller/GenerateController.java
+++ b/src/main/java/ink/wgink/code/factory/controller/GenerateController.java
@@ -2,10 +2,15 @@ package ink.wgink.code.factory.controller;
import ink.wgink.code.factory.factory.CheckBoxTableCellFactory;
import ink.wgink.code.factory.factory.ChoiceBoxTableCellFactory;
+import ink.wgink.code.factory.factory.RadioButtonTableCellFactory;
import ink.wgink.code.factory.service.FieldService;
import ink.wgink.code.factory.service.GenerateService;
+import ink.wgink.code.factory.utils.MsgUtil;
+import ink.wgink.code.factory.vos.FieldVO;
+import ink.wgink.code.factory.vos.GenerateVO;
import ink.wgink.code.factory.vos.TableVO;
import javafx.collections.ObservableList;
+import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.CheckBox;
@@ -13,6 +18,7 @@ import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
+import org.apache.commons.lang3.StringUtils;
import java.net.URL;
import java.util.ResourceBundle;
@@ -91,4 +97,30 @@ public class GenerateController implements Initializable {
fieldService.showField();
}
+ @FXML
+ public void onGenerateClick(ActionEvent actionEvent) {
+ ObservableList items = fieldTableView.getItems();
+ for (FieldVO fieldVO : items) {
+ if (StringUtils.isBlank(fieldVO.getFormFieldValue())) {
+ MsgUtil.errorAlert(fieldVO.getColumnName() + "的表单类型不能为空");
+ return;
+ }
+ }
+ GenerateVO generateVO = new GenerateVO();
+ generateVO.setHasApi(apiCheckBox.isSelected());
+ generateVO.setHasApi(appCheckBox.isSelected());
+ generateVO.setHasResource(resourceCheckBox.isSelected());
+ generateVO.setHasIService(iServiceCheckBox.isSelected());
+ generateVO.setHasServiceImpl(serviceImplCheckBox.isSelected());
+ generateVO.setHasIDao(iDaoCheckBox.isSelected());
+ generateVO.setHasMySQL(mysqlCheckBox.isSelected());
+ generateVO.setHasHtml(htmlCheckBox.isSelected());
+ generateVO.setHasThymeleaf(thymeleafCheckBox.isSelected());
+ generateVO.setHasRoute(routeCheckBox.isSelected());
+ generateVO.setTablePrefix(tablePrefixTextField.getText());
+ generateVO.setContext(contextTextField.getText());
+ generateVO.setCodePackage(packageTextField.getText());
+ generateService.generateCode(generateVO);
+ }
+
}
diff --git a/src/main/java/ink/wgink/code/factory/factory/ButtonTableCellFactory.java b/src/main/java/ink/wgink/code/factory/factory/ButtonTableCellFactory.java
new file mode 100644
index 0000000..d7f696d
--- /dev/null
+++ b/src/main/java/ink/wgink/code/factory/factory/ButtonTableCellFactory.java
@@ -0,0 +1,14 @@
+package ink.wgink.code.factory.factory;
+
+/**
+ * When you feel like quitting. Think about why you started
+ * 当你想要放弃的时候,想想当初你为何开始
+ *
+ * @ClassName: ButtonTableCellFactory
+ * @Description: 按钮表格
+ * @Author: WangGeng
+ * @Date: 2021/3/8 22:07
+ * @Version: 1.0
+ **/
+public class ButtonTableCellFactory {
+}
diff --git a/src/main/java/ink/wgink/code/factory/factory/CheckBoxTableCellFactory.java b/src/main/java/ink/wgink/code/factory/factory/CheckBoxTableCellFactory.java
index 1830de2..0444c39 100644
--- a/src/main/java/ink/wgink/code/factory/factory/CheckBoxTableCellFactory.java
+++ b/src/main/java/ink/wgink/code/factory/factory/CheckBoxTableCellFactory.java
@@ -1,8 +1,11 @@
package ink.wgink.code.factory.factory;
+import com.sun.deploy.uitoolkit.impl.fx.ui.FXUIFactory;
import ink.wgink.code.factory.vos.FieldVO;
import javafx.beans.property.ReadOnlyObjectWrapper;
import javafx.beans.value.ObservableValue;
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
import javafx.scene.control.CheckBox;
import javafx.scene.control.TableColumn;
import javafx.util.Callback;
@@ -22,6 +25,7 @@ public class CheckBoxTableCellFactory implements Callback singleSelect = FXCollections.observableArrayList(
"",
+ FormFieldTypeEnum.TEXT.getValue(),
FormFieldTypeEnum.RADIO.getValue(),
FormFieldTypeEnum.SELECT.getValue()
);
@@ -46,14 +46,21 @@ public class ChoiceBoxTableCellFactory implements Callback> call(TableColumn.CellDataFeatures param) {
+ FieldVO fieldVO = param.getValue();
ChoiceBox choiceBox = new ChoiceBox();
choiceBox.setPrefWidth(150);
- if (StringUtils.equalsIgnoreCase(FormFieldTypeEnum.ID_SELECT.getValue(), param.getValue().getFormFieldType())) {
+ if (StringUtils.equalsIgnoreCase(FormFieldTypeEnum.ID_SELECT.getValue(), fieldVO.getFormFieldType())) {
choiceBox.setItems(singleSelect);
} else {
+ fieldVO.setFormFieldValue(fieldVO.getFormFieldType());
choiceBox.setItems(normalSelect);
+ choiceBox.getSelectionModel().select(fieldVO.getFormFieldType());
}
- choiceBox.getSelectionModel().select(param.getValue().getFormFieldType());
+ choiceBox.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
+ String oldText = (String) oldValue;
+ String newText = (String) newValue;
+ fieldVO.setFormFieldValue(newText);
+ });
return new ReadOnlyObjectWrapper<>(choiceBox);
}
}
diff --git a/src/main/java/ink/wgink/code/factory/factory/RadioButtonTableCellFactory.java b/src/main/java/ink/wgink/code/factory/factory/RadioButtonTableCellFactory.java
new file mode 100644
index 0000000..eafd69e
--- /dev/null
+++ b/src/main/java/ink/wgink/code/factory/factory/RadioButtonTableCellFactory.java
@@ -0,0 +1,41 @@
+package ink.wgink.code.factory.factory;
+
+import ink.wgink.code.factory.vos.FieldVO;
+import javafx.beans.property.ReadOnlyObjectWrapper;
+import javafx.beans.value.ObservableValue;
+import javafx.scene.control.RadioButton;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.ToggleGroup;
+import javafx.util.Callback;
+
+/**
+ * When you feel like quitting. Think about why you started
+ * 当你想要放弃的时候,想想当初你为何开始
+ *
+ * @ClassName: RadioBoxTableCellFactory
+ * @Description: 单选框
+ * @Author: WangGeng
+ * @Date: 2021/3/8 21:17
+ * @Version: 1.0
+ **/
+public class RadioButtonTableCellFactory implements Callback, ObservableValue> {
+
+ public static final String IS_PRIMARY_KEY = "isPrimaryKey";
+ public static final String PRIMARY_KEY_SUFFIX = "_id";
+ private static final ToggleGroup toggleGroup = new ToggleGroup();
+ private final String property;
+
+ public RadioButtonTableCellFactory(String property) {
+ this.property = property;
+ }
+
+ @Override
+ public ObservableValue call(TableColumn.CellDataFeatures param) {
+ RadioButton radioButton = new RadioButton();
+ radioButton.setToggleGroup(toggleGroup);
+ if (param.getValue().getColumnName().endsWith(PRIMARY_KEY_SUFFIX)) {
+ radioButton.selectedProperty().set(true);
+ }
+ return new ReadOnlyObjectWrapper<>(radioButton);
+ }
+}
diff --git a/src/main/java/ink/wgink/code/factory/service/FieldService.java b/src/main/java/ink/wgink/code/factory/service/FieldService.java
index 1848df8..635a1f0 100644
--- a/src/main/java/ink/wgink/code/factory/service/FieldService.java
+++ b/src/main/java/ink/wgink/code/factory/service/FieldService.java
@@ -99,13 +99,20 @@ public class FieldService {
protected Integer call() throws Exception {
List