|
ShellCommandTable |
|
1 // joi/6/juno/ShellCommandTable.java (version 6) 2 // 3 // 4 // Copyright 2003 Bill Campbell and Ethan Bolker 5 6 import java.util.*; 7 8 /** 9 * A ShellCommandTable object maintains a dispatch table of 10 * ShellCommand objects keyed by the command names used to invoke 11 * them. 12 * 13 * To add a new shell command to the table, install it from 14 * method fillTable(). 15 * 16 * @see ShellCommand 17 * 18 * @version 6 19 */ 20 21 public class ShellCommandTable 22 { 23 private Map table = new TreeMap(); 24 25 /** 26 * Construct and fill a shell command table. 27 */ 28 29 public ShellCommandTable() 30 { 31 fillTable(); 32 } 33 34 /** 35 * Get a ShellCommand, given the command name key. 36 * 37 * @param key the name associated with the command we're 38 * looking for. 39 * 40 * @return the command we're looking for, null if none. 41 */ 42 43 public ShellCommand lookup( String key ) 44 { 45 return (ShellCommand)table.get( key ); 46 } 47 48 /** 49 * Get an array of the command names. 50 * 51 * @return the array of command names. 52 */ 53 54 public String[] getCommandNames() 55 { 56 return (String[]) table.keySet().toArray( new String[0] ); 57 } 58 59 // Associate a command name with a ShellCommand. 60 61 private void install( String commandName, ShellCommand command ) 62 { 63 table.put( commandName, command ); 64 } 65 66 // Fill the dispatch table with ShellCommands, keyed by their 67 // command names. 68 69 private void fillTable() 70 { 71 install( "newfile", new NewfileCommand() ); 72 install( "type", new TypeCommand() ); 73 install( "mkdir", new MkdirCommand() ); 74 install( "help", new HelpCommand() ); 75 } 76 } 77
|
ShellCommandTable |
|