blob: dde7bf88a2d3d8a0d3aa8e14708d9ef3071ff35c [file] [log] [blame]
/**************************************************************
*
* 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.
*
*************************************************************/
#ifndef _CONNECTIVITY_OBOUNPARAM_HXX_
#define _CONNECTIVITY_OBOUNPARAM_HXX_
#include <com/sun/star/io/XInputStream.hpp>
#include "odbc/odbcbasedllapi.hxx"
namespace connectivity
{
namespace odbc
{
class OOO_DLLPUBLIC_ODBCBASE OBoundParam
{
public:
OBoundParam()
{
paramLength = NULL;
binaryData = NULL;
pA1=0;
pA2=0;
pB1=0;
pB2=0;
pC1=0;
pC2=0;
pS1=0;
pS2=0;
}
~OBoundParam()
{
delete [] binaryData;
delete [] paramLength;
}
//--------------------------------------------------------------------
// initialize
// Perform an necessary initialization
//--------------------------------------------------------------------
void initialize ()
{
// Allocate storage for the length. Note - the length is
// stored in native format, and will have to be converted
// to a Java sal_Int32. The jdbcodbc 'C' bridge provides an
// interface to do this.
paramLength = new sal_Int8[4];
}
//--------------------------------------------------------------------
// allocBindDataBuffer
// Allocates and returns a new bind data buffer of the specified
// length
//--------------------------------------------------------------------
sal_Int8* allocBindDataBuffer (sal_Int32 bufLen)
{
if ( binaryData )
delete [] binaryData;
binaryData = new sal_Int8[bufLen];
// Reset the input stream, we are doing a new bind
setInputStream (NULL, 0);
return binaryData;
}
//--------------------------------------------------------------------
// getBindDataBuffer
// Returns the data buffer to be used when binding to a parameter
//--------------------------------------------------------------------
sal_Int8* getBindDataBuffer ()
{
return binaryData;
}
//--------------------------------------------------------------------
// getBindLengthBuffer
// Returns the length buffer to be used when binding to a parameter
//--------------------------------------------------------------------
sal_Int8* 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 (sal_Bool output)
{
outputParameter = output;
}
//--------------------------------------------------------------------
// isOutputParameter
// Gets the OUTPUT parameter flag
//--------------------------------------------------------------------
sal_Bool isOutputParameter ()
{
return outputParameter;
}
protected:
//====================================================================
// Data attributes
//====================================================================
sal_Int8* binaryData; // Storage area to be used
// when binding the parameter
sal_Int8* 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, the
// input stream is saved
// until needed.
sal_Int32 paramInputStreamLen; // Length of input stream
sal_Int32 sqlType; // Java SQL type used to
// register an OUT parameter
sal_Bool outputParameter; // true for OUTPUT parameters
sal_Int32 pA1; //pointers
sal_Int32 pA2;
sal_Int32 pB1;
sal_Int32 pB2;
sal_Int32 pC1;
sal_Int32 pC2;
sal_Int32 pS1;
sal_Int32 pS2;// reserved for strings(UTFChars)
};
}
}
#endif // _CONNECTIVITY_OBOUNPARAM_HXX_