package com.zzg.mybatis.generator.controller; import com.zzg.mybatis.generator.model.DatabaseConfig; import com.zzg.mybatis.generator.util.ConfigHelper; import com.zzg.mybatis.generator.util.DbUtil; import com.zzg.mybatis.generator.view.AlertUtil; import javafx.fxml.FXML; import javafx.scene.control.ChoiceBox; import javafx.scene.control.TextField; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.net.URL; import java.util.ResourceBundle; public class NewConnectionController extends BaseFXController { private static final Logger _LOG = LoggerFactory.getLogger(NewConnectionController.class); @FXML private TextField nameField; @FXML private TextField hostField; @FXML private TextField portField; @FXML private TextField userNameField; @FXML private TextField passwordField; @FXML private TextField schemaField; @FXML private ChoiceBox<String> encodingChoice; @FXML private ChoiceBox<String> dbTypeChoice; private MainUIController mainUIController; @Override public void initialize(URL location, ResourceBundle resources) { } @FXML void saveConnection() { DatabaseConfig config = extractConfigForUI(); if (config == null) { return; } try { ConfigHelper.saveDatabaseConfig(config.getName(), config); getDialogStage().close(); mainUIController.loadLeftDBTree(); } catch (Exception e) { _LOG.error(e.getMessage(), e); AlertUtil.showErrorAlert(e.getMessage()); } } @FXML void testConnection() { DatabaseConfig config = extractConfigForUI(); if (config == null) { return; } try { String url = DbUtil.getConnectionUrlWithSchema(config); System.out.println(url); DbUtil.getConnection(config); AlertUtil.showInfoAlert("连接成功"); } catch (Exception e) { _LOG.error(e.getMessage(), e); AlertUtil.showWarnAlert("连接失败"); } } @FXML void cancel() { getDialogStage().close(); } void setMainUIController(MainUIController controller) { this.mainUIController = controller; } private DatabaseConfig extractConfigForUI() { String name = nameField.getText(); String host = hostField.getText(); String port = portField.getText(); String userName = userNameField.getText(); String password = passwordField.getText(); String encoding = encodingChoice.getValue(); String dbType = dbTypeChoice.getValue(); String schema = schemaField.getText(); DatabaseConfig config = new DatabaseConfig(); config.setName(name); config.setDbType(dbType); config.setHost(host); config.setPort(port); config.setUsername(userName); config.setPassword(password); config.setSchema(schema); config.setEncoding(encoding); if (StringUtils.isAnyEmpty(name, host, port, userName, encoding, dbType, schema)) { AlertUtil.showWarnAlert("密码以外其他字段必填"); return null; } return config; } }