Added:
openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/JavaSQLResultSet.java
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/JavaSQLResultSet.java?rev=1814552&view=auto
==============================================================================
---
openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/JavaSQLResultSet.java
(added)
+++
openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/JavaSQLResultSet.java
Wed Nov 8 04:17:25 2017
@@ -0,0 +1,922 @@
+/**************************************************************
+ *
+ * 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.
+ *
+ *************************************************************/
+package com.sun.star.comp.sdbc;
+
+import java.io.InputStreamReader;
+import java.math.BigDecimal;
+import java.nio.charset.Charset;
+
+import org.apache.openoffice.comp.sdbc.dbtools.comphelper.PropertySet;
+import
org.apache.openoffice.comp.sdbc.dbtools.comphelper.PropertySetAdapter.PropertyGetter;
+import
org.apache.openoffice.comp.sdbc.dbtools.comphelper.PropertySetAdapter.PropertySetter;
+import
org.apache.openoffice.comp.sdbc.dbtools.comphelper.ResourceBasedEventLogger;
+import org.apache.openoffice.comp.sdbc.dbtools.util.DBTypeConversion;
+import org.apache.openoffice.comp.sdbc.dbtools.util.DbTools;
+import org.apache.openoffice.comp.sdbc.dbtools.util.PropertyIds;
+import org.apache.openoffice.comp.sdbc.dbtools.util.Resources;
+import org.apache.openoffice.comp.sdbc.dbtools.util.SharedResources;
+import org.apache.openoffice.comp.sdbc.dbtools.util.StandardSQLState;
+
+import com.sun.star.beans.PropertyAttribute;
+import com.sun.star.beans.PropertyVetoException;
+import com.sun.star.comp.sdbc.ConnectionLog.ObjectType;
+import com.sun.star.container.XNameAccess;
+import com.sun.star.io.XInputStream;
+import com.sun.star.lang.IllegalArgumentException;
+import com.sun.star.lang.WrappedTargetException;
+import com.sun.star.lang.XServiceInfo;
+import com.sun.star.lib.uno.adapter.InputStreamToXInputStreamAdapter;
+import com.sun.star.lib.uno.adapter.XInputStreamToInputStreamAdapter;
+import com.sun.star.logging.LogLevel;
+import com.sun.star.sdbc.SQLException;
+import com.sun.star.sdbc.SQLWarning;
+import com.sun.star.sdbc.XArray;
+import com.sun.star.sdbc.XBlob;
+import com.sun.star.sdbc.XClob;
+import com.sun.star.sdbc.XCloseable;
+import com.sun.star.sdbc.XColumnLocate;
+import com.sun.star.sdbc.XRef;
+import com.sun.star.sdbc.XResultSet;
+import com.sun.star.sdbc.XResultSetMetaData;
+import com.sun.star.sdbc.XResultSetMetaDataSupplier;
+import com.sun.star.sdbc.XResultSetUpdate;
+import com.sun.star.sdbc.XRow;
+import com.sun.star.sdbc.XRowUpdate;
+import com.sun.star.sdbc.XWarningsSupplier;
+import com.sun.star.uno.Any;
+import com.sun.star.uno.AnyConverter;
+import com.sun.star.uno.Type;
+import com.sun.star.util.Date;
+import com.sun.star.util.DateTime;
+import com.sun.star.util.Time;
+
+public class JavaSQLResultSet extends PropertySet
+ implements XResultSet, XRow, XResultSetMetaDataSupplier,
+ XWarningsSupplier, XResultSetUpdate, XRowUpdate, XCloseable,
+ XColumnLocate, XServiceInfo {
+
+ private static final String[] services = {
+ "com.sun.star.sdbc.ResultSet"
+ };
+
+ private java.sql.ResultSet jdbcResultSet;
+ private JavaSQLConnection connection;
+ private Object statement;
+ private ResourceBasedEventLogger logger;
+
+ public JavaSQLResultSet(java.sql.ResultSet jdbcResultSet,
JavaSQLConnection connection) {
+ this (jdbcResultSet, connection, null);
+ }
+
+ public JavaSQLResultSet(java.sql.ResultSet jdbcResultSet,
JavaSQLConnection connection, Object statement) {
+ this.jdbcResultSet = jdbcResultSet;
+ this.connection = connection;
+ this.statement = statement;
+ logger = new ConnectionLog(connection.getLogger(), ObjectType.RESULT);
+ registerProperties();
+ }
+
+ // XComponent
+
+ @Override
+ protected synchronized void postDisposing() {
+ super.postDisposing();
+ if (jdbcResultSet != null) {
+ try {
+ jdbcResultSet.close();
+ } catch (java.sql.SQLException jdbcSqlException) {
+ logger.log(LogLevel.WARNING, jdbcSqlException);
+ }
+ jdbcResultSet = null;
+ }
+ }
+
+ // XCloseable
+
+ @Override
+ public void close() throws SQLException {
+ dispose();
+ }
+
+ // XServiceInfo
+
+ @Override
+ public String getImplementationName() {
+ return "com.sun.star.sdbcx.JResultSet";
+ }
+
+ @Override
+ public String[] getSupportedServiceNames() {
+ return services.clone();
+ }
+
+ @Override
+ public boolean supportsService(String serviceName) {
+ for (String service : services) {
+ if (service.equals(serviceName)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ // XPropertySet
+
+ private void registerProperties() {
+ registerProperty(PropertyIds.CURSORNAME.name,
PropertyIds.CURSORNAME.id, Type.STRING, (short)PropertyAttribute.READONLY,
+ new PropertyGetter() {
+ @Override
+ public Object getValue() throws WrappedTargetException {
+ return getCursorName();
+ }
+ }, null);
+ registerProperty(PropertyIds.RESULTSETCONCURRENCY.name,
PropertyIds.RESULTSETCONCURRENCY.id,
+ Type.LONG, (short)PropertyAttribute.READONLY,
+ new PropertyGetter() {
+ @Override
+ public Object getValue() throws WrappedTargetException {
+ return getResultSetConcurrency();
+ }
+ }, null);
+ registerProperty(PropertyIds.RESULTSETTYPE.name,
PropertyIds.RESULTSETTYPE.id,
+ Type.LONG, (short)PropertyAttribute.READONLY,
+ new PropertyGetter() {
+ @Override
+ public Object getValue() throws WrappedTargetException {
+ return getResultSetType();
+ }
+ }, null);
+ registerProperty(PropertyIds.FETCHDIRECTION.name,
PropertyIds.FETCHDIRECTION.id,
+ Type.LONG, (short)0,
+ new PropertyGetter() {
+ @Override
+ public Object getValue() throws WrappedTargetException {
+ return getFetchDirection();
+ }
+ },
+ new PropertySetter() {
+ @Override
+ public void setValue(Object value) throws
PropertyVetoException, IllegalArgumentException, WrappedTargetException {
+ setFetchDirection((int)value);
+ }
+ });
+ registerProperty(PropertyIds.FETCHSIZE.name, PropertyIds.FETCHSIZE.id,
+ Type.LONG, (short)0,
+ new PropertyGetter() {
+ @Override
+ public Object getValue() throws WrappedTargetException {
+ return getFetchSize();
+ }
+ },
+ new PropertySetter() {
+ @Override
+ public void setValue(Object value) throws
PropertyVetoException, IllegalArgumentException, WrappedTargetException {
+ setFetchSize((int)value);
+ }
+ });
+ }
+
+ private String getCursorName() throws WrappedTargetException {
+ try {
+ return jdbcResultSet.getCursorName();
+ } catch (java.sql.SQLException exception) {
+ throw new WrappedTargetException("SQL error", this,
Tools.toUnoException(this, exception));
+ }
+ }
+
+ private int getFetchDirection() throws WrappedTargetException {
+ try {
+ return jdbcResultSet.getFetchDirection();
+ } catch (java.sql.SQLException exception) {
+ throw new WrappedTargetException("SQL error", this,
Tools.toUnoException(this, exception));
+ }
+ }
+
+ private void setFetchDirection(int value) throws WrappedTargetException {
+ try {
+ jdbcResultSet.setFetchDirection(value);
+ } catch (java.sql.SQLException exception) {
+ throw new WrappedTargetException("SQL error", this,
Tools.toUnoException(this, exception));
+ }
+ }
+
+ private int getFetchSize() throws WrappedTargetException {
+ try {
+ return jdbcResultSet.getFetchSize();
+ } catch (java.sql.SQLException exception) {
+ throw new WrappedTargetException("SQL error", this,
Tools.toUnoException(this, exception));
+ }
+ }
+
+ private void setFetchSize(int value) throws WrappedTargetException {
+ try {
+ jdbcResultSet.setFetchSize(value);
+ } catch (java.sql.SQLException exception) {
+ throw new WrappedTargetException("SQL error", this,
Tools.toUnoException(this, exception));
+ }
+ }
+
+ private int getResultSetConcurrency() throws WrappedTargetException {
+ try {
+ return jdbcResultSet.getConcurrency();
+ } catch (java.sql.SQLException exception) {
+ throw new WrappedTargetException("SQL error", this,
Tools.toUnoException(this, exception));
+ }
+ }
+
+ private int getResultSetType() throws WrappedTargetException {
+ try {
+ return jdbcResultSet.getType();
+ } catch (java.sql.SQLException exception) {
+ throw new WrappedTargetException("SQL error", this,
Tools.toUnoException(this, exception));
+ }
+ }
+
+ // everything else
+
+ @Override
+ public int findColumn(String columnName) throws SQLException {
+ try {
+ return jdbcResultSet.findColumn(columnName);
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public XInputStream getBinaryStream(int columnIndex) throws SQLException {
+ try {
+ return new
InputStreamToXInputStreamAdapter(jdbcResultSet.getBinaryStream(columnIndex));
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public XInputStream getCharacterStream(int columnIndex) throws
SQLException {
+ try {
+ return new InputStreamToXInputStreamAdapter(new
ReaderInputStream(jdbcResultSet.getCharacterStream(columnIndex)));
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public boolean getBoolean(int columnIndex) throws SQLException {
+ try {
+ return jdbcResultSet.getBoolean(columnIndex);
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public byte getByte(int columnIndex) throws SQLException {
+ try {
+ return jdbcResultSet.getByte(columnIndex);
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public byte[] getBytes(int columnIndex) throws SQLException {
+ try {
+ return jdbcResultSet.getBytes(columnIndex);
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public Date getDate(int columnIndex) throws SQLException {
+ try {
+ java.sql.Date jdbcDate = jdbcResultSet.getDate(columnIndex);
+ if (jdbcDate != null) {
+ return DBTypeConversion.toDate(jdbcDate.toString());
+ } else {
+ return null;
+ }
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public double getDouble(int columnIndex) throws SQLException {
+ try {
+ return jdbcResultSet.getDouble(columnIndex);
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public float getFloat(int columnIndex) throws SQLException {
+ try {
+ return jdbcResultSet.getFloat(columnIndex);
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public int getInt(int columnIndex) throws SQLException {
+ try {
+ return jdbcResultSet.getInt(columnIndex);
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public int getRow() throws SQLException {
+ try {
+ return jdbcResultSet.getRow();
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public long getLong(int columnIndex) throws SQLException {
+ try {
+ return jdbcResultSet.getLong(columnIndex);
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public XResultSetMetaData getMetaData() throws SQLException {
+ try {
+ java.sql.ResultSetMetaData jdbcMetaData =
jdbcResultSet.getMetaData();
+ if (jdbcMetaData != null) {
+ return new JavaSQLResultSetMetaData(connection, jdbcMetaData);
+ } else {
+ return null;
+ }
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public XArray getArray(int columnIndex) throws SQLException {
+ try {
+ java.sql.Array array = jdbcResultSet.getArray(columnIndex);
+ if (array != null) {
+ return new JavaSQLArray(logger, array);
+ } else {
+ return null;
+ }
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public XClob getClob(int columnIndex) throws SQLException {
+ try {
+ java.sql.Clob clob = jdbcResultSet.getClob(columnIndex);
+ if (clob != null) {
+ return new JavaSQLClob(logger, clob);
+ } else {
+ return null;
+ }
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public XBlob getBlob(int columnIndex) throws SQLException {
+ try {
+ java.sql.Blob blob = jdbcResultSet.getBlob(columnIndex);
+ if (blob != null) {
+ return new JavaSQLBlob(logger, blob);
+ } else {
+ return null;
+ }
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public XRef getRef(int columnIndex) throws SQLException {
+ try {
+ java.sql.Ref ref = jdbcResultSet.getRef(columnIndex);
+ if (ref != null) {
+ return new JavaSQLRef(ref);
+ } else {
+ return null;
+ }
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public Object getObject(int columnIndex, XNameAccess typeMap) throws
SQLException {
+ if (typeMap.hasElements()) {
+ throw new SQLException(
+
SharedResources.getInstance().getResourceStringWithSubstitution(
+ Resources.STR_UNSUPPORTED_FEATURE,
"$featurename$", "Type maps"),
+ this, StandardSQLState.SQL_FEATURE_NOT_IMPLEMENTED.name(),
0, Any.VOID);
+ }
+ try {
+ Object ret = Any.VOID;
+ Object object = jdbcResultSet.getObject(columnIndex);
+ if (object instanceof String) {
+ ret = (String) object;
+ } else if (object instanceof Boolean) {
+ ret = (Boolean) object;
+ } else if (object instanceof java.sql.Date) {
+ ret =
DBTypeConversion.toDate(((java.sql.Date)object).toString());
+ } else if (object instanceof java.sql.Time) {
+ ret =
DBTypeConversion.toTime(((java.sql.Time)object).toString());
+ } else if (object instanceof java.sql.Timestamp) {
+ ret =
DBTypeConversion.toDateTime(((java.sql.Timestamp)object).toString());
+ }
+ return ret;
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoExceptionLogged(this, logger, exception);
+ }
+ }
+
+ @Override
+ public short getShort(int columnIndex) throws SQLException {
+ try {
+ return jdbcResultSet.getShort(columnIndex);
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public String getString(int columnIndex) throws SQLException {
+ try {
+ String string = jdbcResultSet.getString(columnIndex);
+ if (string != null) {
+ return string;
+ } else {
+ return "";
+ }
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public Time getTime(int columnIndex) throws SQLException {
+ try {
+ java.sql.Time time = jdbcResultSet.getTime(columnIndex);
+ if (time != null) {
+ return DBTypeConversion.toTime(time.toString());
+ } else {
+ return new Time();
+ }
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public DateTime getTimestamp(int columnIndex) throws SQLException {
+ try {
+ java.sql.Timestamp timestamp =
jdbcResultSet.getTimestamp(columnIndex);
+ if (timestamp != null) {
+ return DBTypeConversion.toDateTime(timestamp.toString());
+ } else {
+ return new DateTime();
+ }
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public boolean isAfterLast() throws SQLException {
+ try {
+ return jdbcResultSet.isAfterLast();
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public boolean isFirst() throws SQLException {
+ try {
+ return jdbcResultSet.isFirst();
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public boolean isLast() throws SQLException {
+ try {
+ return jdbcResultSet.isLast();
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public void beforeFirst() throws SQLException {
+ try {
+ jdbcResultSet.beforeFirst();
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public void afterLast() throws SQLException {
+ try {
+ jdbcResultSet.afterLast();
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public boolean first() throws SQLException {
+ try {
+ return jdbcResultSet.first();
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public boolean last() throws SQLException {
+ try {
+ return jdbcResultSet.last();
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public boolean absolute(int row) throws SQLException {
+ try {
+ return jdbcResultSet.absolute(row);
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public boolean relative(int row) throws SQLException {
+ try {
+ return jdbcResultSet.relative(row);
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public boolean previous() throws SQLException {
+ try {
+ return jdbcResultSet.previous();
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public Object getStatement() throws SQLException {
+ return statement;
+ }
+
+ @Override
+ public boolean rowDeleted() throws SQLException {
+ try {
+ return jdbcResultSet.rowDeleted();
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public boolean rowInserted() throws SQLException {
+ try {
+ return jdbcResultSet.rowInserted();
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public boolean rowUpdated() throws SQLException {
+ try {
+ return jdbcResultSet.rowUpdated();
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public boolean isBeforeFirst() throws SQLException {
+ try {
+ return jdbcResultSet.isBeforeFirst();
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public boolean next() throws SQLException {
+ try {
+ return jdbcResultSet.next();
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public boolean wasNull() throws SQLException {
+ try {
+ return jdbcResultSet.wasNull();
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public void clearWarnings() throws SQLException {
+ try {
+ jdbcResultSet.clearWarnings();
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public Object getWarnings() throws SQLException {
+ try {
+ java.sql.SQLWarning javaWarning = jdbcResultSet.getWarnings();
+ if (javaWarning != null) {
+ java.lang.Throwable nextException = javaWarning.getCause();
+ SQLWarning warning = new SQLWarning(javaWarning.getMessage());
+ warning.Context = this;
+ warning.SQLState = javaWarning.getSQLState();
+ warning.ErrorCode = javaWarning.getErrorCode();
+ warning.NextException = nextException != null ?
Tools.toUnoException(this, nextException) : Any.VOID;
+ return warning;
+ }
+ return Any.VOID;
+ } catch (java.sql.SQLException sqlException) {
+ throw Tools.toUnoException(this, sqlException);
+ }
+ }
+
+ @Override
+ public void insertRow() throws SQLException {
+ try {
+ jdbcResultSet.insertRow();
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public void updateRow() throws SQLException {
+ try {
+ jdbcResultSet.updateRow();
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public void deleteRow() throws SQLException {
+ try {
+ jdbcResultSet.deleteRow();
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public void cancelRowUpdates() throws SQLException {
+ try {
+ jdbcResultSet.cancelRowUpdates();
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public void moveToInsertRow() throws SQLException {
+ try {
+ jdbcResultSet.moveToInsertRow();
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public void moveToCurrentRow() throws SQLException {
+ try {
+ jdbcResultSet.moveToCurrentRow();
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public void updateNull(int columnIndex) throws SQLException {
+ try {
+ jdbcResultSet.updateNull(columnIndex);
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public void updateBoolean(int columnIndex, boolean x) throws SQLException {
+ try {
+ jdbcResultSet.updateBoolean(columnIndex, x);
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public void updateByte(int columnIndex, byte x) throws SQLException {
+ try {
+ jdbcResultSet.updateByte(columnIndex, x);
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public void updateShort(int columnIndex, short x) throws SQLException {
+ try {
+ jdbcResultSet.updateShort(columnIndex, x);
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public void updateInt(int columnIndex, int x) throws SQLException {
+ try {
+ jdbcResultSet.updateInt(columnIndex, x);
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public void updateLong(int columnIndex, long x) throws SQLException {
+ try {
+ jdbcResultSet.updateLong(columnIndex, x);
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public void updateFloat(int columnIndex, float x) throws SQLException {
+ try {
+ jdbcResultSet.updateFloat(columnIndex, x);
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public void updateDouble(int columnIndex, double x) throws SQLException {
+ try {
+ jdbcResultSet.updateDouble(columnIndex, x);
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public void updateString(int columnIndex, String x) throws SQLException {
+ try {
+ jdbcResultSet.updateString(columnIndex, x);
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public void updateBytes(int columnIndex, byte[] x) throws SQLException {
+ try {
+ jdbcResultSet.updateBytes(columnIndex, x);
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public void updateDate(int columnIndex, Date x) throws SQLException {
+ try {
+ jdbcResultSet.updateDate(columnIndex,
java.sql.Date.valueOf(DBTypeConversion.toDateString(x)));
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public void updateTime(int columnIndex, Time x) throws SQLException {
+ try {
+ jdbcResultSet.updateTime(columnIndex,
java.sql.Time.valueOf(DBTypeConversion.toTimeString(x)));
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public void updateTimestamp(int columnIndex, DateTime x) throws
SQLException {
+ try {
+ jdbcResultSet.updateTimestamp(columnIndex,
+
java.sql.Timestamp.valueOf(DBTypeConversion.toDateTimeString(x)));
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public void updateBinaryStream(int columnIndex, XInputStream x, int
length) throws SQLException {
+ try {
+ jdbcResultSet.updateBinaryStream(columnIndex,
+ new BoundedInputStream(new
XInputStreamToInputStreamAdapter(x), length & 0xffff_ffffL), length);
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public void updateCharacterStream(int columnIndex, XInputStream x, int
length) throws SQLException {
+ try {
+ // FIXME: charset?
+ jdbcResultSet.updateCharacterStream(columnIndex, new
InputStreamReader(
+ new BoundedInputStream(new
XInputStreamToInputStreamAdapter(x), length & 0xffff_ffffL),
+ Charset.forName("UTF16-LE")), length);
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+ @Override
+ public void updateObject(int columnIndex, Object x) throws SQLException {
+ if (!DbTools.updateObject(this, columnIndex, x)) {
+ String error =
SharedResources.getInstance().getResourceStringWithSubstitution(
+ Resources.STR_UNKNOWN_COLUMN_TYPE, "$position$",
Integer.toString(columnIndex));
+ throw new SQLException(error, this,
StandardSQLState.SQL_GENERAL_ERROR.text(), 0, Any.VOID);
+ }
+ }
+
+ @Override
+ public void updateNumericObject(int columnIndex, Object x, int scale)
throws SQLException {
+ try {
+ BigDecimal bigDecimal;
+ if (AnyConverter.isDouble(x)) {
+ bigDecimal = BigDecimal.valueOf(AnyConverter.toDouble(x));
+ } else {
+ bigDecimal = new BigDecimal(AnyConverter.toString(x));
+ }
+ jdbcResultSet.updateObject(columnIndex, bigDecimal, scale);
+ } catch (IllegalArgumentException | java.sql.SQLException exception) {
+ updateObject(columnIndex, x);
+ }
+ }
+
+ @Override
+ public void refreshRow() throws SQLException {
+ try {
+ jdbcResultSet.refreshRow();
+ } catch (java.sql.SQLException exception) {
+ throw Tools.toUnoException(this, exception);
+ }
+ }
+
+
+}
Propchange:
openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/JavaSQLResultSet.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/JavaSQLResultSetMetaData.java
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/JavaSQLResultSetMetaData.java?rev=1814552&view=auto
==============================================================================
---
openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/JavaSQLResultSetMetaData.java
(added)
+++
openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/JavaSQLResultSetMetaData.java
Wed Nov 8 04:17:25 2017
@@ -0,0 +1,232 @@
+/**************************************************************
+ *
+ * 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.
+ *
+ *************************************************************/
+package com.sun.star.comp.sdbc;
+
+import com.sun.star.lib.uno.helper.WeakBase;
+import com.sun.star.sdbc.SQLException;
+import com.sun.star.sdbc.XResultSetMetaData;
+
+public class JavaSQLResultSetMetaData extends WeakBase implements
XResultSetMetaData {
+ private JavaSQLConnection connection;
+ private java.sql.ResultSetMetaData jdbcResultSetMetaData;
+ private int columnCount;
+
+ public JavaSQLResultSetMetaData(JavaSQLConnection connection,
java.sql.ResultSetMetaData jdbcResultSetMetaData) {
+ this.connection = connection;
+ this.jdbcResultSetMetaData = jdbcResultSetMetaData;
+ columnCount = -1;
+ }
+
+ @Override
+ public int getColumnDisplaySize(int column) throws SQLException {
+ try {
+ return jdbcResultSetMetaData.getColumnDisplaySize(column);
+ } catch (java.sql.SQLException jdbcSQLException) {
+ throw Tools.toUnoException(this, jdbcSQLException);
+ }
+ }
+
+ @Override
+ public int getColumnType(int column) throws SQLException {
+ try {
+ return jdbcResultSetMetaData.getColumnType(column);
+ } catch (java.sql.SQLException jdbcSQLException) {
+ throw Tools.toUnoException(this, jdbcSQLException);
+ }
+ }
+
+ @Override
+ public int getColumnCount() throws SQLException {
+ try {
+ if (columnCount == -1) {
+ columnCount = jdbcResultSetMetaData.getColumnCount();
+ }
+ return columnCount;
+ } catch (java.sql.SQLException jdbcSQLException) {
+ throw Tools.toUnoException(this, jdbcSQLException);
+ }
+ }
+
+ @Override
+ public boolean isCaseSensitive(int column) throws SQLException {
+ try {
+ return jdbcResultSetMetaData.isCaseSensitive(column);
+ } catch (java.sql.SQLException jdbcSQLException) {
+ throw Tools.toUnoException(this, jdbcSQLException);
+ }
+ }
+
+ @Override
+ public String getSchemaName(int column) throws SQLException {
+ try {
+ return jdbcResultSetMetaData.getSchemaName(column);
+ } catch (java.sql.SQLException jdbcSQLException) {
+ throw Tools.toUnoException(this, jdbcSQLException);
+ }
+ }
+
+ @Override
+ public String getColumnName(int column) throws SQLException {
+ try {
+ return jdbcResultSetMetaData.getColumnName(column);
+ } catch (java.sql.SQLException jdbcSQLException) {
+ throw Tools.toUnoException(this, jdbcSQLException);
+ }
+ }
+
+ @Override
+ public String getTableName(int column) throws SQLException {
+ try {
+ return jdbcResultSetMetaData.getTableName(column);
+ } catch (java.sql.SQLException jdbcSQLException) {
+ throw Tools.toUnoException(this, jdbcSQLException);
+ }
+ }
+
+ @Override
+ public String getCatalogName(int column) throws SQLException {
+ try {
+ return jdbcResultSetMetaData.getCatalogName(column);
+ } catch (java.sql.SQLException jdbcSQLException) {
+ throw Tools.toUnoException(this, jdbcSQLException);
+ }
+ }
+
+ @Override
+ public String getColumnTypeName(int column) throws SQLException {
+ try {
+ return jdbcResultSetMetaData.getColumnTypeName(column);
+ } catch (java.sql.SQLException jdbcSQLException) {
+ throw Tools.toUnoException(this, jdbcSQLException);
+ }
+ }
+
+ @Override
+ public String getColumnLabel(int column) throws SQLException {
+ try {
+ return jdbcResultSetMetaData.getColumnLabel(column);
+ } catch (java.sql.SQLException jdbcSQLException) {
+ throw Tools.toUnoException(this, jdbcSQLException);
+ }
+ }
+
+ @Override
+ public String getColumnServiceName(int column) throws SQLException {
+ try {
+ return jdbcResultSetMetaData.getColumnClassName(column);
+ } catch (java.sql.SQLException jdbcSQLException) {
+ throw Tools.toUnoException(this, jdbcSQLException);
+ }
+ }
+
+ @Override
+ public boolean isCurrency(int column) throws SQLException {
+ try {
+ if (connection.isIgnoreCurrencyEnabled()) {
+ return false;
+ }
+ return jdbcResultSetMetaData.isCurrency(column);
+ } catch (java.sql.SQLException jdbcSQLException) {
+ throw Tools.toUnoException(this, jdbcSQLException);
+ }
+ }
+
+ @Override
+ public boolean isAutoIncrement(int column) throws SQLException {
+ try {
+ return jdbcResultSetMetaData.isAutoIncrement(column);
+ } catch (java.sql.SQLException jdbcSQLException) {
+ throw Tools.toUnoException(this, jdbcSQLException);
+ }
+ }
+
+ @Override
+ public boolean isSigned(int column) throws SQLException {
+ try {
+ return jdbcResultSetMetaData.isSigned(column);
+ } catch (java.sql.SQLException jdbcSQLException) {
+ throw Tools.toUnoException(this, jdbcSQLException);
+ }
+ }
+
+ @Override
+ public int getPrecision(int column) throws SQLException {
+ try {
+ return jdbcResultSetMetaData.getPrecision(column);
+ } catch (java.sql.SQLException jdbcSQLException) {
+ throw Tools.toUnoException(this, jdbcSQLException);
+ }
+ }
+
+ @Override
+ public int getScale(int column) throws SQLException {
+ try {
+ return jdbcResultSetMetaData.getScale(column);
+ } catch (java.sql.SQLException jdbcSQLException) {
+ throw Tools.toUnoException(this, jdbcSQLException);
+ }
+ }
+
+ @Override
+ public int isNullable(int column) throws SQLException {
+ try {
+ return jdbcResultSetMetaData.isNullable(column);
+ } catch (java.sql.SQLException jdbcSQLException) {
+ throw Tools.toUnoException(this, jdbcSQLException);
+ }
+ }
+
+ @Override
+ public boolean isSearchable(int column) throws SQLException {
+ try {
+ return jdbcResultSetMetaData.isSearchable(column);
+ } catch (java.sql.SQLException jdbcSQLException) {
+ throw Tools.toUnoException(this, jdbcSQLException);
+ }
+ }
+
+ @Override
+ public boolean isReadOnly(int column) throws SQLException {
+ try {
+ return jdbcResultSetMetaData.isReadOnly(column);
+ } catch (java.sql.SQLException jdbcSQLException) {
+ throw Tools.toUnoException(this, jdbcSQLException);
+ }
+ }
+
+ @Override
+ public boolean isDefinitelyWritable(int column) throws SQLException {
+ try {
+ return jdbcResultSetMetaData.isDefinitelyWritable(column);
+ } catch (java.sql.SQLException jdbcSQLException) {
+ throw Tools.toUnoException(this, jdbcSQLException);
+ }
+ }
+
+ @Override
+ public boolean isWritable(int column) throws SQLException {
+ try {
+ return jdbcResultSetMetaData.isWritable(column);
+ } catch (java.sql.SQLException jdbcSQLException) {
+ throw Tools.toUnoException(this, jdbcSQLException);
+ }
+ }
+}
Propchange:
openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/JavaSQLResultSetMetaData.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/JavaSQLStatement.java
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/JavaSQLStatement.java?rev=1814552&view=auto
==============================================================================
---
openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/JavaSQLStatement.java
(added)
+++
openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/JavaSQLStatement.java
Wed Nov 8 04:17:25 2017
@@ -0,0 +1,161 @@
+/**************************************************************
+ *
+ * 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.
+ *
+ *************************************************************/
+package com.sun.star.comp.sdbc;
+
+import org.apache.openoffice.comp.sdbc.dbtools.util.Resources;
+
+import com.sun.star.lang.XServiceInfo;
+import com.sun.star.logging.LogLevel;
+import com.sun.star.sdbc.SQLException;
+import com.sun.star.sdbc.XBatchExecution;
+import com.sun.star.sdbc.XConnection;
+import com.sun.star.sdbc.XResultSet;
+import com.sun.star.sdbc.XStatement;
+
+public class JavaSQLStatement extends JavaSQLStatementBase
+ implements XStatement, XServiceInfo, XBatchExecution {
+
+ private static final String[] services = {
+ "com.sun.star.sdbc.Statement"
+ };
+
+ public JavaSQLStatement(JavaSQLConnection connection) {
+ super(connection);
+ }
+
+ // XServiceInfo
+
+ @Override
+ public String getImplementationName() {
+ return "com.sun.star.sdbcx.JStatement";
+ }
+
+ @Override
+ public String[] getSupportedServiceNames() {
+ return services.clone();
+ }
+
+ @Override
+ public boolean supportsService(String serviceName) {
+ for (String service : services) {
+ if (service.equals(serviceName)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ // XBatchExecution
+
+ public synchronized void addBatch(String sql) throws SQLException {
+ createStatement();
+ try {
+ jdbcStatement.addBatch(sql);
+ } catch (java.sql.SQLException sqlException) {
+ throw Tools.toUnoException(this, sqlException);
+ }
+ }
+
+ @Override
+ public void clearBatch() throws SQLException {
+ createStatement();
+ try {
+ jdbcStatement.clearBatch();
+ } catch (java.sql.SQLException sqlException) {
+ throw Tools.toUnoException(this, sqlException);
+ }
+ }
+
+ @Override
+ public synchronized int[] executeBatch() throws SQLException {
+ createStatement();
+ try {
+ return jdbcStatement.executeBatch();
+ } catch (java.sql.SQLException sqlException) {
+ throw Tools.toUnoException(this, sqlException);
+ }
+ }
+
+ // XStatement
+
+ public synchronized boolean execute(String sql) throws SQLException {
+ createStatement();
+ sqlStatement = sql;
+ try (ContextClassLoaderScope ccl = new
ContextClassLoaderScope(connection.getDriverClassLoader())) {
+ return jdbcStatement.execute(sql);
+ } catch (java.sql.SQLException sqlException) {
+ throw Tools.toUnoExceptionLogged(this, logger, sqlException);
+ }
+ }
+
+ @Override
+ public synchronized XResultSet executeQuery(String sql) throws
SQLException {
+ logger.log(LogLevel.FINE, Resources.STR_LOG_EXECUTE_QUERY, sql);
+ createStatement();
+ sqlStatement = sql;
+ try (ContextClassLoaderScope ccl = new
ContextClassLoaderScope(connection.getDriverClassLoader())) {
+ java.sql.ResultSet jdbcResultSet = jdbcStatement.executeQuery(sql);
+ if (jdbcResultSet != null) {
+ return new JavaSQLResultSet(jdbcResultSet, connection, this);
+ } else {
+ return null;
+ }
+ } catch (java.sql.SQLException sqlException) {
+ throw Tools.toUnoExceptionLogged(this, logger, sqlException);
+ }
+ }
+
+ @Override
+ public synchronized int executeUpdate(String sql) throws SQLException {
+ createStatement();
+ logger.log(LogLevel.FINE, Resources.STR_LOG_EXECUTE_UPDATE, sql);
+ sqlStatement = sql;
+ // FIXME: why didn't the C++ implementation do this in a
ContextClassLoaderScope?
+ try {
+ return jdbcStatement.executeUpdate(sql);
+ } catch (java.sql.SQLException sqlException) {
+ throw Tools.toUnoExceptionLogged(this, logger, sqlException);
+ }
+ }
+
+ @Override
+ public synchronized XConnection getConnection() throws SQLException {
+ checkDisposed();
+ return connection;
+ }
+
+ // others
+
+ protected synchronized void createStatement() throws SQLException {
+ checkDisposed();
+ if (jdbcStatement == null) {
+ try {
+ try {
+ jdbcStatement =
connection.getJDBCConnection().createStatement(resultSetType,
resultSetConcurrency);
+ } catch (NoSuchMethodError noSuchMethodError) {
+ jdbcStatement =
connection.getJDBCConnection().createStatement();
+ }
+ } catch (java.sql.SQLException sqlException) {
+ throw Tools.toUnoExceptionLogged(this, logger, sqlException);
+ }
+ }
+ }
+}
Propchange:
openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/JavaSQLStatement.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/JavaSQLStatementBase.java
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/JavaSQLStatementBase.java?rev=1814552&view=auto
==============================================================================
---
openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/JavaSQLStatementBase.java
(added)
+++
openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/JavaSQLStatementBase.java
Wed Nov 8 04:17:25 2017
@@ -0,0 +1,515 @@
+/**************************************************************
+ *
+ * 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.
+ *
+ *************************************************************/
+package com.sun.star.comp.sdbc;
+
+import org.apache.openoffice.comp.sdbc.dbtools.comphelper.CompHelper;
+import org.apache.openoffice.comp.sdbc.dbtools.comphelper.PropertySet;
+import
org.apache.openoffice.comp.sdbc.dbtools.comphelper.PropertySetAdapter.PropertyGetter;
+import
org.apache.openoffice.comp.sdbc.dbtools.comphelper.PropertySetAdapter.PropertySetter;
+import org.apache.openoffice.comp.sdbc.dbtools.util.PropertyIds;
+import org.apache.openoffice.comp.sdbc.dbtools.util.Resources;
+
+import com.sun.star.beans.PropertyVetoException;
+import com.sun.star.comp.sdbc.ConnectionLog.ObjectType;
+import com.sun.star.lang.IllegalArgumentException;
+import com.sun.star.lang.WrappedTargetException;
+import com.sun.star.logging.LogLevel;
+import com.sun.star.sdbc.ResultSetConcurrency;
+import com.sun.star.sdbc.ResultSetType;
+import com.sun.star.sdbc.SQLException;
+import com.sun.star.sdbc.SQLWarning;
+import com.sun.star.sdbc.XCloseable;
+import com.sun.star.sdbc.XGeneratedResultSet;
+import com.sun.star.sdbc.XMultipleResults;
+import com.sun.star.sdbc.XResultSet;
+import com.sun.star.sdbc.XStatement;
+import com.sun.star.sdbc.XWarningsSupplier;
+import com.sun.star.uno.Any;
+import com.sun.star.uno.Type;
+import com.sun.star.util.XCancellable;
+
+public abstract class JavaSQLStatementBase extends PropertySet
+ implements XGeneratedResultSet, XMultipleResults, XCloseable,
XCancellable, XWarningsSupplier {
+
+ protected JavaSQLConnection connection;
+ protected ConnectionLog logger;
+ protected java.sql.Statement jdbcStatement;
+ protected boolean escapeProcessing = true;
+ protected int resultSetType = ResultSetType.FORWARD_ONLY;
+ protected int resultSetConcurrency = ResultSetConcurrency.READ_ONLY;
+ protected String sqlStatement = "";
+ protected XStatement generatedStatement;
+
+ public JavaSQLStatementBase(JavaSQLConnection connection) {
+ this.connection = connection;
+ this.logger = new ConnectionLog(connection.getLogger(),
ObjectType.STATEMENT);
+ registerProperties();
+ }
+
+ public int getStatementObjectId() {
+ return logger.getObjectId();
+ }
+
+ // XComponent
+
+ @Override
+ protected synchronized void postDisposing() {
+ super.postDisposing();
+ logger.log(LogLevel.FINE, Resources.STR_LOG_CLOSING_STATEMENT);
+ if (jdbcStatement != null) {
+ try {
+ jdbcStatement.close();
+ } catch (java.sql.SQLException sqlException) {
+ logger.log(LogLevel.WARNING, sqlException);
+ }
+ }
+ CompHelper.disposeComponent(generatedStatement);
+ }
+
+ protected abstract void createStatement() throws SQLException;
+
+ // XPropertySet
+
+ private void registerProperties() {
+ registerProperty(PropertyIds.CURSORNAME.name,
PropertyIds.CURSORNAME.id, Type.STRING, (short)0,
+ new PropertyGetter() {
+ @Override
+ public Object getValue() throws WrappedTargetException {
+ return getCursorName();
+ }
+ },
+ new PropertySetter() {
+ @Override
+ public void setValue(Object value) throws
PropertyVetoException, IllegalArgumentException, WrappedTargetException {
+ setCursorName((String)value);
+ }
+ }
+ );
+ registerProperty(PropertyIds.ESCAPEPROCESSING.name,
PropertyIds.ESCAPEPROCESSING.id, Type.BOOLEAN, (short)0,
+ new PropertyGetter() {
+ @Override
+ public Object getValue() throws WrappedTargetException {
+ return getEscapeProcessing();
+ }
+ },
+ new PropertySetter() {
+ @Override
+ public void setValue(Object value) throws
PropertyVetoException, IllegalArgumentException, WrappedTargetException {
+ setEscapeProcessing((boolean)value);
+ }
+ }
+ );
+ registerProperty(PropertyIds.FETCHDIRECTION.name,
PropertyIds.FETCHDIRECTION.id, Type.LONG, (short)0,
+ new PropertyGetter() {
+ @Override
+ public Object getValue() throws WrappedTargetException {
+ return getFetchDirection();
+ }
+ },
+ new PropertySetter() {
+ @Override
+ public void setValue(Object value) throws
PropertyVetoException, IllegalArgumentException, WrappedTargetException {
+ setFetchDirection((int)value);
+ }
+ }
+ );
+ registerProperty(PropertyIds.FETCHSIZE.name, PropertyIds.FETCHSIZE.id,
Type.LONG, (short)0,
+ new PropertyGetter() {
+ @Override
+ public Object getValue() throws WrappedTargetException {
+ return getFetchSize();
+ }
+ },
+ new PropertySetter() {
+ @Override
+ public void setValue(Object value) throws
PropertyVetoException, IllegalArgumentException, WrappedTargetException {
+ setFetchSize((int)value);
+ }
+ }
+ );
+ registerProperty(PropertyIds.MAXFIELDSIZE.name,
PropertyIds.MAXFIELDSIZE.id, Type.LONG, (short)0,
+ new PropertyGetter() {
+ @Override
+ public Object getValue() throws WrappedTargetException {
+ return getMaxFieldSize();
+ }
+ },
+ new PropertySetter() {
+ @Override
+ public void setValue(Object value) throws
PropertyVetoException, IllegalArgumentException, WrappedTargetException {
+ setMaxFieldSize((int)value);
+ }
+ }
+ );
+ registerProperty(PropertyIds.MAXROWS.name, PropertyIds.MAXROWS.id,
Type.LONG, (short)0,
+ new PropertyGetter() {
+ @Override
+ public Object getValue() throws WrappedTargetException {
+ return getMaxRows();
+ }
+ },
+ new PropertySetter() {
+ @Override
+ public void setValue(Object value) throws
PropertyVetoException, IllegalArgumentException, WrappedTargetException {
+ setMaxRows((int)value);
+ }
+ }
+ );
+ registerProperty(PropertyIds.QUERYTIMEOUT.name,
PropertyIds.QUERYTIMEOUT.id, Type.LONG, (short)0,
+ new PropertyGetter() {
+ @Override
+ public Object getValue() throws WrappedTargetException {
+ return getQueryTimeOut();
+ }
+ },
+ new PropertySetter() {
+ @Override
+ public void setValue(Object value) throws
WrappedTargetException{
+ setQueryTimeOut((int)value);
+ }
+ }
+ );
+ registerProperty(PropertyIds.RESULTSETCONCURRENCY.name,
PropertyIds.RESULTSETCONCURRENCY.id, Type.LONG, (short)0,
+ new PropertyGetter() {
+ @Override
+ public Object getValue() throws WrappedTargetException {
+ return getResultSetConcurrency();
+ }
+ },
+ new PropertySetter() {
+ @Override
+ public void setValue(Object value) throws
PropertyVetoException, IllegalArgumentException, WrappedTargetException {
+ setResultSetConcurrency((int)value);
+ }
+ }
+ );
+ registerProperty(PropertyIds.RESULTSETTYPE.name,
PropertyIds.RESULTSETTYPE.id, Type.LONG, (short)0,
+ new PropertyGetter() {
+ @Override
+ public Object getValue() throws WrappedTargetException {
+ return getResultSetType();
+ }
+ },
+ new PropertySetter() {
+ @Override
+ public void setValue(Object value) throws
PropertyVetoException, IllegalArgumentException, WrappedTargetException {
+ setResultSetType((int)value);
+ }
+ }
+ );
+ }
+
+ private String getCursorName() throws WrappedTargetException {
+ try {
+ createStatement();
+ // FIXME: C++'s jdbcStatement.getCursorName() doesn't exist in
JDBC. We always return a blank string.
+ return "";
+ } catch (SQLException exception) {
+ throw new WrappedTargetException("SQL error", this,
Tools.toUnoException(this, exception));
+ }
+ }
+
+ private synchronized void setCursorName(String value) throws
WrappedTargetException {
+ try {
+ createStatement();
+ jdbcStatement.setCursorName(value);
+ } catch (java.sql.SQLException | SQLException exception) {
+ throw new WrappedTargetException("SQL error", this,
Tools.toUnoException(this, exception));
+ }
+ }
+
+ private boolean getEscapeProcessing() throws WrappedTargetException {
+ try {
+ createStatement();
+ return escapeProcessing;
+ } catch (SQLException exception) {
+ throw new WrappedTargetException("SQL error", this,
Tools.toUnoException(this, exception));
+ }
+ }
+
+ private synchronized void setEscapeProcessing(boolean value) throws
WrappedTargetException {
+ escapeProcessing = value;
+ try {
+ createStatement();
+ logger.log(LogLevel.FINE, Resources.STR_LOG_SET_ESCAPE_PROCESSING,
value);
+ jdbcStatement.setEscapeProcessing(value);
+ } catch (java.sql.SQLException | SQLException exception) {
+ throw new WrappedTargetException("SQL error", this,
Tools.toUnoException(this, exception));
+ }
+ }
+
+ private int getFetchDirection() throws WrappedTargetException {
+ try {
+ createStatement();
+ return jdbcStatement.getFetchDirection();
+ } catch (java.sql.SQLException | SQLException exception) {
+ throw new WrappedTargetException("SQL error", this,
Tools.toUnoException(this, exception));
+ }
+ }
+
+ private synchronized void setFetchDirection(int value) throws
WrappedTargetException {
+ try {
+ createStatement();
+ logger.log(LogLevel.FINER, Resources.STR_LOG_FETCH_DIRECTION,
value);
+ jdbcStatement.setFetchDirection(value);
+ } catch (java.sql.SQLException | SQLException exception) {
+ throw new WrappedTargetException("SQL error", this,
Tools.toUnoException(this, exception));
+ }
+ }
+
+ private int getFetchSize() throws WrappedTargetException {
+ try {
+ createStatement();
+ return jdbcStatement.getFetchSize();
+ } catch (java.sql.SQLException | SQLException exception) {
+ throw new WrappedTargetException("SQL error", this,
Tools.toUnoException(this, exception));
+ }
+ }
+
+ private synchronized void setFetchSize(int value) throws
WrappedTargetException {
+ try {
+ createStatement();
+ logger.log(LogLevel.FINER, Resources.STR_LOG_FETCH_SIZE, value);
+ jdbcStatement.setFetchSize(value);
+ } catch (java.sql.SQLException | SQLException exception) {
+ throw new WrappedTargetException("SQL error", this,
Tools.toUnoException(this, exception));
+ }
+ }
+
+ private int getMaxFieldSize() throws WrappedTargetException {
+ try {
+ createStatement();
+ return jdbcStatement.getMaxFieldSize();
+ } catch (java.sql.SQLException | SQLException exception) {
+ throw new WrappedTargetException("SQL error", this,
Tools.toUnoException(this, exception));
+ }
+ }
+
+ private synchronized void setMaxFieldSize(int value) throws
WrappedTargetException {
+ try {
+ createStatement();
+ jdbcStatement.setMaxFieldSize(value);
+ } catch (java.sql.SQLException | SQLException exception) {
+ throw new WrappedTargetException("SQL error", this,
Tools.toUnoException(this, exception));
+ }
+ }
+
+ private int getMaxRows() throws WrappedTargetException {
+ try {
+ createStatement();
+ return jdbcStatement.getMaxRows();
+ } catch (java.sql.SQLException | SQLException exception) {
+ throw new WrappedTargetException("SQL error", this,
Tools.toUnoException(this, exception));
+ }
+ }
+
+ private synchronized void setMaxRows(int value) throws
WrappedTargetException {
+ try {
+ createStatement();
+ jdbcStatement.setMaxRows(value);
+ } catch (java.sql.SQLException | SQLException exception) {
+ throw new WrappedTargetException("SQL error", this,
Tools.toUnoException(this, exception));
+ }
+ }
+
+ private int getQueryTimeOut() throws WrappedTargetException {
+ try {
+ createStatement();
+ return jdbcStatement.getQueryTimeout();
+ } catch (java.sql.SQLException | SQLException exception) {
+ throw new WrappedTargetException("SQL error", this,
Tools.toUnoException(this, exception));
+ }
+ }
+
+ private synchronized void setQueryTimeOut(int value) throws
WrappedTargetException {
+ try {
+ createStatement();
+ jdbcStatement.setQueryTimeout(value);
+ } catch (java.sql.SQLException | SQLException exception) {
+ throw new WrappedTargetException("SQL error", this,
Tools.toUnoException(this, exception));
+ }
+ }
+
+ private int getResultSetConcurrency() throws WrappedTargetException {
+ try {
+ createStatement();
+ return jdbcStatement.getResultSetConcurrency();
+ } catch (java.sql.SQLException | SQLException exception) {
+ throw new WrappedTargetException("SQL error", this,
Tools.toUnoException(this, exception));
+ }
+ }
+
+ private synchronized void setResultSetConcurrency(int value) throws
WrappedTargetException {
+ checkDisposed();
+ try {
+ logger.log(LogLevel.FINE,
Resources.STR_LOG_RESULT_SET_CONCURRENCY, value);
+ resultSetConcurrency = value;
+ jdbcStatement.close();
+ } catch (java.sql.SQLException exception) {
+ throw new WrappedTargetException("SQL error", this,
Tools.toUnoException(this, exception));
+ } finally {
+ jdbcStatement = null;
+ }
+ }
+
+ private int getResultSetType() throws WrappedTargetException {
+ try {
+ createStatement();
+ return jdbcStatement.getResultSetType();
+ } catch (java.sql.SQLException | SQLException exception) {
+ throw new WrappedTargetException("SQL error", this,
Tools.toUnoException(this, exception));
+ }
+ }
+
+ private synchronized void setResultSetType(int value) throws
WrappedTargetException {
+ checkDisposed();
+ try {
+ logger.log(LogLevel.FINE, Resources.STR_LOG_RESULT_SET_TYPE,
value);
+ resultSetType = value;
+ jdbcStatement.close();
+ } catch (java.sql.SQLException exception) {
+ throw new WrappedTargetException("SQL error", this,
Tools.toUnoException(this, exception));
+ } finally {
+ jdbcStatement = null;
+ }
+ }
+
+ // XCancellable
+
+ @Override
+ public void cancel() {
+ try {
+ createStatement();
+ jdbcStatement.cancel();
+ } catch (SQLException sqlException) {
+ logger.log(LogLevel.SEVERE, sqlException);
+ } catch (java.sql.SQLException jdbcException) {
+ logger.log(LogLevel.SEVERE, jdbcException);
+ }
+ }
+
+ // XCloseable
+
+ @Override
+ public synchronized void close() throws SQLException {
+ checkDisposed();
+ dispose();
+ }
+
+ // XWarningsSupplier
+
+ @Override
+ public synchronized void clearWarnings() throws SQLException {
+ try {
+ createStatement();
+ jdbcStatement.clearWarnings();
+ } catch (java.sql.SQLException sqlException) {
+ throw Tools.toUnoException(this, sqlException);
+ }
+ }
+
+ @Override
+ public synchronized Object getWarnings() throws SQLException {
+ try {
+ createStatement();
+ java.sql.SQLWarning javaWarning = jdbcStatement.getWarnings();
+ if (javaWarning != null) {
+ java.lang.Throwable nextException = javaWarning.getCause();
+ SQLWarning warning = new SQLWarning(javaWarning.getMessage());
+ warning.Context = this;
+ warning.SQLState = javaWarning.getSQLState();
+ warning.ErrorCode = javaWarning.getErrorCode();
+ warning.NextException = nextException != null ?
Tools.toUnoException(this, nextException) : Any.VOID;
+ return warning;
+ }
+ return Any.VOID;
+ } catch (java.sql.SQLException sqlException) {
+ throw Tools.toUnoException(this, sqlException);
+ }
+ }
+
+ // XGeneratedResultSet
+
+ public synchronized com.sun.star.sdbc.XResultSet getGeneratedValues()
throws SQLException {
+ logger.log(LogLevel.FINE, Resources.STR_LOG_GENERATED_VALUES);
+ createStatement();
+ java.sql.ResultSet jdbcResultSet = null;
+ try {
+ jdbcResultSet = jdbcStatement.getGeneratedKeys();
+ } catch (java.sql.SQLException jdbcException) {
+ }
+
+ XResultSet resultSet = null;
+ if (jdbcResultSet != null) {
+ resultSet = new JavaSQLResultSet(jdbcResultSet, connection, this);
+ } else {
+ if (connection != null && connection.isAutoRetrievingEnabled()) {
+ String statement =
connection.getTransformedGeneratedStatement(sqlStatement);
+ if (!statement.isEmpty()) {
+ logger.log(LogLevel.FINER,
Resources.STR_LOG_GENERATED_VALUES_FALLBACK, statement);
+ CompHelper.disposeComponent(generatedStatement);
+ generatedStatement = connection.createStatement();
+ resultSet = generatedStatement.executeQuery(statement);
+ }
+ }
+ }
+ return resultSet;
+ }
+
+ // XMultipleResults
+
+ @Override
+ public boolean getMoreResults() throws SQLException {
+ try {
+ createStatement();
+ return jdbcStatement.getMoreResults();
+ } catch (java.sql.SQLException sqlException) {
+ throw Tools.toUnoException(this, sqlException);
+ }
+ }
+
+ @Override
+ public XResultSet getResultSet() throws SQLException {
+ try {
+ createStatement();
+ java.sql.ResultSet jdbcResultSet = jdbcStatement.getResultSet();
+ if (jdbcResultSet != null) {
+ return new JavaSQLResultSet(jdbcResultSet, connection, this);
+ } else {
+ return null;
+ }
+ } catch (java.sql.SQLException sqlException) {
+ throw Tools.toUnoException(this, sqlException);
+ }
+ }
+
+ @Override
+ public int getUpdateCount() throws SQLException {
+ try {
+ createStatement();
+ int count = jdbcStatement.getUpdateCount();
+ logger.log(LogLevel.FINER, Resources.STR_LOG_UPDATE_COUNT, count);
+ return count;
+ } catch (java.sql.SQLException sqlException) {
+ throw Tools.toUnoException(this, sqlException);
+ }
+ }
+}
Propchange:
openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/JavaSQLStatementBase.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/ReaderInputStream.java
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/ReaderInputStream.java?rev=1814552&view=auto
==============================================================================
---
openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/ReaderInputStream.java
(added)
+++
openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/ReaderInputStream.java
Wed Nov 8 04:17:25 2017
@@ -0,0 +1,84 @@
+/**************************************************************
+ *
+ * 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.
+ *
+ *************************************************************/
+package com.sun.star.comp.sdbc;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Reader;
+
+public class ReaderInputStream extends InputStream {
+ private Reader reader;
+ private int nextByte = -1;
+
+ public ReaderInputStream(Reader reader) {
+ this.reader = reader;
+ }
+
+ @Override
+ public void close() throws IOException {
+ reader.close();
+ }
+
+ @Override
+ public int read() throws IOException {
+ if (nextByte >= 0) {
+ int currentByte = nextByte;
+ nextByte = -1;
+ return currentByte;
+ } else {
+ int c = reader.read();
+ if (c < 0) {
+ return c;
+ }
+ nextByte = (byte) ((c >>> 8) & 0xff);
+ return c & 0xff;
+ }
+ }
+
+
+ @Override
+ public int read(byte[] b, int off, int len) throws IOException {
+ if ((off < 0) || (len < 0) || (off + len > b.length)) {
+ throw new IndexOutOfBoundsException();
+ } else if (len == 0) {
+ return 0;
+ } else if (len == 1) {
+ int next = read();
+ if (next < 0) {
+ return next;
+ }
+ b[off] = (byte) next;
+ return 1;
+ } else {
+ int charCount = len / 2;
+ char[] chars = new char[charCount];
+ int charsRead = reader.read(chars);
+ if (charsRead < 0) {
+ return charsRead;
+ }
+ int byteLength = len & ~1;
+ for (int i = 0; i < byteLength; i++) {
+ b[off + i] = (byte)(chars[i/2] >>> (8*(i&1)));
+ }
+ return byteLength;
+ }
+ }
+}
Propchange:
openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/ReaderInputStream.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/Tools.java
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/Tools.java?rev=1814552&view=auto
==============================================================================
---
openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/Tools.java
(added)
+++
openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/Tools.java
Wed Nov 8 04:17:25 2017
@@ -0,0 +1,72 @@
+/**************************************************************
+ *
+ * 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.
+ *
+ *************************************************************/
+package com.sun.star.comp.sdbc;
+
+import
org.apache.openoffice.comp.sdbc.dbtools.comphelper.ResourceBasedEventLogger;
+import org.apache.openoffice.comp.sdbc.dbtools.util.StandardSQLState;
+
+import com.sun.star.logging.LogLevel;
+import com.sun.star.sdbc.SQLException;
+import com.sun.star.uno.Any;
+
+public class Tools {
+ public static SQLException toUnoException(Object source, Throwable
throwable) {
+ // FIXME: use SQLException.getNextException() instead of getCause()?
+ // There are up to 3 dimensions of exception chaining of warnings in
Java,
+ // getCause(), getNextException(), and getNextWarning().
+ // The C++ implementation used getNextException() only,
+ // but I am using the widely used and more helpful getCause().
+ Throwable cause = throwable.getCause();
+ Object unoCause = Any.VOID;
+ if (cause != null) {
+ unoCause = toUnoException(source, throwable);
+ }
+ if (throwable instanceof SQLException) {
+ return (SQLException)throwable;
+ } else if (throwable instanceof java.sql.SQLException) {
+ java.sql.SQLException sqlException = (java.sql.SQLException)
throwable;
+ return new SQLException(sqlException.getMessage(), source,
+ sqlException.getSQLState(), sqlException.getErrorCode(),
unoCause);
+ } else if (throwable instanceof com.sun.star.uno.Exception) {
+ // General UNO exception. Wrap in an SQLException and rethrow:
+ com.sun.star.uno.Exception exception =
(com.sun.star.uno.Exception) throwable;
+ return new SQLException(exception.getMessage(), source,
StandardSQLState.SQL_GENERAL_ERROR.text(),
+ 0, exception);
+ } else {
+ // General Java exception. We can't pass this to UNO, so convert
it to an UNO SQLException:
+ String message = throwable.getMessage();
+ if (message.isEmpty()) {
+ message = throwable.getLocalizedMessage();
+ }
+ if (message.isEmpty()) {
+ message = throwable.toString();
+ }
+ return new SQLException(message, source, "", -1, unoCause);
+ }
+ }
+
+ public static SQLException toUnoExceptionLogged(Object source,
ResourceBasedEventLogger logger, Throwable throwable) {
+
+ SQLException exception = toUnoException(source, throwable);
+ logger.log(LogLevel.SEVERE, exception);
+ return exception;
+ }
+}
Propchange:
openoffice/trunk/main/connectivity/java/sdbc_jdbc/src/com/sun/star/comp/sdbc/Tools.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
openoffice/trunk/main/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/PostgresqlDatabaseMetaDataResultSet.java
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/PostgresqlDatabaseMetaDataResultSet.java?rev=1814552&view=auto
==============================================================================
---
openoffice/trunk/main/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/PostgresqlDatabaseMetaDataResultSet.java
(added)
+++
openoffice/trunk/main/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/PostgresqlDatabaseMetaDataResultSet.java
Wed Nov 8 04:17:25 2017
@@ -0,0 +1,46 @@
+/**************************************************************
+ *
+ * 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.
+ *
+ *************************************************************/
+package com.sun.star.sdbcx.comp.postgresql;
+
+import java.util.ArrayList;
+
+import org.apache.openoffice.comp.sdbc.dbtools.util.DatabaseMetaDataResultSet;
+import org.apache.openoffice.comp.sdbc.dbtools.util.ORowSetValue;
+
+import com.sun.star.sdbc.SQLException;
+import com.sun.star.sdbc.XResultSet;
+import com.sun.star.sdbc.XResultSetMetaData;
+import com.sun.star.sdbc.XResultSetMetaDataSupplier;
+import com.sun.star.uno.UnoRuntime;
+
+public class PostgresqlDatabaseMetaDataResultSet extends
DatabaseMetaDataResultSet {
+ private XResultSetMetaDataSupplier resultSetMetaDataSupplier;
+
+ public PostgresqlDatabaseMetaDataResultSet(XResultSet resultSet,
ArrayList<ORowSetValue[]> rows) {
+ super(resultSet, rows);
+ this.resultSetMetaDataSupplier =
UnoRuntime.queryInterface(XResultSetMetaDataSupplier.class, resultSet);
+ }
+
+ @Override
+ public synchronized XResultSetMetaData getMetaData() throws SQLException {
+ return new
PostgresqlResultSetMetaData(resultSetMetaDataSupplier.getMetaData());
+ }
+}
Propchange:
openoffice/trunk/main/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/PostgresqlDatabaseMetaDataResultSet.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
openoffice/trunk/main/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/PostgresqlDatabaseMetadata.java
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/PostgresqlDatabaseMetadata.java?rev=1814552&r1=1814551&r2=1814552&view=diff
==============================================================================
---
openoffice/trunk/main/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/PostgresqlDatabaseMetadata.java
(original)
+++
openoffice/trunk/main/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/PostgresqlDatabaseMetadata.java
Wed Nov 8 04:17:25 2017
@@ -140,7 +140,7 @@ public class PostgresqlDatabaseMetadata
rowOut[17] = new ORowSetValue(isNullable);
table.add(rowOut);
}
- return new DatabaseMetaDataResultSet(results, table);
+ return new PostgresqlDatabaseMetaDataResultSet(results, table);
}
public XConnection getConnection() throws SQLException {
@@ -399,7 +399,7 @@ public class PostgresqlDatabaseMetadata
table.add(rowOut);
//System.out.println(String.format("type %s, data type %d, SQL
type %d, precision %d, createParams %s", typeName, dataType, sqlDataType,
precision, createParams));
}
- return new DatabaseMetaDataResultSet(results, table);
+ return new PostgresqlDatabaseMetaDataResultSet(results, table);
}
public XResultSet getUDTs(Object arg0, String arg1, String arg2, int[]
arg3) throws SQLException {
Modified:
openoffice/trunk/main/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/PostgresqlViews.java
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/PostgresqlViews.java?rev=1814552&r1=1814551&r2=1814552&view=diff
==============================================================================
---
openoffice/trunk/main/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/PostgresqlViews.java
(original)
+++
openoffice/trunk/main/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/PostgresqlViews.java
Wed Nov 8 04:17:25 2017
@@ -61,7 +61,7 @@ public class PostgresqlViews extends OCo
protected XPropertySet createObject(String name) throws SQLException {
NameComponents nameComponents =
DbTools.qualifiedNameComponents(metadata, name, ComposeRule.InDataManipulation);
- String sql = "SELECT view_definition,check_option FROM
INFORMATION_SCHEMA.views WHERE ";
+ String sql = "SELECT view_definition,check_option FROM
information_schema.views WHERE ";
if (!nameComponents.getCatalog().isEmpty()) {
sql += "table_catalog=? AND ";
}
Modified: openoffice/trunk/main/connectivity/prj/build.lst
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/connectivity/prj/build.lst?rev=1814552&r1=1814551&r2=1814552&view=diff
==============================================================================
--- openoffice/trunk/main/connectivity/prj/build.lst (original)
+++ openoffice/trunk/main/connectivity/prj/build.lst Wed Nov 8 04:17:25 2017
@@ -2,6 +2,7 @@ cn connectivity : shell L10N:l10
cn connectivity usr1 - all cn_mkout
NULL
cn connectivity\inc nmake - all cn_inc NULL
cn connectivity\java\dbtools nmake - all
cn_jdbtools cn_inc NULL
+cn connectivity\java\sdbc_jdbc nmake - all cn_jdbc
cn_jdbtools cn_inc NULL
cn connectivity\java\sdbc_hsqldb nmake - all
cn_jhsqldbdb cn_hsqldb cn_jdbtools cn_inc NULL
cn connectivity\java\sdbc_postgresql nmake - all
cn_postgresqldb cn_dbtools cn_jdbtools cn_inc NULL
cn connectivity\source\commontools nmake - all cn_cmtools
cn_parse cn_inc NULL
@@ -16,7 +17,6 @@ cn connectivity\source\drivers\calc
cn connectivity\source\drivers\odbcbase nmake - all
cn_odbcbase cn_dbtools cn_inc NULL
cn connectivity\source\drivers\odbc nmake - all cn_odbc
cn_odbcbase cn_inc NULL
cn connectivity\source\drivers\mysql nmake - all cn_mysql
cn_dbtools cn_inc NULL
-cn connectivity\source\drivers\jdbc nmake - all cn_jdbc
cn_dbtools cn_inc NULL
cn connectivity\source\drivers\adabas nmake - all cn_adabas
cn_dbtools cn_odbcbase cn_inc NULL
cn connectivity\source\drivers\file nmake - all cn_file
cn_dbtools cn_inc NULL
cn connectivity\source\drivers\flat nmake - all cn_flat
cn_dbtools cn_file cn_inc NULL
Modified: openoffice/trunk/main/connectivity/prj/d.lst
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/connectivity/prj/d.lst?rev=1814552&r1=1814551&r2=1814552&view=diff
==============================================================================
--- openoffice/trunk/main/connectivity/prj/d.lst (original)
+++ openoffice/trunk/main/connectivity/prj/d.lst Wed Nov 8 04:17:25 2017
@@ -14,7 +14,6 @@
..\source\drivers\file\*.xml %_DEST%\xml%_EXT%\*.xml
..\source\drivers\flat\*.xml %_DEST%\xml%_EXT%\*.xml
..\source\drivers\dbase\*.xml %_DEST%\xml%_EXT%\*.xml
-..\source\drivers\jdbc\*.xml %_DEST%\xml%_EXT%\*.xml
..\source\drivers\odbc\*.xml %_DEST%\xml%_EXT%\*.xml
..\source\drivers\evoab2\*.xml %_DEST%\xml%_EXT%\*.xml
..\source\drivers\calc\*.xml %_DEST%\xml%_EXT%\*.xml
@@ -22,6 +21,7 @@
..\%__SRC%\class\*.jar %_DEST%\bin%_EXT%\*.jar
..\%__SRC%\class\dbtools\*.jar %_DEST%\bin%_EXT%\*.jar
..\%__SRC%\class\sdbc_hsqldb\*.jar %_DEST%\bin%_EXT%\*.jar
+..\%__SRC%\class\sdbc_jdbc\*.jar %_DEST%\bin%_EXT%\*.jar
..\%__SRC%\class\sdbc_postgresql\*.jar %_DEST%\bin%_EXT%\*.jar
mkdir: %_DEST%\inc%_EXT%\connectivity
Modified: openoffice/trunk/main/offapi/UnoApi_offapi.mk
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/offapi/UnoApi_offapi.mk?rev=1814552&r1=1814551&r2=1814552&view=diff
==============================================================================
--- openoffice/trunk/main/offapi/UnoApi_offapi.mk (original)
+++ openoffice/trunk/main/offapi/UnoApi_offapi.mk Wed Nov 8 04:17:25 2017
@@ -713,6 +713,7 @@ $(eval $(call gb_UnoApiTarget_add_idlfil
offapi/com/sun/star/sdb/Forms \
offapi/com/sun/star/sdb/OfficeDatabaseDocument \
offapi/com/sun/star/sdb/OrderColumn \
+ offapi/com/sun/star/sdb/ParameterSubstitution \
offapi/com/sun/star/sdb/PreparedStatement \
offapi/com/sun/star/sdb/Query \
offapi/com/sun/star/sdb/QueryDefinition \
Modified: openoffice/trunk/main/postprocess/packregistry/makefile.mk
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/postprocess/packregistry/makefile.mk?rev=1814552&r1=1814551&r2=1814552&view=diff
==============================================================================
--- openoffice/trunk/main/postprocess/packregistry/makefile.mk (original)
+++ openoffice/trunk/main/postprocess/packregistry/makefile.mk Wed Nov 8
04:17:25 2017
@@ -352,7 +352,7 @@ MY_FILES_main += $(MY_MOD)/DataAccess/ev
.IF "$(SOLAR_JAVA)" == "TRUE"
MY_FILES_main += \
$(MY_MOD)/DataAccess/hsqldb.xcu \
- $(MY_MOD)/DataAccess/jdbc.xcu \
+ $(MY_MOD)/DataAccess/sdbc_jdbc.xcu \
$(MY_MOD)/DataAccess/sdbc_postgresql.xcu
.END