All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.micromata.mgc.javafx.launcher.gui.generic.JdbcConfigTabController Maven / Gradle / Ivy

There is a newer version: 3.1.3
Show newest version
//
// Copyright (C) 2010-2016 Micromata GmbH
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//  http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

package de.micromata.mgc.javafx.launcher.gui.generic;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang3.StringUtils;

import de.micromata.genome.util.runtime.config.JdbcLocalSettingsConfigModel;
import de.micromata.genome.util.runtime.config.jdbc.JdbProviderService;
import de.micromata.genome.util.validation.ValContext;
import de.micromata.mgc.javafx.ModelGuiField;
import de.micromata.mgc.javafx.SystemService;
import de.micromata.mgc.javafx.feedback.ValMessageResultBox;
import de.micromata.mgc.javafx.launcher.gui.AbstractConfigTabController;
import javafx.collections.FXCollections;
import javafx.fxml.FXML;
import javafx.scene.Node;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ComboBox;
import javafx.scene.control.TextField;
import javafx.scene.layout.Pane;

/**
 * Configuration tab for a jdbc connection.
 * 
 * @author Roger Rene Kommer ([email protected])
 *
 */
public class JdbcConfigTabController extends AbstractConfigTabController
{
  @FXML
  private ComboBox drivername;

  @FXML
  private Button testJdbcButton;
  @FXML
  @ModelGuiField
  private TextField url;

  @FXML
  @ModelGuiField
  private TextField username;
  @FXML
  @ModelGuiField
  private TextField password;

  private List availableDrivers;

  @FXML
  @ModelGuiField
  private CheckBox extendedSettings;

  @FXML
  private Pane extendedPane;
  private Node extendedChildPane;

  @FXML
  @ModelGuiField
  private TextField maxActive;
  @FXML
  @ModelGuiField
  private TextField intialSize;
  @FXML
  @ModelGuiField
  private TextField maxWait;
  @FXML
  @ModelGuiField
  private TextField maxIdle;
  @FXML
  @ModelGuiField
  private TextField minIdle;
  @FXML
  @ModelGuiField
  private CheckBox defaultAutoCommit;
  @FXML
  @ModelGuiField
  private TextField defaultCatalog;
  @FXML
  @ModelGuiField
  private TextField validationQuery;
  @FXML
  @ModelGuiField
  private TextField validationQueryTimeout;

  private String selectedJdbcConnectionTypeId;

  @Override
  public void initializeWithModel()
  {
    extendedChildPane = extendedPane.getChildren().get(0);
    availableDrivers = SystemService.get().getJdbcDrivers();
    List items = new ArrayList<>();

    for (JdbProviderService sb : availableDrivers) {
      items.add(sb.getName());
    }
    drivername.setItems(FXCollections.observableArrayList(items));
    drivername.setOnAction(event -> {
      JdbProviderService dd = getSelectedDriver();
      if (dd != null) {
        url.setText(dd.getSampleUrl(model.getName()));
      }
    });
    extendedSettings.setOnAction(event -> {
      onShowExtended(extendedSettings.isSelected());
    });
    fromModel();
    testJdbcButton.setOnAction(event -> {
      toModel();
      ValContext valContext = new ValContext().createSubContext(model, null);
      model.validate(valContext);
      ValMessageResultBox.showResultBox(valContext, "Connection Databse", "Result of Connecting DB");

    });
    onShowExtended(extendedSettings.isSelected());
  }

  private void onShowExtended(boolean show)
  {
    extendedPane.setVisible(show);
    if (show == true) {
      if (extendedPane.getChildren().isEmpty() == true) {
        extendedPane.getChildren().add(extendedChildPane);
      }
    } else {
      if (extendedPane.getChildren().isEmpty() == false) {
        extendedPane.getChildren().remove(0);
      }
    }

  }

  @Override
  public void fromModel()
  {
    String typeId = model.getJdbcConntextionTypeId();
    JdbProviderService js = null;
    if (StringUtils.isNotBlank(typeId) == true) {
      js = SystemService.get().findJdbDriverById(typeId);
    }
    if (js == null) {
      js = SystemService.get().findJdbDriverByJdbcDriver(model.getDrivername());
    }
    if (js != null) {
      drivername.setValue(js.getName());
      if (StringUtils.isBlank(model.getUrl()) == true) {
        url.setText(js.getSampleUrl(model.getName()));
      }

    }
    super.fromModel();
  }

  JdbProviderService getSelectedDriver()
  {
    return SystemService.get().findJdbDriverByName(drivername.getValue());
  }

  @Override
  public void toModel()
  {
    JdbProviderService sel = getSelectedDriver();
    if (sel != null) {
      model.setDrivername(sel.getJdbcDriver());
      model.setJdbcConntextionTypeId(sel.getId());
    }
    super.toModel();
  }

  @Override
  public String getTabTitle()
  {
    return "JDBC";
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy