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 ...@@ -60,7 +60,7 @@ namespace dbtools
using namespace connectivity; using namespace connectivity;
using namespace comphelper; 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(); Reference<XDatabaseMetaData> xMetaData = _xConnection->getMetaData();
...@@ -73,12 +73,11 @@ OUString createStandardTypePart(const Reference< XPropertySet >& xColProp,const ...@@ -73,12 +73,11 @@ OUString createStandardTypePart(const Reference< XPropertySet >& xColProp,const
sal_Int32 nScale = 0; sal_Int32 nScale = 0;
nDataType = nPrecision = 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_TYPENAME)) >>= sTypeName;
xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_TYPE)) >>= nDataType; xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_TYPE)) >>= nDataType;
xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_PRECISION)) >>= nPrecision; xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_PRECISION)) >>= nPrecision;
xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_SCALE)) >>= nScale; xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_SCALE)) >>= nScale;
xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_ISAUTOINCREMENT)) >>= bIsAutoIncrement;
OUStringBuffer aSql; OUStringBuffer aSql;
...@@ -163,18 +162,6 @@ OUString createStandardTypePart(const Reference< XPropertySet >& xColProp,const ...@@ -163,18 +162,6 @@ OUString createStandardTypePart(const Reference< XPropertySet >& xColProp,const
aSql.append(sPostFix); aSql.append(sPostFix);
} // if ( aDefault.getLength() ) } // 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(); return aSql.makeStringAndClear();
} }
...@@ -184,12 +171,33 @@ OUString createStandardColumnPart(const Reference< XPropertySet >& xColProp,cons ...@@ -184,12 +171,33 @@ OUString createStandardColumnPart(const Reference< XPropertySet >& xColProp,cons
::dbtools::OPropertyMap& rPropMap = OMetaConnection::getPropMap(); ::dbtools::OPropertyMap& rPropMap = OMetaConnection::getPropMap();
sal_Bool bIsAutoIncrement = sal_False;
xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_ISAUTOINCREMENT)) >>= bIsAutoIncrement;
const OUString sQuoteString = xMetaData->getIdentifierQuoteString(); const OUString sQuoteString = xMetaData->getIdentifierQuoteString();
OUStringBuffer aSql = ::dbtools::quoteName(sQuoteString,::comphelper::getString(xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_NAME)))); 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.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(); return aSql.makeStringAndClear();
} }
......
...@@ -652,13 +652,10 @@ namespace dbtools ...@@ -652,13 +652,10 @@ namespace dbtools
The descriptor of the column. The descriptor of the column.
@param _xConnection @param _xConnection
The connection. The connection.
@param _pHelper
Allow to add special SQL constructs.
*/ */
OOO_DLLPUBLIC_DBTOOLS OOO_DLLPUBLIC_DBTOOLS
OUString createStandardTypePart( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& descriptor 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 ,const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>& _xConnection
,ISQLStatementHelper* _pHelper = NULL
,const OUString& _sCreatePattern = OUString()); ,const OUString& _sCreatePattern = OUString());
/** creates the standard sql statement for the column part of a create table statement. /** 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