001package io.ebean.docker.commands;
002
003import java.util.Properties;
004
005public class Db2Config extends DbConfig {
006
007  private String createOptions;
008  private String configOptions;
009
010  public Db2Config(String version, Properties properties) {
011    this(version);
012    setProperties(properties);
013  }
014
015  public Db2Config(String version) {
016    super("db2", 50000, 50000, version);
017    this.image = "ibmcom/db2:" + version;
018    this.setTmpfs("/database:rw");
019  }
020
021  /**
022   * Expose for MariaDB config.
023   */
024  protected Db2Config(String platform, int port, int internalPort, String version) {
025    super(platform, port, internalPort, version);
026  }
027
028  @Override
029  public String jdbcUrl() {
030    return "jdbc:db2://" + getHost() + ":" + getPort() + "/" + getDbName();
031  }
032
033  public String getCreateOptions() {
034    return createOptions;
035  }
036
037  /**
038   * Sets additional create options specified in
039   * https://www.ibm.com/docs/en/db2/11.5?topic=commands-create-database Example:
040   * 'USING CODESET UTF-8 TERRITORY DE COLLATE USING IDENTITY PAGESIZE 32768'
041   */
042  public void setCreateOptions(String createOptions) {
043    this.createOptions = createOptions;
044  }
045
046  public String getConfigOptions() {
047    return configOptions;
048  }
049
050  /**
051   * Sets DB2 config options. See
052   * https://www.ibm.com/docs/en/db2/11.5?topic=commands-update-database-configuration
053   * for details Example 'USING STRING_UNITS CODEUNITS32
054   */
055  public void setConfigOptions(String configOptions) {
056    this.configOptions = configOptions;
057  }
058
059  /**
060   * Load configuration from properties.
061   */
062  public DbConfig setProperties(Properties properties) {
063    if (properties == null) {
064      return this;
065    }
066    super.setProperties(properties);
067    createOptions = prop(properties, "createOptions", createOptions);
068    configOptions = prop(properties, "configOptions", configOptions);
069    return this;
070  }
071
072}