mondrian.tui
Class CmdRunner

java.lang.Object
  extended by mondrian.tui.CmdRunner

public class CmdRunner
extends Object

Command line utility which reads and executes MDX commands.

TODO: describe how to use this class.

Version:
$Id: //open/mondrian-release/3.2/src/main/mondrian/tui/CmdRunner.java#1 $
Author:
Richard Emberson

Nested Class Summary
protected static class CmdRunner.Options
           
 
Field Summary
(package private) static NumberFormat nf
           
 
Constructor Summary
CmdRunner(CmdRunner.Options options, PrintWriter out)
          Creates a CmdRunner.
 
Method Summary
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)
           
(package private)  void clearError()
           
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.
 long getQueryTime()
           
 boolean getTimeQueries()
           
 long getTotalQueryTime()
           
 String highCardToString(Result result)
          Converts a Result 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's to 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's to the buffer.
protected  String reExecuteMdxCmd()
           
 Result runQuery(String queryString, boolean loadParams)
          Executes a query and returns the result.
 void setCubeAttribute(String cubename, String name, String value, StringBuilder buf)
           
(package private)  void setError(String s)
           
(package private)  void setError(Throwable t)
           
static void setParameter(String name, String value)
           
static boolean setProperty(String name, String value)
           
 void setTimeQueries(boolean timeQueries)
           
 String toString(Result result)
          Converts a Result object to a string
protected static void usage(String msg, PrintStream out)
          Prints a usage message.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

nf

static NumberFormat nf
Constructor Detail

CmdRunner

public CmdRunner(CmdRunner.Options options,
                 PrintWriter out)
Creates a CmdRunner.

Parameters:
options - Option set, or null to use default options
out - Output writer, or null to use System.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()

setError

void setError(String s)

setError

void setError(Throwable t)

clearError

void clearError()

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)

setProperty

public static boolean setProperty(String name,
                                  String value)

loadParameters

public void loadParameters(Query query)

loadParameter

public void loadParameter(Query query,
                          Parameter param)

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)

setParameter

public static void setParameter(String name,
                                String value)

getCubes

public Cube[] getCubes()

getCube

public Cube getCube(String name)

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

toString

public String toString(Result result)
Converts a Result object to a string

Returns:
String version of mondrian Result object.

highCardToString

public String highCardToString(Result result)
Converts a Result 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.

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's to 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's to 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

executeHelp

protected static String executeHelp(String mdxCmd)

appendIndent

protected static void appendIndent(StringBuilder buf,
                                   int i)

appendSet

protected static void appendSet(StringBuilder buf)

executeSet

protected String executeSet(String mdxCmd)

appendLog

protected static void appendLog(StringBuilder buf)

executeLog

protected String executeLog(String mdxCmd)

appendFile

protected static void appendFile(StringBuilder buf)

executeFile

protected String executeFile(String mdxCmd)

appendList

protected static void appendList(StringBuilder buf)

executeList

protected String executeList(String mdxCmd)

appendFunc

protected static void appendFunc(StringBuilder buf)

executeFunc

protected String executeFunc(String mdxCmd)

appendParam

protected static void appendParam(StringBuilder buf)

executeParam

protected String executeParam(String mdxCmd)

appendCube

protected static void appendCube(StringBuilder buf)

executeCube

protected String executeCube(String mdxCmd)

appendError

protected static void appendError(StringBuilder buf)

executeError

protected String executeError(String mdxCmd)

appendEcho

protected static void appendEcho(StringBuilder buf)

executeEcho

protected String executeEcho(String mdxCmd)

appendExpr

protected static void appendExpr(StringBuilder buf)

executeExpr

protected String executeExpr(String mdxCmd)

appendExit

protected static void appendExit(StringBuilder buf)

reExecuteMdxCmd

protected String reExecuteMdxCmd()

executeMdxCmd

protected String executeMdxCmd(String mdxCmd)

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 message
out - Output stream

main

public static void main(String[] args)
                 throws Exception
Throws:
Exception

Get Mondrian at SourceForge.net. Fast, secure and free Open Source software downloads