Tag: cws_dev300_dba31b
User: oj      
Date: 2008-08-15 09:18:22+0000
Modified:
   dba/dbaccess/source/ui/tabledesign/TableController.cxx

Log:
 #i51517# if a column is auto increment and no pk, use this one

File Changes:

Directory: /dba/dbaccess/source/ui/tabledesign/
===============================================

File [changed]: TableController.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/dbaccess/source/ui/tabledesign/TableController.cxx?r1=1.122.24.1&r2=1.122.24.2
Delta lines:  +41 -23
---------------------
--- TableController.cxx 2008-08-13 07:17:49+0000        1.122.24.1
+++ TableController.cxx 2008-08-15 09:18:19+0000        1.122.24.2
@@ -7,7 +7,7 @@
  * OpenOffice.org - a multi-platform office productivity suite
  *
  * $RCSfile: TableController.cxx,v $
- * $Revision: 1.122.24.1 $
+ * $Revision: 1.122.24.2 $
  *
  * This file is part of OpenOffice.org.
  *
@@ -1085,19 +1085,23 @@
 {
        sal_Bool bOk = sal_True;
        sal_Bool bFoundPKey = sal_False;
+    ::std::vector< ::boost::shared_ptr<OTableRow> >    aAutoIncrementColumns;
        Reference< XDatabaseMetaData> xMetaData = getMetaData( );
 
        ::comphelper::UStringMixEqual bCase(xMetaData.is() ? 
xMetaData->supportsMixedCaseQuotedIdentifiers() : sal_True);
        ::std::vector< ::boost::shared_ptr<OTableRow> >::const_iterator aIter = 
m_vRowList.begin();
-       for(;aIter != m_vRowList.end();++aIter)
+    ::std::vector< ::boost::shared_ptr<OTableRow> >::const_iterator aEnd = 
m_vRowList.end();
+       for(;aIter != aEnd;++aIter)
        {
                OFieldDescription* pFieldDesc = (*aIter)->GetActFieldDescr();
                if (pFieldDesc && pFieldDesc->GetName().getLength())
                {
                        bFoundPKey |=  (*aIter)->IsPrimaryKey();
+            if ( pFieldDesc->IsAutoIncrement() )
+                aAutoIncrementColumns.push_back(*aIter);
                        // first check for duplicate names
                        ::std::vector< ::boost::shared_ptr<OTableRow> 
>::const_iterator aIter2 = aIter+1;
-                       for(;aIter2 != m_vRowList.end();++aIter2)
+                       for(;aIter2 != aEnd;++aIter2)
                        {
                                OFieldDescription* pCompareDesc = 
(*aIter2)->GetActFieldDescr();
                                if (pCompareDesc && 
bCase(pCompareDesc->GetName(),pFieldDesc->GetName()))
@@ -1124,6 +1128,21 @@
 
                        if (nReturn == RET_YES)
                        {
+                if ( !aAutoIncrementColumns.empty() )
+                {
+                    aIter = aAutoIncrementColumns.begin();
+                    aEnd = aAutoIncrementColumns.end();
+                       for(;aIter != aEnd;++aIter)
+                       {
+                        OFieldDescription* pActFieldDescr = 
(*aIter)->GetActFieldDescr();
+                        pActFieldDescr->SetIsNullable(ColumnValue::NO_NULLS);
+                        pActFieldDescr->SetPrimaryKey( sal_True );
+                    } // for(;aIter != aEnd;++aIter)
+                    
static_cast<OTableDesignView*>(getView())->GetEditorCtrl()->InvalidateHandleColumn();
+                    
static_cast<OTableDesignView*>(getView())->GetEditorCtrl()->Invalidate();
+                }
+                else
+                {
                                ::boost::shared_ptr<OTableRow>  pNewRow(new 
OTableRow());
                                TOTypeInfoSP pTypeInfo = 
::dbaui::queryPrimaryKeyType(m_aTypeInfo);
                                
@@ -1135,14 +1154,13 @@
                                        
pActFieldDescr->SetAutoIncrement(sal_False); // #95927# 
pTypeInfo->bAutoIncrement
                                        
pActFieldDescr->SetIsNullable(ColumnValue::NO_NULLS);
 
-
                                        pActFieldDescr->SetName( 
createUniqueName(::rtl::OUString::createFromAscii("ID") ));
                                        pActFieldDescr->SetPrimaryKey( sal_True 
);
                                        
m_vRowList.insert(m_vRowList.begin(),pNewRow);
 
                                        
static_cast<OTableDesignView*>(getView())->GetEditorCtrl()->Invalidate();
-                                       //      
static_cast<OTableDesignView*>(getView())->GetEditorCtrl()->DisplayData(0);
                                        
static_cast<OTableDesignView*>(getView())->GetEditorCtrl()->RowInserted(0);
+                                   } // if ( pTypeInfo.get() )
                                }
                        }
                        else if (nReturn == RET_CANCEL)




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to