/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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 cn.escheduler.common.job.db;

/**
 * data source base class
 */
public abstract class BaseDataSource {
  /**
   * user name
   */
  private String user;

  /**
   * user password
   */
  private String password;

  /**
   * data source address
   */
  private String address;

  /**
   * database name
   */
  private String database;

  /**
   * other connection parameters for the data source
   */
  private String other;

  /**
   * principal
   */
  private String principal;

  public String getPrincipal() {
    return principal;
  }

  public void setPrincipal(String principal) {
    this.principal = principal;
  }
  /**
   * test whether the data source can be connected successfully
   * @throws Exception
   */
  public abstract void isConnectable() throws Exception;

  /**
   * gets the JDBC url for the data source connection
   * @return
   */
  public abstract String getJdbcUrl();

  public String getUser() {
    return user;
  }

  public void setUser(String user) {
    this.user = user;
  }

  public String getPassword() {
    return password;
  }

  public void setPassword(String password) {
    this.password = password;
  }

  public void setAddress(String address) {
    this.address = address;
  }

  public String getAddress() {
    return address;
  }

  public String getDatabase() {
    return database;
  }

  public void setDatabase(String database) {
    this.database = database;
  }

  public String getOther() {
    return other;
  }

  public void setOther(String other) {
    this.other = other;
  }

}
