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

com.scalar.database.config.DatabaseConfig Maven / Gradle / Ivy

Go to download

A universal transaction manager that achieves database-agnostic transactions and distributed transactions that span multiple databases

There is a newer version: 3.14.0-alpha.1
Show newest version
package com.scalar.database.config;

import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.List;
import java.util.Properties;
import javax.annotation.concurrent.Immutable;

@Immutable
public class DatabaseConfig {
  private final Properties props;
  private List contactPoints;
  private int contactPort;
  private String username;
  private String password;
  public static final String PREFIX = "scalar.database.";
  public static final String CONTACT_POINTS = PREFIX + "contact_points";
  public static final String CONTACT_PORT = PREFIX + "contact_port";
  public static final String USERNAME = PREFIX + "username";
  public static final String PASSWORD = PREFIX + "password";

  public DatabaseConfig(File propertiesFile) throws IOException {
    this(new FileInputStream(propertiesFile));
  }

  public DatabaseConfig(InputStream stream) throws IOException {
    props = new Properties();
    props.load(stream);
    load();
  }

  public DatabaseConfig(Properties properties) {
    props = new Properties(properties);
    load();
  }

  private void load() {
    checkNotNull(props.getProperty(CONTACT_POINTS));
    checkNotNull(props.getProperty(USERNAME));
    checkNotNull(props.getProperty(PASSWORD));

    contactPoints = Arrays.asList(props.getProperty(CONTACT_POINTS).split(","));
    if (props.getProperty(CONTACT_PORT) == null) {
      contactPort = 0;
    } else {
      contactPort = Integer.parseInt(props.getProperty(CONTACT_PORT));
      checkArgument(contactPort > 0);
    }
    username = props.getProperty(USERNAME);
    password = props.getProperty(PASSWORD);
  }

  public List getContactPoints() {
    return contactPoints;
  }

  public int getContactPort() {
    return contactPort;
  }

  public String getUsername() {
    return username;
  }

  public String getPassword() {
    return password;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy