예제 #1
0
  /**
   * Prefills the id generators.
   *
   * @param datasource the datasource to use
   * @since $version
   * @author hceylan
   */
  public void preFillGenerators(DataSource datasource) {
    final int nThreads = Runtime.getRuntime().availableProcessors();

    this.idGeneratorExecuter =
        new ThreadPoolExecutor(
            1,
            nThreads, //
            30,
            TimeUnit.SECONDS, //
            new LinkedBlockingQueue<Runnable>(), //
            new GeneratorThreadFactory());

    for (final SequenceGenerator generator : this.sequenceGenerators.values()) {
      this.sequenceQueues.put(
          generator.getName(),
          new SequenceQueue(
              this.jdbcAdaptor,
              datasource,
              this.idGeneratorExecuter,
              generator.getSequenceName(),
              generator.getAllocationSize()));
    }

    for (final TableGenerator generator : this.tableGenerators.values()) {
      this.tableIdQueues.put(
          generator.getName(),
          new TableIdQueue(this.jdbcAdaptor, datasource, this.idGeneratorExecuter, generator));
    }
  }
예제 #2
0
  /**
   * Performs the sequence generators DDL operations.
   *
   * @param datasource the datasource
   * @param ddlMode the DDL Mode
   * @since $version
   * @author hceylan
   */
  public void performSequencesDdl(DataSource datasource, DDLMode ddlMode) {
    for (final SequenceGenerator sequenceGenerator : this.sequenceGenerators.values()) {
      MetamodelImpl.LOG.info(
          "Performing DDL operations for sequence generators for {0}, mode {1}",
          sequenceGenerator.getName(), ddlMode);

      this.jdbcAdaptor.createSequenceIfNecessary(datasource, sequenceGenerator);
    }
  }
예제 #3
0
 /**
  * Adds the sequence generator to the metamodel
  *
  * @param metadata the generator metadata
  * @since $version
  * @author hceylan
  */
 public synchronized void addSequenceGenerator(SequenceGeneratorMetadata metadata) {
   final SequenceGenerator sequenceGenerator = new SequenceGenerator(metadata);
   this.sequenceGenerators.put(sequenceGenerator.getName(), sequenceGenerator);
 }