新增呢日用

This commit is contained in:
WenG 2021-03-08 22:08:59 +08:00
parent 240d453337
commit 3c0943d2fa
11 changed files with 228 additions and 22 deletions

13
pom.xml
View File

@ -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>

View File

@ -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);
}
}

View File

@ -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 {
}

View File

@ -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) {

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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;
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View 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;
}

View File

@ -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" />