cmdrunner.java
来自「数据仓库展示程序」· Java 代码 · 共 1,855 行 · 第 1/5 页
JAVA
1,855 行
} else {
buf.append("Bad command usage: \"");
buf.append(mdxCmd);
buf.append('"');
buf.append(nl);
appendList(buf);
}
return buf.toString();
}
//////////////////////////////////////////////////////////////////////////
// func
//////////////////////////////////////////////////////////////////////////
protected static void appendFunc(StringBuffer buf) {
appendIndent(buf, 1);
buf.append("func [ name ] <cr>");
buf.append(nl);
appendIndent(buf, 2);
buf.append("With no arguments, list all defined function names");
buf.append(nl);
appendIndent(buf, 2);
buf.append("With \"name\" argument, display the functions:");
buf.append(nl);
appendIndent(buf, 3);
buf.append("name, description, and syntax");
}
protected String executeFunc(String mdxCmd) {
StringBuffer buf = new StringBuffer(200);
String[] tokens = mdxCmd.split("\\s+");
final FunTable funTable = getConnection().getSchema().getFunTable();
if (tokens.length == 1) {
// prints names only once
List funInfoList = funTable.getFunInfoList();
Iterator it = funInfoList.iterator();
String prevName = null;
while (it.hasNext()) {
FunInfo fi = (FunInfo) it.next();
String name = fi.getName();
if (prevName == null || ! prevName.equals(name)) {
buf.append(name);
buf.append(nl);
prevName = name;
}
}
} else if (tokens.length == 2) {
String funcname = tokens[1];
List funInfoList = funTable.getFunInfoList();
List matches = new ArrayList();
Iterator it = funInfoList.iterator();
while (it.hasNext()) {
FunInfo fi = (FunInfo) it.next();
if (fi.getName().equalsIgnoreCase(funcname)) {
matches.add(fi);
}
}
if (matches.size() == 0) {
buf.append("Bad function name \"");
buf.append(funcname);
buf.append("\", usage:");
buf.append(nl);
appendList(buf);
} else {
it = matches.iterator();
boolean doname = true;
while (it.hasNext()) {
FunInfo fi = (FunInfo) it.next();
if (doname) {
buf.append(fi.getName());
buf.append(nl);
doname = false;
}
appendIndent(buf, 1);
buf.append(fi.getDescription());
buf.append(nl);
String[] sigs = fi.getSignatures();
if (sigs == null) {
appendIndent(buf, 2);
buf.append("Signature: ");
buf.append("NONE");
buf.append(nl);
} else {
for (int i = 0; i < sigs.length; i++) {
appendIndent(buf, 2);
buf.append(sigs[i]);
buf.append(nl);
}
}
/*
appendIndent(buf, 1);
buf.append("Return Type: ");
int returnType = fi.getReturnTypes();
if (returnType >= 0) {
buf.append(cat.getName(returnType));
} else {
buf.append("NONE");
}
buf.append(nl);
int[][] paramsArray = fi.getParameterTypes();
if (paramsArray == null) {
appendIndent(buf, 1);
buf.append("Paramter Types: ");
buf.append("NONE");
buf.append(nl);
} else {
for (int j = 0; j < paramsArray.length; j++) {
int[] params = paramsArray[j];
appendIndent(buf, 1);
buf.append("Paramter Types: ");
for (int k = 0; k < params.length; k++) {
int param = params[k];
buf.append(cat.getName(param));
buf.append(' ');
}
buf.append(nl);
}
}
*/
}
}
} else {
buf.append("Bad command usage: \"");
buf.append(mdxCmd);
buf.append('"');
buf.append(nl);
appendList(buf);
}
return buf.toString();
}
//////////////////////////////////////////////////////////////////////////
// param
//////////////////////////////////////////////////////////////////////////
protected static void appendParam(StringBuffer buf) {
appendIndent(buf, 1);
buf.append("param [ name[=value ] ] <cr>");
buf.append(nl);
appendIndent(buf, 2);
buf.append("With no argumnts, all param name/value pairs are printed.");
buf.append(nl);
appendIndent(buf, 2);
buf.append("With \"name\" argument, the value of the param is printed.");
buf.append(nl);
appendIndent(buf, 2);
buf.append("With \"name=value\" sets the parameter with name to value.");
buf.append(nl);
appendIndent(buf, 3);
buf.append(" If name is null, then unsets all parameters");
buf.append(nl);
appendIndent(buf, 3);
buf.append(" If value is null, then unsets the parameter associated with value");
}
protected String executeParam(String mdxCmd) {
StringBuffer buf = new StringBuffer(200);
String[] tokens = mdxCmd.split("\\s+");
if (tokens.length == 1) {
// list all properties
listParameterNameValues(buf);
} else if (tokens.length == 2) {
String arg = tokens[1];
int index = arg.indexOf('=');
if (index == -1) {
String name = arg;
if (isParam(name)) {
listParam(name, buf);
} else {
buf.append("Bad parameter name:");
buf.append(name);
buf.append(nl);
}
} else {
String[] nv = arg.split("=");
String name = (nv.length == 0) ? null : nv[0];
String value = (nv.length == 2) ? nv[1] : null;
setParameter(name, value);
}
} else {
buf.append("Bad command usage: \"");
buf.append(mdxCmd);
buf.append('"');
buf.append(nl);
appendSet(buf);
}
return buf.toString();
}
//////////////////////////////////////////////////////////////////////////
// cube
//////////////////////////////////////////////////////////////////////////
protected static void appendCube(StringBuffer buf) {
appendIndent(buf, 1);
buf.append("cube [ cubename [ name [=value | command] ] ] <cr>");
buf.append(nl);
appendIndent(buf, 2);
buf.append("With no argumnts, all cubes are listed by name.");
buf.append(nl);
appendIndent(buf, 2);
buf.append("With \"cubename\" argument, cube attribute name/values for:");
buf.append(nl);
appendIndent(buf, 3);
buf.append("fact table (readonly)");
buf.append(nl);
appendIndent(buf, 3);
buf.append("aggregate caching (readwrite)");
buf.append(nl);
appendIndent(buf, 2);
buf.append("are printed");
buf.append(nl);
appendIndent(buf, 2);
buf.append("With \"cubename name=value\" sets the readwrite attribute with name to value.");
buf.append(nl);
appendIndent(buf, 2);
buf.append("With \"cubename command\" executes the commands:");
buf.append(nl);
appendIndent(buf, 3);
buf.append("clearCache");
}
protected String executeCube(String mdxCmd) {
StringBuffer buf = new StringBuffer(200);
String[] tokens = mdxCmd.split("\\s+");
if (tokens.length == 1) {
// list all properties
listCubeName(buf);
} else if (tokens.length == 2) {
String cubename = tokens[1];
listCubeAttribues(cubename, buf);
} else if (tokens.length == 3) {
String cubename = tokens[1];
String arg = tokens[2];
int index = arg.indexOf('=');
if (index == -1) {
// its a commnd
String command = arg;
executeCubeCommand(cubename, command, buf);
} else {
String[] nv = arg.split("=");
String name = (nv.length == 0) ? null : nv[0];
String value = (nv.length == 2) ? nv[1] : null;
setCubeAttribute(cubename, name, value, buf);
}
} else {
buf.append("Bad command usage: \"");
buf.append(mdxCmd);
buf.append('"');
buf.append(nl);
appendSet(buf);
}
return buf.toString();
}
//////////////////////////////////////////////////////////////////////////
// error
//////////////////////////////////////////////////////////////////////////
protected static void appendError(StringBuffer buf) {
appendIndent(buf, 1);
buf.append("error [ msg | stack ] <cr>");
buf.append(nl);
appendIndent(buf, 2);
buf.append("With no argumnts, both message and stack are printed.");
buf.append(nl);
appendIndent(buf, 2);
buf.append("With \"msg\" argument, the Error message is printed.");
buf.append(nl);
appendIndent(buf, 2);
buf.append("With \"stack\" argument, the Error stack trace is printed.");
}
protected String executeError(String mdxCmd) {
StringBuffer buf = new StringBuffer(200);
String[] tokens = mdxCmd.split("\\s+");
if (tokens.length == 1) {
if (error != null) {
buf.append(error);
if (stack != null) {
buf.append(nl);
buf.append(stack);
}
} else if (stack != null) {
buf.append(stack);
}
} else if (tokens.length == 2) {
String arg = tokens[1];
if (arg.equals("msg")) {
if (error != null) {
buf.append(error);
}
} else if (arg.equals("stack")) {
if (stack != null) {
buf.append(stack);
}
} else {
buf.append("Bad sub command usage:");
buf.append(mdxCmd);
buf.append(nl);
appendList(buf);
}
} else {
buf.append("Bad command usage: \"");
buf.append(mdxCmd);
buf.append('"');
buf.append(nl);
appendList(buf);
}
return buf.toString();
}
//////////////////////////////////////////////////////////////////////////
// echo
//////////////////////////////////////////////////////////////////////////
protected static void appendEcho(StringBuffer buf) {
appendIndent(buf, 1);
buf.append("echo text <cr>");
buf.append(nl);
appendIndent(buf, 2);
buf.append("echo text to standard out.");
}
protected String executeEcho(String mdxCmd) {
try {
String resultString = (mdxCmd.length() == 4)
? "" : mdxCmd.substring(4);
return resultString;
} catch (Exception ex) {
setError(ex);
//return error;
return null;
}
}
//////////////////////////////////////////////////////////////////////////
// expr
//////////////////////////////////////////////////////////////////////////
protected static void appendExpr(StringBuffer buf) {
appendIndent(buf, 1);
buf.append("expr cubename expression<cr>");
buf.append(nl);
appendIndent(buf, 2);
buf.append("evaluate an expression against a cube.");
buf.append(nl);
appendIndent(buf, 2);
buf.append("where: ");
buf.append(nl);
appendIndent(buf, 3);
buf.append("cubename is single word or string using [], '' or \"\"");
buf.append(nl);
appendIndent(buf, 3);
buf.append("expression is string using \"\"");
}
protected String executeExpr(String mdxCmd) {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?