/** * 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)); } }
/** * Performs the table generator DDL operations. * * @param datasource the datasource * @param ddlMode the DDL Mode * @since $version * @author hceylan */ public void performTableGeneratorsDdl(DataSource datasource, DDLMode ddlMode) { for (final TableGenerator tableGenerator : this.tableGenerators.values()) { MetamodelImpl.LOG.info( "Performing DDL operations for sequence generators for mode table {1}, mode {0}", tableGenerator.getName(), ddlMode); this.jdbcAdaptor.createTableGeneratorIfNecessary(datasource, tableGenerator); } }
/** * Adds the sequence generator to the metamodel * * @param metadata the generator metadata * @since $version * @author hceylan */ public synchronized void addTableGenerator(TableGeneratorMetadata metadata) { final TableGenerator tableGenerator = new TableGenerator(metadata); this.tableGenerators.put(tableGenerator.getName(), tableGenerator); }