cmdrunner.java
来自「数据仓库展示程序」· Java 代码 · 共 1,855 行 · 第 1/5 页
JAVA
1,855 行
buf.append(nl);
appendList(buf);
}
if ((cmd & MDX_CMD) != 0) {
buf.append(nl);
appendIndent(buf, 1);
buf.append("<mdx query> <cr> ( '");
buf.append(EXECUTE_CHAR);
buf.append("' | '");
buf.append(CANCEL_CHAR);
buf.append("' ) <cr>");
buf.append(nl);
appendIndent(buf, 2);
buf.append("Execute or cancel mdx query.");
buf.append(nl);
appendIndent(buf, 2);
buf.append("An mdx query may span one or more lines.");
buf.append(nl);
appendIndent(buf, 2);
buf.append("After the last line of the query has been entered,");
buf.append(nl);
appendIndent(buf, 3);
buf.append("on the next line a single execute character, '");
buf.append(EXECUTE_CHAR);
buf.append("', may be entered");
buf.append(nl);
appendIndent(buf, 3);
buf.append("followed by a carriage return.");
buf.append(nl);
appendIndent(buf, 3);
buf.append("The lone '");
buf.append(EXECUTE_CHAR);
buf.append("' informs the interpreter that the query has");
buf.append(nl);
appendIndent(buf, 3);
buf.append("has been entered and is ready to execute.");
buf.append(nl);
appendIndent(buf, 2);
buf.append("At anytime during the entry of a query the cancel");
buf.append(nl);
appendIndent(buf, 3);
buf.append("character, '");
buf.append(CANCEL_CHAR);
buf.append("', may be entered alone on a line.");
buf.append(nl);
appendIndent(buf, 3);
buf.append("This removes all of the query text from the");
buf.append(nl);
appendIndent(buf, 3);
buf.append("the command interpreter.");
buf.append(nl);
appendIndent(buf, 2);
buf.append("Queries can also be ended by using a semicolon ';'");
buf.append(nl);
appendIndent(buf, 3);
buf.append("at the end of a line.");
}
if ((cmd & FUNC_CMD) != 0) {
buf.append(nl);
appendFunc(buf);
}
if ((cmd & PARAM_CMD) != 0) {
buf.append(nl);
appendParam(buf);
}
if ((cmd & CUBE_CMD) != 0) {
buf.append(nl);
appendCube(buf);
}
if ((cmd & ERROR_CMD) != 0) {
buf.append(nl);
appendError(buf);
}
if ((cmd & ECHO_CMD) != 0) {
buf.append(nl);
appendEcho(buf);
}
if ((cmd & EXPR_CMD) != 0) {
buf.append(nl);
appendExpr(buf);
}
if (cmd == ALL_CMD) {
// reexecute
buf.append(nl);
appendIndent(buf, 1);
buf.append("= <cr>");
buf.append(nl);
appendIndent(buf, 2);
buf.append("Re-Execute mdx query.");
}
if ((cmd & EXIT_CMD) != 0) {
// exit
buf.append(nl);
appendExit(buf);
}
return buf.toString();
}
protected static void appendIndent(StringBuffer buf, int i) {
while (i-- > 0) {
buf.append(CmdRunner.INDENT);
}
}
//////////////////////////////////////////////////////////////////////////
// set
//////////////////////////////////////////////////////////////////////////
protected static void appendSet(StringBuffer buf) {
appendIndent(buf, 1);
buf.append("set [ property[=value ] ] <cr>");
buf.append(nl);
appendIndent(buf, 2);
buf.append("With no args, prints all mondrian properties and values.");
buf.append(nl);
appendIndent(buf, 2);
buf.append("With \"property\" prints property's value.");
buf.append(nl);
appendIndent(buf, 2);
buf.append("With \"property=value\" set property to that value.");
}
protected String executeSet(String mdxCmd) {
StringBuffer buf = new StringBuffer(400);
String[] tokens = mdxCmd.split("\\s+");
if (tokens.length == 1) {
// list all properties
listPropertiesAll(buf);
} else if (tokens.length == 2) {
String arg = tokens[1];
int index = arg.indexOf('=');
if (index == -1) {
listProperty(arg, buf);
} else {
String[] nv = arg.split("=");
String name = nv[0];
String value = nv[1];
if (isProperty(name)) {
try {
if (setProperty(name, value)) {
this.connectString = null;
}
} catch (Exception ex) {
setError(ex);
}
} else {
buf.append("Bad property name:");
buf.append(name);
buf.append(nl);
}
}
} else {
buf.append("Bad command usage: \"");
buf.append(mdxCmd);
buf.append('"');
buf.append(nl);
appendSet(buf);
}
return buf.toString();
}
//////////////////////////////////////////////////////////////////////////
// log
//////////////////////////////////////////////////////////////////////////
protected static void appendLog(StringBuffer buf) {
appendIndent(buf, 1);
buf.append("log [ classname[=level ] ] <cr>");
buf.append(nl);
appendIndent(buf, 2);
buf.append("With no args, prints the current log level of all classes.");
buf.append(nl);
appendIndent(buf, 2);
buf.append("With \"classname\" prints the current log level of the class.");
buf.append(nl);
appendIndent(buf, 2);
buf.append("With \"classname=level\" set log level to new value.");
}
protected String executeLog(String mdxCmd) {
StringBuffer buf = new StringBuffer(200);
String[] tokens = mdxCmd.split("\\s+");
if (tokens.length == 1) {
Enumeration e = LogManager.getCurrentLoggers();
while (e.hasMoreElements()) {
Logger logger = (Logger) e.nextElement();
buf.append(logger.getName());
buf.append(':');
buf.append(logger.getLevel());
buf.append(nl);
}
} else if (tokens.length == 2) {
String arg = tokens[1];
int index = arg.indexOf('=');
if (index == -1) {
Logger logger = LogManager.exists(arg);
if (logger == null) {
buf.append("Bad log name: ");
buf.append(arg);
buf.append(nl);
} else {
buf.append(logger.getName());
buf.append(':');
buf.append(logger.getLevel());
buf.append(nl);
}
} else {
String[] nv = arg.split("=");
String classname = nv[0];
String levelStr = nv[1];
Logger logger = LogManager.getLogger(classname);
if (logger == null) {
buf.append("Bad log name: ");
buf.append(classname);
buf.append(nl);
} else {
Level level = Level.toLevel(levelStr, null);
if (level == null) {
buf.append("Bad log level: ");
buf.append(levelStr);
buf.append(nl);
} else {
logger.setLevel(level);
}
}
}
} else {
buf.append("Bad command usage: \"");
buf.append(mdxCmd);
buf.append('"');
buf.append(nl);
appendSet(buf);
}
return buf.toString();
}
//////////////////////////////////////////////////////////////////////////
// file
//////////////////////////////////////////////////////////////////////////
protected static void appendFile(StringBuffer buf) {
appendIndent(buf, 1);
buf.append("file [ filename | '=' ] <cr>");
buf.append(nl);
appendIndent(buf, 2);
buf.append("With no args, prints the last filename executed.");
buf.append(nl);
appendIndent(buf, 2);
buf.append("With \"filename\", read and execute filename .");
buf.append(nl);
appendIndent(buf, 2);
buf.append("With \"=\" character, re-read and re-execute previous filename .");
}
protected String executeFile(String mdxCmd) {
StringBuffer buf = new StringBuffer(512);
String[] tokens = mdxCmd.split("\\s+");
if (tokens.length == 1) {
if (this.filename != null) {
buf.append(this.filename);
}
} else if (tokens.length == 2) {
String token = tokens[1];
String nameOfFile = null;
if ((token.length() == 1) && (token.charAt(0) == EXECUTE_CHAR)) {
// file '='
if (this.filename == null) {
buf.append("Bad command usage: \"");
buf.append(mdxCmd);
buf.append("\", no file to re-execute");
buf.append(nl);
appendFile(buf);
} else {
nameOfFile = this.filename;
}
} else {
// file filename
nameOfFile = token;
}
if (nameOfFile != null) {
this.filename = nameOfFile;
try {
commandLoop(new File(this.filename));
} catch (IOException ex) {
setError(ex);
buf.append("Error: " +ex);
}
}
} else {
buf.append("Bad command usage: \"");
buf.append(mdxCmd);
buf.append('"');
buf.append(nl);
appendFile(buf);
}
return buf.toString();
}
//////////////////////////////////////////////////////////////////////////
// list
//////////////////////////////////////////////////////////////////////////
protected static void appendList(StringBuffer buf) {
appendIndent(buf, 1);
buf.append("list [ cmd | result ] <cr>");
buf.append(nl);
appendIndent(buf, 2);
buf.append("With no arguments, list previous cmd and result");
buf.append(nl);
appendIndent(buf, 2);
buf.append("With \"cmd\" argument, list the last mdx query cmd.");
buf.append(nl);
appendIndent(buf, 2);
buf.append("With \"result\" argument, list the last mdx query result.");
}
protected String executeList(String mdxCmd) {
StringBuffer buf = new StringBuffer(200);
String[] tokens = mdxCmd.split("\\s+");
if (tokens.length == 1) {
if (this.mdxCmd != null) {
buf.append(this.mdxCmd);
if (mdxResult != null) {
buf.append(nl);
buf.append(mdxResult);
}
} else if (mdxResult != null) {
buf.append(mdxResult);
}
} else if (tokens.length == 2) {
String arg = tokens[1];
if (arg.equals("cmd")) {
if (this.mdxCmd != null) {
buf.append(this.mdxCmd);
}
} else if (arg.equals("result")) {
if (mdxResult != null) {
buf.append(mdxResult);
}
} else {
buf.append("Bad sub command usage:");
buf.append(mdxCmd);
buf.append(nl);
appendList(buf);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?