You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafodion.apache.org by li...@apache.org on 2016/12/08 00:45:35 UTC
[08/38] incubator-trafodion git commit: convert trafci project into
maven project
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/de7e7d4e/core/conn/trafci/src/org/trafodion/ci/InterfaceQuery.java
----------------------------------------------------------------------
diff --git a/core/conn/trafci/src/org/trafodion/ci/InterfaceQuery.java b/core/conn/trafci/src/org/trafodion/ci/InterfaceQuery.java
deleted file mode 100644
index 5bd73cb..0000000
--- a/core/conn/trafci/src/org/trafodion/ci/InterfaceQuery.java
+++ /dev/null
@@ -1,4378 +0,0 @@
-// @@@ START COPYRIGHT @@@
-//
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-//
-// @@@ END COPYRIGHT @@@
-
-package org.trafodion.ci;
-
-import java.io.ByteArrayInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.File;
-import java.io.FilenameFilter;
-import java.io.InputStream;
-import java.sql.DatabaseMetaData;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.text.DateFormat;
-import java.util.Arrays;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Timer;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.regex.PatternSyntaxException;
-import java.sql.PreparedStatement;
-
-import org.trafodion.jdbc.t4.TrafT4Statement;
-
-import java.lang.InterruptedException;
-
-import java.util.Map;
-import java.util.TreeMap;
-import java.util.Vector;
-import java.sql.Connection;
-import sun.misc.Signal;
-import sun.misc.SignalHandler;
-import java.net.UnknownHostException;
-
-public class InterfaceQuery extends QueryWrapper implements SessionDefaults {
- private HashMap<String, String> iqKeyMap = null;
- private HashMap<String, String> envMap = null;
- private FileWriter spoolWriter = null;
- private FileReader obeyReader = null;
- private String spoolFileName = null;
- private Connection newConn = null;
- private SignalHandler LHCTRLCHandler = null;
- private SignalHandler DelayCTRLCHandler = null;
- private Signal INTSignal = null;
- private int totalCount = 0;
- private boolean doTrace = Boolean.getBoolean(SessionDefaults.PROP_TRACE);
- private boolean printConnTime = false;
- private String strFilter = "";
-
- private Thread curThread = null;
- private int maxDelayVal = -1;
-
- /**
- * Final String Initialization.
- */
- private final String infoNotAvailable = "Information not available.";
- private final String ciServerErrMsg = "An internal server error has occurred. Please contact support.";
-
- InterfaceQuery() {
- }
-
- InterfaceQuery(Session sessObj) {
- super(sessObj);
- iqKeyMap = new HashMap<String,String>();
- envMap = sessObj.getEnvMap();
- loadIqKeyWordMap();
- loadEnvVarMap(); // loads the env variables in the pattern hashmap
- addEnvValuesMap(); // loads env values into the env hash map
- if (sessObj.getCaller() != SessionDefaults.PRUNI) {
- LHCTRLCHandler = new SignalHandler() {
- public void handle(Signal sig) {
- killProcess();
- }
- };
-
- /* Ctrl+C handler for the delay command */
- DelayCTRLCHandler = new SignalHandler() {
- public void handle(Signal sig) {
- if (curThread != null)
- curThread.interrupt();
-
- }
- };
-
- try {
- INTSignal = new Signal("INT");
- Signal.handle(INTSignal, LHCTRLCHandler);
- } catch (Exception e) {
- }
- }
-
- String strConnTime = System
- .getProperty(SessionDefaults.PROP_PRINT_TIME);
- if ((strConnTime != null) && strConnTime.equalsIgnoreCase("y")) {
- printConnTime = true;
- }
-
- String maxDelayStr = System.getProperty(SessionDefaults.PROP_MAX_DELAY);
- if (maxDelayStr != null)
- maxDelayVal = Integer.parseInt(maxDelayStr) * 1000;
- }
-
- void killProcess() {
- Query qryObj = sessObj.getQuery();
- if (qryObj != null && qryObj.getQueryId() == LOCALHOST) {
- if (sessObj.getProcObj() != null) {
- sessObj.getProcObj().destroy();
- sessObj.setProcObj(null);
- }
- }
- }
-
- public void execute() throws UnKnownInterfaceCommand, SQLException,
- IOException, UserInterruption {
- String cmdStr = null;
- int cmdNo = 0;
- init();
- isMultiLine = false; // flag to check if the input line can be entered
- // in multline.
- blankLiner = false;
-
- readQuery();
-
- // Move the pointer to the next key word as we already know the
- // first key word for all interface commands which would have been
- // set by the validateQuery
- //
- String fToken = parser.getNextKeyToken();
-
- // put the timer on hold
- // sessObj.setTimerHold();
-
- // get the QueryId and directly process that command
- sessObj.setQryStartTime();
-
- switch (sessObj.getQuery().getQueryId()) {
-
- case SECTION:
- sessObj.getQuery().resetQueryText("");
- break;
-
- case HELP:
- handleHelp();
- break;
-
- case CLEAR:
- handleClearCommand();
- break;
-
- case MODE:
- writer.writeln();
- writer.writeError(sessObj, SessionError.CMD_NOT_SEAQUEST_SUPPORTED);
- break;
-
- case SET:
- execSet();
- break;
-
- case SHOW:
- execShow();
- break;
-
- case GET:
- execGet();
- break;
-
- case CONNECT:
- handleConnect();
- break;
-
- case RECONNECT:
- handleReconnect();
- break;
-
- case EXIT:
- case DISCONNECT:
- handleDisConnect();
- break;
-
- case ED:
- case EDIT:
- break;
-
- case SPOOL:
- case LOG:
- execSpool();
- break;
-
- case SLASH:
- case RUN:
- handleRunCommand();
- break;
-
- case AT:
- case OBEY:
- execObey();
- break;
-
- case RESET:
- handleResetCommand();
- break;
-
- case HISTORY:
- handleHistory();
- break;
-
- case FC:
- case REPEAT:
- handleRepeatCommand(cmdStr, cmdNo);
- break;
-
- case SESSION:
- case ENV:
- execEnv();
- break;
-
- case SAVEHIST:
- handleSaveHistory();
- break;
-
- case VERSION:
- handleVersion();
- break;
-
- case ERROR:
- formatResults(SessionError.NOT_SUPPORT + SqlEnum.ERROR.toString() + " command.");
- break;
-
- case LOCALHOST:
- handleHostCommand();
- break;
-
- case DELAY:
- handleDelay();
- break;
-
- case ALIAS:
- handleAlias();
- break;
-
- case DOTSEC:
- case DOTCS:
- case DOTSQL:
- case DOTNS:
- case DOTWMS:
-
- if (!sessObj.isDBConnExists()) // Added 2010-03-01
- {
- displayNoConnInfo();
- break;
- }
-
- if (!parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- String secondToken = parser.lookAtNextToken().toUpperCase();
-
- if (secondToken.equalsIgnoreCase(".SEC")
- || secondToken.equalsIgnoreCase(".CS")
- || secondToken.equalsIgnoreCase(".NS")) {
- formatResults(SessionError.NOT_SUPPORT
- + secondToken.substring(1) + " mode.");
- }
-
- if (secondToken.equalsIgnoreCase(".SQL")
- || secondToken.equalsIgnoreCase(".WMS")) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
-
- rewriteQryString(sessObj.getStrMode(), fToken.substring(1));
- sessObj.setDotMode(fToken.substring(1));
- ByteArrayInputStream bais = new ByteArrayInputStream(qryObj
- .getQueryText().getBytes());
- sessObj.setLogCmdEcho(false);
- sessObj.setDotModeCmd(true);
- sessObj.setHistOn(false);
- sessObj.setPrevMode(sessObj.getMode());
- this.execObeyStream(bais, "");
- break;
-
- } // end switch
- sessObj.setQryEndTime();
- // sessObj.setLastError(sessObj.getQuery().getStatusCode());
- } // end execute
-
- /* parameterized types not available in 1.4, must cast below */
- class FilenameComparator implements Comparator<File> {
-
- // sort alphabetically
- public int compare(File fa, File fb) {
- return fb.getName().compareToIgnoreCase(
- fa.getName());
- }
- }
-
- public void execObeyStream(InputStream theStream, String clzName)
- throws IOException {
- obeyReader = new FileReader();
-
- try {
- obeyReader.initializeStream(theStream, clzName);
- sessObj.getReader().setObeyReader(obeyReader);
- if (sessObj.getReader().getReadMode() != SessionDefaults.OBEY_READ_MODE) {
- sessObj.getReader().setReadMode(OBEY_READ_MODE);
- sessObj.setSessionType(false);
- }
-
- } catch (IOException e) {
- throw e;
- }
-
- }
-
- public void execObey() throws IOException {
- FilenameFilter filter;
- File file = null;
- Comparator<File> fileAlphabetize = new FilenameComparator();
-
- String obeyFileName = parser.getNextFileToken();
- obeyFileName = (obeyFileName == null) ? "" : obeyFileName.trim();
-
- if (obeyFileName.equals("")) {
- // if user just hit enter, prompt for a file
- if (sessObj.isSessionInteractive()) {
- try {
-
- String defaultVal = "*.sql";
- String prompt = "Enter the script filename [" + defaultVal
- + "] :";
- sessObj.getConsoleWriter()
- .print(utils.formatString(prompt,
- prompt.length() + 1, ' '));
- obeyFileName = sessObj.getReader().getLine();
- if ((obeyFileName == null || obeyFileName.trim().equals(""))) {
- obeyFileName = defaultVal;
- }
-
- obeyFileName = obeyFileName.trim();
-
- } catch (UserInterruption ui) {
- return;
- }
- } else {
- sessionError('E', new ErrorObject(
- SessionError.OBEY_BLANK_SESSION_ERR.errorCode(),
- SessionError.OBEY_BLANK_SESSION_ERR.errorMessage()));
- return;
- }
- }
-
- // obtain filter at the end of the filename
- file = new File(obeyFileName);
-
- // test for slash, add on at end
- boolean addSlash = obeyFileName.endsWith(File.separator) ? true : false;
- if (file.getParent() != null) {
- obeyFileName = file.getAbsolutePath(); // java strips last slash
- if (addSlash)
- obeyFileName += File.separator;
- } else if (file.exists() && file.isDirectory() && !addSlash) {
- obeyFileName += File.separator;
- file = new File(obeyFileName);
- }
-
- if (file.exists()) {
- if (file.isDirectory())
- strFilter = "*.sql";
- else
- file = new File(obeyFileName);
- } else if (!obeyFileName.endsWith(File.separator)
- && (obeyFileName.indexOf("*") != -1 || obeyFileName
- .indexOf("?") != -1)) {
- strFilter = file.getName();
- obeyFileName = file.getParent();
- if (obeyFileName == null)
- obeyFileName = System.getProperty("user.dir");
-
- file = new File(obeyFileName);
- } else {
- sessionError(
- 'E',
- new ErrorObject(SessionError.OBEY_PATH_NOT_FOUND
- .errorCode(), SessionError.OBEY_PATH_NOT_FOUND
- .errorMessage()));
- return;
- }
-
- // windows/dos-style wildcards, * really means .* and ? means . in regex
- // terms
- // replace asterisks with regex something like .* but remember to
- // replace existing dots with \.
- strFilter = strFilter.replaceAll("\\.", "\\\\.");
- strFilter = strFilter.replaceAll("\\*", "\\.\\*");
- strFilter = strFilter.replaceAll("\\?", ".");
-
- // escape all other regex symbols
- Pattern p = Pattern.compile("([$+|\\[\\](){}])");
- Matcher m = p.matcher(strFilter);
- strFilter = m.replaceAll("\\\\$1");
-
- filter = new FilenameFilter() {
- public boolean accept(File dir, String name) {
- File testFile = new File(dir.getAbsolutePath() + File.separator
- + name);
-
- Pattern pattern;
- if (System.getProperty("os.name").toUpperCase()
- .startsWith("WINDOW"))
- pattern = Pattern.compile(strFilter,
- Pattern.CASE_INSENSITIVE);
- else
- pattern = Pattern.compile(strFilter);
-
- Matcher matcher = pattern.matcher(name);
- return matcher.matches() && testFile.isFile();
- }
- };
-
- File[] fl;
- if (file != null && file.exists() && file.isDirectory()) {
- fl = file.listFiles(filter);
- Arrays.sort(fl, fileAlphabetize);
- } else {
- fl = new File[1];
- fl[0] = file;
- }
-
- if (obeyFileName == null || obeyFileName.trim().equals("")) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- return;
- }
-
- String sectionName = parser.getNextSectionToken();
-
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- return;
- }
-
- if (fl.length == 0) {
-
- sessionError('E', SessionError.OBEY_WILDCARD_NOT_FOUND);
- return;
- }
-
- if (sessObj.isSessionInteractive()
- || sessObj.getReader().getReadMode() == SessionDefaults.OBEY_READ_MODE) {
-
- File f;
- for (int i = 0; i < fl.length; i++) {
- f = fl[i];
-
- /* ignore the log file if its in the obey list */
- if (sessObj.isSessionLogging()) {
- if (f.getAbsolutePath().equals(sessObj.getSpoolFileName()))
- continue;
- }
-
- obeyReader = new FileReader();
-
- try {
- obeyReader.initialize(f.getAbsolutePath());
-
- if (sectionName != null) {
- try {
- obeyReader.setSectionRead(true, sectionName);
- } catch (ScriptSectionNotFound e) {
- sessionError(
- 'E',
- new ErrorObject(
- SessionError.OBEY_SECTION_NOT_FOUND
- .errorCode(),
- "Section "
- + sectionName
- + SessionError.OBEY_SECTION_NOT_FOUND
- .errorMessage()
- + f.getName()));
- obeyReader.close();
- obeyReader = null;
- return;
- }
- }
- sessObj.getReader().setObeyReader(obeyReader);
- if (sessObj.getReader().getReadMode() != SessionDefaults.OBEY_READ_MODE) {
- sessObj.getReader().setReadMode(OBEY_READ_MODE);
- sessObj.setSessionType(false);
- }
-
- } catch (FileNotFoundException fnfe) {
- sessionError('E', new ErrorObject(
- SessionError.OBEY_FILE_NOT_FOUND.errorCode(),
- SessionError.OBEY_FILE_NOT_FOUND.errorMessage()));
- return;
- } catch (IOException e) {
- throw e;
- }
- }
- }
-
- }
-
- private void resetSpoolOptions(FileWriter sWriter) throws IOException {
- sessObj.setSessionLogging(false);
- sessObj.getWriter().setWriterMode(CONSOLE_WRITE_MODE);
- sessObj.setQuietEnabled(false);
- sessObj.setLogCmdText(true);
- sessObj.setLogAppend(true);
- sessObj.setLogCmdEcho(true);
- sessObj.setSessionStartup(false);
- try {
- if (sWriter != null)
- sWriter.close();
- sWriter = null;
- } catch (IOException e) {
- throw e;
- }
- }
-
- private void execSpool() throws IOException {
- spoolFileName = parser.getNextFileToken();
- if (sessObj.getCaller() == PRUNI) {
- if (spoolFileName.equalsIgnoreCase("OFF")) {
- sessObj.setSessionStartup(false);
- sessObj.setSessionLogging(false);
- }
- return;
- }
- if (spoolFileName == null || spoolFileName.trim().equals("")) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- return;
- }
- if (spoolFileName.endsWith(","))
- spoolFileName = spoolFileName.substring(0,
- spoolFileName.length() - 1);
-
- if (!spoolFileName.equalsIgnoreCase("OFF")) {
- if (spoolFileName.equalsIgnoreCase("ON")) {
- spoolFileName = "sqlspool.lst";
- }
- if (sessObj.isSessionLogging()) {
- resetSpoolOptions(spoolWriter);
- spoolWriter = null;
- }
- } else if (spoolFileName.equalsIgnoreCase("OFF")) {
-
- if ((spoolWriter == null) && !sessObj.isSessionStartup()) {
- sessionError('E', SessionError.SPOOL_OFF_OFF);
- return;
- } else {
- resetSpoolOptions(spoolWriter);
- spoolWriter = null;
- return;
- }
- }
- sessObj.setSpoolFileName(spoolFileName);
- String spoolOption = null;
- String cmdStr, cmdTextValue = null;
- String[] formatStrArr = parser.getRemainderStr().trim().split(",");
-
- for (int i = 0; i < formatStrArr.length; i++) {
- spoolOption = parser.getNextToken().trim();
- if (spoolOption != null
- && !spoolOption.equalsIgnoreCase("")
- && !spoolOption
- .matches("(?i)\\s*((CMDTEXT|CMDECHO)\\s+(ON|OFF))|(QUIET|CLEAR)")) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- resetSpoolOptions(spoolWriter);
- return;
- }
- if (spoolOption.matches("(?i)\\s*(CMDTEXT|CMDECHO)\\s+(ON|OFF)")) {
- cmdStr = spoolOption.substring(0, 7);
- cmdTextValue = spoolOption.trim().substring(8);
- if (cmdStr.equalsIgnoreCase("CMDECHO")) {
- if (cmdTextValue == null
- || cmdTextValue.trim().equalsIgnoreCase("ON"))
- sessObj.setLogCmdEcho(true);
- else
- sessObj.setLogCmdEcho(false);
-
- } else if (cmdTextValue == null
- || cmdTextValue.trim().equalsIgnoreCase("ON"))
- sessObj.setLogCmdText(true);
- else
- sessObj.setLogCmdText(false);
- } else if (spoolOption.equalsIgnoreCase("QUIET")) {
- sessObj.setQuietEnabled(true);
- } else if (spoolOption.equalsIgnoreCase("CLEAR")) {
- sessObj.setLogAppend(false);
- }
- }
- if (!spoolFileName.equalsIgnoreCase("OFF")) {
- try {
- spoolWriter = new FileWriter();
-
- if (sessObj.isLogAppend())
- spoolWriter.setAppend(true);
- spoolWriter.initialize(spoolFileName);
- sessObj.setSessionLogging(true);
- sessObj.getWriter().setSpoolWriter(spoolWriter);
- sessObj.getWriter().setWriterMode(CONSOLE_SPOOL_WRITE_MODE);
- if (sessObj.isLogCmdText()
- && sessObj.getSessView() != SessionDefaults.MXCI_VIEW) {
- spoolWriter.writeln((utils.formatString("=", 80, '=')));
- spoolWriter.writeln("Spooling started at "
- + DateFormat.getDateTimeInstance().format(
- new Date()));
- spoolWriter.writeln((utils.formatString("=", 80, '=')));
- }
- } catch (FileNotFoundException fnfe) {
- sessionError('E',
- new ErrorObject(SessionError.INTERNAL_ERR.errorCode(),
- fnfe.getMessage()));
- spoolWriter = null;
- return;
- } catch (IOException e) {
- spoolWriter = null;
- throw e;
- }
- }
- }
-
- private void execEnv() throws IOException, UnKnownInterfaceCommand,
- UserInterruption {
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- return;
- }
-
- // writer.writeln("CATALOG ",(sessObj.getSessionCtlg()));
- handleOutput("COLSEP ", "\"" + sessObj.getSessionColSep()
- + "\"");
- handleOutput("HISTOPT ", (sessObj.isSessionHistoryAll() ? "ALL"
- : "DEFAULT [No expansion of script files]"), false);
- handleOutput("IDLETIMEOUT ", (sessObj.getSessionIdletime())
- + " min(s) "
- + (sessObj.getSessionIdletime() == 0 ? "[Never Expires]" : ""),
- false);
- if (sessObj.getListCount() == 0)
- handleOutput("LIST_COUNT ", (sessObj.getListCount())
- + " [All Rows]", false);
- else
- handleOutput("LIST_COUNT ",
- String.valueOf((sessObj.getListCount())), false);
- if (sessObj.isSessionLogging()) {
- handleOutput("LOG FILE ", sessObj.getSpoolFileName(), false);
- handleOutput("LOG OPTIONS ", (sessObj.isLogAppend() ? "APPEND"
- : "CLEAR")
- + (sessObj.isQuietEnabled() ? ",QUIET" : "")
- + ",CMDTEXT " + (sessObj.isLogCmdText() ? "ON" : "OFF"),
- false);
- } else
- handleOutput("LOG ", "OFF", false);
- handleOutput("MARKUP ", (sessObj.getStrDisplayFormat()), false);
- handleOutput("PROMPT ", (sessObj.getSessionPrompt()), false);
- if (sessObj.isDBConnExists())
- {
- handleOutput("SCHEMA ", (sessObj.getSessionSchema()), false);
- handleOutput("SERVER ", sessObj.getSessionServer()
- + sessObj.getSessionPort(), false);
- } else {
- handleOutput("SCHEMA ", (this.infoNotAvailable), false);
- handleOutput("SERVER ", (this.infoNotAvailable), false);
- }
-
- handleOutput("SQLTERMINATOR ", (sessObj.getSessionSQLTerminator()),
- false);
- handleOutput("STATISTICS ", (sessObj.isSessionStatsEnabled() ? "ON"
- : "OFF"), false);
- handleOutput("TIME ", (sessObj.isSessionTimeOn() ? "ON"
- : "OFF"), false);
- handleOutput("TIMING ", (sessObj.isSessionTimingOn() ? "ON"
- : "OFF"), false);
- if (sessObj.isDBConnExists())// Changed 2010-03-01
- {
- handleOutput("USER ", (sessObj.getSessionUser()), false);
- } else {
- handleOutput("USER ", (this.infoNotAvailable), false);
- }
- writer.writeEndTags(sessObj);
- }
-
- private void execShow() throws UnKnownInterfaceCommand, SQLException,
- IOException, UserInterruption {
- String showOption = parser.getNextKeyToken();
-
- if (showOption == null) {
- if (parser.hasMoreTokens()) {
- throw uic;
- }
- sessionError('E', SessionError.SHOW_NO_OPTION);
- return;
- }
-
- showOption = iqKeyMap.get("SHOW_" + showOption.toUpperCase());
-
- if (showOption == null) {
- throw uic;
- }
-
- int showId = Integer.parseInt(showOption);
- sessObj.getQuery().setQueryId(showId);
-
-// String setValue;
-
- switch (showId) {
- case SHOW_TIME:
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- handleOutput("TIME", (sessObj.isSessionTimeOn() ? "ON" : "OFF"));
- break;
-
- case SHOW_TIMING:
-
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- handleOutput("TIMING", (sessObj.isSessionTimingOn() ? "ON" : "OFF"));
- break;
-
- case SHOW_SQLTERMINATOR:
-
- if (sessObj.getMode() != SessionDefaults.SQL_MODE) {
- this.invalidCmdforMode(sessObj.getMode());
- break;
- }
-
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- handleOutput("SQLTERMINATOR", (sessObj.getSessionSQLTerminator()));
- break;
-
- case SHOW_SQLPROMPT:
-
- //change for show schemas can't executed in cs mode
- if (sessObj.getMode() != SessionDefaults.SQL_MODE && sessObj.getMode() != SessionDefaults.CS_MODE) {
-// if (sessObj.getMode() != SessionDefaults.SQL_MODE) {
- this.invalidCmdforMode(sessObj.getMode());
- break;
- }
-
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- handleOutput("SQLPROMPT", (sessObj.getSessionPrompt()));
- break;
-
- case SHOW_CATALOG:
-
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- if (sessObj.isDBConnExists()) // Modified 2010-03-01
- {
- handleOutput("CATALOG", (sessObj.getSessionCtlg()));
- } else {
- displayNoConnInfo();
- }
- break;
-
- case SHOW_SESSION:
-
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- execEnv();
- break;
-
- case SHOW_SCHEMA:
-
- if (parser.getNextKeyToken() != null
- || parser.getNextValueToken() != null) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- if (sessObj.isDBConnExists()) // Modified 2010-03-01
- {
- handleOutput("SCHEMA", (sessObj.getSessionSchema()));
- } else {
- displayNoConnInfo();
- }
-
- break;
-
- case SHOW_ROLE:
-
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- if (sessObj.isDBConnExists()) // Modified 2010-03-01
- {
- handleOutput("ROLE", (sessObj.getSessionRole()));
- } else {
- displayNoConnInfo();
- }
-
- break;
-
- case SHOW_IDLETIMEOUT:
-
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- handleOutput("IDLETIMEOUT", (sessObj.getSessionIdletime())
- + " min(s) "
- + (sessObj.getSessionIdletime() == 0 ? "[Never Expires]"
- : ""));
- break;
-
- case SHOW_LISTCOUNT:
-
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- handleOutput(
- "LIST_COUNT",
- (sessObj.getListCount())
- + (sessObj.getListCount() == 0 ? " [All Rows]" : ""));
- break;
-
- case SHOW_DISPLAY_COLSIZE:
-
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- handleOutput("DISPLAY COLSIZE",
- String.valueOf(sessObj.getDisplayColSize()));
- break;
-
- case SHOW_PROCESSNAME:
-
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
-
- if (sessObj.isDBConnExists()) // Modified 2010-03-01
- {
- String processName = sessObj.getNeoProcessName();
- handleOutput("REMOTE PROCESS", processName);
- } else {
- displayNoConnInfo();
- }
-
- break;
-
- case SHOW_MODE:
- writer.writeln();
- writer.writeError(sessObj, SessionError.CMD_NOT_SEAQUEST_SUPPORTED);
-/*
- * remove show mode command for seaquest
- */
-// if (parser.hasMoreTokens()) {
-// writeSyntaxError(this.queryStr, parser.getRemainderStr());
-// break;
-// }
-// handleOutput("MODE", sessObj.getStrMode());
- break;
-
- case SHOW_COLSEP:
-
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
-
- handleOutput("COLSEP", ("\"" + sessObj.getSessionColSep() + "\""));
- break;
-
- case SHOW_MARKUP:
-
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
-
- handleOutput("MARKUP", sessObj.getStrDisplayFormat());
- break;
-
- case SHOW_PARAM:
- case SHOW_PARAMS:
-
- totalCount = 0;
- String paramName = parser.getNextParamToken();
- if (paramName != null) {
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- } else if (sessObj.getSessParams() != null) {
- if (sessObj.getSessParams(paramName) != null) {
- handleOutput(paramName,
- sessObj.getSessParams(paramName), false);
- totalCount++;
- } else {
- sessionError('E', SessionError.SHOW_PARAM_NOT_FOUND);
- }
-
- }
- break;
- }
-
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- } else {
- HashMap<String,String> paramHash = sessObj.getSessParams();
- if ((paramHash != null) && !paramHash.isEmpty()) {
- Map<String, String> sortedMap = new TreeMap<String, String>(paramHash);
- Iterator<String> paramNames = sortedMap.keySet().iterator();
- for (int paramCnt = 0; paramCnt < paramHash.size(); paramCnt++) {
- if (paramNames.hasNext()) {
- String pName = (String) paramNames.next();
- handleOutput(pName,
- paramHash.get(pName).toString(), false);
- totalCount++;
- }
- }
- printElapsedTime();
- writer.writeEndTags(sessObj);
- } else {
- sessionError('E', SessionError.SHOW_PARAM_NOT_FOUND);
- }
-
- }
-
- sessObj.setTotalRecordCount(String.valueOf(totalCount));
- break;
-
- case SHOW_TABLES:
- case SHOW_SCHEMAS:
- case SHOW_CATALOGS:
- case SHOW_VIEWS:
- case SHOW_SYNONYMS:
- case SHOW_MVS:
- case SHOW_MVGROUPS:
- case SHOW_PROCEDURES:
-
- totalCount = 0;
- String tableNamePattern = null;
-
- if (sessObj.getMode() != SessionDefaults.SQL_MODE && sessObj.getMode() != SessionDefaults.CS_MODE) {
- this.invalidCmdforMode(sessObj.getMode());
- break;
- }
- tableNamePattern = parser.getNextQValueToken();
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
-
- if (!sessObj.isDBConnExists()) // Modified 2010-03-01
- {
- displayNoConnInfo();
- break;
- }
-
- ResultSet rsmd = null;
- // default is TABLE_NAME
- String getStr = SqlEnum.TABLE_NAME.toString();
- ;
-
- DatabaseMetaData dbmd = conn.getMetaData();
-
- String displayStr = null;
- ErrorObject errObj = null;
-
- if (tableNamePattern != null) {
-
- if ((tableNamePattern.indexOf("*") != -1)
- || (tableNamePattern.indexOf("?") != -1))
-
- tableNamePattern = parser
- .replaceShowPattern(tableNamePattern);
-
- }
- try {
- switch (showId) {
- case SHOW_TABLES:
- String[] ttype = { SqlEnum.TABLE.toString() };
- rsmd = dbmd
- .getTables(sessObj.getSessionCtlg(),
- sessObj.getSessionSchema(),
- tableNamePattern, ttype);
- displayStr = "TABLE NAMES";
- errObj = SessionError.SHOW_TAB_NOT_FOUND;
- tableNamePattern = null;
- break;
-
- case SHOW_VIEWS:
- String[] vtype = { "VIEW" };
- rsmd = dbmd
- .getTables(sessObj.getSessionCtlg(),
- sessObj.getSessionSchema(),
- tableNamePattern, vtype);
- displayStr = "VIEW NAMES";
- errObj = SessionError.SHOW_VIEW_NOT_FOUND;
- tableNamePattern = null;
- break;
-
- case SHOW_SYNONYMS:
- String[] stype = { SqlEnum.SYNONYM.toString() };
- rsmd = dbmd
- .getTables(sessObj.getSessionCtlg(),
- sessObj.getSessionSchema(),
- tableNamePattern, stype);
- displayStr = "SYNONYM NAMES";
- errObj = SessionError.SHOW_SYNONYM_NOT_FOUND;
- tableNamePattern = null;
- break;
-
- case SHOW_MVS:
- String[] mvtype = { "MV" };
- rsmd = dbmd.getTables(sessObj.getSessionCtlg(),
- sessObj.getSessionSchema(), tableNamePattern,
- mvtype);
- displayStr = "MATERIALIZED VIEW NAMES";
- errObj = SessionError.SHOW_MV_NOT_FOUND;
- tableNamePattern = null;
- break;
-
- case SHOW_MVGROUPS:
- String[] mvgtype = { "MVG" };
- rsmd = dbmd.getTables(sessObj.getSessionCtlg(),
- sessObj.getSessionSchema(), tableNamePattern,
- mvgtype);
- displayStr = "MATERIALIZED VIEW GROUP NAMES";
- errObj = SessionError.SHOW_MVG_NOT_FOUND;
- tableNamePattern = null;
- break;
-
- case SHOW_CATALOGS:
- rsmd = dbmd.getCatalogs();
- getStr = "TABLE_CAT";
- displayStr = "CATALOG NAMES";
- errObj = SessionError.SHOW_CAT_NOT_FOUND;
- break;
-
- case SHOW_SCHEMAS:
- rsmd = dbmd.getSchemas();
- getStr = "TABLE_SCHEM";
- displayStr = "SCHEMA NAMES";
- errObj = SessionError.SHOW_SCH_NOT_FOUND;
- break;
-
- case SHOW_PROCEDURES:
- rsmd = dbmd.getProcedures(sessObj.getSessionCtlg(),
- sessObj.getSessionSchema(), tableNamePattern);
- getStr = "PROCEDURE_NAME";
- displayStr = "PROCEDURE NAMES";
- errObj = SessionError.SHOW_PROC_NOT_FOUND;
- tableNamePattern = null;
- break;
-
- }
- // Temporary fix till JDBC fixes this issue.
- } catch (NullPointerException npe) {
- errObj = SessionError.INTERNAL_ERR;
- }
-
- if ((tableNamePattern != null)
- && (tableNamePattern.trim().equals(""))) {
- tableNamePattern = null;
- }
- if (tableNamePattern != null) {
- tableNamePattern = utils.trimDoubleQuote(tableNamePattern);
- try {
- tableNamePattern = tableNamePattern.replaceAll("_", ".");
- tableNamePattern = tableNamePattern.replaceAll("%", ".*");
- } catch (PatternSyntaxException pse) {
- tableNamePattern = "";
- }
-
- }
-
- List<String> results = new ArrayList<String>();
- int maxDisplaySize = 0;
- int displayCols = 0;
- if (rsmd == null || !rsmd.next()) {
- sessionError('E', errObj);
- } else {
- int currentColLength = 0;
-
- do {
- if ((currentColLength = rsmd.getString(getStr).getBytes().length) > maxDisplaySize) {
- maxDisplaySize = currentColLength;
- }
- if (tableNamePattern == null) {
- results.add(rsmd.getString(getStr));
-
- } else {
- try {
- if (rsmd.getString(getStr)
- .matches(tableNamePattern)) {
- results.add(rsmd.getString(getStr));
-
- }
- } catch (PatternSyntaxException pse) {
- tableNamePattern = "";
- }
-
- }
- } while (rsmd.next());
-
- if (results.size() == 0) {
- sessionError('E', errObj);
- } else {
-
- switch (sessObj.getDisplayFormat()) {
- case SessionDefaults.HTML_FORMAT:
- sessObj.getHtmlObj().init();
- sessObj.getHtmlObj().handleStartTags();
- writer.writeln("<tr>");
- writer.writeln(" <th>" + displayStr + "</th>");
- writer.writeln("</tr>");
- break;
- case SessionDefaults.XML_FORMAT:
- sessObj.getXmlObj().init();
- sessObj.getXmlObj().handleStartTags();
- writer.writeln(" <" + utils.removeSpaces(displayStr)
- + ">");
- break;
- case SessionDefaults.CSV_FORMAT:
- writer.writeln();
- break;
- default:
- // print the header label
- writer.writeln();
- writer.writeln(displayStr);
- writer.write(utils.formatString("-", 80, '-'));
- writer.writeln();
- break;
- }
-
- if (maxDisplaySize == 0 || maxDisplaySize > 60) {
- displayCols = 1;
- } else {
- displayCols = (int) Math
- .floor(96 / (maxDisplaySize + 2));
-
- }
-
- for (int j = 0; j < results.size(); j++) {
- switch (sessObj.getDisplayFormat()) {
- case SessionDefaults.XML_FORMAT:
- writer.writeln(" <Name>"
- + utils.formatXMLdata(results.get(j)
- .toString()) + "</Name>");
- break;
- case SessionDefaults.HTML_FORMAT:
- writer.writeln("<tr>");
- writer.writeln(" <td>" + results.get(j).toString()
- + "</td>");
- writer.writeln("</tr>");
- break;
- case SessionDefaults.CSV_FORMAT:
- writer.writeln(results.get(j).toString());
- break;
- default:
- formatOutput(results.get(j).toString(),
- maxDisplaySize + 2, ' ', 0);
- if ((j + 1) % displayCols == 0) {
- writer.writeln();
- }
- break;
- }
- totalCount++;
- }
-
- sessObj.setQryEndTime();
-
- }
- }
-
- switch (sessObj.getDisplayFormat()) {
- case SessionDefaults.HTML_FORMAT:
- if (sessObj.isSessionTimingOn())
- writer.writeln(sessObj.getHtmlObj()._startCommentTag
- + writer.getElapsedTime(sessObj, qryObj, utils)
- + sessObj.getHtmlObj()._endCommentTag);
- writer.printElapsedQuietMode(writer.getElapsedTime(sessObj,
- qryObj, utils));
- sessObj.getHtmlObj().handleEndTags();
- break;
- case SessionDefaults.XML_FORMAT:
- if (results.size() != 0)
- writer.writeln(" </" + utils.removeSpaces(displayStr)
- + ">");
- if (sessObj.isSessionTimingOn())
- writer.writeln(sessObj.getXmlObj()._beginCdataTag
- + writer.getElapsedTime(sessObj, qryObj, utils)
- + sessObj.getXmlObj()._endCdataTag);
-
- writer.printElapsedQuietMode(writer.getElapsedTime(sessObj,
- qryObj, utils));
- sessObj.getXmlObj().handleEndTags();
- break;
- case SessionDefaults.CSV_FORMAT:
- writer.writeln();
- if (results.size() != 0 && sessObj.isSessionTimingOn()) {
- writer.writeln(writer
- .getElapsedTime(sessObj, qryObj, utils));
- writer.printElapsedQuietMode(writer.getElapsedTime(sessObj,
- qryObj, utils));
- }
- break;
- default:
- if (results.size() != 0 && results.size() % displayCols != 0) {
- writer.writeln();
- }
- if (sessObj.isSessionTimingOn()) {
- writer.writeln();
- writer.writeln(writer
- .getElapsedTime(sessObj, qryObj, utils));
- writer.printElapsedQuietMode(writer.getElapsedTime(sessObj,
- qryObj, utils));
- }
- break;
- }
- results = null;
-
- sessObj.setTotalRecordCount(String.valueOf(totalCount));
- sessObj.setLastError(0);
- break;
- /**
- * show indexes [order by table] By default: order by index names
- */
- case SHOW_INDEXES:
- boolean orderByIndex = true;
- if (parser.hasMoreTokens()) {
- String remainderStr = parser.getRemainderStr();
- if (!remainderStr.equalsIgnoreCase(" order by table")) {
- writeSyntaxError(this.queryStr, remainderStr);
- break;
- } else
- orderByIndex = false;
- }
- if (sessObj.isDBConnExists())
- this.handleShowIndexes(orderByIndex);
- else
- displayNoConnInfo();
-
- break;
-
- case SHOW_TABLE:
-
- String ctlgName = null;
- String schemaName = null;
- String tableName = null;
- String prepTableName = null;
- String[] validOptions = { SqlEnum.INDEXES.toString(),
- SqlEnum.SYNONYMS.toString(), SqlEnum.MVS.toString(),
- SqlEnum.TRIGGERS.toString() };
- int headingLength = 80;
-
- if (sessObj.getMode() != SessionDefaults.SQL_MODE) {
- this.invalidCmdforMode(sessObj.getMode());
- break;
- }
-
- if (!parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- return;
- }
-
- if (!sessObj.isDBConnExists()) {
- displayNoConnInfo();
- break;
- }
-
- List<String> cstList = parser.getCSTList(parser.getRemainderStr());
-
- if (cstList.size() == 0) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
-
- if (parser.showTableIdxRemainder != null) {
- prepTableName = parser.getRemainderStr().substring(
- 0,
- parser.getRemainderStr().length()
- - parser.showTableIdxRemainder.length());
- parser.setRemainderStr(parser.getRemainderStr().substring(
- prepTableName.length(),
- parser.getRemainderStr().length()));
- } else {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- if (!parser.getRemainderStr().trim().startsWith(",")) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- } else {
- parser.setRemainderStr(parser.getRemainderStr().substring(1,
- parser.getRemainderStr().length()));
- }
-
- switch (cstList.size()) {
- case 3:
- ctlgName = cstList.get(0);
- schemaName = cstList.get(1);
- tableName = cstList.get(2);
- break;
- case 2:
- ctlgName = sessObj.getSessionCtlg();
- schemaName = cstList.get(0);
- tableName = cstList.get(1);
- break;
- case 1:
- ctlgName = sessObj.getSessionCtlg();
- schemaName = sessObj.getSessionSchema();
- tableName = cstList.get(0);
-
- break;
- }
-
- String keyWordToken = parser.getNextKeyToken();
- String[] tmpOptions = null;
- if (keyWordToken == null) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- if (keyWordToken.equalsIgnoreCase("ALL")) {
- tmpOptions = validOptions;
- } else {
- tmpOptions = new String[1];
- tmpOptions[0] = keyWordToken;
- }
-
- int howManyOptions = tmpOptions.length;
- handleShowTableOptions(howManyOptions, keyWordToken, prepTableName,
- tmpOptions, ctlgName, schemaName, tableName, headingLength);
- break;
-
- case SHOW_PREPARED:
-
- totalCount = 0;
- if (sessObj.getMode() != SessionDefaults.SQL_MODE) {
- this.invalidCmdforMode(sessObj.getMode());
- break;
- }
-
- PreparedStatement pStmt = null;
- String stmtNamePattern = parser.getNextQValueToken();
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
-
- if (!sessObj.isDBConnExists()) // Modified 2010-03-01
- {
- displayNoConnInfo();
- break;
- }
-
- HashMap<String, Object[]> prepStmtMap = sessObj.getPrepStmtMap();
- if ((prepStmtMap == null) || (prepStmtMap.isEmpty())) {
- sessionError('E', SessionError.SHOW_PREP_NOT_FOUND);
- break;
- }
- if (stmtNamePattern != null) {
-
- if ((stmtNamePattern.indexOf("*") != -1)
- || (stmtNamePattern.indexOf("?") != -1))
-
- stmtNamePattern = parser
- .replaceShowPrepPattern(stmtNamePattern);
-
- stmtNamePattern = utils.trimDoubleQuote(stmtNamePattern);
- try {
- stmtNamePattern = stmtNamePattern.replaceAll("_", ".");
- stmtNamePattern = stmtNamePattern.replaceAll("%", ".*");
- } catch (PatternSyntaxException pse) {
- stmtNamePattern = "";
- }
- }
- Map<String, Object[]> sortedMap = new TreeMap<String, Object[]>(prepStmtMap);
- Iterator<String> it = sortedMap.keySet().iterator();
- String key = null;
- boolean found = false;
-
- while (it.hasNext()) {
- key = it.next();
- try {
- if ((stmtNamePattern == null || key
- .matches(stmtNamePattern))
- && !key.equals(sessObj.getAutoPrepStmtName())) {
- pStmt = (PreparedStatement) sessObj.getPrepStmtMap(key);
- handleOutput(key, ((TrafT4Statement) pStmt).getSQL(),
- false);
- found = true;
- totalCount++;
- }
- } catch (PatternSyntaxException pse) {
- // No action required here
- }
- }
-
- // If no matching statement names were found
- // display a status message
- if (!found) {
- sessionError('E', SessionError.SHOW_PREP_NOT_FOUND);
- }
- sessObj.setTotalRecordCount(String.valueOf(totalCount));
- printElapsedTime();
- writer.writeEndTags(sessObj);
- break;
-
- case SHOW_HISTOPT:
-
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- handleOutput("HISTOPT", (sessObj.isSessionHistoryAll() ? "ALL"
- : "DEFAULT [No expansion of script files]"));
- break;
-
- case SHOW_AUTOPREPARE:
-
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- handleOutput("AUTOPREPARE", (sessObj.isSessionAutoPrepare() ? "ON"
- : "OFF"));
- break;
-
- case SHOW_ERRORCODE:
- case SHOW_LASTERROR:
-
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
-
- if (showId == SHOW_LASTERROR)
- handleOutput("LASTERROR",
- String.valueOf(sessObj.getLastError()));
- else
- handleOutput("ERRORCODE",
- String.valueOf(sessObj.getLastError()));
-
- break;
-
- case SHOW_ACTIVITYCOUNT:
- case SHOW_RECCOUNT:
-
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
-
- if (!sessObj.isDBConnExists()) // Modified 2010-03-01
- {
- displayNoConnInfo();
- break;
- }
-
- String recCount = sessObj.getTotalRecordCount();
- if (showId == SHOW_RECCOUNT)
- handleOutput("RECCOUNT", (recCount != null ? recCount : "0"));
- else
- handleOutput("ACTIVITYCOUNT", (recCount != null ? recCount
- : "0"));
-
- break;
-
- case SHOW_STATISTICS:
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
-
- handleOutput("STATISTICS", (sessObj.isSessionStatsEnabled() ? "ON"
- : "OFF"));
- break;
-
- case SHOW_ACCESS:
- if (!parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
-
- handleDumpFileAccess();
-
- break;
-
- case SHOW_LOOKANDFEEL:
-
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- handleOutput("LOOK AND FEEL", (sessObj.getStrSessView()));
- break;
-
- case SHOW_ALIAS:
- handleShowAlias();
- break;
-
- case SHOW_ALIASES:
- handleShowAliases();
- break;
-
- case SHOW_FETCHSIZE:
-
- if (!checkForMoreTokens())
- handleOutput(
- "FETCHSIZE",
- String.valueOf(sessObj.getFetchSize())
- + (sessObj.getFetchSize() == 0 ? " [Default]"
- : ""));
- break;
-
- case SHOW_PATTERNDEPTH:
-
- if (!checkForMoreTokens())
- handleOutput("PATTERNDEPTH",
- String.valueOf(sessObj.getMaxPatternDepth()));
- break;
-
- case SHOW_PATTERN:
- handleShowPattern();
- break;
-
- case SHOW_PATTERNS:
- handleShowPatterns();
- break;
-
- case SHOW_DEBUG:
- checkForMoreTokens();
- handleOutput("DEBUG", (sessObj.isDebugOn() ? "ON" : "OFF"));
- break;
-
- case SHOW_CMDDISPLAY:
- checkForMoreTokens();
- handleOutput("CMDDISPLAY", (sessObj.isLogCmdEcho() ? "ON" : "OFF"));
- break;
-
- case SHOW_USER:
- checkForMoreTokens();
- if (sessObj.isDBConnExists()) {
- handleOutput(
- "USER",
- sessObj.getSessionUser() + " ("
- + sessObj.getSessionRole() + ")");
- } else {
- displayNoConnInfo();
- }
- break;
-
- case SHOW_SERVER:
- checkForMoreTokens();
- if (sessObj.isDBConnExists())
- handleOutput("SERVER:PORT", sessObj.getSessionServer()
- + sessObj.getSessionPort());
- else
- displayNoConnInfo();
- break;
-
- case SHOW_CONNECTOPT:
- checkForMoreTokens();
- handleOutput("CONNECTOPT",
- (sessObj.getTempSessionRole().length() == 0 ? "DEFAULT"
- : sessObj.getTempSessionRole()));
- break;
- }
- }
-
- private void execSet() throws UnKnownInterfaceCommand, IOException,
- SQLException, UserInterruption {
-
- String setOption = parser.getNextKeyToken();
- int setOpt;
-
- // not a keyword..then its not ours
-
- if (setOption == null) {
- if (parser.hasMoreTokens()) {
- throw uic;
- }
- sessionError('E', SessionError.SET_NO_OPTION);
- return;
- }
-
- setOption = iqKeyMap.get("SET_" + setOption.toUpperCase());
-
- if (setOption == null) {
- throw uic;
- }
-
- int setId = Integer.parseInt(setOption);
-
- String setValue = "";
-
- switch (setId) {
- case SET_CONNECTOPT:
- setValue = parser.getNextKeyToken();
- if (setValue == null) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- if (!setValue.toUpperCase().equals("ROLE")) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- setValue = parser.getNextValueToken();
- if (setValue == null) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- } else {
- sessObj.setTempSessionRole(setValue);
- }
- break;
-
- case SET_TIME:
-
- setValue = parser.getNextKeyToken();
- if (setValue == null) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- setValue = setValue.toUpperCase();
- if ((!setValue.equals("ON") && !setValue.equals("OFF"))) {
- writeSyntaxError(this.queryStr,
- setValue + parser.getRemainderStr());
- break;
- }
- if (setValue.equals("OFF") && parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr,
- setValue + parser.getRemainderStr());
- break;
- }
- String timeFormat = parser.getNextKeyToken();
-
- if ((timeFormat != null) && !timeFormat.equalsIgnoreCase("12h")) {
- writeSyntaxError(this.queryStr,
- setValue + parser.getRemainderStr());
- break;
- }
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- if (setValue.equals("ON")) {
- sessObj.setSessionTime(true);
- if ((timeFormat != null)
- && (timeFormat.equalsIgnoreCase("12h")))
- sessObj.setAmPmFmt(true);
- else
- sessObj.setAmPmFmt(false);
-
- } else {
- sessObj.setSessionTime(false);
- }
- envMap.put("TIME", (sessObj.isSessionTimeOn() ? "ON" : "OFF"));
-
- break;
-
- case SET_TIMING:
-
- setOpt = getSetValue();
- if (setOpt != -1) {
- sessObj.setSessionTiming(setOpt == 1 ? true : false);
- }
- envMap.put("TIMING", (sessObj.isSessionTimingOn() ? "ON" : "OFF"));
- break;
-
- case SET_SQLPROMPT:
-
- if (sessObj.getMode() != SessionDefaults.SQL_MODE) {
- this.invalidCmdforMode(sessObj.getMode());
- break;
- }
-
- case SET_PROMPT:
-
- setValue = parser.getNextValueToken();
- String regx1 = "\\s*(?i)";
- String regx2 = "\\s*[>\\s]*\\s*";
- if (setValue == null) {
- if (SessionDefaults.SQL_MODE == sessObj.getMode())
- sessObj.setSessionPrompt(SessionDefaults.DEFAULT_SQL_PROMPT);
- else if (SessionDefaults.CS_MODE == sessObj.getMode())
- sessObj.setSessionPrompt(SessionDefaults.DEFAULT_CS_PROMPT);
- else if (SessionDefaults.WMS_MODE == sessObj.getMode())
- sessObj.setSessionPrompt(SessionDefaults.DEFAULT_WMS_PROMPT);
- envMap.put("PROMPT", sessObj.getSessionPrompt());
- break;
- } else if (setValue.matches(regx1 + SessionDefaults.SQL + regx2)) {
- sessionError('E', SessionError.SQL_RESERVED_WORD_ERROR);
- break;
- } else if (setValue.matches(regx1 + SessionDefaults.CS + regx2)) {
- sessionError('E', SessionError.CS_RESERVED_WORD_ERROR);
- break;
- } else if (setValue.matches(regx1 + SessionDefaults.WMS + regx2)) {
- sessionError('E', SessionError.WMS_RESERVED_WORD_ERROR);
- break;
- }
-
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- } else {
- // Added to deal with non-connection situation
- if (!sessObj.isDBConnExists()
- && (setValue.toUpperCase().indexOf("%USER") != -1
- || setValue.toUpperCase().indexOf("%SCHEMA") != -1
- || setValue.toUpperCase().indexOf("%SERVER") != -1
- || setValue.toUpperCase().indexOf("%MODE") != -1
- || setValue.toUpperCase()
- .indexOf("%DATASOURCE") != -1 || setValue
- .toUpperCase().indexOf("%ROLE") != -1)) {
- displayNoConnInfo();
- break;
- }
- sessObj.setSessionPrompt(setValue);
- }
- envMap.put("PROMPT", sessObj.getSessionPrompt());
- break;
-
- case SET_SQLTERMINATOR:
-
- if (sessObj.getMode() != SessionDefaults.SQL_MODE) {
- this.invalidCmdforMode(sessObj.getMode());
- break;
- }
- setValue = parser.getNextValueToken();
- if (setValue == null) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
-
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- } else {
- sessObj.setSessionSQLTerminator(setValue);
- sessObj.setTermEventMap(
- Integer.toString(sessObj.getHistCmdNo() + 1), setValue);
- sessObj.setTermEvent(Integer.toString(sessObj.getHistCmdNo() + 1));
- }
- envMap.put("SQLTERMINATOR", sessObj.getSessionSQLTerminator());
- break;
-
- case SET_IDLETIMEOUT:
- int intSetValue = 0;
- setValue = parser.getNextNumberToken();
- if (setValue == null || setValue.trim().equals("")) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
-
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- } else {
- try {
- intSetValue = Integer.parseInt(setValue);
- if (intSetValue < 0)
- throw (new NumberFormatException());
- else
- sessObj.setSessionIdletime(intSetValue);
- envMap.put("IDLETIMEOUT",
- Integer.toString(sessObj.getSessionIdletime()));
- } catch (NumberFormatException nfe) {
- sessionError('E', SessionError.SET_IDLETIMEOUT_VAL_ERR);
- }
- }
-
- break;
-
- case SET_PARAM:
-
- String paramName = parser.getNextParamToken();
- if (paramName == null) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
-
- /**
- * Use the new method to get the parameter value and validate that
- * the value is syntactically correct.
- */
- ParamStringObject psv = parser.getParamValue(null);
- if (null != psv) {
- setValue = psv.toString();
-
- try {
- if (sessObj.isDebugOn())
- System.out.println("@@@Debug: InterfaceQuery:: psv = "
- + psv.toString());
-
- String theActualValue = psv.getParameterValue();
-
- if (sessObj.isDebugOn())
- System.out.println("@@@Debug: InterfaceQuery:: psv "
- + "getParamValue= " + theActualValue);
-
- } catch (Exception exc) {
- setValue = null;
-
- ErrorObject eo = new ErrorObject(
- SessionError.INVALID_PARAM_STRING_VALUE, "",
- exc.getMessage());
- sessionError('E', eo);
- break;
- }
-
- } else
- setValue = null;
-
- if (sessObj.isDebugOn())
- System.out.println("@@@Debug: InterfaceQuery:: setValue "
- + setValue);
-
- if (setValue == null) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
-
- if (sessObj.isDebugOn())
- System.out.println("@@@Debug: InterfaceQuery:: parser has "
- + "more tokens = " + parser.hasMoreTokens());
-
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
-
- sessObj.setSessParams(paramName, setValue);
- break;
-
- case SET_DISPLAY_COLSIZE:
- if (sessObj.getMode() != SessionDefaults.WMS_MODE) {
- this.invalidCmdforMode(sessObj.getMode());
- break;
- }
- setValue = parser.getNextValueToken();
- if (setValue == null) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
-
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- } else {
- try {
- int dispColSize = Integer.parseInt(setValue);
- if (dispColSize <= 0)
- throw (new NumberFormatException());
- else {
- sessObj.setDisplayColSize(dispColSize);
- }
- } catch (NumberFormatException nfe) {
- // sessionError('E',SessionError.SET_LISTCOUNT_VAL_ERR);
- }
- }
- break;
-
- case SET_LISTCOUNT:
- if (sessObj.getMode() != SessionDefaults.SQL_MODE) {
- this.invalidCmdforMode(sessObj.getMode());
- break;
- }
- int intListCntValue = 0;
- setValue = parser.getNextNumberToken();
- if (setValue == null || setValue.trim().equals("")) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
-
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- } else {
- try {
- intListCntValue = Integer.parseInt(setValue);
- if (intListCntValue < 0)
- throw (new NumberFormatException());
- else {
- sessObj.setListCount(intListCntValue);
- }
- envMap.put("LIST_COUNT",
- Integer.toString(sessObj.getListCount()));
- } catch (NumberFormatException nfe) {
- sessionError('E', SessionError.SET_LISTCOUNT_VAL_ERR);
- }
- }
- break;
-
- case SET_COLSEP:
-
- setValue = parser.getNextValueToken();
- if (setValue == null) {
- sessObj.setSessionColSep(" ");
- break;
- }
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- } else {
- sessObj.setSessionColSep(setValue);
- }
- envMap.put("COLSEP", sessObj.getSessionColSep());
- break;
-
- case SET_HISTOPT:
-
- setValue = parser.getNextKeyToken();
- if (setValue == null) {
- sessObj.setSessionHistoryAll(false);
- break;
- }
- setValue = setValue.toUpperCase();
- if (!setValue.equals("ALL") && !setValue.equals("DEFAULT")) {
- writeSyntaxError(this.queryStr,
- setValue + parser.getRemainderStr());
- break;
- }
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- if (setValue.equals("ALL")) {
- sessObj.setSessionHistoryAll(true);
- } else {
- sessObj.setSessionHistoryAll(false);
- }
- envMap.put("HISTOPT", sessObj.isSessionHistoryAll() ? "ALL"
- : "DEFAULT [No expansion of script files]");
- break;
-
- case SET_STATISTICS:
-
- setValue = parser.getNextKeyToken();
- if (setValue == null) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- setValue = setValue.toUpperCase();
- if ((!setValue.equals("ON") && !setValue.equals("OFF"))) {
- writeSyntaxError(this.queryStr,
- setValue + parser.getRemainderStr());
- break;
- }
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- if (setValue.equals("ON")) {
- sessObj.setSessionStatsEnabled(true);
- } else {
- sessObj.setSessionStatsEnabled(false);
- }
- envMap.put("STATISTICS", sessObj.isSessionStatsEnabled() ? "ON"
- : "OFF");
- break;
-
- case SET_MARKUP:
-
- setValue = parser.getNextValueToken();
- if (setValue == null) {
- sessObj.setStrDisplayFormat("RAW");
- break;
- }
-
- if ((!setValue.toUpperCase().equals("RAW"))
- && (!setValue.toUpperCase().equals("XML"))
- && (!setValue.toUpperCase().equals("HTML"))
- && (!setValue.toUpperCase().equals("CSV"))
- && (!setValue.toUpperCase().equals("COLSEP"))) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- } else {
- sessObj.setStrDisplayFormat(setValue);
- }
- envMap.put("MARKUP", sessObj.getStrDisplayFormat());
- break;
-
- case SET_AUTOPREPARE:
-
- if (sessObj.getMode() != SessionDefaults.SQL_MODE) {
- this.invalidCmdforMode(sessObj.getMode());
- break;
- }
- setOpt = getSetValue();
- if (setOpt != -1) {
- sessObj.setSessionAutoPrepare(setOpt == 1 ? true : false);
- }
- break;
-
- case SET_LOOKANDFEEL:
-
- setValue = parser.getNextValueToken();
- if (setValue == null || setValue == "") {
- sessObj.setSessView(SessionDefaults.CIDEFAULT_VIEW);
- sessObj.setSessionPrompt(SessionDefaults.DEFAULT_SQL_PROMPT);
- break;
- }
- if ((!setValue.matches("(?i)\\s*(MXCI|TRAFCI)"))
- || parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- } else {
- if (setValue.equalsIgnoreCase("MXCI")) {
- sessObj.setSessView(SessionDefaults.MXCI_VIEW);
- sessObj.setSessionPrompt(">>");
- } else {
- if (sessObj.isCmdEchoEnabled()
- && sessObj.getSessView() == SessionDefaults.MXCI_VIEW)
- sessObj.setCmdEcho(false);
-
- sessObj.setSessView(SessionDefaults.CIDEFAULT_VIEW);
- sessObj.setSessionPrompt(SessionDefaults.DEFAULT_SQL_PROMPT);
- }
- }
- envMap.put("LOOK_AND_FEEL", sessObj.getStrSessView());
- break;
-
- case SET_CMDECHO:
-
- setValue = parser.getNextKeyToken();
- if (setValue == null) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- setValue = setValue.toUpperCase();
- if ((!setValue.equals("ON") && !setValue.equals("OFF"))) {
- writeSyntaxError(this.queryStr,
- setValue + parser.getRemainderStr());
- break;
- }
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- if (setValue.equals("ON")) {
- sessObj.setCmdEcho(true);
- } else {
- sessObj.setCmdEcho(false);
- }
- break;
-
- case SET_FETCHSIZE:
- if (sessObj.getMode() != SessionDefaults.SQL_MODE) {
- this.invalidCmdforMode(sessObj.getMode());
- break;
- }
- setValue = parser.getNextNumberToken();
- if (setValue == null || parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- try {
- int fetchSize = Integer.parseInt(setValue);
-
- if (fetchSize < 0)
- throw (new NumberFormatException());
- else {
- sessObj.setFetchSize(fetchSize);
- }
- } catch (NumberFormatException nfe) {
- sessionError('E', SessionError.SET_FETCHSIZE_VAL_ERR);
- }
- break;
-
- case SET_PATTERN:
- String key = null;
-
- if ((key = parser.getPatternKeyPattern()) != null) {
- if (envMap.containsKey(key.toUpperCase())) {
- sessionError(
- 'E',
- new ErrorObject(
- SessionError.COMMAND_NAME_NOT_ALLOWED,
- "",
- key.toUpperCase()
- + SessionError.PATTERN_COMMAND_NAME_NOT_ALLOWED_SUFFIX));
- return;
- }
- if (sessObj.isDebugOn())
- System.out.println("SET_PATTERN :: key:" + key);
-
- setValue = parser.getPatternValueToken();
-
- if (sessObj.isDebugOn())
- System.out.println("SET_PATTERN :: value:" + setValue + "");
-
- if (setValue == null || parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- sessObj.setPattern(key, setValue);
- break;
- } else if ((key = parser.getRegexpPattern()) != null) {
- try {
- Pattern.compile(key);
- } catch (PatternSyntaxException pse) {
- sessionError('E', SessionError.INVALID_REGEXP);
- break;
- }
- if (sessObj.isDebugOn())
- System.out.println("SET_PATTERN :: RegExp:" + key);
-
- setValue = parser.getRegexpValue();
-
- if (sessObj.isDebugOn())
- System.out.println("SET_PATTERN :: value:" + setValue);
-
- if ((setValue == null) || parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, "");
- break;
- }
- sessObj.setRegExpPattern(key, setValue);
- } else {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- break;
-
- case SET_PATTERNDEPTH:
- if (sessObj.getMode() != SessionDefaults.SQL_MODE) {
- this.invalidCmdforMode(sessObj.getMode());
- break;
- }
- setValue = parser.getNextNumberToken();
- if (setValue == null || parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- try {
- int maxPatternDepth = Integer.parseInt(setValue);
-
- if (maxPatternDepth < 0
- || maxPatternDepth > SessionDefaults.PATTERN_DEPTH_LIMIT)
- throw (new NumberFormatException());
- else {
- sessObj.setMaxPatternDepth(maxPatternDepth);
- }
- } catch (NumberFormatException nfe) {
- sessionError('E', SessionError.SET_PATTERN_DEPTH_VAL_ERR);
- }
- break;
-
- case SET_DEBUG:
- setValue = parser.getNextKeyToken();
- if (setValue == null) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- setValue = setValue.toUpperCase();
- if ((!setValue.equals("ON") && !setValue.equals("OFF"))) {
- writeSyntaxError(this.queryStr,
- setValue + parser.getRemainderStr());
- break;
- }
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- if (setValue.equals("ON")) {
- sessObj.setDebugOn(true);
- } else {
- sessObj.setDebugOn(false);
- }
- break;
-
- case SET_CMDDISPLAY:
-
- setValue = parser.getNextKeyToken();
- if (setValue == null) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- break;
- }
- setValue = setValue.toUpperCase();
- if ((!setValue.equals("ON") && !setValue.equals("OFF"))) {
- writeSyntaxError(this.queryStr,
- setValue + parser.getRemainderStr());
- break;
- }
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr,
- setValue + parser.getRemainderStr());
- break;
- }
- if (setValue.equals("ON")) {
- sessObj.setLogCmdEcho(true);
- if (sessObj.isDotModeCmd()) {
- sessObj.setDotModeCmd(false);
- sessObj.setHistOn(false);
- }
- } else {
- sessObj.setLogCmdEcho(false);
- }
- break;
- }
- }
-
- int getSetValue() throws IOException {
- String setValue = parser.getNextKeyToken();
- if (setValue == null) {
- return 0;
- }
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- return -1;
- }
- if (setValue.equalsIgnoreCase("ON"))
- return (1);
- else if (setValue.equalsIgnoreCase("OFF"))
- return (0);
- else {
- writeSyntaxError(this.queryStr, setValue + parser.getRemainderStr());
- return -1;
- }
- }
-
- private void writeSyntaxError(String queryStr, String remainderStr)
- throws IOException {
- sessObj.getQuery().setStatusCode(-1); // update the error code to -1
-
- if (sessObj.getDisplayFormat() != SessionDefaults.XML_FORMAT)
- writer.writeln();
-
- writer.writeSyntaxError(sessObj, this.queryStr, remainderStr);
- }
-
- private void invalidCmdforMode(int mode) throws IOException {
- switch (mode) {
- case SessionDefaults.WMS_MODE:
- sessionError('E', SessionError.CMD_NOT_WMS_SUPPORTED);
- break;
- case SessionDefaults.SQL_MODE:
- sessionError('E', SessionError.CMD_NOT_SQL_SUPPORTED);
- break;
- case SessionDefaults.CS_MODE:
- sessionError('E', SessionError.CMD_NOT_CS_SUPPORTED);
- break;
- }
- }
-
- private void sessionError(char errType, ErrorObject errObj)
- throws IOException {
- sessObj.getQuery().setStatusCode(-1); // update the error code to -1
-
- if (sessObj.getDisplayFormat() != SessionDefaults.XML_FORMAT)
- writer.writeln();
-
- sessObj.setLastError(Integer.parseInt(errObj.errorCode()));
- writer.writeError(sessObj, errObj);
- }
-
- void saveFile(String fileName, boolean append) throws IOException {
- FileWriter historyWriter = new FileWriter();
- try {
- historyWriter.setAppend(append);
- historyWriter.initialize(fileName);
-
- List<Vector<String>> historyList = sessObj.getQryHistory();
- if (historyList != null) {
- for (int i = 0; i < historyList.size(); i++) {
- historyWriter.writeln((historyList.get(i)).get(1));
- }
- }
- historyWriter.close();
- } catch (FileNotFoundException fnfe) {
- sessionError('E', SessionError.SAVE_FILE_CREATE_ERROR);
- return;
- } catch (IOException e) {
- historyWriter = null;
- throw e;
- }
- }
-
- private void execGet() throws UnKnownInterfaceCommand, IOException,
- SQLException {
-
- // We dont have any interface commands with GET currently
- // This method has been created for future use
- throw uic;
- }
-
- private void handleVersion() throws IOException, SQLException {
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- return;
- } else
- displayVersionInfo(!sessObj.getPlatformObjectVersions());
- }
-
- private void displayVersionInfo(boolean srvrErrMsg) throws IOException {
- String platformVersion = sessObj.getSutVersion();
- String mxoSrvrVersion = sessObj.getNdcsVersion();
- String databaseVersion = sessObj.getDatabaseVersion();
- String databaseEdition = sessObj.getDatabaseEdition();
-
- if (databaseVersion != null && databaseEdition != null) {
- handleOutput("Database Version : Release ", databaseVersion);
- handleOutput("Database Edition :", databaseEdition,false);
- } else {
- handleOutput("Database Version :", this.infoNotAvailable, false);
- handleOutput("Database Edition :", this.infoNotAvailable, false);
- }
- handleOutput("JDBC Type 4 Driver Build ID :", JDBCVproc.getVproc(), false);
- handleOutput("Command Interface Build ID :", Vproc.getVproc(), false);
-
- writer.writeEndTags(sessObj);
- }
-
- private void handleConnect() throws IOException, UserInterruption {
- List<String> connectArgsList = new ArrayList<String>();
-
- String connArgStr = null;
- String newServer = null;
- connArgStr = parser.getConnArg("user");
-
- // if the user name is not specified but other args are specified..then
- // throw an error
- if (connArgStr != null) {
- connectArgsList.add("-u");
- connectArgsList.add(connArgStr);
- } else if (connArgStr == null && parser.hasMoreTokens()) {
- connectArgsList = null;
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- return;
- }
- connArgStr = parser.getConnArg("pass");
-
- // if the password is not specified but the other args specified..then
- // throw syntax error
- if (connArgStr != null) {
- connectArgsList.add("-p");
- connectArgsList.add(connArgStr);
- }
- connArgStr = newServer = parser.getConnArg("server");
-
- if (connArgStr != null) {
- connectArgsList.add("-h");
- connectArgsList.add(connArgStr);
- }
- /*connArgStr = parser.getConnArg("dsn");
-
- if (connArgStr != null) {
- connectArgsList.add("-dsn");
- connectArgsList.add(connArgStr);
- } */
-
- if (parser.hasMoreTokens()) {
- connectArgsList = null;
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- return;
- }
-
- String[] connectArgs = new String[connectArgsList.size()];
- connectArgsList.toArray(connectArgs);
-
- // parse the arguments and validate the user credentials
- ParseArguments paObj = new ParseArguments(sessObj.getConsoleReader(),
- sessObj.getConsoleWriter());
- SessionInterface siObj = null;
- paObj.setDefaults(SessionDefaults.dsnName, SessionDefaults.portNumber);
-
- paObj.serverName = sessObj.getSessionServer();
- if (sessObj.isDebugOn()) {
- System.out.println(this.getClass().getName() + "NewServer:: "
- + newServer);
- System.out.println(this.getClass().getName() + ":: "
- + paObj.serverName);
- System.out.println(this.getClass().getName() + "::SessionPort:: "
- + sessObj.getSessionPort());
- System.out.println(this.getClass().getName() + "::SessionServer:: "
- + sessObj.getSessionServer());
- }
- if (newServer != null) {
- String newServer1[] = newServer.split(":");
- if (newServer1.length > 0
- && newServer1[0].equalsIgnoreCase(sessObj
- .getSessionServer()))
- paObj.portNumber = sessObj.getSessionPort();
- else
- paObj.portNumber = ":" + SessionDefaults.portNumber;
- } else
- paObj.portNumber = sessObj.getSessionPort();
-
- //paObj.dsnName = sessObj.getSessionDsn();
-
- if (sessObj.isDebugOn()) {
- System.out.println("Session Role::" + sessObj.getSessionRole());
- System.out.println("Temp Session Role::"
- + sessObj.getTempSessionRole());
- }
-
- // String theRole=null;
- // if (sessObj.getConnObj() != null) {
- String theRole = sessObj.getTempSessionRole();
- if ((null == theRole) || (0 >= theRole.length()))
- theRole = "";
- // }
- paObj.roleName = theRole;
-
- // Set the retry count to 1 if connect command is being invoked
- // from OBEY or PRUN script files.
- if ((sessObj.getReader().getReadMode() == SessionDefaults.OBEY_READ_MODE)
- || (sessObj.getCaller() == PRUNI)) {
- paObj.retryCnt = 1;
- }
- while (paObj.retryCnt > 0) {
- sessObj.setLastError(0);
- try {
- paObj.setAutoLogin(false);
- connectArgs = paObj.validateArgs(connectArgs);
- siObj = new SessionInterface(sessObj);
- sessObj.setQryStartTime();
-
- if (sessObj.isDebugOn())
- System.out.println("CONNECT: " + paObj.userName + "|"
- + paObj.roleName + "|" + paObj.serverName + "|"
- + paObj.dsnName + "|" + paObj.portNumber);
- // Get a new connection with the args specified, if success then
- // close the previous connection
- newConn = siObj.getConnection(paObj.userName, paObj.password,
- paObj.roleName, paObj.serverName, paObj.dsnName,
- paObj.portNumber);
-
- if (newConn != null) {
- try {
- if (sessObj.getConnObj() != null) {
- sessObj.getConnObj().getWarnings();
- sessObj.getConnObj().close();
- sessObj.setDBConnExists(false);
- } else {
- startTimerTask(newConn);
- }
- } catch (SQLException sqle) {
- }
-
- sessObj.setConnObj(newConn);
- sessObj.setSessionUser(paObj.userName);
- sessObj.setSessionPass(paObj.password);
- sessObj.setSessionSever(paObj.serverName);
- sessObj.setSessionPort(paObj.portNumber);
- sessObj.setSessionValues();
- sessObj.setStmtObj(siObj.getStatement(newConn));
- sessObj.qsOpen = false;
- sessObj.setDBConnExists(true);
- boolean trafver = sessObj.getPlatformObjectVersions();
-
- // Uncomment this line if you need to reset role to DEFAULT;
- // TempSessionRole is set using SET CONNECTIOPT command
- // sessObj.setTempSessionRole("");
- //writer.writeln();
-
- writer.writeln("Connected to " + sessObj.getDatabaseEdition());
-
- sessObj.setQryEndTime();
- if (printConnTime) {
- printElapsedTime();
- writer.writeEndTags(sessObj);
- }
-
- }
-
- paObj.retryCnt = 0;
-
- } // end try
- catch (Exception e) {
- paObj.retryCnt--;
- connectArgs = handleConnException(e, paObj, connectArgs);
- }
-
- finally {
- newConn = null;
- }
- } // end while
-
- }
-
- private void handleReconnect() throws IOException, UserInterruption {
- boolean prevConn = false;
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- return;
- }
-
- // if a connection exists already, close it before creating new one.
- if (sessObj.getConnObj() != null) {
- prevConn = true;
- try {
- sessObj.getConnObj().getWarnings();
- sessObj.getConnObj().close();
- // sessObj.setConnObj(null);
- } catch (SQLException sqle) {
-
- }
- }
- sessObj.setDBConnExists(false);
-
- List<String> reconnectArgsList = new ArrayList<String>();
-
- if (sessObj.getSessionUser() != null) {
- reconnectArgsList.add("-u");
- reconnectArgsList.add(sessObj.getSessionUser());
- }
- if (sessObj.getSessionPass() != null) {
- reconnectArgsList.add("-p");
- reconnectArgsList.add(sessObj.getSessionPass());
- }
- if (sessObj.getSessionServer() != null) {
- reconnectArgsList.add("-h");
- reconnectArgsList.add(sessObj.getSessionServer()
- + sessObj.getSessionPort());
- }
- /*if (sessObj.getSessionDsn() != null) {
- reconnectArgsList.add("-dsn");
- reconnectArgsList.add(sessObj.getSessionDsn());
- }*/
-
- if (sessObj.getSessionRole() != null) {
- reconnectArgsList.add("-r");
- reconnectArgsList.add(sessObj.getSessionRole());
- }
-
- String[] reconnectArgs = new String[reconnectArgsList.size()];
- reconnectArgsList.toArray(reconnectArgs);
- reconnectArgsList = null;
-
- // parse the arguments and validate the user credentials
- ParseArguments rcPaObj = new ParseArguments(sessObj.getConsoleReader(),
- sessObj.getConsoleWriter());
- SessionInterface rcSIObj = null;
-
- rcPaObj.setDefaults(SessionDefaults.dsnName, SessionDefaults.portNumber);
-
- // Set the retry count to 1 if connect command is being invoked
- // from OBEY or PRUN script files.
- if ((sessObj.getReader().getReadMode() == SessionDefaults.OBEY_READ_MODE)
- || (sessObj.getCaller() == PRUNI)) {
- rcPaObj.retryCnt = 1;
- }
- while (rcPaObj.retryCnt > 0) {
- sessObj.setLastError(0);
- try {
- rcPaObj.setAutoLogin(false);
- reconnectArgs = rcPaObj.validateArgs(reconnectArgs);
- sessObj.setQryStartTime();
-
- sessObj.setSessionUser(rcPaObj.userName);
- sessObj.setSessionPass(rcPaObj.password);
- sessObj.setSessionSever(rcPaObj.serverName);
- sessObj.setSessionPort(rcPaObj.portNumber);
- //sessObj.setSessionDsn(rcPaObj.dsnName);
- // Session role will be null only in noconnect mode
- if (sessObj.getSessionRole() == null)
- sessObj.setSessionRole(rcPaObj.roleName);
-
- rcSIObj = new SessionInterface(sessObj);
-
- if (sessObj.isDebugOn())
- System.out.println("RECONNECT: " + rcPaObj.userName + "|"
- + rcPaObj.roleName + "|" + rcPaObj.serverName + "|"
- + rcPaObj.dsnName + "|" + rcPaObj.portNumber);
-
- sessObj.setConnObj(rcSIObj.getConnection());
- sessObj.setSessionValues();
- if (!sessObj.isDBConnExists())
- startTimerTask(sessObj.getConnObj());
- sessObj.setStmtObj(rcSIObj.getStatement(sessObj.getConnObj()));
- sessObj.qsOpen = false;
- sessObj.setDBConnExists(true);
- boolean trafver = sessObj.getPlatformObjectVersions();
- writer.writeln();
- writer.writeln("Connected to " + sessObj.getDatabaseEdition());
- rcPaObj.retryCnt = 0;
-
- sessObj.setQryEndTime();
-
- } catch (Exception ex) {
- rcPaObj.retryCnt--;
- reconnectArgs = handleConnException(ex, rcPaObj, reconnectArgs);
- }
-
- } // end while
- if (printConnTime) {
- printElapsedTime();
- writer.writeEndTags(sessObj);
- }
-
- }
-
- private String[] handleConnException(Exception e, ParseArguments pa,
- String[] args) throws IOException, UserInterruption {
- sessObj.getQuery().setStatusCode(-1); // update the error code to -1
- sessObj.setLastError(-1);
- if (e instanceof InvalidNumberOfArguments) {
- writer.writeln(e.toString());
- } else if (e instanceof IOException) {
- if (!(e instanceof UnknownHostException))
- writer.writeln(e.toString());
-
- } else if (e instanceof InstantiationException) {
- writer.writeln(e.toString());
- } else if (e instanceof IllegalAccessException) {
- writer.writeln(e.toString());
- } else if (e instanceof ClassNotFoundException) {
- writer.writeln(e.toString());
- } else if (e instanceof UserInterruption) {
- throw ((UserInterruption) e);
- } else if (e instanceof SQLException) {
- writer.writeln();
- sessObj.setLastError(((SQLException) e).getErrorCode());
- // catch the known errors report them with an user friendly text
- if (((SQLException) e).getErrorCode() == SessionDefaults.SQL_ERR_CONN_MAX_LIMIT) {
- System.out.println(SessionError.CONN_MAX_LIMIT_ERR);
- if (doTrace)
- e.printStackTrace();
- System.exit(SessionDefaults.abruptExit);
- } else {
- String errStr = e.toString();
-
- if (errStr.indexOf("org.trafodion.jdbc.t4") != -1)
- errStr = errStr.substring(errStr.indexOf(":") + 1);
-
- writer.write(errStr + SessionDefaults.lineSeperator);
- // identify those args that caused the exception
-
- if ((((SQLException) e).getErrorCode() == SessionDefaults.SQL_ERR_INVALID_AUTH)
- || (((SQLException) e).getErrorCode() == SessionDefaults.SQL_ERR_CLI_AUTH)) {
- pa.userName = null;
- pa.password = null;
- pa.roleName = null;
-
- } else
- pa.serverName = null;
-
- // rebuild args list and remove only those that caused the
- // exception
- args = pa.rebuildArgList(args);
-
- }
- } // end SQLException
-
- return args;
- }
-
- private void handleDisConnect() throws IOException {
- boolean exitFlag = false;
- String errorCodeReturn = "";
- int exitCode = SessionDefaults.DEFAULT_EXIT_CODE;
- String strPendingAction = null;
-
- if (parser.hasMoreTokens()) {
-
- Matcher exitMat = parser.exitPat.matcher(parser.getRemainderStr());
-
- if (exitMat.find()) {
-
- errorCodeReturn = exitMat.group(3);
- if (errorCodeReturn == null)
- errorCodeReturn = exitMat.group(4);
-
- errorCodeReturn = (errorCodeReturn == null || errorCodeReturn
- .equals("")) ? SessionDefaults.DEFAULT_EXIT_CODE + ""
- : errorCodeReturn;
-
- try {
- exitCode = Integer.parseInt(errorCodeReturn.trim());
- } catch (NumberFormatException e) {
- return;
- }
-
- String strCondition = exitMat.group(5);
-
- if (strCondition != null) {
- String strConditional = strCondition.trim() + " THEN EXIT"
- + sessObj.getSessionSQLTerminator();
- ConditionalQuery cqObj = sessObj.getCQryObj();
-
- sessObj.getQuery().setQueryId(IF_THEN);
- sessObj.getQuery().resetQueryText(strConditional);
-
- try {
- cqObj.execute();
- strPendingAction = cqObj.getPendingAction();
- if (strPendingAction != null
- && strPendingAction.equals("EXIT"
- + sessObj.getSessionSQLTerminator())) {
- exitFlag = true;
- sessObj.getQuery().setQueryId(EXIT);
- }
-
- } catch (ConditionalQueryException ex) {
- if (ex.getErrorMsg() != null)
- writer.writeInterfaceErrors(sessObj,
- ex.getErrorMsg());
- else
- writer.writeConditionalSyntaxError(sessObj,
- cqObj.getQueryString());
-
- return;
- } catch (UserInterruption ui) {
- if (sessObj.isQueryInterrupted()) {
- sessObj.setQueryInterrupted(false);
- writer.writeln();
- writer.writeInterfaceErrors(sessObj,
- SessionError.OPERATION_CANCELLED);
- }
- return;
- } catch (IOException e) {
- System.out
- .println("IO Exception occurred while processing conditional query :"
- + e);
- }
-
- } else {
- exitFlag = true;
- }
- } else
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- } else {
- exitFlag = true;
- }
-
- if (sessObj.getQuery().getQueryId() == DISCONNECT && exitFlag) {
- if (sessObj.getConnObj() != null) {
- try {
- // Added if statement 2010-03-25
- // Move the if statement from handleModeCommand to here
- // For Mode commmand can run on non-connection status.
- if (sessObj.getMode() == SessionDefaults.WMS_MODE) {
- sessObj.getStmtObj().execute("WMSCLOSE");
- sessObj.qsOpen = false;
- }
-
- sessObj.getConnObj().getWarnings();
- sessObj.getConnObj().close();
- } catch (SQLException sqle) {
-
- }
- }
- sessObj.setMxosrvrVersion(null);
- sessObj.setSutVersion(null);
- // sessObj.setConnObj(null);
- sessionError('E', SessionError.SESSION_DISCONNECT_ERR);
- sessObj.setDBConnExists(false);
- return;
- }
-
- if (sessObj.getQuery().getQueryId() == EXIT && exitFlag) {
- // Need to close the connection so that MXCS can do
- // the cleanup of resources
- try {
- if (conn != null)
- conn.close();
- } catch (SQLException sqlEx) {
- // Ignore the exception
- }
- sessObj.setPatternsLoaded(false);
- sessObj.setSessionStatus(false);
- sessObj.setExitCode(exitCode);
- }
- }
-
- private void handleHostCommand() throws IOException {
- if (sessObj.getCaller() != PRUNI)
- try {
- Signal.handle(INTSignal, LHCTRLCHandler);
- } catch (Exception e) {
- }
-
- if (!parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- return;
- }
-
- TerminalProcessBridge procStdOut = null;
- TerminalProcessBridge procStdErr = null;
- TerminalProcessBridge procStdIn = null;
-
- try {
-// int idx;
- String osName = System.getProperty("os.name");
- StringBuffer osCommand = new StringBuffer();
-
- if ((null != osName)
- && osName.trim().toUpperCase().startsWith("WINDOW")) {
- osCommand.append("cmd /c");
-
- if (osName.trim().toUpperCase().equals("WINDOWS 95")) {
- osCommand.setLength(0);
- osCommand.append("command /c");
- }
- }
- osCommand.append(parser.getRemainderStr());
- if (osCommand.lastIndexOf(" cd ") >= 0)
- System.out.println("cd is not supported by localhost command");
- else {
- if (TerminalProcessBridge._debugOn)
- System.out.println("** Debug*** ==> running command : "
- + osCommand.toString());
- Process osProcess;
- if ((null != osName)
- && osName.trim().toUpperCase().startsWith("WINDOW"))
- osProcess = Runtime.getRuntime().exec(osCommand.toString());
- else
- osProcess = Runtime.getRuntime().exec(
- new String[] { "sh", "-c", osCommand.toString() });
-
- procStdOut = new TerminalProcessBridge(
- osProcess.getInputStream(), writer);
- procStdOut.setTag("STDOUT");
- procStdErr = new TerminalProcessBridge(
- osProcess.getErrorStream(), System.err);
- procStdErr.setTag("STDERR");
- procStdIn = new TerminalProcessBridge(System.in,
- osProcess.getOutputStream(), false);
- procStdIn.setTag("STDIN");
-
- // Start the threads.
- procStdOut.start();
- procStdErr.start();
- procStdIn.start();
-
- // check for errors.
- int exitVal = osProcess.waitFor();
- if (TerminalProcessBridge._debugOn)
- System.out
- .println("** Debug*** ==> ExitValue: " + exitVal);
- }
- } catch (Throwable t) {
- String msg = t.getMessage();
- writer.writeln(msg.substring(msg.indexOf(":") + 1));
-
- } finally {
- if (null != procStdIn)
- procStdIn.stopReading();
-
- try {
-// Thread.currentThread().yield();
- Thread.yield();
- } catch (Exception e) {
- }
- }
- sessObj.setQryEndTime();
- printElapsedTime();
- writer.writeEndTags(sessObj);
- }
-
- private void handleRepeatCommand(String cmdStr, int cmdNo)
- throws IOException, SQLException, UserInterruption,
- UnKnownInterfaceCommand {
- // If no commands present in history return
- List<Vector<String>> historyList = sessObj.getQryHistory();
-
- if (sessObj.getQryHistory() == null) {
- sessionError('E', SessionError.REPEAT_ERR);
- sessObj.setQuery(null);
- return;
- }
- int historySize = sessObj.getQryHistory().size();
- // If no tokens present, return the previous command
- if (!parser.hasMoreTokens()) {
- cmdNo = historySize;
- }
-
- // FC could be followed by text or a command number
- // first check for the number - this could be a negative
- // integer too.
- else {
- try {
- cmdStr = parser.getNextNumberToken();
-
- if ((cmdStr != null) && !(cmdStr.equals(""))) {
- if (parser.hasMoreTokens()) {
- // throw a syntax error
- writeSyntaxError(this.queryStr,
- parser.getRemainderStr());
- return;
- }
- cmdNo = Integer.parseInt(cmdStr);
- if (cmdNo <= 0)
- cmdNo = historySize + cmdNo;
-
- if ((cmdNo >= 1) && (cmdNo <= historySize)) {
- // sessObj.getQuery().resetQueryText(sessObj.getQryHistory().get(cmdNo-1).toString());
- } else {
- sessionError('E', SessionError.REPEAT_ERR);
- sessObj.setQuery(null);
- return;
- }
- } else // text is passed
- {
- cmdStr = parser.getNextKeyToken().toUpperCase();
- if (cmdStr != null) {
- // search the history buffer for a matching
- // command
- historyList = sessObj.getQryHistory();
- if (historyList != null) {
- int i;
- for (i = historyList.size() - 1; i >= 0; i--) {
- if ((historyList.get(i))
- .get(1)
- .toUpperCase()
- .replaceAll("\\s+", " ")
- .trim()
- .startsWith(
- (cmdStr + parser
- .getRemainderStr()
- .toUpperCase())
- .replaceAll("\\s+", " "))) {
- cmdNo = i + 1;
- break;
- }
- }
- if (i < 0) {
- sessionError('E', SessionError.REPEAT_ERR);
- sessObj.setQuery(null);
- return;
- }
-
- }
- }
- }
- } catch (NumberFormatException nfe) {
- sessionError('E', SessionError.REPEAT_ERR);
- sessObj.setQuery(null);
- return;
- }
- }
-
- String queryText = (historyList.get(cmdNo - 1)).get(1);
- String termEvent = (historyList.get(cmdNo - 1)).get(2);
- String sqlTerminator = sessObj.getTermEventMap().get(termEvent);
-
- // if query ends with sqlterminator then trim and append new
- // term else retain the same
-
- if (queryText.toUpperCase().endsWith(sqlTerminator)) {
- queryText = queryText.substring(0, queryText.length()
- - sqlTerminator.length());
- queryText = queryText + sessObj.getSessionSQLTerminator();
- }
- sessObj.getQuery().resetQueryText(queryText);
- if (sessObj.getQuery().getQueryId() == FC) {
- FCQuery fcQryObj = new FCQuery(sessObj, sessObj.getQuery());
- boolean execute = fcQryObj.editCommand();
- // If user has aborted the fc session do not
- // execute the command, return to the prompt
- if (!execute) {
- sessObj.setQuery(null);
- return;
- }
- }
- try {
- if (sessObj.getQuery().getQueryId() == REPEAT) {
- writer.writeln(sessObj.getQuery().getQueryText());
- }
-
- sessObj.getVQryObj().validate(sessObj.getQuery(),
- sessObj.getSessionSQLTerminator());
-
- if (sessObj.getQuery().getQueryType() == SessionDefaults.IQ) {
- this.execute();
- return;
- } else {
- throw uic;
- }
- } catch (NullKeyWordException nke) {
- // if blank lines entered ..its fine..move on
- return;
- }
- }
-
- private void handleClearCommand() throws IOException {
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- return;
- }
-
- String clsCmdString = "clear";
-
- // if it is windows envrionment use the dll to clear the screen
- if (System.getProperty("os.name").toUpperCase().startsWith("WINDOW")) {
- try {
- WCIUtils wcs = new WCIUtils();
- wcs.cls();
- wcs = null;
- return;
- } catch (Throwable t) {
- if (sessObj.isDebugOn())
- System.out.println(this.getClass().getName()
- + ": Clear command failed. Details = "
- + t.getMessage());
- }
- clsCmdString = "cmd /c cls";
- }
- /**
- * Only if wcs.cls failed, do we get down here and try to run a
- * localhost command (clear).
- */
- try {
- HostQuery hq = new HostQuery();
- hq.startInputThread = false;
- hq.execute(clsCmdString, sessObj.getReader(), sessObj.getWriter());
- hq = null;
-
- } catch (Exception e) {
- }
- }
-
- private void handleRunCommand() throws IOException, SQLException,
- UnKnownInterfaceCommand, UserInterruption {
- String sqlTerminator = null;
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- return;
- }
- if (sessObj.getPrevSQLQuery() == null) {
- sessionError('E', SessionError.SLASH_ERR);
- return;
- }
- if (!sessObj.isDBConnExists()) // Added 2010-03-19
- {
- displayNoConnInfo();
- return;
- }
- if (isCreateTriggerCmd(sessObj.getPrevSQLQuery()))
- sqlTerminator = "/";
- else
- sqlTerminator = sessObj.getSessionSQLTerminator();
-
- sessObj.getQuery().resetQueryText(
- sessObj.getPrevSQLQuery() + sqlTerminator);
-
- try {
- sessObj.getVQryObj().validate(sessObj.getQuery(),
- sessObj.getSessionSQLTerminator());
- if (sessObj.getQuery().getQueryType() == SessionDefaults.IQ) {
- this.execute();
- return;
- } else {
- throw uic;
- }
- } catch (NullKeyWordException nke) {
- // if blank lines entered ..its fine..move on
- return;
- }
- }
-
- private void handleHelp() throws IOException {
- String command = "";
- String tmpStr = null;
- Helper helpObj = new Helper();
- String section = null;
- while ((tmpStr = parser.getNextKeyToken()) != null) {
- command += tmpStr + " ";
- }
-
- if (parser.hasMoreTokens()) {
- writeSyntaxError(this.queryStr, parser.getRemainderStr());
- helpObj = null;
- return;
- }
- helpObj.printHelpText(sessObj.getWriter(), sessObj.getStrMode(),
- s
<TRUNCATED>