[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [calligra/kexi-features-tolszak] kexi: Added new option in import from CSV dialog. Now user can choo
From: Tomasz Olszak <olszak.tomasz () gmail ! com>
Date: 2013-03-31 12:35:53
Message-ID: 20130331123553.6B0D1A604F () git ! kde ! org
[Download RAW message or body]
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 missing \
texts as empty text values(current default configuration) or as NULLs (previous \
behavior) to destination table. There was a lot of confusion when SQL queries with \
condition columnName = '' did not show any results for 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 Value) 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) files.
# 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/plugins/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 columns
//before this: save NULLs first
for (int i = m_prevColumnForSetText + 1; i < col; i++) {
- m_tmpValues << QVariant();
+ if (d->detectedType(i-1) == KexiDB::Field::Text) {
+ m_tmpValues << QString("");
+ } else {
+ m_tmpValues << QVariant();
+ }
}
}
m_prevColumnForSetText = 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.trimmed() : \
text); + } else { // Text type and the rest
+ if (text.isNull()) {
+ //default value is empty string not null - instead querying data \
without knowing SQL is very confusing + m_tmpValues << QString("");
+ } else {
+ m_tmpValues <<QVariant((m_options.trimmedInTextValuesChecked ? \
text.trimmed() : text)); + }
+ };
+ qDebug()<<"m_tmpValues:"<<m_tmpValues;
return;
}
//save text to GUI (table view)
diff --git a/kexi/plugins/importexport/csv/kexicsvimportoptionsdlg.cpp \
b/kexi/plugins/importexport/csv/kexicsvimportoptionsdlg.cpp index 18f134c..bc7f7a2 \
100644
--- a/kexi/plugins/importexport/csv/kexicsvimportoptionsdlg.cpp
+++ b/kexi/plugins/importexport/csv/kexicsvimportoptionsdlg.cpp
@@ -72,6 +72,7 @@ KexiCSVImportOptions::KexiCSVImportOptions()
trimmedInTextValuesChecked
= importExportGroup.readEntry("StripBlanksOffOfTextValuesWhenImportingCSVFiles", \
true); + nullsImportedAsEmptyTextChecked = \
importExportGroup.readEntry("ImportNULLsAsEmptyText", true); }
KexiCSVImportOptions::~KexiCSVImportOptions()
@@ -83,7 +84,8 @@ bool KexiCSVImportOptions::operator== (const KexiCSVImportOptions & \
opt) const return defaultEncodingExplicitySet == opt.defaultEncodingExplicitySet
&& trimmedInTextValuesChecked == opt.trimmedInTextValuesChecked
&& encoding == opt.encoding
- && dateFormat == opt.dateFormat;
+ && dateFormat == opt.dateFormat
+ && nullsImportedAsEmptyTextChecked == \
opt.nullsImportedAsEmptyTextChecked; }
bool KexiCSVImportOptions::operator!= (const KexiCSVImportOptions & opt) const
@@ -144,8 +146,12 @@ KexiCSVImportOptionsDialog::KexiCSVImportOptionsDialog(
m_chkStripWhiteSpaceInTextValues = new QCheckBox(
i18n("Strip leading and trailing blanks off of text values"), plainPage);
lyr->addWidget(m_chkStripWhiteSpaceInTextValues, 2, 0, 1, 2);
- lyr->addItem(new QSpacerItem(30, KDialog::spacingHint(), QSizePolicy::Minimum, \
QSizePolicy::Expanding), 3, 0);
+
+ m_chkImportNULLsAsEmptyText = new QCheckBox(
+ i18n("Import missing text values as empty texts"), plainPage);
+ 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.trimmedInTextValuesChecked);
+ m_chkImportNULLsAsEmptyText->setChecked(options.nullsImportedAsEmptyTextChecked);
adjustSize();
m_encodingComboBox->setFocus();
@@ -167,6 +174,7 @@ KexiCSVImportOptions KexiCSVImportOptionsDialog::options() const
KexiCSVImportOptions opt;
opt.encoding = m_encodingComboBox->selectedEncoding();
opt.trimmedInTextValuesChecked = m_chkStripWhiteSpaceInTextValues->isChecked();
+ opt.nullsImportedAsEmptyTextChecked = m_chkImportNULLsAsEmptyText->isChecked();
return opt;
}
@@ -188,6 +196,8 @@ void KexiCSVImportOptionsDialog::accept()
importExportGroup.writeEntry("StripBlanksOffOfTextValuesWhenImportingCSVFiles",
m_chkStripWhiteSpaceInTextValues->isChecked());
+ 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;
};
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic