| /************************************************************** |
| * |
| * 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. |
| * |
| *************************************************************/ |
| #include "mysqlc_general.hxx" |
| #include "mysqlc_resultsetmetadata.hxx" |
| |
| #include <cppconn/exception.h> |
| #include <cppconn/datatype.h> |
| |
| using com::sun::star::sdbc::SQLException; |
| |
| using com::sun::star::uno::UNO_QUERY; |
| using com::sun::star::uno::Reference; |
| using com::sun::star::uno::XInterface; |
| using com::sun::star::uno::Any; |
| using ::rtl::OUString; |
| |
| namespace mysqlc_sdbc_driver |
| { |
| // ----------------------------------------------------------------------------- |
| void throwFeatureNotImplementedException( const sal_Char* _pAsciiFeatureName, const Reference< XInterface >& _rxContext, const Any* _pNextException ) |
| throw (SQLException) |
| { |
| const ::rtl::OUString sMessage = ::rtl::OUString::createFromAscii( _pAsciiFeatureName ) + ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ": feature not implemented." ) ); |
| throw SQLException( |
| sMessage, |
| _rxContext, |
| ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HYC00")), |
| 0, |
| _pNextException ? *_pNextException : Any() |
| ); |
| } |
| |
| |
| void throwInvalidArgumentException( const sal_Char* _pAsciiFeatureName, const Reference< XInterface >& _rxContext, const Any* _pNextException ) |
| throw (SQLException) |
| { |
| const ::rtl::OUString sMessage = ::rtl::OUString::createFromAscii( _pAsciiFeatureName ) + ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ": invalid arguments." ) ); |
| throw SQLException( |
| sMessage, |
| _rxContext, |
| ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HYC00")), |
| 0, |
| _pNextException ? *_pNextException : Any() |
| ); |
| } |
| |
| void translateAndThrow(const ::sql::SQLException& _error, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _context, const rtl_TextEncoding encoding) |
| { |
| throw SQLException( |
| convert(_error.what(), encoding), |
| _context, |
| convert(_error.getSQLState(), encoding), |
| _error.getErrorCode(), |
| Any() |
| ); |
| } |
| |
| |
| OUString getStringFromAny(const Any& _rAny) |
| { |
| OUString nReturn; |
| OSL_VERIFY( _rAny >>= nReturn ); |
| return nReturn; |
| } |
| |
| |
| int mysqlToOOOType(int cppConnType) |
| throw () |
| { |
| switch (cppConnType) { |
| case sql::DataType::BIT: |
| return com::sun::star::sdbc::DataType::VARCHAR; |
| |
| case sql::DataType::TINYINT: |
| return com::sun::star::sdbc::DataType::TINYINT; |
| |
| case sql::DataType::SMALLINT: |
| return com::sun::star::sdbc::DataType::SMALLINT; |
| |
| case sql::DataType::INTEGER: |
| return com::sun::star::sdbc::DataType::INTEGER; |
| |
| case sql::DataType::BIGINT: |
| return com::sun::star::sdbc::DataType::BIGINT; |
| |
| case sql::DataType::REAL: |
| return com::sun::star::sdbc::DataType::REAL; |
| |
| case sql::DataType::DOUBLE: |
| return com::sun::star::sdbc::DataType::DOUBLE; |
| |
| case sql::DataType::DECIMAL: |
| return com::sun::star::sdbc::DataType::DECIMAL; |
| |
| case sql::DataType::CHAR: |
| return com::sun::star::sdbc::DataType::CHAR; |
| |
| case sql::DataType::BINARY: |
| return com::sun::star::sdbc::DataType::BINARY; |
| |
| case sql::DataType::ENUM: |
| case sql::DataType::SET: |
| case sql::DataType::VARCHAR: |
| return com::sun::star::sdbc::DataType::VARCHAR; |
| |
| case sql::DataType::VARBINARY: |
| return com::sun::star::sdbc::DataType::VARBINARY; |
| |
| case sql::DataType::LONGVARCHAR: |
| return com::sun::star::sdbc::DataType::LONGVARCHAR; |
| |
| case sql::DataType::LONGVARBINARY: |
| return com::sun::star::sdbc::DataType::LONGVARBINARY; |
| |
| case sql::DataType::TIMESTAMP: |
| return com::sun::star::sdbc::DataType::TIMESTAMP; |
| |
| case sql::DataType::DATE: |
| return com::sun::star::sdbc::DataType::DATE; |
| |
| case sql::DataType::TIME: |
| return com::sun::star::sdbc::DataType::TIME; |
| |
| case sql::DataType::GEOMETRY: |
| return com::sun::star::sdbc::DataType::VARCHAR; |
| |
| case sql::DataType::SQLNULL: |
| return com::sun::star::sdbc::DataType::SQLNULL; |
| |
| case sql::DataType::UNKNOWN: |
| return com::sun::star::sdbc::DataType::VARCHAR; |
| } |
| |
| OSL_ENSURE( false, "mysqlToOOOType: unhandled case, falling back to VARCHAR" ); |
| return com::sun::star::sdbc::DataType::VARCHAR; |
| } |
| |
| |
| ::rtl::OUString convert(const ::ext_std::string& _string, const rtl_TextEncoding encoding) |
| { |
| return ::rtl::OUString( _string.c_str(), _string.size(), encoding ); |
| } |
| |
| ::ext_std::string convert(const ::rtl::OUString& _string, const rtl_TextEncoding encoding) |
| { |
| return ::ext_std::string( ::rtl::OUStringToOString( _string, encoding ).getStr() ); |
| } |
| |
| |
| } /* namespace */ |