[Kexi-devel] Simple improvements of importtablewizard and friends

Jaroslaw Staniek staniek at kde.org
Mon Feb 16 20:47:21 UTC 2015


 Hi Roman, Adam,
Just noticed these (not your) issues (in calligra/2.9 without your patches):

1.
KexiDB::TableSchema* AlterSchemaWidget::newSchema()
{
    m_newSchema->setName(m_tableNameWidget->nameText()); // [1]
    return m_newSchema;
}

Why the [1] line is here? On importing large data sets it's called for
every record.

2. Ownership/memory leak issue:
AlterSchemaWidget::setTableSchema(KexiDB::TableSchema* ts, const
QString& suggestedCaption)
is used only in ImportTableWizard::arriveAlterTablePage().
AlterSchemaWidget::m_originalSchema makes no sense I think.
It's enough if we pass `ts' to AlterSchemaWidget.

Then since we want to update the schema's name prior to import, do it
in ImportTableWizard::doImport() just after this code:

    if (!m_alterSchemaWidget->newSchema()) {
        msg.showErrorMessage(i18n("No table was selected to import."));
        return false;
    }

i.e. m_alterSchemaWidget->newSchema()->setName(m_alterSchemaWidget->nameWidget()->nameText());

I guess we need to update schema's caption too:
and m_alterSchemaWidget->newSchema()->setCaption(m_alterSchemaWidget->nameWidget()->captionText());


3. This may be needed because we need to explicitly set auto increment
for the column declared as pkey. We do the same in table designer and
csv import, BTW.

--- kexi/migration/AlterSchemaWidget.cpp
+++ kexi/migration/AlterSchemaWidget.cpp
@@ -135,8 +135,10 @@ void AlterSchemaWidget::typeActivated(int typ)
     }
 }

-void AlterSchemaWidget::pkeyClicked(bool pkey){
+void AlterSchemaWidget::pkeyClicked(bool pkey)
+{
     m_newSchema->field(m_selectedColumn)->setPrimaryKey(pkey);
+    m_newSchema->field(m_selectedColumn)->setAutoIncrement(pkey);
 }

Until now imported tables had no autonumber set.

4. Performance: Compute m_alterSchemaWidget->newSchema()->fieldCount()
once and keep before "do  { }".

5. Naming: replace m_currentDatabase with m_connection.

-- 
regards, Jaroslaw Staniek

KDE:
: A world-wide network of software engineers, artists, writers, translators
: and facilitators committed to Free Software development - http://kde.org
Calligra Suite:
: A graphic art and office suite - http://calligra.org
Kexi:
: A visual database apps builder - http://calligra.org/kexi
Qt Certified Specialist:
: http://www.linkedin.com/in/jstaniek


More information about the Kexi-devel mailing list