diff options
| author | 2014-12-06 17:33:25 -0500 | |
|---|---|---|
| committer | 2014-12-06 17:33:25 -0500 | |
| commit | 7167ce41b61d2ba2cdb526777a4233eb84a3b66a (patch) | |
| tree | a35c14143716e1f2c98f808c81f89426045a946f /Plugins/CsvExport/csvexport.cpp | |
Imported Upstream version 2.99.6upstream/2.99.6
Diffstat (limited to 'Plugins/CsvExport/csvexport.cpp')
| -rw-r--r-- | Plugins/CsvExport/csvexport.cpp | 191 |
1 files changed, 191 insertions, 0 deletions
diff --git a/Plugins/CsvExport/csvexport.cpp b/Plugins/CsvExport/csvexport.cpp new file mode 100644 index 0000000..bdaf729 --- /dev/null +++ b/Plugins/CsvExport/csvexport.cpp @@ -0,0 +1,191 @@ +#include "csvexport.h" +#include "common/unused.h" +#include "services/exportmanager.h" +#include "csvserializer.h" + +CsvExport::CsvExport() +{ +} + +QString CsvExport::getFormatName() const +{ + return QStringLiteral("CSV"); +} + +ExportManager::StandardConfigFlags CsvExport::standardOptionsToEnable() const +{ + return ExportManager::CODEC; +} + +ExportManager::ExportModes CsvExport::getSupportedModes() const +{ + return ExportManager::FILE|ExportManager::TABLE|ExportManager::QUERY_RESULTS|ExportManager::CLIPBOARD; +} + +QString CsvExport::getExportConfigFormName() const +{ + return QStringLiteral("CsvExport"); +} + +CfgMain* CsvExport::getConfig() +{ + return &cfg; +} + +void CsvExport::validateOptions() +{ + if (cfg.CsvExport.Separator.get() >= 4) + { + EXPORT_MANAGER->updateVisibilityAndEnabled(cfg.CsvExport.CustomSeparator, true, true); + + bool valid = !cfg.CsvExport.CustomSeparator.get().isEmpty(); + EXPORT_MANAGER->handleValidationFromPlugin(valid, cfg.CsvExport.CustomSeparator, tr("Enter the custom separator character.")); + } + else + { + EXPORT_MANAGER->updateVisibilityAndEnabled(cfg.CsvExport.CustomSeparator, true, false); + EXPORT_MANAGER->handleValidationFromPlugin(true, cfg.CsvExport.CustomSeparator); + } +} + +QString CsvExport::defaultFileExtension() const +{ + return QStringLiteral("csv"); +} + +bool CsvExport::beforeExportQueryResults(const QString& query, QList<QueryExecutor::ResultColumnPtr>& columns, const QHash<ExportManager::ExportProviderFlag, QVariant> providedData) +{ + UNUSED(query); + UNUSED(providedData); + defineCsvFormat(); + + QStringList cols; + for (QueryExecutor::ResultColumnPtr resCol : columns) + cols << resCol->displayName; + + writeln(CsvSerializer::serialize(cols, format)); + return true; +} + +bool CsvExport::exportQueryResultsRow(SqlResultsRowPtr row) +{ + exportTableRow(row); + return true; +} + +bool CsvExport::exportTable(const QString& database, const QString& table, const QStringList& columnNames, const QString& ddl, SqliteCreateTablePtr createTable, const QHash<ExportManager::ExportProviderFlag, QVariant> providedData) +{ + UNUSED(database); + UNUSED(table); + UNUSED(ddl); + UNUSED(providedData); + UNUSED(createTable); + return exportTable(columnNames); +} + +bool CsvExport::exportVirtualTable(const QString& database, const QString& table, const QStringList& columnNames, const QString& ddl, SqliteCreateVirtualTablePtr createTable, const QHash<ExportManager::ExportProviderFlag, QVariant> providedData) +{ + UNUSED(database); + UNUSED(table); + UNUSED(ddl); + UNUSED(providedData); + UNUSED(createTable); + return exportTable(columnNames); +} + +bool CsvExport::exportTable(const QStringList& columnNames) +{ + if (!isTableExport()) + return false; + + defineCsvFormat(); + writeln(CsvSerializer::serialize(columnNames, format)); + return true; +} + +bool CsvExport::exportTableRow(SqlResultsRowPtr data) +{ + QStringList valList; + QString nl = cfg.CsvExport.NullValueString.get(); + for (const QVariant& val : data->valueList()) + valList << (val.isNull() ? nl : val.toString()); + + writeln(CsvSerializer::serialize(valList, format)); + return true; +} + +bool CsvExport::beforeExportDatabase(const QString& database) +{ + UNUSED(database); + return false; +} + +bool CsvExport::exportIndex(const QString& database, const QString& name, const QString& ddl, SqliteCreateIndexPtr createIndex) +{ + UNUSED(database); + UNUSED(name); + UNUSED(ddl); + UNUSED(createIndex); + if (isTableExport()) + return true; + + return false; +} + +bool CsvExport::exportTrigger(const QString& database, const QString& name, const QString& ddl, SqliteCreateTriggerPtr createTrigger) +{ + UNUSED(database); + UNUSED(name); + UNUSED(ddl); + UNUSED(createTrigger); + if (isTableExport()) + return true; + + return false; +} + +bool CsvExport::exportView(const QString& database, const QString& name, const QString& ddl, SqliteCreateViewPtr createView) +{ + UNUSED(database); + UNUSED(name); + UNUSED(ddl); + UNUSED(createView); + return false; +} + +void CsvExport::defineCsvFormat() +{ + format = CsvFormat(); + format.rowSeparator = '\n'; + + switch (cfg.CsvExport.Separator.get()) + { + case 0: + format.columnSeparator = ','; + break; + case 1: + format.columnSeparator = ';'; + break; + case 2: + format.columnSeparator = '\t'; + break; + case 3: + format.columnSeparator = ' '; + break; + default: + format.columnSeparator = cfg.CsvExport.CustomSeparator.get(); + break; + } +} + + +bool CsvExport::init() +{ + Q_INIT_RESOURCE(csvexport); + return GenericExportPlugin::init(); +} + +void CsvExport::deinit() +{ + Q_CLEANUP_RESOURCE(csvexport); +} |
