From kde-commits Sun Mar 31 12:35:53 2013 From: Tomasz Olszak Date: Sun, 31 Mar 2013 12:35:53 +0000 To: kde-commits Subject: [calligra/kexi-features-tolszak] kexi: Added new option in import from CSV dialog. Now user can choo Message-Id: <20130331123553.6B0D1A604F () git ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=136473332101490 Git commit 12e2b8e7eca4d55698d6fb557a826a3183c911b0 by Tomasz Olszak. Committed on 31/03/2013 at 14:29. Pushed by tolszak into branch 'kexi-features-tolszak'. Added new option in import from CSV dialog. Now user can choose to import m= issing texts as empty text values(current default configuration) or as NULL= s (previous behavior) to destination table. There was a lot of confusion wh= en SQL queries with condition columnName =3D '' did not show any results fo= r imported data. M +3 -0 kexi/doc/dev/settings.txt M +14 -3 kexi/plugins/importexport/csv/kexicsvimportdialog.cpp M +12 -2 kexi/plugins/importexport/csv/kexicsvimportoptionsdlg.cpp M +2 -0 kexi/plugins/importexport/csv/kexicsvimportoptionsdlg.h http://commits.kde.org/calligra/12e2b8e7eca4d55698d6fb557a826a3183c911b0 diff --git a/kexi/doc/dev/settings.txt b/kexi/doc/dev/settings.txt index 7911352..36a1488 100644 --- a/kexi/doc/dev/settings.txt +++ b/kexi/doc/dev/settings.txt @@ -122,6 +122,9 @@ Group: ImportExport # Default text quote character used for exporting CSV (Comma-Separated Val= ue) files. -DefaultTextQuoteForExportingCSVFiles [string] (default is ") = +# Import missing text values in CSV files as empty text('' not NULL). = +ImportNULLsAsEmptyText [boolean] (default: true) + # Default character encoding for exporting CSV (Comma-Separated Value) fil= es. # If not provided, system default will be is assumed. # Only used when StoreOptionsForCSVExportDialog option is true. diff --git a/kexi/plugins/importexport/csv/kexicsvimportdialog.cpp b/kexi/p= lugins/importexport/csv/kexicsvimportdialog.cpp index fc44bec..db447e4 100644 --- a/kexi/plugins/importexport/csv/kexicsvimportdialog.cpp +++ b/kexi/plugins/importexport/csv/kexicsvimportdialog.cpp @@ -1592,7 +1592,11 @@ void KexiCSVImportDialog::setText(int row, int col, = const QString& text, bool in if ((m_prevColumnForSetText + 1) < col) { //skipped one or more co= lumns //before this: save NULL= s first for (int i =3D m_prevColumnForSetText + 1; i < col; i++) { - m_tmpValues << QVariant(); + if (d->detectedType(i-1) =3D=3D KexiDB::Field::Text) { + m_tmpValues << QString(""); + } else { + m_tmpValues << QVariant(); + } } } m_prevColumnForSetText =3D col; @@ -1652,8 +1656,15 @@ void KexiCSVImportDialog::setText(int row, int col, = const QString& text, bool in m_tmpValues << QVariant(); } else m_tmpValues << QVariant(); - } else // Text type and the rest - m_tmpValues << (m_options.trimmedInTextValuesChecked ? text.tr= immed() : text); + } else { // Text type and the rest + if (text.isNull()) { + //default value is empty string not null - instead queryin= g data without knowing SQL is very confusing + m_tmpValues << QString(""); + } else { + m_tmpValues <addWidget(m_chkStripWhiteSpaceInTextValues, 2, 0, 1, 2); - lyr->addItem(new QSpacerItem(30, KDialog::spacingHint(), QSizePolicy::= Minimum, QSizePolicy::Expanding), 3, 0); = + + m_chkImportNULLsAsEmptyText =3D new QCheckBox( + i18n("Import missing text values as empty texts"), plainPa= ge); + lyr->addWidget(m_chkImportNULLsAsEmptyText, 3, 0, 1, 2); + lyr->addItem(new QSpacerItem(30, KDialog::spacingHint(), QSizePolicy::= Minimum, QSizePolicy::Expanding), 4, 0); //update widgets m_encodingComboBox->setSelectedEncoding(options.encoding); if (options.defaultEncodingExplicitySet) { @@ -153,6 +159,7 @@ KexiCSVImportOptionsDialog::KexiCSVImportOptionsDialog( } m_comboDateFormat->setCurrentIndex((int)options.dateFormat); m_chkStripWhiteSpaceInTextValues->setChecked(options.trimmedInTextValu= esChecked); + m_chkImportNULLsAsEmptyText->setChecked(options.nullsImportedAsEmptyTe= xtChecked); = adjustSize(); m_encodingComboBox->setFocus(); @@ -167,6 +174,7 @@ KexiCSVImportOptions KexiCSVImportOptionsDialog::option= s() const KexiCSVImportOptions opt; opt.encoding =3D m_encodingComboBox->selectedEncoding(); opt.trimmedInTextValuesChecked =3D m_chkStripWhiteSpaceInTextValues->i= sChecked(); + opt.nullsImportedAsEmptyTextChecked =3D m_chkImportNULLsAsEmptyText->i= sChecked(); return opt; } = @@ -188,6 +196,8 @@ void KexiCSVImportOptionsDialog::accept() = importExportGroup.writeEntry("StripBlanksOffOfTextValuesWhenImportingC= SVFiles", m_chkStripWhiteSpaceInTextValues->isCheck= ed()); + importExportGroup.writeEntry("ImportNULLsAsEmptyText", + m_chkImportNULLsAsEmptyText->isChecked()); = KDialog::accept(); } diff --git a/kexi/plugins/importexport/csv/kexicsvimportoptionsdlg.h b/kexi= /plugins/importexport/csv/kexicsvimportoptionsdlg.h index f6a29a1..c7785a5 100644 --- a/kexi/plugins/importexport/csv/kexicsvimportoptionsdlg.h +++ b/kexi/plugins/importexport/csv/kexicsvimportoptionsdlg.h @@ -48,6 +48,7 @@ public: DateFormat dateFormat; bool defaultEncodingExplicitySet : 1; bool trimmedInTextValuesChecked : 1; + bool nullsImportedAsEmptyTextChecked: 1; }; = //! @short CSV Options dialog @@ -67,6 +68,7 @@ protected: KexiCharacterEncodingComboBox *m_encodingComboBox; QCheckBox *m_chkAlwaysUseThisEncoding; QCheckBox *m_chkStripWhiteSpaceInTextValues; + QCheckBox *m_chkImportNULLsAsEmptyText; QComboBox *m_comboDateFormat; }; =20