/************************************************************** * * 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 #include 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 */