diff options
Diffstat (limited to 'tools')
3 files changed, 26 insertions, 55 deletions
diff --git a/tools/dicttool/src/android/inputmethod/latin/dicttool/Compress.java b/tools/dicttool/src/android/inputmethod/latin/dicttool/Compress.java index 307f5964c..a76ec50e0 100644 --- a/tools/dicttool/src/android/inputmethod/latin/dicttool/Compress.java +++ b/tools/dicttool/src/android/inputmethod/latin/dicttool/Compress.java @@ -55,11 +55,10 @@ public class Compress { return "compress <filename>: Compresses a file using gzip compression"; } - public int getArity() { - return 1; - } - public void run() throws IOException { + if (mArgs.length < 1) { + throw new RuntimeException("Not enough arguments for command " + COMMAND); + } final String inFilename = mArgs[0]; final String outFilename = inFilename + SUFFIX; final FileInputStream input = new FileInputStream(new File(inFilename)); @@ -79,11 +78,10 @@ public class Compress { return "uncompress <filename>: Uncompresses a file compressed with gzip compression"; } - public int getArity() { - return 1; - } - public void run() throws IOException { + if (mArgs.length < 1) { + throw new RuntimeException("Not enough arguments for command " + COMMAND); + } final String inFilename = mArgs[0]; final String outFilename = inFilename + SUFFIX; final FileInputStream input = new FileInputStream(new File(inFilename)); diff --git a/tools/dicttool/src/android/inputmethod/latin/dicttool/Dicttool.java b/tools/dicttool/src/android/inputmethod/latin/dicttool/Dicttool.java index b78be7975..8fc0423b8 100644 --- a/tools/dicttool/src/android/inputmethod/latin/dicttool/Dicttool.java +++ b/tools/dicttool/src/android/inputmethod/latin/dicttool/Dicttool.java @@ -16,7 +16,6 @@ package com.android.inputmethod.latin.dicttool; -import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -27,7 +26,6 @@ public class Dicttool { public void setArgs(String[] args) throws IllegalArgumentException { mArgs = args; } - abstract public int getArity(); abstract public String getHelp(); abstract public void run() throws Exception; } @@ -62,59 +60,33 @@ public class Dicttool { return sCommands.containsKey(commandName); } - private String mPreviousCommand = null; // local to the getNextCommand function - private Command getNextCommand(final ArrayList<String> arguments) { - final String firstArgument = arguments.get(0); - final String commandName; - if (isCommand(firstArgument)) { - commandName = firstArgument; - arguments.remove(0); - } else if (isCommand(mPreviousCommand)) { - commandName = mPreviousCommand; - } else { - throw new RuntimeException("Unknown command : " + firstArgument); + private Command getCommand(final String[] arguments) { + final String commandName = arguments[0]; + if (!isCommand(commandName)) { + throw new RuntimeException("Unknown command : " + commandName); } final Command command = getCommandInstance(commandName); - final int arity = command.getArity(); - if (arguments.size() < arity) { - throw new RuntimeException("Not enough arguments to command " + commandName); - } - final String[] argsArray = new String[arity]; - arguments.subList(0, arity).toArray(argsArray); - for (int i = 0; i < arity; ++i) { - // For some reason, ArrayList#removeRange is protected - arguments.remove(0); - } + final String[] argsArray = Arrays.copyOfRange(arguments, 1, arguments.length); command.setArgs(argsArray); - mPreviousCommand = commandName; return command; } - private void execute(final ArrayList<String> arguments) { - ArrayList<Command> commandsToExecute = new ArrayList<Command>(); - while (!arguments.isEmpty()) { - commandsToExecute.add(getNextCommand(arguments)); - } - for (final Command command : commandsToExecute) { - try { - command.run(); - } catch (Exception e) { - System.out.println("Exception while processing command " - + command.getClass().getSimpleName() + " : " + e); - return; - } + private void execute(final String[] arguments) { + final Command command = getCommand(arguments); + try { + command.run(); + } catch (Exception e) { + System.out.println("Exception while processing command " + + command.getClass().getSimpleName() + " : " + e); + return; } } - public static void main(final String[] args) { - if (0 == args.length) { + public static void main(final String[] arguments) { + if (0 == arguments.length) { help(); return; } - if (!isCommand(args[0])) throw new RuntimeException("Unknown command : " + args[0]); - - final ArrayList<String> arguments = new ArrayList<String>(args.length); - arguments.addAll(Arrays.asList(args)); new Dicttool().execute(arguments); } } diff --git a/tools/dicttool/src/android/inputmethod/latin/dicttool/Info.java b/tools/dicttool/src/android/inputmethod/latin/dicttool/Info.java index cb032dd3b..e59261706 100644 --- a/tools/dicttool/src/android/inputmethod/latin/dicttool/Info.java +++ b/tools/dicttool/src/android/inputmethod/latin/dicttool/Info.java @@ -17,6 +17,8 @@ package com.android.inputmethod.latin.dicttool; public class Info extends Dicttool.Command { + public static final String COMMAND = "info"; + public Info() { } @@ -24,12 +26,11 @@ public class Info extends Dicttool.Command { return "info <filename>: prints various information about a dictionary file"; } - public int getArity() { - return 1; - } - public void run() { // TODO: implement this + if (mArgs.length < 1) { + throw new RuntimeException("Not enough arguments for command " + COMMAND); + } System.out.println("Not implemented yet"); } } |