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 class
CmdRunner.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 void
appendCube(StringBuilder buf)
protected static void
appendEcho(StringBuilder buf)
protected static void
appendError(StringBuilder buf)
protected static void
appendExit(StringBuilder buf)
protected static void
appendExpr(StringBuilder buf)
protected static void
appendFile(StringBuilder buf)
protected static void
appendFunc(StringBuilder buf)
protected static void
appendIndent(StringBuilder buf, int i)
protected static void
appendList(StringBuilder buf)
protected static void
appendLog(StringBuilder buf)
protected static void
appendParam(StringBuilder buf)
protected static void
appendSet(StringBuilder buf)
protected void
commandLoop(boolean interactive)
protected void
commandLoop(File file)
protected void
commandLoop(Reader in, boolean interactive)
The Command Loop where lines are read from the InputStream and interpreted.protected void
commandLoop(String mdxCmd, boolean interactive)
protected void
debug(String msg)
String
execute(String queryString)
Executes a query and returns the result as a string.protected String
executeCube(String mdxCmd)
void
executeCubeCommand(String cubename, String command, StringBuilder buf)
protected String
executeEcho(String mdxCmd)
protected String
executeError(String mdxCmd)
protected String
executeExpr(String mdxCmd)
protected String
executeFile(String mdxCmd)
protected String
executeFunc(String mdxCmd)
protected static String
executeHelp(String mdxCmd)
protected String
executeList(String mdxCmd)
protected String
executeLog(String mdxCmd)
protected String
executeMdxCmd(String mdxCmd)
protected String
executeParam(String mdxCmd)
protected String
executeSet(String mdxCmd)
protected static String
getCatalogURLProperty()
Connection
getConnection()
Gets a connection to Mondrian.Connection
getConnection(boolean fresh)
Gets a Mondrian connection, creating a new one if fresh is true.String
getConnectString()
String
getConnectString(boolean fresh)
protected static String
getConnectStringProperty()
Cube
getCube(String name)
Cube[]
getCubes()
protected static String
getJdbcDriversProperty()
protected static String
getJdbcPasswordProperty()
protected static String
getJdbcURLProperty()
protected static String
getJdbcUserProperty()
protected static int
getLine(Reader reader, StringBuilder line)
Read the next line of input.org.olap4j.OlapConnection
getOlapConnection()
Gets an olap4j connection, creating a new one if fresh is true.long
getQueryTime()
boolean
getTimeQueries()
long
getTotalQueryTime()
String
highCardToString(Result result)
Converts aResult
object to a string printing to standard output directly, without buffering.static boolean
isParam(String name)
static boolean
isProperty(String propertyName)
void
listCubeAttribues(String name, StringBuilder buf)
void
listCubeName(StringBuilder buf)
static void
listParam(String name, StringBuilder buf)
static void
listParameterNameValues(StringBuilder buf)
static void
listPropertiesAll(StringBuilder buf)
static void
listProperty(String propertyName, StringBuilder buf)
static void
listPropertyNames(StringBuilder buf)
void
loadParameter(Query query, Parameter param)
void
loadParameters(Query query)
protected static void
loadPropertiesFromFile(String propFile)
static void
main(String[] args)
void
makeConnectString()
void
noCubeCaching()
mondrian.tui.CmdRunner.Expr
parseParameter(String value)
protected void
printQueryTime()
protected void
printResults(String resultString)
protected void
processSoapXmla(File file, int validateXmlaResponse)
This is called to process a file containing XMLA as the contents of SOAP xml.protected void
processXmla(File file, int validateXmlaResponce)
This is called to process a file containing XMLA xml.protected static int
readBlock(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 String
readLine(Reader reader, boolean inMdxCmd)
Gather up a line ending in '\n' or EOF.protected static int
readString(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 String
reExecuteMdxCmd()
Result
runQuery(String queryString, boolean loadParams)
Executes a query and returns the result.<T> T
runQuery(String queryString, Util.Functor1<T,org.olap4j.CellSet> f)
Executes a query and processes the result using a callback.void
setCubeAttribute(String cubename, String name, String value, StringBuilder buf)
static void
setParameter(String name, String value)
static boolean
setProperty(String name, String value)
void
setTimeQueries(boolean timeQueries)
String
toString(Result result)
Converts aResult
object to a stringprotected static void
usage(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
Result
object
-
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 aResult
object to a string- Returns:
- String version of mondrian Result object.
-
highCardToString
public String highCardToString(Result result)
Converts aResult
object 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 SQLException
Gets 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
-
-