H2Dialect.java

package com.github.mygreen.sqlmapper.core.dialect;

import javax.sql.DataSource;

import org.springframework.jdbc.support.incrementer.DataFieldMaxValueIncrementer;

import com.github.mygreen.sqlmapper.core.annotation.GeneratedValue.GenerationType;
import com.github.mygreen.sqlmapper.core.id.CustomH2SequenceMaxValueIncrementer;

/**
 * H2用の方言の定義。
 *
 *
 * @author T.TSUCHIE
 *
 */
public class H2Dialect extends DialectBase {

    /**
     * {@inheritDoc}
     *
     * @return {@literal "h2"} を返します。
     */
    @Override
    public String getName() {
        return "h2";
    }

    /**
     * {@inheritDoc}
     *
     * @return
     * <ul>
     *  <li>{@link GenerationType#IDENTITY} : {@literal true}</li>
     *  <li>{@link GenerationType#SEQUENCE} : {@literal true}</li>
     *  <li>{@link GenerationType#TABLE} : {@literal true}</li>
     *  <li>{@link GenerationType#UUID} : {@literal true}</li>
     * </ul>
     */
    @Override
    public boolean supportsGenerationType(GenerationType generationType) {
        switch(generationType) {
            case IDENTITY:
                return true;
            case SEQUENCE:
                return true;
            case TABLE:
                return true;
            case UUID:
                return true;
            default:
                return false;
        }
    }

    /**
     * {@inheritDoc}
     *
     * @return {@link CustomH2SequenceMaxValueIncrementer} のインスタンスを返します。
     */
    @Override
    public DataFieldMaxValueIncrementer getSequenceIncrementer(DataSource dataSource, String sequenceName) {
//        return new H2SequenceMaxValueIncrementer(dataSource, sequenceName);
        return new CustomH2SequenceMaxValueIncrementer(dataSource, sequenceName);

    }

}