Package mondrian.tui
Class CmdRunner
- java.lang.Object
-
- mondrian.tui.CmdRunner
-
public class CmdRunner extends Object
Command line utility which reads and executes MDX commands.TODO: describe how to use this class.
- Author:
- Richard Emberson
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classCmdRunner.Options
-
Constructor Summary
Constructors Constructor Description CmdRunner(CmdRunner.Options options, PrintWriter out)Creates aCmdRunner.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected static voidappendCube(StringBuilder buf)protected static voidappendEcho(StringBuilder buf)protected static voidappendError(StringBuilder buf)protected static voidappendExit(StringBuilder buf)protected static voidappendExpr(StringBuilder buf)protected static voidappendFile(StringBuilder buf)protected static voidappendFunc(StringBuilder buf)protected static voidappendIndent(StringBuilder buf, int i)protected static voidappendList(StringBuilder buf)protected static voidappendLog(StringBuilder buf)protected static voidappendParam(StringBuilder buf)protected static voidappendSet(StringBuilder buf)protected voidcommandLoop(boolean interactive)protected voidcommandLoop(File file)protected voidcommandLoop(Reader in, boolean interactive)The Command Loop where lines are read from the InputStream and interpreted.protected voidcommandLoop(String mdxCmd, boolean interactive)protected voiddebug(String msg)Stringexecute(String queryString)Executes a query and returns the result as a string.protected StringexecuteCube(String mdxCmd)voidexecuteCubeCommand(String cubename, String command, StringBuilder buf)protected StringexecuteEcho(String mdxCmd)protected StringexecuteError(String mdxCmd)protected StringexecuteExpr(String mdxCmd)protected StringexecuteFile(String mdxCmd)protected StringexecuteFunc(String mdxCmd)protected static StringexecuteHelp(String mdxCmd)protected StringexecuteList(String mdxCmd)protected StringexecuteLog(String mdxCmd)protected StringexecuteMdxCmd(String mdxCmd)protected StringexecuteParam(String mdxCmd)protected StringexecuteSet(String mdxCmd)protected static StringgetCatalogURLProperty()ConnectiongetConnection()Gets a connection to Mondrian.ConnectiongetConnection(boolean fresh)Gets a Mondrian connection, creating a new one if fresh is true.StringgetConnectString()StringgetConnectString(boolean fresh)protected static StringgetConnectStringProperty()CubegetCube(String name)Cube[]getCubes()protected static StringgetJdbcDriversProperty()protected static StringgetJdbcPasswordProperty()protected static StringgetJdbcURLProperty()protected static StringgetJdbcUserProperty()protected static intgetLine(Reader reader, StringBuilder line)Read the next line of input.org.olap4j.OlapConnectiongetOlapConnection()Gets an olap4j connection, creating a new one if fresh is true.longgetQueryTime()booleangetTimeQueries()longgetTotalQueryTime()StringhighCardToString(Result result)Converts aResultobject to a string printing to standard output directly, without buffering.static booleanisParam(String name)static booleanisProperty(String propertyName)voidlistCubeAttribues(String name, StringBuilder buf)voidlistCubeName(StringBuilder buf)static voidlistParam(String name, StringBuilder buf)static voidlistParameterNameValues(StringBuilder buf)static voidlistPropertiesAll(StringBuilder buf)static voidlistProperty(String propertyName, StringBuilder buf)static voidlistPropertyNames(StringBuilder buf)voidloadParameter(Query query, Parameter param)voidloadParameters(Query query)protected static voidloadPropertiesFromFile(String propFile)static voidmain(String[] args)voidmakeConnectString()voidnoCubeCaching()mondrian.tui.CmdRunner.ExprparseParameter(String value)protected voidprintQueryTime()protected voidprintResults(String resultString)protected voidprocessSoapXmla(File file, int validateXmlaResponse)This is called to process a file containing XMLA as the contents of SOAP xml.protected voidprocessXmla(File file, int validateXmlaResponce)This is called to process a file containing XMLA xml.protected static intreadBlock(Reader reader, StringBuilder line, int offset, String startDelim, String endDelim, boolean allowEscape, boolean addToBuf, StringBuilder buf, int i)Start of a delimted block, read all of it even if it spans more than one line adding each line'sto the buffer. protected static StringreadLine(Reader reader, boolean inMdxCmd)Gather up a line ending in '\n' or EOF.protected static intreadString(Reader reader, StringBuilder line, int offset, StringBuilder buf, int i)Start of a string, read all of it even if it spans more than one line adding each line'sto the buffer. protected StringreExecuteMdxCmd()ResultrunQuery(String queryString, boolean loadParams)Executes a query and returns the result.<T> TrunQuery(String queryString, Util.Functor1<T,org.olap4j.CellSet> f)Executes a query and processes the result using a callback.voidsetCubeAttribute(String cubename, String name, String value, StringBuilder buf)static voidsetParameter(String name, String value)static booleansetProperty(String name, String value)voidsetTimeQueries(boolean timeQueries)StringtoString(Result result)Converts aResultobject to a stringprotected static voidusage(String msg, PrintStream out)Prints a usage message.
-
-
-
Constructor Detail
-
CmdRunner
public CmdRunner(CmdRunner.Options options, PrintWriter out)
Creates aCmdRunner.- Parameters:
options- Option set, or null to use default optionsout- Output writer, or null to useSystem.out.
-
-
Method Detail
-
setTimeQueries
public void setTimeQueries(boolean timeQueries)
-
getTimeQueries
public boolean getTimeQueries()
-
getQueryTime
public long getQueryTime()
-
getTotalQueryTime
public long getTotalQueryTime()
-
noCubeCaching
public void noCubeCaching()
-
listPropertyNames
public static void listPropertyNames(StringBuilder buf)
-
listPropertiesAll
public static void listPropertiesAll(StringBuilder buf)
-
listProperty
public static void listProperty(String propertyName, StringBuilder buf)
-
isProperty
public static boolean isProperty(String propertyName)
-
loadParameters
public void loadParameters(Query query)
-
parseParameter
public mondrian.tui.CmdRunner.Expr parseParameter(String value)
-
listParameterNameValues
public static void listParameterNameValues(StringBuilder buf)
-
listParam
public static void listParam(String name, StringBuilder buf)
-
isParam
public static boolean isParam(String name)
-
getCubes
public Cube[] getCubes()
-
listCubeName
public void listCubeName(StringBuilder buf)
-
listCubeAttribues
public void listCubeAttribues(String name, StringBuilder buf)
-
executeCubeCommand
public void executeCubeCommand(String cubename, String command, StringBuilder buf)
-
setCubeAttribute
public void setCubeAttribute(String cubename, String name, String value, StringBuilder buf)
-
execute
public String execute(String queryString)
Executes a query and returns the result as a string.- Parameters:
queryString- MDX query text- Returns:
- result String
-
runQuery
public Result runQuery(String queryString, boolean loadParams)
Executes a query and returns the result.- Parameters:
queryString- MDX query text- Returns:
- a
Resultobject
-
runQuery
public <T> T runQuery(String queryString, Util.Functor1<T,org.olap4j.CellSet> f)
Executes a query and processes the result using a callback.- Parameters:
queryString- MDX query text
-
toString
public String toString(Result result)
Converts aResultobject to a string- Returns:
- String version of mondrian Result object.
-
highCardToString
public String highCardToString(Result result)
Converts aResultobject to a string printing to standard output directly, without buffering.- Returns:
- null String since output is dump directly to stdout.
-
makeConnectString
public void makeConnectString()
-
getConnection
public Connection getConnection()
Gets a connection to Mondrian.- Returns:
- Mondrian
Connection
-
getConnection
public Connection getConnection(boolean fresh)
Gets a Mondrian connection, creating a new one if fresh is true.- Returns:
- mondrian Connection.
-
getOlapConnection
public org.olap4j.OlapConnection getOlapConnection() throws SQLExceptionGets an olap4j connection, creating a new one if fresh is true.- Returns:
- mondrian Connection.
- Throws:
SQLException
-
getConnectString
public String getConnectString()
-
getConnectString
public String getConnectString(boolean fresh)
-
debug
protected void debug(String msg)
-
getConnectStringProperty
protected static String getConnectStringProperty()
-
getJdbcURLProperty
protected static String getJdbcURLProperty()
-
getJdbcUserProperty
protected static String getJdbcUserProperty()
-
getJdbcPasswordProperty
protected static String getJdbcPasswordProperty()
-
getCatalogURLProperty
protected static String getCatalogURLProperty()
-
getJdbcDriversProperty
protected static String getJdbcDriversProperty()
-
commandLoop
protected void commandLoop(boolean interactive) throws IOException- Throws:
IOException
-
commandLoop
protected void commandLoop(File file) throws IOException
- Throws:
IOException
-
commandLoop
protected void commandLoop(String mdxCmd, boolean interactive) throws IOException
- Throws:
IOException
-
commandLoop
protected void commandLoop(Reader in, boolean interactive)
The Command Loop where lines are read from the InputStream and interpreted. If interactive then prompts are printed.- Parameters:
in- Input reader (preferably buffered)interactive- Whether the session is interactive
-
printResults
protected void printResults(String resultString)
-
printQueryTime
protected void printQueryTime()
-
readLine
protected static String readLine(Reader reader, boolean inMdxCmd) throws IOException
Gather up a line ending in '\n' or EOF. Returns null if at EOF. Strip out comments. If a comment character appears within a string then its not a comment. Strings are defined with "\"" or "'" characters. Also, a string can span more than one line (a nice little complication). So, if we read a string, then we consume the whole string as part of the "line" returned, including EOL characters. If an escape character is seen '\\', then it and the next character is added to the line regardless of what the next character is.- Throws:
IOException
-
getLine
protected static int getLine(Reader reader, StringBuilder line) throws IOException
Read the next line of input. Return the terminating character, -1 for end of file, or \n or \r. Add \n and \r to the end of the buffer to be included in strings and comment blocks.- Throws:
IOException
-
readString
protected static int readString(Reader reader, StringBuilder line, int offset, StringBuilder buf, int i) throws IOException
Start of a string, read all of it even if it spans more than one line adding each line'sto the buffer. - Throws:
IOException
-
readBlock
protected static int readBlock(Reader reader, StringBuilder line, int offset, String startDelim, String endDelim, boolean allowEscape, boolean addToBuf, StringBuilder buf, int i) throws IOException
Start of a delimted block, read all of it even if it spans more than one line adding each line'sto the buffer. A delimited block is a delimited comment (/\* ... *\/), or a string. - Throws:
IOException
-
processSoapXmla
protected void processSoapXmla(File file, int validateXmlaResponse) throws Exception
This is called to process a file containing XMLA as the contents of SOAP xml.- Throws:
Exception
-
processXmla
protected void processXmla(File file, int validateXmlaResponce) throws Exception
This is called to process a file containing XMLA xml.- Throws:
Exception
-
appendIndent
protected static void appendIndent(StringBuilder buf, int i)
-
appendSet
protected static void appendSet(StringBuilder buf)
-
appendLog
protected static void appendLog(StringBuilder buf)
-
appendFile
protected static void appendFile(StringBuilder buf)
-
appendList
protected static void appendList(StringBuilder buf)
-
appendFunc
protected static void appendFunc(StringBuilder buf)
-
appendParam
protected static void appendParam(StringBuilder buf)
-
appendCube
protected static void appendCube(StringBuilder buf)
-
appendError
protected static void appendError(StringBuilder buf)
-
appendEcho
protected static void appendEcho(StringBuilder buf)
-
appendExpr
protected static void appendExpr(StringBuilder buf)
-
appendExit
protected static void appendExit(StringBuilder buf)
-
reExecuteMdxCmd
protected String reExecuteMdxCmd()
-
loadPropertiesFromFile
protected static void loadPropertiesFromFile(String propFile) throws IOException
- Throws:
IOException
-
usage
protected static void usage(String msg, PrintStream out)
Prints a usage message.- Parameters:
msg- Prefix to the messageout- Output stream
-
-