package blade.cli.cmds;
import blade.cli.OpenOptions;
import blade.cli.blade;
import blade.cli.jmx.IDEConnector;
import java.io.File;
import java.util.Collections;
import java.util.Formatter;
import java.util.List;
public class OpenCommand {
final private blade blade;
final private OpenOptions options;
public OpenCommand(blade blade, OpenOptions options) throws Exception {
this.blade = blade;
this.options = options;
List<String> args = options._arguments();
if (args.size() == 0) {
// Default command
printHelp();
}
else {
execute();
}
}
private void addError(String prefix, String msg) {
blade.addErrors(prefix, Collections.singleton(msg));
}
private void execute() throws Exception {
File fileName = new File(options._arguments().get(0));
if (!fileName.exists()) {
addError("open", "Unable to find specified file " +
fileName.getAbsolutePath());
return;
}
IDEConnector connector = null;
try {
connector = new IDEConnector();
}
catch (Exception e) {
// ignore
}
if (connector == null) {
addError(
"open", "Unable to connect to Eclipse/Liferay IDE instance.");
return;
}
if (fileName.isDirectory()) {
Object retval = connector.openDir(fileName);
if (retval != null) {
addError("open", retval.toString());
return;
}
}
}
private void printHelp() throws Exception {
Formatter f = new Formatter();
options._command().help(f, this);
blade.out().println(f);
f.close();
}
}