Class AbstractCLI
- All Implemented Interfaces:
org.springframework.beans.factory.Aware, org.springframework.context.ApplicationContextAware, CLI
- Direct Known Subclasses:
AbstractAuthenticatedCLI, GenerateDatabaseUpdateCli, IndexGemmaCLI, InitializeDatabaseCli, ListExpressionDataFIleLocksCli, MeshTermFetcherCli, SingleCellDataDownloaderCli, SingleCellDataTransformCli, UnifiedOntologyUpdaterCli, UpdateDatabaseCli
CLI interface.
To use this, in your concrete subclass, implement buildOptions(Options) and processOptions(CommandLine) to handle any
application-specific options (they can be no-ops) and doWork() to perform the actual work of the CLI.
Use AbstractAuthenticatedCLI if you need to authenticate the user.
- Author:
- pavlidis
-
Nested Class Summary
Nested classes/interfaces inherited from interface CLI
CLI.CommandGroup -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final intExit code used when adoWork()is aborted.protected static final intExit code used for a faileddoWork()execution.protected static final intExit code used for a successful doWork execution that resulted in failed error objects.protected final org.apache.commons.logging.Logprotected static final intExit code used for a successfuldoWork()execution. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected final voidAbort the execution of the CLI with the given message.protected final voidaddBatchOption(org.apache.commons.cli.Options options) Add the -batchFormat and -batchOutputFile options.protected final voidaddErrorObject(Serializable errorObject, Exception exception) Add an error object based on an exception.protected final voidaddErrorObject(Serializable errorObject, String message) Add an error object without a cause stacktrace.protected final voidaddErrorObject(Serializable errorObject, String message, Throwable throwable) Add an error object with a stacktrace to indicate failure in a batch processing.protected final voidaddSuccessObject(Serializable successObject) protected final voidaddSuccessObject(Serializable successObject, String message) Add a success object to indicate success in a batch processing.protected final voidaddThreadsOption(org.apache.commons.cli.Options options) Add the-threadsoption.protected final voidaddWarningObject(Serializable warningObject, String message) protected final voidaddWarningObject(Serializable warningObject, String message, Throwable throwable) Add a warning object with a stacktrace to indicate a recoverable failure in a batch processing.booleanIndicate if this CLI allows positional arguments.protected final voidAwait the completion of all batch tasks.protected voidbuildOptions(org.apache.commons.cli.Options options) Build option implementation.protected abstract voiddoWork()Command line implementation.final intexecuteCommand(CliContext cliContext) Execute the given command given CLI arguments.final org.springframework.context.ApplicationContextObtain the application context.protected final BatchTaskExecutorServiceObtain an executor for running batch tasks.protected final BatchTaskProgressReporterprotected final CliContextObtain the CLI context.A list of aliases for the command that can be used to locate this class.Obtain the command group for this CLI.A short memorable name for the command that can be used to locate this class.protected StringInclude a detailed help footer in the --help menu.protected final intorg.apache.commons.cli.OptionsObtain the options for the CLI.Obtain a short description for this command explaining what it does.protected StringgetUsage()Describe the intended usage for the command.protected voidprocessOptions(org.apache.commons.cli.CommandLine commandLine) Process command line options.protected final voidpromptConfirmationOrAbort(String confirmationMessage) Prompt the user for a confirmation or raise an exception to abort thedoWork()method.protected final voidAllow positional arguments to be specified.final voidsetApplicationContext(org.springframework.context.ApplicationContext applicationContext) protected final voidsetEstimatedMaxTasks(int estimatedMaxTasks) Set the estimated maximum number of batch tasks to be processed.protected final voidsetReportFrequencyMillis(int reportFrequencyMillis) Set the frequency at which the batch task executor should report progress.
-
Field Details
-
log
protected final org.apache.commons.logging.Log log -
SUCCESS
-
FAILURE
-
FAILURE_FROM_ERROR_OBJECTS
protected static final int FAILURE_FROM_ERROR_OBJECTSExit code used for a successful doWork execution that resulted in failed error objects.- See Also:
-
ABORTED
-
-
Constructor Details
-
AbstractCLI
public AbstractCLI()
-
-
Method Details
-
getCommandName
Description copied from interface:CLIA short memorable name for the command that can be used to locate this class.- Specified by:
getCommandNamein interfaceCLI- Returns:
- name; if null or blank, this will not be available as a shortcut command.
-
getCommandAliases
Description copied from interface:CLIA list of aliases for the command that can be used to locate this class.- Specified by:
getCommandAliasesin interfaceCLI
-
getShortDesc
Description copied from interface:CLIObtain a short description for this command explaining what it does.- Specified by:
getShortDescin interfaceCLI
-
getCommandGroup
Description copied from interface:CLIObtain the command group for this CLI.- Specified by:
getCommandGroupin interfaceCLI
-
getOptions
public org.apache.commons.cli.Options getOptions()Description copied from interface:CLIObtain the options for the CLI.- Specified by:
getOptionsin interfaceCLI
-
allowPositionalArguments
public boolean allowPositionalArguments()Description copied from interface:CLIIndicate if this CLI allows positional arguments.- Specified by:
allowPositionalArgumentsin interfaceCLI
-
executeCommand
Execute the given command given CLI arguments.Parse and process CLI arguments, invoke the command
doWork()implementation, and print basic statistics about time usage.Any exception raised by doWork results in a value of
FAILURE, and any error set in the internal error objects will result in a value ofFAILURE_FROM_ERROR_OBJECTS.- Specified by:
executeCommandin interfaceCLI- Returns:
- an exit code
-
getApplicationContext
public final org.springframework.context.ApplicationContext getApplicationContext()Obtain the application context.Beans in a CLI context are usually lazily-initialized as using
LazyInitByDefaultPostProcessor, so using the context to create beans ensures that only the necessary beans are created. -
setApplicationContext
public final void setApplicationContext(org.springframework.context.ApplicationContext applicationContext) - Specified by:
setApplicationContextin interfaceorg.springframework.context.ApplicationContextAware
-
getCliContext
Obtain the CLI context.This is only valid for the duration of the
executeCommand(CliContext)method. -
getUsage
Describe the intended usage for the command.This will be included in the 'Usage: ...' error message when the CLI is misused.
-
addThreadsOption
protected final void addThreadsOption(org.apache.commons.cli.Options options) Add the-threadsoption.This is used to configure the internal batch processing thread pool which can be used with
getBatchTaskExecutor().You may also use
getNumThreads()to retrieve the number of threads to use. -
addBatchOption
protected final void addBatchOption(org.apache.commons.cli.Options options) Add the -batchFormat and -batchOutputFile options.These options allow the user to control how and where batch processing results are summarized.
-
setAllowPositionalArguments
protected final void setAllowPositionalArguments()Allow positional arguments to be specified. The default is false and an error will be produced if positional arguments are supplied by the user.Those arguments can be retrieved in
processOptions(CommandLine)by usingCommandLine.getArgList(). -
getNumThreads
protected final int getNumThreads() -
buildOptions
protected void buildOptions(org.apache.commons.cli.Options options) Build option implementation.Implement this method to add options to your command line, using the OptionBuilder.
This is called right after
buildStandardOptions(Options)so the options will be added after standard options. -
processOptions
protected void processOptions(org.apache.commons.cli.CommandLine commandLine) throws org.apache.commons.cli.ParseException Process command line options.Implement this to provide processing of options. It is called after
buildOptions(Options)and right beforedoWork().- Throws:
org.apache.commons.cli.ParseException- in case of unrecoverable failure (i.e. missing option or invalid value), an exception can be raised and will result in an exit code ofFAILURE.
-
doWork
Command line implementation.This is called after
buildOptions(Options)andprocessOptions(CommandLine). so the implementation can assume that all its arguments have already been initialized and any setup behaviour have been performed.- Throws:
Exception- in case of unrecoverable failure, an exception is thrown and will result in aFAILUREexit code, otherwise useaddErrorObject(Serializable, String, Throwable)to indicate an error and resume processing
-
promptConfirmationOrAbort
-
abort
-
addSuccessObject
Add a success object to indicate success in a batch processing.- Parameters:
successObject- object that was processedmessage- success message
-
addSuccessObject
- See Also:
-
addWarningObject
- See Also:
-
addWarningObject
protected final void addWarningObject(@Nullable Serializable warningObject, String message, Throwable throwable) Add a warning object with a stacktrace to indicate a recoverable failure in a batch processing.- Parameters:
warningObject- that was processedmessage- error messagethrowable- throwable to produce a stacktrace
-
addErrorObject
protected final void addErrorObject(@Nullable Serializable errorObject, String message, Throwable throwable) Add an error object with a stacktrace to indicate failure in a batch processing.This is intended to be used when an
Exceptionis caught.- Parameters:
errorObject- object that was processedmessage- error messagethrowable- throwable to produce a stacktrace
-
addErrorObject
Add an error object without a cause stacktrace.- See Also:
-
addErrorObject
Add an error object based on an exception.- See Also:
-
getBatchTaskExecutor
Obtain an executor for running batch tasks.The CLI will await any pending batch tasks before exiting. You may only submit batch tasks inside
doWork().Successes and errors are reported automatically if
addSuccessObject(Serializable, String)oraddErrorObject(Serializable, String)haven't been invoked during the execution of the callable/runnable. -
getBatchTaskProgressReporter
-
setReportFrequencyMillis
protected final void setReportFrequencyMillis(int reportFrequencyMillis) Set the frequency at which the batch task executor should report progress.The default is to report progress every 30 seconds. It may be overwritten by the
-batchReportFrequencyoption. -
setEstimatedMaxTasks
protected final void setEstimatedMaxTasks(int estimatedMaxTasks) Set the estimated maximum number of batch tasks to be processed. -
awaitBatchExecutorService
Await the completion of all batch tasks.The batch task executor will be shutdown, preventing any new tasks from being submitted.
- Throws:
InterruptedException
-