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