/* * Copyright (c) 2017 OBiBa. All rights reserved. * * This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.obiba.magma.datasource.jdbc; import com.google.common.base.Strings; public class JdbcValueTableSettings { static final String ENTITY_ID_COLUMN = "id"; // // Instance Variables // private String sqlTableName; private String magmaTableName; private String entityType; private String entityIdentifierColumn; /** * If provided, a column with this name will be populated with creation timestamps. */ private String createdTimestampColumnName; /** * If provided, a column with this name will be populated with last update timestamps. */ private String updatedTimestampColumnName; private String entityIdentifiersWhere; private String excludedColumns; private String includedColumns; private boolean multilines; // // Constructors // private JdbcValueTableSettings(String sqlTableName) { if(sqlTableName == null) { throw new IllegalArgumentException("null sqlTableName"); } this.sqlTableName = sqlTableName; this.magmaTableName = sqlTableName; this.entityType = "Participant"; this.entityIdentifierColumn = ENTITY_ID_COLUMN; } // // Methods // public String getSqlTableName() { return sqlTableName; } public String getMagmaTableName() { return magmaTableName != null ? magmaTableName : sqlTableName; } public String getEntityType() { return entityType; } public String getEntityIdentifierColumn() { return entityIdentifierColumn; } public String getCreatedTimestampColumnName() { return createdTimestampColumnName; } public boolean hasCreatedTimestampColumnName() { return !Strings.isNullOrEmpty(createdTimestampColumnName); } public String getUpdatedTimestampColumnName() { return updatedTimestampColumnName; } public boolean hasUpdatedTimestampColumnName() { return !Strings.isNullOrEmpty(updatedTimestampColumnName); } public boolean hasEntityIdentifiersWhere() { return !Strings.isNullOrEmpty(entityIdentifiersWhere); } public String getEntityIdentifiersWhere() { return entityIdentifiersWhere; } public String getExcludedColumns() { return excludedColumns; } public boolean hasExcludedColumns() { return !Strings.isNullOrEmpty(excludedColumns); } public String getIncludedColumns() { return includedColumns; } public boolean hasIncludedColumns() { return !Strings.isNullOrEmpty(includedColumns); } public boolean isMultilines() { return multilines; } public static Builder newSettings(String sqlTableName) { return new Builder(sqlTableName); } public static class Builder { private JdbcValueTableSettings settings; private Builder(String name) { this.settings = new JdbcValueTableSettings(name); } public Builder tableName(String name) { settings.magmaTableName = Strings.isNullOrEmpty(name) ? settings.sqlTableName : name; return this; } public Builder entityType(String entityType) { settings.entityType = entityType; return this; } public Builder createdTimestampColumn(String name) { settings.createdTimestampColumnName = name; return this; } public Builder updatedTimestampColumn(String name) { settings.updatedTimestampColumnName = name; return this; } public Builder entityIdentifierColumn(String name) { settings.entityIdentifierColumn = Strings.isNullOrEmpty(name) ? ENTITY_ID_COLUMN : name; return this; } public Builder entityIdentifiersWhere(String where) { settings.entityIdentifiersWhere = where; return this; } public Builder excludedColumns(String name) { settings.excludedColumns = name; return this; } public Builder includedColumns(String name) { settings.includedColumns = name; return this; } public Builder multilines() { return multilines(true); } public Builder multilines(boolean multilines) { settings.multilines = multilines; return this; } public JdbcValueTableSettings build() { return settings; } } }