Kaydet (Commit) 84286f67 authored tarafından Andrzej J.R. Hunt's avatar Andrzej J.R. Hunt

Rearrange createStandardTypePart to not include extraneous parameters.

We specifically only want the type identifier but not any autoincrement/
nullabe parameters which have to be modified separately in some databases
(e.g. firebird).

Change-Id: I8b33bae8ce4aaf5f325c4156955140ad4fb17db7
üst 4eaca49a
......@@ -60,7 +60,7 @@ namespace dbtools
using namespace connectivity;
using namespace comphelper;
OUString createStandardTypePart(const Reference< XPropertySet >& xColProp,const Reference< XConnection>& _xConnection,ISQLStatementHelper* _pHelper,const OUString& _sCreatePattern)
OUString createStandardTypePart(const Reference< XPropertySet >& xColProp,const Reference< XConnection>& _xConnection,const OUString& _sCreatePattern)
{
Reference<XDatabaseMetaData> xMetaData = _xConnection->getMetaData();
......@@ -73,12 +73,11 @@ OUString createStandardTypePart(const Reference< XPropertySet >& xColProp,const
sal_Int32 nScale = 0;
nDataType = nPrecision = nScale = 0;
sal_Bool bIsAutoIncrement = sal_False;
xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_TYPENAME)) >>= sTypeName;
xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_TYPE)) >>= nDataType;
xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_PRECISION)) >>= nPrecision;
xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_SCALE)) >>= nScale;
xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_ISAUTOINCREMENT)) >>= bIsAutoIncrement;
OUStringBuffer aSql;
......@@ -163,18 +162,6 @@ OUString createStandardTypePart(const Reference< XPropertySet >& xColProp,const
aSql.append(sPostFix);
} // if ( aDefault.getLength() )
if(::comphelper::getINT32(xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_ISNULLABLE))) == ColumnValue::NO_NULLS)
aSql.append(OUString(" NOT NULL"));
if ( bIsAutoIncrement && !sAutoIncrementValue.isEmpty())
{
aSql.appendAscii(" ");
aSql.append(sAutoIncrementValue);
}
if ( _pHelper )
_pHelper->addComment(xColProp,aSql);
return aSql.makeStringAndClear();
}
......@@ -184,12 +171,33 @@ OUString createStandardColumnPart(const Reference< XPropertySet >& xColProp,cons
::dbtools::OPropertyMap& rPropMap = OMetaConnection::getPropMap();
sal_Bool bIsAutoIncrement = sal_False;
xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_ISAUTOINCREMENT)) >>= bIsAutoIncrement;
const OUString sQuoteString = xMetaData->getIdentifierQuoteString();
OUStringBuffer aSql = ::dbtools::quoteName(sQuoteString,::comphelper::getString(xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_NAME))));
// check if the user enter a specific string to create autoincrement values
OUString sAutoIncrementValue;
Reference<XPropertySetInfo> xPropInfo = xColProp->getPropertySetInfo();
if ( xPropInfo.is() && xPropInfo->hasPropertyByName(rPropMap.getNameByIndex(PROPERTY_ID_AUTOINCREMENTCREATION)) )
xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_AUTOINCREMENTCREATION)) >>= sAutoIncrementValue;
aSql.appendAscii(" ");
aSql.append(createStandardTypePart(xColProp, _xConnection, _pHelper, _sCreatePattern));
aSql.append(createStandardTypePart(xColProp, _xConnection, _sCreatePattern));
if(::comphelper::getINT32(xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_ISNULLABLE))) == ColumnValue::NO_NULLS)
aSql.append(OUString(" NOT NULL"));
if ( bIsAutoIncrement && !sAutoIncrementValue.isEmpty())
{
aSql.appendAscii(" ");
aSql.append(sAutoIncrementValue);
}
if ( _pHelper )
_pHelper->addComment(xColProp,aSql);
return aSql.makeStringAndClear();
}
......
......@@ -652,13 +652,10 @@ namespace dbtools
The descriptor of the column.
@param _xConnection
The connection.
@param _pHelper
Allow to add special SQL constructs.
*/
OOO_DLLPUBLIC_DBTOOLS
OUString createStandardTypePart( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& descriptor
,const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>& _xConnection
,ISQLStatementHelper* _pHelper = NULL
,const OUString& _sCreatePattern = OUString());
/** creates the standard sql statement for the column part of a create table statement.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment