When your shell application has lots of commands, we should organize them properly, so users can consume them easily.
What is the default behavior of help command?
By default ‘help’ command would see a daunting list of commands, organized by alphabetical order and commands group together according to the class they are implemented in, turning the camel case class name into separate words. For example, for the class name 'ArithmeticCommandCustomizeCommandName' group name will be 'Arithmetic Command Customize Command Name').
shell:>help
AVAILABLE COMMANDS
Arithmetic Command Customize Command Name
sum: Add two integers together.
Arithmetic Commands
add: Add two integers together.
div: Devide two integers together.
mul: Multiply two integers together.
sub: Subtract two integers together.
Boolean Type Demo
shutdown: Shutdown the system
Built-In Commands
clear: Clear the shell screen.
exit, quit: Exit the shell.
help: Display help about available commands.
history: Display or save the history of previously run commands
script: Read and execute commands from a file.
stacktrace: Display the full stacktrace of the last error.
Customize Multiple Named Keys For Single Parameter
print-person: Commands to print Person Details
Customize Named Param Keys
print-employee: Commands to print Employee Details
Customize Named Param Keys Prefix
print-student: Commands to print Student Details
Default Values
greet-user: Commands to greet user
Dynamic Command Validation Demo1
connect: Connect to Database
* print-table-records: Print all records of table
Dynamic Command Validation Demo2
connect-to-oracle: Connect to Oracle Database
* print-table-records-from-oracle: Print all records of table from Oracle DB
Dynamic Command Validation Demo3
connect-to-db2: Connect to Db2 Database
* download-table-records-from-db2: Download all records of table from DB2
* print-table-records-from-db2: Print all records of table from DB2
Multi Valued Parameters Demo
square: Commands to Calculate Square of given numbers
Multiple Aliases
say-hello, welcome, wish: Commands to welcome user
Named Params
get-user: Commands to print User Details
Commands marked with (*) are currently unavailable.
Type `help <command>` to learn more.
How can we customize this grouping behaviour?
‘Spring Shell’ provide following ways to group the related commands together.
a. specifying a group() in the @ShellMethod annotation
b. placing a @ShellCommandGroup on the class the command is defined in. This will apply the group for all commands defined in that class (unless overridden as above)
c. placing a @ShellCommandGroup on the package (via package-info.java) the command is defined in. This will apply to all commands defined in the package (unless overridden at the method or class level as explained above)
Example 1:
public class ArithmeticCommands {
@ShellMethod(value = "This command ends up in the 'Arithmetic Commands' group")
public void foo() {}
@ShellMethod(value = "This command ends up in the 'Other Commands' group",
group = "Other Commands")
public void bar() {}
}
Example 2:
@ShellCommandGroup("Other Commands")
public class SomeCommands {
@ShellMethod(value = "This one is in 'Other Commands'")
public void wizz() {}
@ShellMethod(value = "And this one is 'Yet Another Group'",
group = "Yet Another Group")
public void last() {}
}
After I group the commands according to their behaviour, help command output looks like below.
shell:>help
AVAILABLE COMMANDS
Arithmetic Commands
add: Add two integers together.
div: Devide two integers together.
mul: Multiply two integers together.
sub: Subtract two integers together.
sum: Add two integers together.
Built-In Commands
clear: Clear the shell screen.
exit, quit: Exit the shell.
help: Display help about available commands.
history: Display or save the history of previously run commands
script: Read and execute commands from a file.
stacktrace: Display the full stacktrace of the last error.
Dynamic Command Validation
connect: Connect to Database
connect-to-db2: Connect to Db2 Database
connect-to-oracle: Connect to Oracle Database
* download-table-records-from-db2: Download all records of table from DB2
* print-table-records: Print all records of table
* print-table-records-from-db2: Print all records of table from DB2
* print-table-records-from-oracle: Print all records of table from Oracle DB
Miscellaneous
greet-user: Commands to greet user
say-hello, welcome, wish: Commands to welcome user
shutdown: Shutdown the system
square: Commands to Calculate Square of given numbers
Named Parameters
get-user: Commands to print User Details
print-employee: Commands to print Employee Details
print-person: Commands to print Person Details
print-student: Commands to print Student Details
Commands marked with (*) are currently unavailable.
Type `help <command>` to learn more.
You can download complete application from this link.
https://github.com/harikrishna553/springboot/tree/master/shell/hello-world
No comments:
Post a Comment