// Path: examples/multi-db/key-gen/src/main/java/com/palominolabs/benchpress/example/multidb/key/KeyGeneratorFactory.java
// @ThreadSafe
// public interface KeyGeneratorFactory {
//     /**
//      * Should be called by each worker thread.
//      *
//      * @return a KeyGenerator
//      */
//     KeyGenerator getKeyGenerator();
// }
// 
// Path: job/src/main/java/com/palominolabs/benchpress/job/task/TaskOperation.java
// public enum TaskOperation {
//     /** A write operation */
//     WRITE,
//     /** A read operation */
//     READ
// }
// 
// Path: examples/multi-db/value-gen/src/main/java/com/palominolabs/benchpress/example/multidb/value/ValueGeneratorFactory.java
// @NotThreadSafe
// public interface ValueGeneratorFactory {
//     ValueGenerator getValueGenerator();
// }


import com.palominolabs.benchpress.example.multidb.key.KeyGeneratorFactory;
import com.palominolabs.benchpress.job.task.TaskOperation;
import com.palominolabs.benchpress.example.multidb.value.ValueGeneratorFactory;
package com.palominolabs.benchpress.example.multidb.task;


/**
 * Convenience base class for the default task factories.
 */
public abstract class TaskFactoryBase {
    protected final ValueGeneratorFactory valueGeneratorFactory;
    protected final KeyGeneratorFactory keyGeneratorFactory;
    protected final TaskOperation taskOperation;
    protected final int numThreads;
    protected final int numQuanta;
    protected final int batchSize;

    protected TaskFactoryBase(TaskOperation taskOperation, ValueGeneratorFactory valueGeneratorFactory, int batchSize,
        KeyGeneratorFactory keyGeneratorFactory, int numQuanta, int numThreads) {
        this.taskOperation = taskOperation;
        this.valueGeneratorFactory = valueGeneratorFactory;
// Path: examples/multi-db/key-gen/src/main/java/com/palominolabs/benchpress/example/multidb/key/KeyGeneratorFactory.java
// @ThreadSafe
// public interface KeyGeneratorFactory {
//     /**
//      * Should be called by each worker thread.
//      *
//      * @return a KeyGenerator
//      */
//     KeyGenerator getKeyGenerator();
// }
// 
// Path: job/src/main/java/com/palominolabs/benchpress/job/task/TaskOperation.java
// public enum TaskOperation {
//     /** A write operation */
//     WRITE,
//     /** A read operation */
//     READ
// }
// 
// Path: examples/multi-db/value-gen/src/main/java/com/palominolabs/benchpress/example/multidb/value/ValueGeneratorFactory.java
// @NotThreadSafe
// public interface ValueGeneratorFactory {
//     ValueGenerator getValueGenerator();
// }


// Path: examples/multi-db/job-default-base/src/main/java/com/palominolabs/benchpress/example/multidb/task/TaskFactoryBase.java
import com.palominolabs.benchpress.example.multidb.key.KeyGeneratorFactory;
import com.palominolabs.benchpress.job.task.TaskOperation;
import com.palominolabs.benchpress.example.multidb.value.ValueGeneratorFactory;

package com.palominolabs.benchpress.example.multidb.task;


/**
 * Convenience base class for the default task factories.
 */
public abstract class TaskFactoryBase {
    protected final ValueGeneratorFactory valueGeneratorFactory;
    protected final KeyGeneratorFactory keyGeneratorFactory;
    protected final TaskOperation taskOperation;
    protected final int numThreads;
    protected final int numQuanta;
    protected final int batchSize;

    protected TaskFactoryBase(TaskOperation taskOperation, ValueGeneratorFactory valueGeneratorFactory, int batchSize,
        KeyGeneratorFactory keyGeneratorFactory, int numQuanta, int numThreads) {
        this.taskOperation = taskOperation;
        this.valueGeneratorFactory = valueGeneratorFactory;
        this.batchSize = batchSize;