001: package net.sourceforge.squirrel_sql.plugins.sqlval;
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 java.io.Serializable;
022:
023: import net.sourceforge.squirrel_sql.fw.sql.ISQLConnection;
024: import net.sourceforge.squirrel_sql.fw.sql.SQLDatabaseMetaData;
025:
026: public class WebServiceSessionProperties implements Cloneable,
027: Serializable {
028: private static final String UNSUPPORTED = "Unsupported";
029:
030: /** If <TT>true</TT> use anonymous DBMS and connection technology. */
031: private boolean _useAnonymousDBMS = false;
032:
033: /** Target DBMS. */
034: private String _targetDBMS;
035:
036: /** Target DBMS version. */
037: private String _targetDBMSVersion;
038:
039: /** Connection technology. */
040: private String _connTechnology;
041:
042: /** Connection technology version. */
043: private String _connTechnologyVersion;
044:
045: /** Web service session. */
046: private WebServiceSession _webServiceSession;
047:
048: public WebServiceSessionProperties(WebServicePreferences prefs) {
049: super ();
050: _webServiceSession = new WebServiceSession(prefs, this );
051: }
052:
053: /**
054: * Return a copy of this object.
055: */
056: public Object clone() {
057: try {
058: return super .clone();
059: } catch (CloneNotSupportedException ex) {
060: throw new InternalError(ex.getMessage()); // Impossible.
061: }
062: }
063:
064: /**
065: * Retrieve the web service session. If <TT>null</TT> we haven't yet logged
066: * onto the web service.
067: *
068: * @return Web Service Session.
069: */
070: public WebServiceSession getWebServiceSession() {
071: return _webServiceSession;
072: }
073:
074: /**
075: * If <TT>true</TT> use anonymous client database and connection
076: * technology.
077: *
078: * @return <TT>true</TT> if anonymous client to be used.
079: */
080: public boolean getUseAnonymousDBMS() {
081: return _useAnonymousDBMS;
082: }
083:
084: /**
085: * Set if using anonymous client database and connection
086: * technology.
087: *
088: * @param value <TT>true</TT> if anonymous client to be used.
089: */
090: public void setUseAnonymousDBMS(boolean value) {
091: _useAnonymousDBMS = value;
092: }
093:
094: /**
095: * Retrieve the target DBMS. This is only
096: * used if <TT>useAnonymousDBMS</TT> is false.
097: *
098: * @return Target DBMS name.
099: */
100: public String getTargetDBMSName() {
101: return _targetDBMS;
102: }
103:
104: /**
105: * Retrieve the target DBMS version. This is only
106: * used if <TT>useAnonymousDBMS</TT> is false.
107: *
108: * @return Target DBMS version.
109: */
110: public String getTargetDBMSVersion() {
111: return _targetDBMSVersion;
112: }
113:
114: /**
115: * Retrieve the connection technology. This is only
116: * used if <TT>useAnonymousDBMS</TT> is false.
117: *
118: * @return Connection technology
119: */
120: public String getConnectionTechnology() {
121: return _connTechnology;
122: }
123:
124: /**
125: * Retrieve the connection technology version. This is only
126: * used if <TT>useAnonymousDBMS</TT> is false.
127: *
128: * @return Target DBMS version.
129: */
130: public String getConnectionTechnologyVersion() {
131: return _connTechnologyVersion;
132: }
133:
134: /**
135: * Set the DBMS and connection technology info.
136: *
137: * @param conn SQLConnection to DBMS.
138: *
139: * @throws IllegalArgumentException
140: * Thrown if null SQLConnection passed.
141: */
142: public void setSQLConnection(ISQLConnection conn) {
143: if (conn == null) {
144: throw new IllegalArgumentException("SQLConnection == null");
145: }
146:
147: SQLDatabaseMetaData md = conn.getSQLMetaData();
148: try {
149: _targetDBMS = md.getDatabaseProductName();
150: } catch (Throwable ignore) {
151: _targetDBMS = UNSUPPORTED;
152: }
153: try {
154: // Current version of the validator webservice cannot handle
155: // anything greater than 30.
156: _targetDBMSVersion = md.getDatabaseProductVersion();
157: if (_targetDBMSVersion.length() > 30) {
158: _targetDBMSVersion = _targetDBMSVersion
159: .substring(0, 30);
160: }
161: } catch (Throwable ignore) {
162: _targetDBMSVersion = UNSUPPORTED;
163: }
164: _connTechnology = "JDBC";
165: try {
166: _connTechnologyVersion = String
167: .valueOf(md.getJDBCVersion());
168: } catch (Throwable ignore) {
169: _connTechnologyVersion = UNSUPPORTED;
170: }
171: }
172: }
|