aboutsummaryrefslogtreecommitdiffstats
path: root/Plugins/CsvExport/csvexport.cpp
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@ubuntu.com>2014-12-06 17:33:25 -0500
committerLibravatarUnit 193 <unit193@ubuntu.com>2014-12-06 17:33:25 -0500
commit7167ce41b61d2ba2cdb526777a4233eb84a3b66a (patch)
treea35c14143716e1f2c98f808c81f89426045a946f /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.cpp191
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);
+}