Merge "Remove arity from dicttool commands (A1)" into jb-mr1-dev
commit
68966c7e0e
|
@ -55,11 +55,10 @@ public class Compress {
|
||||||
return "compress <filename>: Compresses a file using gzip compression";
|
return "compress <filename>: Compresses a file using gzip compression";
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getArity() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void run() throws IOException {
|
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 inFilename = mArgs[0];
|
||||||
final String outFilename = inFilename + SUFFIX;
|
final String outFilename = inFilename + SUFFIX;
|
||||||
final FileInputStream input = new FileInputStream(new File(inFilename));
|
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";
|
return "uncompress <filename>: Uncompresses a file compressed with gzip compression";
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getArity() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void run() throws IOException {
|
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 inFilename = mArgs[0];
|
||||||
final String outFilename = inFilename + SUFFIX;
|
final String outFilename = inFilename + SUFFIX;
|
||||||
final FileInputStream input = new FileInputStream(new File(inFilename));
|
final FileInputStream input = new FileInputStream(new File(inFilename));
|
||||||
|
|
|
@ -27,7 +27,6 @@ public class Dicttool {
|
||||||
public void setArgs(String[] args) throws IllegalArgumentException {
|
public void setArgs(String[] args) throws IllegalArgumentException {
|
||||||
mArgs = args;
|
mArgs = args;
|
||||||
}
|
}
|
||||||
abstract public int getArity();
|
|
||||||
abstract public String getHelp();
|
abstract public String getHelp();
|
||||||
abstract public void run() throws Exception;
|
abstract public void run() throws Exception;
|
||||||
}
|
}
|
||||||
|
@ -62,40 +61,23 @@ public class Dicttool {
|
||||||
return sCommands.containsKey(commandName);
|
return sCommands.containsKey(commandName);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String mPreviousCommand = null; // local to the getNextCommand function
|
private Command getCommand(final ArrayList<String> arguments) {
|
||||||
private Command getNextCommand(final ArrayList<String> arguments) {
|
|
||||||
final String firstArgument = arguments.get(0);
|
final String firstArgument = arguments.get(0);
|
||||||
final String commandName;
|
final String commandName;
|
||||||
if (isCommand(firstArgument)) {
|
if (isCommand(firstArgument)) {
|
||||||
commandName = firstArgument;
|
commandName = firstArgument;
|
||||||
arguments.remove(0);
|
arguments.remove(0);
|
||||||
} else if (isCommand(mPreviousCommand)) {
|
|
||||||
commandName = mPreviousCommand;
|
|
||||||
} else {
|
} else {
|
||||||
throw new RuntimeException("Unknown command : " + firstArgument);
|
throw new RuntimeException("Unknown command : " + firstArgument);
|
||||||
}
|
}
|
||||||
final Command command = getCommandInstance(commandName);
|
final Command command = getCommandInstance(commandName);
|
||||||
final int arity = command.getArity();
|
final String[] argsArray = arguments.toArray(new String[arguments.size()]);
|
||||||
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);
|
|
||||||
}
|
|
||||||
command.setArgs(argsArray);
|
command.setArgs(argsArray);
|
||||||
mPreviousCommand = commandName;
|
|
||||||
return command;
|
return command;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void execute(final ArrayList<String> arguments) {
|
private void execute(final ArrayList<String> arguments) {
|
||||||
ArrayList<Command> commandsToExecute = new ArrayList<Command>();
|
final Command command = getCommand(arguments);
|
||||||
while (!arguments.isEmpty()) {
|
|
||||||
commandsToExecute.add(getNextCommand(arguments));
|
|
||||||
}
|
|
||||||
for (final Command command : commandsToExecute) {
|
|
||||||
try {
|
try {
|
||||||
command.run();
|
command.run();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -104,7 +86,6 @@ public class Dicttool {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(final String[] args) {
|
public static void main(final String[] args) {
|
||||||
if (0 == args.length) {
|
if (0 == args.length) {
|
||||||
|
|
|
@ -17,6 +17,8 @@
|
||||||
package com.android.inputmethod.latin.dicttool;
|
package com.android.inputmethod.latin.dicttool;
|
||||||
|
|
||||||
public class Info extends Dicttool.Command {
|
public class Info extends Dicttool.Command {
|
||||||
|
public static final String COMMAND = "info";
|
||||||
|
|
||||||
public Info() {
|
public Info() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,12 +26,11 @@ public class Info extends Dicttool.Command {
|
||||||
return "info <filename>: prints various information about a dictionary file";
|
return "info <filename>: prints various information about a dictionary file";
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getArity() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
// TODO: implement this
|
// TODO: implement this
|
||||||
|
if (mArgs.length < 1) {
|
||||||
|
throw new RuntimeException("Not enough arguments for command " + COMMAND);
|
||||||
|
}
|
||||||
System.out.println("Not implemented yet");
|
System.out.println("Not implemented yet");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue