/**
   * Configures this JDBCOutputFormat.
   *
   * @param parameters Configuration containing all parameters.
   */
  @Override
  public void configure(Configuration parameters) {
    this.driverName = parameters.getString(DRIVER_KEY, null);
    this.username = parameters.getString(USERNAME_KEY, null);
    this.password = parameters.getString(PASSWORD_KEY, null);
    this.dbURL = parameters.getString(URL_KEY, null);
    this.query = parameters.getString(QUERY_KEY, null);
    this.fieldCount = parameters.getInteger(FIELD_COUNT_KEY, 0);
    this.batchInterval = parameters.getInteger(BATCH_INTERVAL, DEFAULT_BATCH_INTERVERAL);

    @SuppressWarnings("unchecked")
    Class<Value>[] classes = new Class[this.fieldCount];
    this.fieldClasses = classes;

    for (int i = 0; i < this.fieldCount; i++) {
      @SuppressWarnings("unchecked")
      Class<? extends Value> clazz =
          (Class<? extends Value>) parameters.getClass(FIELD_TYPE_KEY + i, null);
      if (clazz == null) {
        throw new IllegalArgumentException(
            "Invalid configuration for JDBCOutputFormat: " + "No type class for parameter " + i);
      }
      this.fieldClasses[i] = clazz;
    }
  }
  @Override
  public void configure(Configuration parameters) {
    super.configure(parameters);

    // get the charset for the decoding
    String charsetName = parameters.getString(CHARSET_NAME, DEFAULT_CHARSET_NAME);
    if (charsetName == null || !Charset.isSupported(charsetName)) {
      throw new RuntimeException("Unsupported charset: " + charsetName);
    }

    if (charsetName.equals("ISO-8859-1") || charsetName.equalsIgnoreCase("ASCII")) {
      this.ascii = true;
    } else {
      this.decoder = Charset.forName(charsetName).newDecoder();
      this.byteWrapper = ByteBuffer.allocate(1);
    }

    // get the field position to write in the record
    this.pos = parameters.getInteger(FIELD_POS, 0);
    if (this.pos < 0) {
      throw new RuntimeException(
          "Illegal configuration value for the target position: " + this.pos);
    }
  }