Example usage for org.springframework.jdbc.support.incrementer AbstractSequenceMaxValueIncrementer setDataSource

List of usage examples for org.springframework.jdbc.support.incrementer AbstractSequenceMaxValueIncrementer setDataSource

Introduction

In this page you can find the example usage for org.springframework.jdbc.support.incrementer AbstractSequenceMaxValueIncrementer setDataSource.

Prototype

public void setDataSource(DataSource dataSource) 

Source Link

Document

Set the data source to retrieve the value from.

Usage

From source file:org.kuali.rice.krad.data.platform.MaxValueIncrementerFactory.java

/**
 * Checks the config file for any references to
 * {@code rice.krad.data.platform.incrementer.(DATASOURCE, ex mysql, oracle).(VERSION optional)}.
 *
 * <p>If matching one found attempts to instantiate it to return back to factory for use.</p>
 *
 * @param platformInfo the {@link DatabasePlatformInfo}.
 * @param dataSource the {@link DataSource} for which to retrieve the incrementer.
 * @param incrementerName the name of the incrementer.
 * @param columnName the name of the column to increment.
 * @return a config set customized incrementer that matches and can be used to generate the next incremented value
 *         for the given incrementer against the specified {@link DataSource}
 * @throws InstantiationError if cannot instantiate passed in class.
 *///from w  ww .  j  av  a  2s  .c o m
private static DataFieldMaxValueIncrementer getCustomizedIncrementer(DatabasePlatformInfo platformInfo,
        DataSource dataSource, String incrementerName, String columnName) {
    if (platformInfo == null) {
        throw new IllegalArgumentException("DataSource platform must not be null");
    }
    if (ConfigContext.getCurrentContextConfig() == null) {
        return null;
    }
    Map<String, String> incrementerPropToIncrementer = ConfigContext.getCurrentContextConfig()
            .getPropertiesWithPrefix(PLATFORM_INCREMENTER_PREFIX, true);
    String platformNameVersion = platformInfo.getName().toLowerCase() + "." + platformInfo.getMajorVersion();
    String incrementerClassName = "";

    if (incrementerPropToIncrementer.containsKey(platformNameVersion)) {
        incrementerClassName = incrementerPropToIncrementer.get(platformNameVersion);
    } else if (incrementerPropToIncrementer.containsKey(platformInfo.getName().toLowerCase())) {
        incrementerClassName = incrementerPropToIncrementer.get(platformInfo.getName().toLowerCase());
    }

    if (StringUtils.isNotBlank(incrementerClassName)) {
        try {
            Class incrementerClass = Class.forName(incrementerClassName);
            if (AbstractSequenceMaxValueIncrementer.class.isAssignableFrom(incrementerClass)) {
                AbstractSequenceMaxValueIncrementer abstractSequenceMaxValueIncrementer = (AbstractSequenceMaxValueIncrementer) incrementerClass
                        .newInstance();
                abstractSequenceMaxValueIncrementer.setDataSource(dataSource);
                abstractSequenceMaxValueIncrementer.setIncrementerName(incrementerName);
                return abstractSequenceMaxValueIncrementer;

            } else if (AbstractColumnMaxValueIncrementer.class.isAssignableFrom(incrementerClass)) {
                AbstractColumnMaxValueIncrementer abstractColumnMaxValueIncrementer = (AbstractColumnMaxValueIncrementer) incrementerClass
                        .newInstance();
                abstractColumnMaxValueIncrementer.setDataSource(dataSource);
                abstractColumnMaxValueIncrementer.setIncrementerName(incrementerName);
                abstractColumnMaxValueIncrementer.setColumnName(columnName);
                return abstractColumnMaxValueIncrementer;
            } else {
                throw new InstantiationError(
                        "Cannot create incrementer class " + incrementerClassName + " it has to extend "
                                + "AbstractSequenceMaxValueIncrementer or AbstractColumnMaxValueIncrementer");
            }
        } catch (Exception e) {
            throw new InstantiationError("Could not instantiate custom incrementer " + incrementerClassName);
        }
    }
    return null;
}