package io.lumify.tools;
import com.google.inject.Inject;
import io.lumify.core.cmdline.CommandLineBase;
import io.lumify.core.ingest.FileImport;
import io.lumify.core.model.workspace.Workspace;
import io.lumify.core.model.workspace.WorkspaceRepository;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Options;
import java.io.File;
public class Import extends CommandLineBase {
private static final String CMD_OPT_DATADIR = "datadir";
private static final String CMD_OPT_QUEUE_DUPLICATES = "queuedups";
private static final String CMD_OPT_VISIBILITY_SOURCE = "visibilitysource";
private static final String CMD_OPT_WORKSPACE_ID = "workspaceid";
private FileImport fileImport;
private WorkspaceRepository workspaceRepository;
public static void main(String[] args) throws Exception {
int res = new Import().run(args);
if (res != 0) {
System.exit(res);
}
}
@Override
protected Options getOptions() {
Options opts = super.getOptions();
opts.addOption(
OptionBuilder
.withLongOpt(CMD_OPT_DATADIR)
.withDescription("Location of the data directory")
.hasArg()
.isRequired()
.create()
);
opts.addOption(
OptionBuilder
.withLongOpt(CMD_OPT_QUEUE_DUPLICATES)
.withDescription("Specify if you would like to queue duplicate files")
.create()
);
opts.addOption(
OptionBuilder
.withLongOpt(CMD_OPT_VISIBILITY_SOURCE)
.withDescription("The visibility source data.")
.hasArg()
.create()
);
opts.addOption(
OptionBuilder
.withLongOpt(CMD_OPT_WORKSPACE_ID)
.withDescription("The workspace id to import the files into.")
.hasArg()
.create()
);
return opts;
}
@Override
protected int run(CommandLine cmd) throws Exception {
File dataDir = new File(cmd.getOptionValue(CMD_OPT_DATADIR));
boolean queueDuplicates = cmd.hasOption(CMD_OPT_QUEUE_DUPLICATES);
String visibilitySource = cmd.getOptionValue(CMD_OPT_VISIBILITY_SOURCE, "");
String workspaceId = cmd.getOptionValue(CMD_OPT_WORKSPACE_ID, null);
Workspace workspace;
if (workspaceId == null) {
workspace = null;
} else {
workspace = workspaceRepository.findById(workspaceId, getUser());
}
fileImport.importDirectory(dataDir, queueDuplicates, visibilitySource, workspace, getUser(), getAuthorizations());
return 0;
}
@Inject
public void setFileImport(FileImport fileImport) {
this.fileImport = fileImport;
}
@Inject
public void setWorkspaceRepository(WorkspaceRepository workspaceRepository) {
this.workspaceRepository = workspaceRepository;
}
}