Package com.excilys.ebi.spring.dbunit.config

Source Code of com.excilys.ebi.spring.dbunit.config.DataSetConfiguration$Builder

/**
* Copyright 2011-2012 eBusiness Information, Groupe Excilys (www.excilys.com)
*
* Licensed 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 com.excilys.ebi.spring.dbunit.config;

import static org.springframework.util.StringUtils.tokenizeToStringArray;

import java.io.IOException;
import java.util.List;

import org.dbunit.database.DatabaseConfig;
import org.dbunit.dataset.CompositeDataSet;
import org.dbunit.dataset.DataSetException;
import org.dbunit.dataset.IDataSet;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.util.Assert;

import com.excilys.ebi.spring.dbunit.config.Constants.ConfigurationDefaults;
import com.excilys.ebi.spring.dbunit.dataset.DataSetDecorator;

/**
* @author <a href="mailto:slandelle@excilys.com">Stephane LANDELLE</a>
*/
public class DataSetConfiguration implements DatabaseConnectionConfigurer {

    private boolean disabled;

    private String dataSourceSpringName;

    private DBOperation setUpOperation[] = new DBOperation[] { ConfigurationDefaults.DEFAULT_SETUP_OPERATION };

    private DBOperation tearDownOperation[] = new DBOperation[] { ConfigurationDefaults.DEFAULT_TEARDOWN_OPERATION };

    private DBType dbType = ConfigurationDefaults.DEFAULT_DB_TYPE;

    private String[] dataSetResourceLocations = new String[] { "classpath:dataSet.xml" };

    private DataSetFormat format = ConfigurationDefaults.DEFAULT_DB_FORMAT;

    private DataSetFormatOptions formatOptions = new DataSetFormatOptions();

    private String escapePattern = ConfigurationDefaults.DEFAULT_ESCAPE_PATTERN;

    private int batchSize = ConfigurationDefaults.DEFAULT_BATCH_SIZE;

    private int fetchSize = ConfigurationDefaults.DEFAULT_FETCH_SIZE;

    private boolean qualifiedTableNames = ConfigurationDefaults.DEFAULT_QUALIFIED_TABLE_NAMES;

    private boolean batchedStatements = ConfigurationDefaults.DEFAULT_BATCHED_STATEMENTS;

    private boolean skipOracleRecycleBinTables = ConfigurationDefaults.DEFAULT_SKIP_ORACLE_RECYCLEBIN_TABLES;

    private String[] tableType = ConfigurationDefaults.DEFAULT_TABLE_TYPE;

    private String schema = ConfigurationDefaults.DEFAULT_SCHEMA;

    private Class<? extends DataSetDecorator>[] decorators = null;

    public IDataSet getDataSet() throws DataSetException, IOException {

        List<IDataSet> dataSets = format.loadMultiple(formatOptions, dataSetResourceLocations);
        return dataSets.size() == 1 ? dataSets.get(0) : new CompositeDataSet(dataSets.toArray(new IDataSet[dataSets.size()]));
    }

