001package org.nuxeo.ecm.platform.importer.executor.jaxrs;
002
003import javax.ws.rs.GET;
004import javax.ws.rs.Path;
005import javax.ws.rs.Produces;
006import javax.ws.rs.QueryParam;
007
008import org.apache.commons.logging.Log;
009import org.apache.commons.logging.LogFactory;
010import org.nuxeo.ecm.platform.importer.base.GenericMultiThreadedImporter;
011import org.nuxeo.ecm.platform.importer.base.ImporterRunner;
012import org.nuxeo.ecm.platform.importer.base.ImporterRunnerConfiguration;
013import org.nuxeo.ecm.platform.importer.filter.EventServiceConfiguratorFilter;
014import org.nuxeo.ecm.platform.importer.filter.ImporterFilter;
015import org.nuxeo.ecm.platform.importer.source.RandomTextSourceNode;
016import org.nuxeo.ecm.platform.importer.source.SourceNode;
017
018@Path("randomImporter")
019public class RandomImporterExecutor extends AbstractJaxRSImporterExecutor {
020
021    private static final Log log = LogFactory.getLog(RandomImporterExecutor.class);
022
023    @Override
024    protected Log getJavaLogger() {
025        return log;
026    }
027
028    @GET
029    @Path("run")
030    @Produces("text/plain; charset=UTF-8")
031    public String run(@QueryParam("targetPath") String targetPath,
032            @QueryParam("skipRootContainerCreation") Boolean skipRootContainerCreation,
033            @QueryParam("batchSize") Integer batchSize, @QueryParam("nbThreads") Integer nbThreads,
034            @QueryParam("interactive") Boolean interactive, @QueryParam("nbNodes") Integer nbNodes,
035            @QueryParam("fileSizeKB") Integer fileSizeKB, @QueryParam("onlyText") Boolean onlyText,
036            @QueryParam("blockSyncPostCommitProcessing") Boolean blockSyncPostCommitProcessing,
037            @QueryParam("blockAsyncProcessing") Boolean blockAsyncProcessing, @QueryParam("bulkMode") Boolean bulkMode) {
038
039        if (onlyText == null) {
040            onlyText = true;
041        }
042
043        if (bulkMode == null) {
044            bulkMode = true;
045        }
046
047        getLogger().info("Init Random text generator");
048        SourceNode source = RandomTextSourceNode.init(nbNodes, fileSizeKB, onlyText);
049        getLogger().info("Random text generator initialized");
050
051        ImporterRunnerConfiguration configuration = new ImporterRunnerConfiguration.Builder(source, targetPath,
052                getLogger()).skipRootContainerCreation(skipRootContainerCreation).batchSize(batchSize).nbThreads(
053                nbThreads).build();
054        GenericMultiThreadedImporter runner = new GenericMultiThreadedImporter(configuration);
055
056        ImporterFilter filter = new EventServiceConfiguratorFilter(blockSyncPostCommitProcessing, blockAsyncProcessing,
057                !onlyText, bulkMode);
058        runner.addFilter(filter);
059
060        String res = run(runner, interactive);
061        return res;
062    }
063
064    @Override
065    public String run(ImporterRunner runner, Boolean interactive) {
066        return doRun(runner, interactive);
067    }
068
069}