001: package net.sourceforge.squirrel_sql.plugins.sqlval.cmd;
002:
003: /*
004: * Copyright (C) 2002-2003 Colin Bell
005: * colbell@users.sourceforge.net
006: *
007: * This library is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU Lesser General Public
009: * License as published by the Free Software Foundation; either
010: * version 2.1 of the License, or (at your option) any later version.
011: *
012: * This library is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this library; if not, write to the Free Software
019: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
020: */
021: import net.sourceforge.squirrel_sql.client.session.ISession;
022: import net.sourceforge.squirrel_sql.client.session.properties.SessionProperties;
023: import net.sourceforge.squirrel_sql.fw.sql.IQueryTokenizer;
024: import net.sourceforge.squirrel_sql.fw.util.BaseException;
025: import net.sourceforge.squirrel_sql.fw.util.ICommand;
026: import net.sourceforge.squirrel_sql.fw.util.log.ILogger;
027: import net.sourceforge.squirrel_sql.fw.util.log.LoggerController;
028: import net.sourceforge.squirrel_sql.plugins.sqlval.WebServicePreferences;
029: import net.sourceforge.squirrel_sql.plugins.sqlval.WebServiceSession;
030: import net.sourceforge.squirrel_sql.plugins.sqlval.WebServiceSessionProperties;
031: import net.sourceforge.squirrel_sql.plugins.sqlval.WebServiceValidator;
032:
033: import com.mimer.ws.validateSQL.ValidatorResult;
034:
035: /**
036: * This <CODE>ICommand</CODE> will validate the passed SQL.
037: *
038: * @author <A HREF="mailto:colbell@users.sourceforge.net">Colin Bell</A>
039: */
040: public class ValidateSQLCommand implements ICommand {
041: private final WebServicePreferences _prefs;
042: private final WebServiceSessionProperties _wsSessionProps;
043: private final String _sql;
044: private final String _stmtSep;
045: private final String _solComment;
046: private SessionProperties _sessionProperties;
047: private String _results;
048: private final ISession _session;
049:
050: /** Logger for this class. */
051: private final static ILogger s_log = LoggerController
052: .createLogger(ValidateSQLCommand.class);
053:
054: public ValidateSQLCommand(WebServicePreferences prefs,
055: WebServiceSessionProperties wsSessionProps, String sql,
056: String stmtSep, String solComment,
057: SessionProperties sessionProperties, ISession session) {
058: super ();
059: _prefs = prefs;
060: _wsSessionProps = wsSessionProps;
061: _sql = sql;
062: _stmtSep = stmtSep;
063: _solComment = solComment;
064: _sessionProperties = sessionProperties;
065: _session = session;
066: }
067:
068: public void openSession(WebServiceSession info) {
069: if (info == null) {
070: throw new IllegalArgumentException("ValidationInfo == null");
071: }
072: }
073:
074: public String getResults() {
075: return _results;
076: }
077:
078: public void execute() throws BaseException {
079: try {
080: // Open connection to the webservice.
081: WebServiceSession wss = new WebServiceSession(_prefs,
082: _wsSessionProps);
083: wss.open();
084:
085: final WebServiceValidator val = new WebServiceValidator(
086: wss, _wsSessionProps);
087: final IQueryTokenizer qt = _session.getQueryTokenizer();
088:
089: qt.setScriptToTokenize(_sql);
090: final StringBuffer results = new StringBuffer(1024);
091: while (qt.hasQuery()) {
092: // TODO: When message are can have some text in red (error)
093: // and some normal then put out errors in red.
094: ValidatorResult rc = val.validate(qt.nextQuery());
095: results.append(rc.getData());
096: }
097: _results = results.toString().trim();
098:
099: } catch (Throwable th) {
100: throw new BaseException(th);
101: }
102: }
103: }
|