    @Override
    public void configure(DatabaseConfig databaseConfig) {

        Assert.notNull(dbType, "dbType is required");

        databaseConfig.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, dbType.getDataTypeFactory());
        databaseConfig.setProperty(DatabaseConfig.PROPERTY_METADATA_HANDLER, dbType.getMetadataHandler());
        databaseConfig.setProperty(DatabaseConfig.PROPERTY_ESCAPE_PATTERN, escapePattern);
        databaseConfig.setProperty(DatabaseConfig.PROPERTY_BATCH_SIZE, batchSize);
        databaseConfig.setProperty(DatabaseConfig.PROPERTY_FETCH_SIZE, fetchSize);
        databaseConfig.setProperty(DatabaseConfig.FEATURE_CASE_SENSITIVE_TABLE_NAMES, formatOptions.isCaseSensitiveTableNames());
        databaseConfig.setProperty(DatabaseConfig.FEATURE_QUALIFIED_TABLE_NAMES, qualifiedTableNames);
        databaseConfig.setProperty(DatabaseConfig.FEATURE_BATCHED_STATEMENTS, batchedStatements);
        databaseConfig.setProperty(DatabaseConfig.FEATURE_SKIP_ORACLE_RECYCLEBIN_TABLES, skipOracleRecycleBinTables);
        databaseConfig.setProperty(DatabaseConfig.PROPERTY_TABLE_TYPE, tableType);
    }

    public static Builder newDataSetConfiguration() {
        return new Builder();
    }

    public static class Builder {

        private DataSetConfiguration dataSetConfiguration = new DataSetConfiguration();

        private Builder() {
        }

        public Builder withDisabled(boolean disabled) {
            dataSetConfiguration.disabled = disabled;
            return this;
        }

        public Builder withDataSourceSpringName(String dataSourceSpringName) {
            dataSetConfiguration.dataSourceSpringName = dataSourceSpringName;
            return this;
        }

        public Builder withSetUpOp(DBOperation[] setUpOp) {
            dataSetConfiguration.setUpOperation = setUpOp;
            return this;
        }

        public Builder withTearDownOp(DBOperation[] tearDownOp) {
            dataSetConfiguration.tearDownOperation = tearDownOp;
            return this;
        }

        public Builder withDbType(DBType dbType) {
            if (dbType != null)
                dataSetConfiguration.dbType = dbType;
            return this;
        }

        public Builder withDataSetResourceLocations(String[] dataSetResourceLocations) {
            dataSetConfiguration.dataSetResourceLocations = dataSetResourceLocations;
            return this;
        }

        public Builder withFormat(DataSetFormat format) {
            dataSetConfiguration.format = format;
            return this;
        }

        public Builder withFormatOptions(DataSetFormatOptions formatOptions) {
            dataSetConfiguration.formatOptions = formatOptions;
            return this;
        }

        public Builder withEscapePattern(String escapePattern) {
            escapePattern = escapePattern.trim();
            dataSetConfiguration.escapePattern = escapePattern.isEmpty() ? null : escapePattern;
            return this;
        }

        public Builder withBatchSize(int batchSize) {
            dataSetConfiguration.batchSize = batchSize;
            return this;
        }

        public Builder withFetchSize(int fetchSize) {
            dataSetConfiguration.fetchSize = fetchSize;
            return this;
        }

        public Builder withQualifiedTableNames(boolean qualifiedTableNames) {
            dataSetConfiguration.qualifiedTableNames = qualifiedTableNames;
            return this;
        }

        public Builder withBatchedStatements(boolean batchedStatements) {
            dataSetConfiguration.batchedStatements = batchedStatements;
            return this;
        }

        public Builder withSkipOracleRecycleBinTables(boolean skipOracleRecycleBinTables) {
            dataSetConfiguration.skipOracleRecycleBinTables = skipOracleRecycleBinTables;
            return this;
        }

        public Builder withTableType(String[] tableType) {
            if (tableType != null)
                dataSetConfiguration.tableType = tableType;
            return this;
        }

        public Builder withSchema(String schema) {
            schema = schema.trim();
            if (!schema.isEmpty())
                dataSetConfiguration.schema = schema;
            return this;
        }

        public Builder withDecorators(Class<? extends DataSetDecorator>[] decorators) {
            if (decorators != null)
                dataSetConfiguration.decorators = decorators;
            return this;
        }

        public DataSetConfiguration build() {

            Assert.notNull(dataSetConfiguration.dataSetResourceLocations, "dataSetResourceLocations is required");
            Assert.notNull(dataSetConfiguration.setUpOperation, "setUpOperation is required");
            Assert.notNull(dataSetConfiguration.tearDownOperation, "tearDownOperation is required");
            Assert.notNull(dataSetConfiguration.dbType, "dbType is required");
            Assert.notNull(dataSetConfiguration.format, "format is required");
            Assert.notNull(dataSetConfiguration.formatOptions, "formatOptions are required");

            return dataSetConfiguration;
        }
    }

    public String getDataSetResourceLocation() {
        throw new UnsupportedOperationException();
    }

    public void setDataSetResourceLocation(String dataSetResourceLocation) {
        this.dataSetResourceLocations = tokenizeToStringArray(dataSetResourceLocation, ConfigurableApplicationContext.CONFIG_LOCATION_DELIMITERS);
    }

    public boolean isDisabled() {
        return disabled;
    }

    public String getDataSourceSpringName() {
        return dataSourceSpringName;
    }

    public DBOperation[] getSetUpOperation() {
        return setUpOperation;
    }

    public DBOperation[] getTearDownOperation() {
        return tearDownOperation;
    }

    public DBType getDbType() {
        return dbType;
    }

    public String[] getDataSetResourceLocations() {
        return dataSetResourceLocations;
    }

    public DataSetFormat getFormat() {
        return format;
    }

    public DataSetFormatOptions getFormatOptions() {
        return formatOptions;
    }

    public String getEscapePattern() {
        return escapePattern;
    }

    public int getBatchSize() {
        return batchSize;
    }

    public int getFetchSize() {
        return fetchSize;
    }

    public boolean isQualifiedTableNames() {
        return qualifiedTableNames;
    }

    public boolean isBatchedStatements() {
        return batchedStatements;
    }

    public boolean isSkipOracleRecycleBinTables() {
        return skipOracleRecycleBinTables;
    }

    public void setDisabled(boolean disabled) {
        this.disabled = disabled;
    }

    public void setDataSourceSpringName(String dataSourceSpringName) {
        this.dataSourceSpringName = dataSourceSpringName;
    }

    public void setSetUpOperation(DBOperation[] setUpOperation) {
        this.setUpOperation = setUpOperation;
    }

    public void setTearDownOperation(DBOperation[] tearDownOperation) {
        this.tearDownOperation = tearDownOperation;
    }

    public void setDbType(DBType dbType) {
        this.dbType = dbType;
    }

    public void setDataSetResourceLocations(String[] dataSetResourceLocations) {
        this.dataSetResourceLocations = dataSetResourceLocations;
    }

    public void setFormat(DataSetFormat format) {
        this.format = format;
    }

    public void setFormatOptions(DataSetFormatOptions formatOptions) {
        this.formatOptions = formatOptions;
    }

    public void setEscapePattern(String escapePattern) {
        this.escapePattern = escapePattern;
    }

    public void setBatchSize(int batchSize) {
        this.batchSize = batchSize;
    }

    public void setFetchSize(int fetchSize) {
        this.fetchSize = fetchSize;
    }

    public void setQualifiedTableNames(boolean qualifiedTableNames) {
        this.qualifiedTableNames = qualifiedTableNames;
    }

    public void setBatchedStatements(boolean batchedStatements) {
        this.batchedStatements = batchedStatements;
    }

    public void setSkipOracleRecycleBinTables(boolean skipOracleRecycleBinTables) {
        this.skipOracleRecycleBinTables = skipOracleRecycleBinTables;
    }

    public String[] getTableType() {
        return tableType;
    }

    public void setTableType(String[] tableType) {
        this.tableType = tableType;
    }

    public String getSchema() {
        return schema;
    }

    public void setSchema(String schema) {
        this.schema = schema;
    }

    public Class<? extends DataSetDecorator>[] getDecorators() {
        return decorators;
    }

    public void setDecorators(Class<? extends DataSetDecorator>[] decorators) {
        this.decorators = decorators;
    }
}
TOP

Related Classes of com.excilys.ebi.spring.dbunit.config.DataSetConfiguration$Builder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.