@Override
  public void loadSettings() {
    super.loadSettings();

    // Load values from new connection info
    DBPConnectionConfiguration connectionInfo =
        site.getActiveDataSource().getConnectionConfiguration();
    this.parseSampleURL(site.getDriver());
    if (!isCustom) {
      if (hostText != null) {
        if (!CommonUtils.isEmpty(connectionInfo.getHostName())) {
          hostText.setText(CommonUtils.notEmpty(connectionInfo.getHostName()));
        } else {
          hostText.setText("localhost"); // $NON-NLS-1$
        }
      }
      if (portText != null) {
        if (!CommonUtils.isEmpty(connectionInfo.getHostPort())) {
          portText.setText(String.valueOf(connectionInfo.getHostPort()));
        } else if (site.getDriver().getDefaultPort() != null) {
          portText.setText(site.getDriver().getDefaultPort());
        } else {
          portText.setText(""); // $NON-NLS-1$
        }
      }
      if (serverText != null) {
        serverText.setText(CommonUtils.notEmpty(connectionInfo.getServerName()));
      }
      if (dbText != null) {
        dbText.setText(CommonUtils.notEmpty(connectionInfo.getDatabaseName()));
      }
      if (pathText != null) {
        pathText.setText(CommonUtils.notEmpty(connectionInfo.getDatabaseName()));
      }
    } else {
      hostText.setText(""); // $NON-NLS-1$
      portText.setText(""); // $NON-NLS-1$
      serverText.setText(""); // $NON-NLS-1$
      dbText.setText(""); // $NON-NLS-1$
      pathText.setText(""); // $NON-NLS-1$
    }
    if (userNameText != null) {
      userNameText.setText(CommonUtils.notEmpty(connectionInfo.getUserName()));
    }
    if (passwordText != null) {
      passwordText.setText(CommonUtils.notEmpty(connectionInfo.getUserPassword()));
    }

    if (urlText != null) {
      if (connectionInfo.getUrl() != null) {
        urlText.setText(CommonUtils.notEmpty(connectionInfo.getUrl()));
      } else {
        urlText.setText(""); // $NON-NLS-1$
      }
    }

    activated = true;
  }
  @Override
  public void saveSettings(DBPDataSourceContainer dataSource) {
    DBPConnectionConfiguration connectionInfo = dataSource.getConnectionConfiguration();
    final Set<String> properties =
        metaURL == null ? Collections.<String>emptySet() : metaURL.getAvailableProperties();

    if (hostText != null && properties.contains(DriverDescriptor.PROP_HOST)) {
      connectionInfo.setHostName(hostText.getText().trim());
    }
    if (portText != null && properties.contains(DriverDescriptor.PROP_PORT)) {
      connectionInfo.setHostPort(portText.getText().trim());
    }
    if (serverText != null && properties.contains(DriverDescriptor.PROP_SERVER)) {
      connectionInfo.setServerName(serverText.getText().trim());
    }
    if (dbText != null && properties.contains(DriverDescriptor.PROP_DATABASE)) {
      connectionInfo.setDatabaseName(dbText.getText().trim());
    }
    if (pathText != null
        && (properties.contains(DriverDescriptor.PROP_FOLDER)
            || properties.contains(DriverDescriptor.PROP_FILE))) {
      connectionInfo.setDatabaseName(pathText.getText().trim());
    }
    if (userNameText != null) {
      connectionInfo.setUserName(userNameText.getText().trim());
    }
    if (passwordText != null) {
      connectionInfo.setUserPassword(passwordText.getText());
    }
    super.saveSettings(dataSource);
    if (isCustom) {
      if (urlText != null) {
        connectionInfo.setUrl(urlText.getText().trim());
      }
    } else {
      if (urlText != null && connectionInfo.getUrl() != null) {
        urlText.setText(connectionInfo.getUrl());
      }
    }
  }
  private void createEmbeddedDatabase() {
    String paramCreate =
        CommonUtils.toString(
            site.getDriver().getDriverParameter(GenericConstants.PARAM_CREATE_URL_PARAM));

    DataSourceDescriptor dataSource = (DataSourceDescriptor) site.getActiveDataSource();
    final DataSourceDescriptor testDataSource =
        new DataSourceDescriptor(
            site.getDataSourceRegistry(),
            dataSource.getId(),
            dataSource.getDriver(),
            new DBPConnectionConfiguration(dataSource.getConnectionConfiguration()));

    saveSettings(testDataSource);
    DBPConnectionConfiguration cfg = testDataSource.getConnectionConfiguration();
    cfg.setUrl(cfg.getUrl() + paramCreate);
    String databaseName = cfg.getDatabaseName();
    testDataSource.setName(databaseName);

    if (!UIUtils.confirmAction(
        getShell(),
        "Create Database",
        "Are you sure you want to create database '" + databaseName + "'?")) {
      testDataSource.dispose();
      return;
    }

    try {
      site.getRunnableContext()
          .run(
              true,
              true,
              new DBRRunnableWithProgress() {
                @Override
                public void run(DBRProgressMonitor monitor)
                    throws InvocationTargetException, InterruptedException {
                  try {
                    createEmbeddedDatabase(monitor, testDataSource);
                  } catch (DBException e1) {
                    throw new InvocationTargetException(e1);
                  }
                }
              });
      MessageDialog.openInformation(
          getShell(), "Database Create", "Database '" + databaseName + "' created!");
    } catch (InvocationTargetException e1) {
      UIUtils.showErrorDialog(
          getShell(), "Create database", "Error creating database", e1.getTargetException());
    } catch (InterruptedException e1) {
      // Just ignore
    }
  }