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