001package com.avaje.ebean.config.dbplatform;
002
003import javax.sql.DataSource;
004
005import com.avaje.ebean.BackgroundExecutor;
006
007/**
008 * H2 specific sequence Id Generator.
009 */
010public class H2SequenceIdGenerator extends SequenceIdGenerator {
011
012  private final String baseSql;
013  private final String unionBaseSql;
014
015  /**
016   * Construct given a dataSource and sql to return the next sequence value.
017   */
018  public H2SequenceIdGenerator(BackgroundExecutor be, DataSource ds, String seqName, int batchSize) {
019    super(be, ds, seqName, batchSize);
020    this.baseSql = "select " + seqName + ".nextval";
021    this.unionBaseSql = " union " + baseSql;
022  }
023
024  public String getSql(int batchSize) {
025
026    StringBuilder sb = new StringBuilder();
027    sb.append(baseSql);
028    for (int i = 1; i < batchSize; i++) {
029      sb.append(unionBaseSql);
030    }
031    return sb.toString();
032  }
033}