IdGenerator.java

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

import org.springframework.dao.DataIntegrityViolationException;

/**
 * IDを自動生成する処理のインタフェースです。
 *
 * @version 0.3
 * @author T.TSUCHIE
 *
 */
public interface IdGenerator {

    /**
     * サポートしているクラスタイプかどうか
     * @param type 検査対象のクラスタイプ
     * @return trueのときサポート対象
     */
    boolean isSupportedType(Class<?> type);

    /**
     * サポートしているクラスのタイプ一覧を取得する
     * @return サポートしているクラスのタイプ一覧
     */
    Class<?>[] getSupportedTypes();

    /**
     * IDを新たに生成します。
     * @param context 生成対象のIDの情報
     * @return 生成したID
     * @throws DataIntegrityViolationException IDの生成に失敗した場合にスローされます。
     */
    Object generateValue(IdGenerationContext context);

    /**
     * 指定した個数分のIDを新たに生成します。
     * @param context 生成対象のIDの情報
     * @param num 生成するIDの個数
     * @return DataIntegrityViolationException IDの生成に失敗した場合にスローされます。
     */
    default Object[] generateValues(final IdGenerationContext context, final int num) {
        Object[] values = new Object[num];
        for(int i=0; i < num; i++) {
            values[i] = generateValue(context);
        }
        return values;
    }

}