新增呢日用
This commit is contained in:
parent
240d453337
commit
3c0943d2fa
13
pom.xml
13
pom.xml
@ -39,6 +39,19 @@
|
||||
<version>2.5.1</version>
|
||||
</dependency>
|
||||
<!-- pingyin end -->
|
||||
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-api</artifactId>
|
||||
<version>1.7.30</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<version>1.18.16</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
@ -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<FieldVO> 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);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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 {
|
||||
}
|
@ -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<TableColumn.CellDataFe
|
||||
public static final String IS_FORM_SHOW = "isFormShow";
|
||||
public static final String IS_LIST_SHOW = "isListShow";
|
||||
public static final String IS_NOT_NULL = "isNotNull";
|
||||
public static final String IS_PRIMARY_KEY = "isPrimaryKey";
|
||||
private final String property;
|
||||
|
||||
public CheckBoxTableCellFactory(String property) {
|
||||
|
@ -11,8 +11,6 @@ import javafx.scene.control.TableColumn;
|
||||
import javafx.util.Callback;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.text.Normalizer;
|
||||
|
||||
/**
|
||||
* When you feel like quitting. Think about why you started
|
||||
* 当你想要放弃的时候,想想当初你为何开始
|
||||
@ -32,10 +30,12 @@ public class ChoiceBoxTableCellFactory implements Callback<TableColumn.CellDataF
|
||||
FormFieldTypeEnum.SELECT_USER.getValue(), FormFieldTypeEnum.SELECT_DEPARTMENT.getValue(),
|
||||
FormFieldTypeEnum.FILE.getValue(), FormFieldTypeEnum.IMAGE.getValue(),
|
||||
FormFieldTypeEnum.AUDIO.getValue(), FormFieldTypeEnum.VIDEO.getValue(),
|
||||
FormFieldTypeEnum.DATETIME.getValue(), FormFieldTypeEnum.DATE.getValue(),
|
||||
FormFieldTypeEnum.CHECKBOX.getValue()
|
||||
);
|
||||
private ObservableList<String> singleSelect = FXCollections.observableArrayList(
|
||||
"",
|
||||
FormFieldTypeEnum.TEXT.getValue(),
|
||||
FormFieldTypeEnum.RADIO.getValue(),
|
||||
FormFieldTypeEnum.SELECT.getValue()
|
||||
);
|
||||
@ -46,14 +46,21 @@ public class ChoiceBoxTableCellFactory implements Callback<TableColumn.CellDataF
|
||||
|
||||
@Override
|
||||
public ObservableValue<ChoiceBox<String>> call(TableColumn.CellDataFeatures<FieldVO, String> 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);
|
||||
}
|
||||
}
|
||||
|
@ -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<TableColumn.CellDataFeatures<FieldVO, String>, ObservableValue<RadioButton>> {
|
||||
|
||||
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<RadioButton> call(TableColumn.CellDataFeatures<FieldVO, String> param) {
|
||||
RadioButton radioButton = new RadioButton();
|
||||
radioButton.setToggleGroup(toggleGroup);
|
||||
if (param.getValue().getColumnName().endsWith(PRIMARY_KEY_SUFFIX)) {
|
||||
radioButton.selectedProperty().set(true);
|
||||
}
|
||||
return new ReadOnlyObjectWrapper<>(radioButton);
|
||||
}
|
||||
}
|
@ -99,13 +99,20 @@ public class FieldService {
|
||||
protected Integer call() throws Exception {
|
||||
List<Map<String, Object>> tableFields = JdbcManager.getInstance().listTableField(tableName);
|
||||
fieldVOObservableList.clear();
|
||||
for (int i = 0; i < tableFields.size(); i++) {
|
||||
Map<String, Object> field = tableFields.get(i);
|
||||
int fieldIndex = 1;
|
||||
for (Map<String, Object> field : tableFields) {
|
||||
System.out.println(field);
|
||||
|
||||
String columnName = field.get("COLUMN_NAME").toString();
|
||||
if (StringUtils.equals(DEFAULT_FIELD_ID, columnName)) {
|
||||
continue;
|
||||
}
|
||||
if (StringUtils.equals(DEFAULT_FIELD_IS_DELETE, columnName)) {
|
||||
continue;
|
||||
}
|
||||
FieldVO fieldVO = new FieldVO();
|
||||
fieldVO.setRowNumber(i + 1);
|
||||
fieldVO.setColumnName(field.get("COLUMN_NAME").toString());
|
||||
fieldVO.setRowNumber(fieldIndex);
|
||||
fieldVO.setColumnName(columnName);
|
||||
fieldVO.setColumnType(field.get("COLUMN_TYPE").toString());
|
||||
fieldVO.setDataType(field.get("DATA_TYPE").toString());
|
||||
fieldVO.setCharacterMaximum(field.get("CHARACTER_MAXIMUM") == null ? 0 : Integer.valueOf(field.get("CHARACTER_MAXIMUM").toString()));
|
||||
@ -118,6 +125,7 @@ public class FieldService {
|
||||
fieldVO.setPropertyType(getPropertyType(fieldVO.getDataType()));
|
||||
fieldVO.setFormFieldType(getFormFieldType(fieldVO.getDataType()));
|
||||
fieldVOObservableList.add(fieldVO);
|
||||
fieldIndex++;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,10 +1,11 @@
|
||||
package ink.wgink.code.factory.service;
|
||||
|
||||
import ink.wgink.code.factory.vos.FieldVO;
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.collections.ObservableArray;
|
||||
import ink.wgink.code.factory.vos.GenerateVO;
|
||||
import javafx.collections.ObservableList;
|
||||
import javafx.scene.control.TableView;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
/**
|
||||
* When you feel like quitting. Think about why you started
|
||||
@ -16,14 +17,18 @@ import javafx.scene.control.TableView;
|
||||
* @Date: 2021/3/6 16:11
|
||||
* @Version: 1.0
|
||||
**/
|
||||
@Slf4j
|
||||
public class GenerateService {
|
||||
|
||||
private TableView tableView;
|
||||
private GenerateVO generateVO;
|
||||
|
||||
public GenerateService(TableView tableView) {
|
||||
this.tableView = tableView;
|
||||
}
|
||||
|
||||
public void showField() {
|
||||
public void generateCode(GenerateVO generateVO) {
|
||||
ObservableList<FieldVO> items = tableView.getItems();
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -28,6 +28,7 @@ public class FieldVO {
|
||||
private SimpleStringProperty propertyType;
|
||||
private SimpleIntegerProperty propertyLength;
|
||||
private String formFieldType;
|
||||
private String formFieldValue;
|
||||
private Boolean isFormShow;
|
||||
private Boolean isListShow;
|
||||
private Boolean isNotNull;
|
||||
@ -179,6 +180,14 @@ public class FieldVO {
|
||||
this.formFieldType = formFieldType;
|
||||
}
|
||||
|
||||
public String getFormFieldValue() {
|
||||
return formFieldValue == null ? "" : formFieldValue.trim();
|
||||
}
|
||||
|
||||
public void setFormFieldValue(String formFieldValue) {
|
||||
this.formFieldValue = formFieldValue;
|
||||
}
|
||||
|
||||
public Boolean getFormShow() {
|
||||
return isFormShow;
|
||||
}
|
||||
@ -202,4 +211,45 @@ public class FieldVO {
|
||||
public void setNotNull(Boolean notNull) {
|
||||
isNotNull = notNull;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
final StringBuilder sb = new StringBuilder("{");
|
||||
sb.append("\"rowNumber\":")
|
||||
.append(rowNumber);
|
||||
sb.append(",\"columnName\":")
|
||||
.append(columnName);
|
||||
sb.append(",\"columnComment\":")
|
||||
.append(columnComment);
|
||||
sb.append(",\"columnDefault\":")
|
||||
.append(columnDefault);
|
||||
sb.append(",\"dataType\":\"")
|
||||
.append(dataType).append('\"');
|
||||
sb.append(",\"columnType\":")
|
||||
.append(columnType);
|
||||
sb.append(",\"characterMaximum\":")
|
||||
.append(characterMaximum);
|
||||
sb.append(",\"numericPrecision\":")
|
||||
.append(numericPrecision);
|
||||
sb.append(",\"numericScale\":")
|
||||
.append(numericScale);
|
||||
sb.append(",\"propertyName\":")
|
||||
.append(propertyName);
|
||||
sb.append(",\"propertyType\":")
|
||||
.append(propertyType);
|
||||
sb.append(",\"propertyLength\":")
|
||||
.append(propertyLength);
|
||||
sb.append(",\"formFieldType\":\"")
|
||||
.append(formFieldType).append('\"');
|
||||
sb.append(",\"formFieldValue\":\"")
|
||||
.append(formFieldValue).append('\"');
|
||||
sb.append(",\"isFormShow\":")
|
||||
.append(isFormShow);
|
||||
sb.append(",\"isListShow\":")
|
||||
.append(isListShow);
|
||||
sb.append(",\"isNotNull\":")
|
||||
.append(isNotNull);
|
||||
sb.append('}');
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
|
32
src/main/java/ink/wgink/code/factory/vos/GenerateVO.java
Normal file
32
src/main/java/ink/wgink/code/factory/vos/GenerateVO.java
Normal file
@ -0,0 +1,32 @@
|
||||
package ink.wgink.code.factory.vos;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* When you feel like quitting. Think about why you started
|
||||
* 当你想要放弃的时候,想想当初你为何开始
|
||||
*
|
||||
* @ClassName: GenerateVO
|
||||
* @Description: 生成VO
|
||||
* @Author: WangGeng
|
||||
* @Date: 2021/3/8 19:54
|
||||
* @Version: 1.0
|
||||
**/
|
||||
@Data
|
||||
public class GenerateVO {
|
||||
|
||||
private Boolean hasApi;
|
||||
private Boolean hasApp;
|
||||
private Boolean hasResource;
|
||||
private Boolean hasIService;
|
||||
private Boolean hasServiceImpl;
|
||||
private Boolean hasIDao;
|
||||
private Boolean hasMySQL;
|
||||
private Boolean hasHtml;
|
||||
private Boolean hasThymeleaf;
|
||||
private Boolean hasRoute;
|
||||
private String tablePrefix;
|
||||
private String context;
|
||||
private String codePackage;
|
||||
|
||||
}
|
@ -20,17 +20,17 @@
|
||||
<Insets bottom="4.0" left="4.0" right="4.0" top="4.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<CheckBox fx:id="apiCheckbox" mnemonicParsing="false" prefWidth="100.0" selected="true" text="Api">
|
||||
<CheckBox fx:id="apiCheckBox" mnemonicParsing="false" prefWidth="100.0" selected="true" text="Api">
|
||||
<padding>
|
||||
<Insets bottom="4.0" left="4.0" right="4.0" top="4.0" />
|
||||
</padding>
|
||||
</CheckBox>
|
||||
<CheckBox fx:id="appCheckbox" mnemonicParsing="false" prefWidth="100.0" selected="true" text="App">
|
||||
<CheckBox fx:id="appCheckBox" mnemonicParsing="false" prefWidth="100.0" selected="true" text="App">
|
||||
<padding>
|
||||
<Insets bottom="4.0" left="4.0" right="4.0" top="4.0" />
|
||||
</padding>
|
||||
</CheckBox>
|
||||
<CheckBox fx:id="resourceCheckbox" mnemonicParsing="false" prefWidth="100.0" selected="true" text="Resource">
|
||||
<CheckBox fx:id="resourceCheckBox" mnemonicParsing="false" prefWidth="100.0" selected="true" text="Resource">
|
||||
<padding>
|
||||
<Insets bottom="4.0" left="4.0" right="4.0" top="4.0" />
|
||||
</padding>
|
||||
@ -50,12 +50,12 @@
|
||||
<Insets bottom="4.0" left="4.0" right="4.0" top="4.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<CheckBox fx:id="iServiceCheckbox" mnemonicParsing="false" prefWidth="100.0" selected="true" text="IService">
|
||||
<CheckBox fx:id="iServiceCheckBox" mnemonicParsing="false" prefWidth="100.0" selected="true" text="IService">
|
||||
<padding>
|
||||
<Insets bottom="4.0" left="4.0" right="4.0" top="4.0" />
|
||||
</padding>
|
||||
</CheckBox>
|
||||
<CheckBox fx:id="serviceImplCheckbox" mnemonicParsing="false" prefWidth="100.0" selected="true" text="ServiceImpl">
|
||||
<CheckBox fx:id="serviceImplCheckBox" mnemonicParsing="false" prefWidth="100.0" selected="true" text="ServiceImpl">
|
||||
<padding>
|
||||
<Insets bottom="4.0" left="4.0" right="4.0" top="4.0" />
|
||||
</padding>
|
||||
@ -75,7 +75,7 @@
|
||||
<Insets bottom="4.0" left="4.0" right="4.0" top="4.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<CheckBox fx:id="iDaoCheckbox" mnemonicParsing="false" prefWidth="100.0" selected="true" text="IDao">
|
||||
<CheckBox fx:id="iDaoCheckBox" mnemonicParsing="false" prefWidth="100.0" selected="true" text="IDao">
|
||||
<padding>
|
||||
<Insets bottom="4.0" left="4.0" right="4.0" top="4.0" />
|
||||
</padding>
|
||||
@ -92,7 +92,7 @@
|
||||
<Insets bottom="4.0" left="4.0" right="4.0" top="4.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<CheckBox fx:id="mysqlCheckbox" mnemonicParsing="false" prefWidth="100.0" selected="true" text="MySQL">
|
||||
<CheckBox fx:id="mysqlCheckBox" mnemonicParsing="false" prefWidth="100.0" selected="true" text="MySQL">
|
||||
<padding>
|
||||
<Insets bottom="4.0" left="4.0" right="4.0" top="4.0" />
|
||||
</padding>
|
||||
@ -115,17 +115,17 @@
|
||||
<Insets bottom="4.0" left="4.0" right="4.0" top="4.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<CheckBox fx:id="htmlCheckbox" mnemonicParsing="false" prefWidth="100.0" selected="true" text="html">
|
||||
<CheckBox fx:id="htmlCheckBox" mnemonicParsing="false" prefWidth="100.0" selected="true" text="html">
|
||||
<padding>
|
||||
<Insets bottom="4.0" left="4.0" right="4.0" top="4.0" />
|
||||
</padding>
|
||||
</CheckBox>
|
||||
<CheckBox fx:id="thymeleafCheckbox" mnemonicParsing="false" prefWidth="100.0" selected="true" text="thymeleaf">
|
||||
<CheckBox fx:id="thymeleafCheckBox" mnemonicParsing="false" prefWidth="100.0" selected="true" text="thymeleaf">
|
||||
<padding>
|
||||
<Insets bottom="4.0" left="4.0" right="4.0" top="4.0" />
|
||||
</padding>
|
||||
</CheckBox>
|
||||
<CheckBox fx:id="routeCheckbox" mnemonicParsing="false" prefWidth="100.0" selected="true" text="route">
|
||||
<CheckBox fx:id="routeCheckBox" mnemonicParsing="false" prefWidth="100.0" selected="true" text="route">
|
||||
<padding>
|
||||
<Insets bottom="4.0" left="4.0" right="4.0" top="4.0" />
|
||||
</padding>
|
||||
@ -152,7 +152,7 @@
|
||||
</padding>
|
||||
</Label>
|
||||
<TextField fx:id="packageTextField" prefWidth="100.0" promptText="代码基础包" text="ink.wgink" />
|
||||
<Button mnemonicParsing="false" text="Generator" />
|
||||
<Button mnemonicParsing="false" onAction="#onGenerateClick" text="Generator" />
|
||||
</children>
|
||||
<padding>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
|
Loading…
Reference in New Issue
Block a user