summaryrefslogtreecommitdiff
path: root/connectivity/source/inc/odbc/OBoundParam.hxx
blob: ce09e86def2348520bfaf1bde8305706108c281d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   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 .
 */
#ifndef _CONNECTIVITY_OBOUNPARAM_HXX_
#define _CONNECTIVITY_OBOUNPARAM_HXX_

#include <com/sun/star/io/XInputStream.hpp>
#include <com/sun/star/sdbc/DataType.hpp>
#include "odbc/odbcbasedllapi.hxx"

namespace connectivity
{
    namespace odbc
    {
        class OOO_DLLPUBLIC_ODBCBASE OBoundParam
        {

        public:
            OBoundParam()
                : binaryData(NULL)
                , paramLength(0)
                , paramInputStreamLen(0)
                , sqlType(::com::sun::star::sdbc::DataType::SQLNULL)
                , outputParameter(false)
            {
            }
            ~OBoundParam()
            {
                free(binaryData);
            }

            // allocBindDataBuffer
            // Allocates and returns a new bind data buffer of the specified
            // length

            void* allocBindDataBuffer (sal_Int32 bufLen)
            {
                // Reset the input stream and sequence, we are doing a new bind
                setInputStream (NULL, 0);
                aSequence.realloc(0);

                free(binaryData);
                binaryData = (bufLen > 0) ? malloc(bufLen) : NULL;

                return binaryData;
            }


            // getBindDataBuffer
            // Returns the data buffer to be used when binding to a parameter

            void* getBindDataBuffer ()
            {
                return binaryData;
            }


            // getBindLengthBuffer
            // Returns the length buffer to be used when binding to a parameter

            SQLLEN* getBindLengthBuffer ()
            {
                return &paramLength;
            }


            // setInputStream
            // Sets the input stream for the bound parameter

            void setInputStream(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream>& inputStream,
                                sal_Int32 len)
            {
                paramInputStream = inputStream;
                paramInputStreamLen = len;
            }

            void setSequence(const ::com::sun::star::uno::Sequence< sal_Int8 >& _aSequence)
            {
                aSequence = _aSequence;
            }


            // getInputStream
            // Gets the input stream for the bound parameter

            ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream> getInputStream ()
            {
                return paramInputStream;
            }


            // getInputStreamLen
            // Gets the input stream length for the bound parameter

            sal_Int32 getInputStreamLen ()
            {
                return paramInputStreamLen;
            }


            // setSqlType
            // Sets the Java sql type used to register an OUT parameter


            void setSqlType(sal_Int32 type)
            {
                sqlType = type;
            }


            // getSqlType
            // Gets the Java sql type used to register an OUT parameter


            sal_Int32 getSqlType ()
            {
                return sqlType;
            }


            // setOutputParameter
            // Sets the flag indicating if this is an OUTPUT parameter


            void setOutputParameter (bool output)
            {
                outputParameter = output;
            }


            // isOutputParameter
            // Gets the OUTPUT parameter flag


            bool isOutputParameter ()
            {
                return outputParameter;
            }

        protected:

            // Data attributes


            void  *binaryData;       // Storage area to be used
                                     // when binding the parameter

            SQLLEN paramLength;      // Storage area to be used
                                     // for the bound length of the
                                     // parameter.  Note that this
                                     // data is in native format.

            ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream> paramInputStream;
            ::com::sun::star::uno::Sequence< sal_Int8 > aSequence;
                                        // When an input stream is
                                        // bound to a parameter, a
                                        // reference to the input stream is saved
                                        // until not needed anymore.

            sal_Int32 paramInputStreamLen;                // Length of input stream

            sal_Int32 sqlType;                          // Java SQL type used to
                                                            // register an OUT parameter

            bool outputParameter;   // true for OUTPUT parameters
        };
    }
}
#endif // _CONNECTIVITY_OBOUNPARAM_HXX_

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */