1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski #ifndef _CONNECTIVITY_OBOUNPARAM_HXX_ 24*b1cdbd2cSJim Jagielski #define _CONNECTIVITY_OBOUNPARAM_HXX_ 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski #include <com/sun/star/io/XInputStream.hpp> 27*b1cdbd2cSJim Jagielski #include "odbc/odbcbasedllapi.hxx" 28*b1cdbd2cSJim Jagielski 29*b1cdbd2cSJim Jagielski namespace connectivity 30*b1cdbd2cSJim Jagielski { 31*b1cdbd2cSJim Jagielski namespace odbc 32*b1cdbd2cSJim Jagielski { 33*b1cdbd2cSJim Jagielski class OOO_DLLPUBLIC_ODBCBASE OBoundParam 34*b1cdbd2cSJim Jagielski { 35*b1cdbd2cSJim Jagielski 36*b1cdbd2cSJim Jagielski public: OBoundParam()37*b1cdbd2cSJim Jagielski OBoundParam() 38*b1cdbd2cSJim Jagielski { 39*b1cdbd2cSJim Jagielski paramLength = NULL; 40*b1cdbd2cSJim Jagielski binaryData = NULL; 41*b1cdbd2cSJim Jagielski pA1=0; 42*b1cdbd2cSJim Jagielski pA2=0; 43*b1cdbd2cSJim Jagielski pB1=0; 44*b1cdbd2cSJim Jagielski pB2=0; 45*b1cdbd2cSJim Jagielski pC1=0; 46*b1cdbd2cSJim Jagielski pC2=0; 47*b1cdbd2cSJim Jagielski pS1=0; 48*b1cdbd2cSJim Jagielski pS2=0; 49*b1cdbd2cSJim Jagielski } ~OBoundParam()50*b1cdbd2cSJim Jagielski ~OBoundParam() 51*b1cdbd2cSJim Jagielski { 52*b1cdbd2cSJim Jagielski delete [] binaryData; 53*b1cdbd2cSJim Jagielski delete [] paramLength; 54*b1cdbd2cSJim Jagielski } 55*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- 56*b1cdbd2cSJim Jagielski // initialize 57*b1cdbd2cSJim Jagielski // Perform an necessary initialization 58*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- initialize()59*b1cdbd2cSJim Jagielski void initialize () 60*b1cdbd2cSJim Jagielski { 61*b1cdbd2cSJim Jagielski // Allocate storage for the length. Note - the length is 62*b1cdbd2cSJim Jagielski // stored in native format, and will have to be converted 63*b1cdbd2cSJim Jagielski // to a Java sal_Int32. The jdbcodbc 'C' bridge provides an 64*b1cdbd2cSJim Jagielski // interface to do this. 65*b1cdbd2cSJim Jagielski 66*b1cdbd2cSJim Jagielski paramLength = new sal_Int8[4]; 67*b1cdbd2cSJim Jagielski } 68*b1cdbd2cSJim Jagielski 69*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- 70*b1cdbd2cSJim Jagielski // allocBindDataBuffer 71*b1cdbd2cSJim Jagielski // Allocates and returns a new bind data buffer of the specified 72*b1cdbd2cSJim Jagielski // length 73*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- allocBindDataBuffer(sal_Int32 bufLen)74*b1cdbd2cSJim Jagielski sal_Int8* allocBindDataBuffer (sal_Int32 bufLen) 75*b1cdbd2cSJim Jagielski { 76*b1cdbd2cSJim Jagielski if ( binaryData ) 77*b1cdbd2cSJim Jagielski delete [] binaryData; 78*b1cdbd2cSJim Jagielski binaryData = new sal_Int8[bufLen]; 79*b1cdbd2cSJim Jagielski 80*b1cdbd2cSJim Jagielski // Reset the input stream, we are doing a new bind 81*b1cdbd2cSJim Jagielski setInputStream (NULL, 0); 82*b1cdbd2cSJim Jagielski 83*b1cdbd2cSJim Jagielski return binaryData; 84*b1cdbd2cSJim Jagielski } 85*b1cdbd2cSJim Jagielski 86*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- 87*b1cdbd2cSJim Jagielski // getBindDataBuffer 88*b1cdbd2cSJim Jagielski // Returns the data buffer to be used when binding to a parameter 89*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- getBindDataBuffer()90*b1cdbd2cSJim Jagielski sal_Int8* getBindDataBuffer () 91*b1cdbd2cSJim Jagielski { 92*b1cdbd2cSJim Jagielski return binaryData; 93*b1cdbd2cSJim Jagielski } 94*b1cdbd2cSJim Jagielski 95*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- 96*b1cdbd2cSJim Jagielski // getBindLengthBuffer 97*b1cdbd2cSJim Jagielski // Returns the length buffer to be used when binding to a parameter 98*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- getBindLengthBuffer()99*b1cdbd2cSJim Jagielski sal_Int8* getBindLengthBuffer () 100*b1cdbd2cSJim Jagielski { 101*b1cdbd2cSJim Jagielski return paramLength; 102*b1cdbd2cSJim Jagielski } 103*b1cdbd2cSJim Jagielski 104*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- 105*b1cdbd2cSJim Jagielski // setInputStream 106*b1cdbd2cSJim Jagielski // Sets the input stream for the bound parameter 107*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- setInputStream(const::com::sun::star::uno::Reference<::com::sun::star::io::XInputStream> & inputStream,sal_Int32 len)108*b1cdbd2cSJim Jagielski void setInputStream(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream>& inputStream, 109*b1cdbd2cSJim Jagielski sal_Int32 len) 110*b1cdbd2cSJim Jagielski { 111*b1cdbd2cSJim Jagielski paramInputStream = inputStream; 112*b1cdbd2cSJim Jagielski paramInputStreamLen = len; 113*b1cdbd2cSJim Jagielski } 114*b1cdbd2cSJim Jagielski setSequence(const::com::sun::star::uno::Sequence<sal_Int8> & _aSequence)115*b1cdbd2cSJim Jagielski void setSequence(const ::com::sun::star::uno::Sequence< sal_Int8 >& _aSequence) 116*b1cdbd2cSJim Jagielski { 117*b1cdbd2cSJim Jagielski aSequence = _aSequence; 118*b1cdbd2cSJim Jagielski } 119*b1cdbd2cSJim Jagielski 120*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- 121*b1cdbd2cSJim Jagielski // getInputStream 122*b1cdbd2cSJim Jagielski // Gets the input stream for the bound parameter 123*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- getInputStream()124*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream> getInputStream () 125*b1cdbd2cSJim Jagielski { 126*b1cdbd2cSJim Jagielski return paramInputStream; 127*b1cdbd2cSJim Jagielski } 128*b1cdbd2cSJim Jagielski 129*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- 130*b1cdbd2cSJim Jagielski // getInputStreamLen 131*b1cdbd2cSJim Jagielski // Gets the input stream length for the bound parameter 132*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- getInputStreamLen()133*b1cdbd2cSJim Jagielski sal_Int32 getInputStreamLen () 134*b1cdbd2cSJim Jagielski { 135*b1cdbd2cSJim Jagielski return paramInputStreamLen; 136*b1cdbd2cSJim Jagielski } 137*b1cdbd2cSJim Jagielski 138*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- 139*b1cdbd2cSJim Jagielski // setSqlType 140*b1cdbd2cSJim Jagielski // Sets the Java sql type used to register an OUT parameter 141*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- 142*b1cdbd2cSJim Jagielski setSqlType(sal_Int32 type)143*b1cdbd2cSJim Jagielski void setSqlType(sal_Int32 type) 144*b1cdbd2cSJim Jagielski { 145*b1cdbd2cSJim Jagielski sqlType = type; 146*b1cdbd2cSJim Jagielski } 147*b1cdbd2cSJim Jagielski 148*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- 149*b1cdbd2cSJim Jagielski // getSqlType 150*b1cdbd2cSJim Jagielski // Gets the Java sql type used to register an OUT parameter 151*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- 152*b1cdbd2cSJim Jagielski getSqlType()153*b1cdbd2cSJim Jagielski sal_Int32 getSqlType () 154*b1cdbd2cSJim Jagielski { 155*b1cdbd2cSJim Jagielski return sqlType; 156*b1cdbd2cSJim Jagielski } 157*b1cdbd2cSJim Jagielski 158*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- 159*b1cdbd2cSJim Jagielski // setOutputParameter 160*b1cdbd2cSJim Jagielski // Sets the flag indicating if this is an OUTPUT parameter 161*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- 162*b1cdbd2cSJim Jagielski setOutputParameter(sal_Bool output)163*b1cdbd2cSJim Jagielski void setOutputParameter (sal_Bool output) 164*b1cdbd2cSJim Jagielski { 165*b1cdbd2cSJim Jagielski outputParameter = output; 166*b1cdbd2cSJim Jagielski } 167*b1cdbd2cSJim Jagielski 168*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- 169*b1cdbd2cSJim Jagielski // isOutputParameter 170*b1cdbd2cSJim Jagielski // Gets the OUTPUT parameter flag 171*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- 172*b1cdbd2cSJim Jagielski isOutputParameter()173*b1cdbd2cSJim Jagielski sal_Bool isOutputParameter () 174*b1cdbd2cSJim Jagielski { 175*b1cdbd2cSJim Jagielski return outputParameter; 176*b1cdbd2cSJim Jagielski } 177*b1cdbd2cSJim Jagielski 178*b1cdbd2cSJim Jagielski protected: 179*b1cdbd2cSJim Jagielski //==================================================================== 180*b1cdbd2cSJim Jagielski // Data attributes 181*b1cdbd2cSJim Jagielski //==================================================================== 182*b1cdbd2cSJim Jagielski 183*b1cdbd2cSJim Jagielski sal_Int8* binaryData; // Storage area to be used 184*b1cdbd2cSJim Jagielski // when binding the parameter 185*b1cdbd2cSJim Jagielski 186*b1cdbd2cSJim Jagielski sal_Int8* paramLength; // Storage area to be used 187*b1cdbd2cSJim Jagielski // for the bound length of the 188*b1cdbd2cSJim Jagielski // parameter. Note that this 189*b1cdbd2cSJim Jagielski // data is in native format. 190*b1cdbd2cSJim Jagielski 191*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream> paramInputStream; 192*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Sequence< sal_Int8 > aSequence; 193*b1cdbd2cSJim Jagielski // When an input stream is 194*b1cdbd2cSJim Jagielski // bound to a parameter, the 195*b1cdbd2cSJim Jagielski // input stream is saved 196*b1cdbd2cSJim Jagielski // until needed. 197*b1cdbd2cSJim Jagielski 198*b1cdbd2cSJim Jagielski sal_Int32 paramInputStreamLen; // Length of input stream 199*b1cdbd2cSJim Jagielski 200*b1cdbd2cSJim Jagielski sal_Int32 sqlType; // Java SQL type used to 201*b1cdbd2cSJim Jagielski // register an OUT parameter 202*b1cdbd2cSJim Jagielski 203*b1cdbd2cSJim Jagielski sal_Bool outputParameter; // true for OUTPUT parameters 204*b1cdbd2cSJim Jagielski 205*b1cdbd2cSJim Jagielski 206*b1cdbd2cSJim Jagielski sal_Int32 pA1; //pointers 207*b1cdbd2cSJim Jagielski sal_Int32 pA2; 208*b1cdbd2cSJim Jagielski sal_Int32 pB1; 209*b1cdbd2cSJim Jagielski sal_Int32 pB2; 210*b1cdbd2cSJim Jagielski sal_Int32 pC1; 211*b1cdbd2cSJim Jagielski sal_Int32 pC2; 212*b1cdbd2cSJim Jagielski sal_Int32 pS1; 213*b1cdbd2cSJim Jagielski sal_Int32 pS2;// reserved for strings(UTFChars) 214*b1cdbd2cSJim Jagielski }; 215*b1cdbd2cSJim Jagielski } 216*b1cdbd2cSJim Jagielski } 217*b1cdbd2cSJim Jagielski #endif // _CONNECTIVITY_OBOUNPARAM_HXX_ 218*b1cdbd2cSJim Jagielski 219