summaryrefslogtreecommitdiffstats
path: root/Plugins/XmlExport/xmlexport.h
diff options
context:
space:
mode:
Diffstat (limited to 'Plugins/XmlExport/xmlexport.h')
-rw-r--r--Plugins/XmlExport/xmlexport.h75
1 files changed, 75 insertions, 0 deletions
diff --git a/Plugins/XmlExport/xmlexport.h b/Plugins/XmlExport/xmlexport.h
new file mode 100644
index 0000000..271a687
--- /dev/null
+++ b/Plugins/XmlExport/xmlexport.h
@@ -0,0 +1,75 @@
+#ifndef XMLEXPORT_H
+#define XMLEXPORT_H
+
+#include "xmlexport_global.h"
+#include "plugins/genericexportplugin.h"
+#include "config_builder.h"
+
+CFG_CATEGORIES(XmlExportConfig,
+ CFG_CATEGORY(XmlExport,
+ CFG_ENTRY(QString, Format, "format")
+ CFG_ENTRY(bool, UseNamespace, false)
+ CFG_ENTRY(QString, Namespace, QString())
+ CFG_ENTRY(QString, Escaping, "mixed")
+ )
+)
+
+class XMLEXPORTSHARED_EXPORT XmlExport : public GenericExportPlugin
+{
+ Q_OBJECT
+ SQLITESTUDIO_PLUGIN("xmlexport.json")
+
+ public:
+ XmlExport();
+
+ QString getFormatName() const;
+ ExportManager::StandardConfigFlags standardOptionsToEnable() const;
+ QString getExportConfigFormName() const;
+ CfgMain* getConfig();
+ void validateOptions();
+ QString defaultFileExtension() const;
+ bool beforeExportQueryResults(const QString& query, QList<QueryExecutor::ResultColumnPtr>& columns,
+ const QHash<ExportManager::ExportProviderFlag,QVariant> providedData);
+ bool exportQueryResultsRow(SqlResultsRowPtr row);
+ bool afterExportQueryResults();
+ bool exportTable(const QString& database, const QString& table, const QStringList& columnNames, const QString& ddl, SqliteCreateTablePtr createTable,
+ const QHash<ExportManager::ExportProviderFlag,QVariant> providedData);
+ bool exportVirtualTable(const QString& database, const QString& table, const QStringList& columnNames, const QString& ddl, SqliteCreateVirtualTablePtr createTable,
+ const QHash<ExportManager::ExportProviderFlag,QVariant> providedData);
+ bool exportTableRow(SqlResultsRowPtr data);
+ bool afterExportTable();
+ bool beforeExportDatabase(const QString& database);
+ bool exportIndex(const QString& database, const QString& name, const QString& ddl, SqliteCreateIndexPtr createIndex);
+ bool exportTrigger(const QString& database, const QString& name, const QString& ddl, SqliteCreateTriggerPtr createTrigger);
+ bool exportView(const QString& database, const QString& name, const QString& ddl, SqliteCreateViewPtr createView);
+ bool afterExportDatabase();
+ bool init();
+ void deinit();
+
+ private:
+ void setupConfig();
+ void incrIndent();
+ void decrIndent();
+ void updateIndent();
+ void writeln(const QString& str);
+ QString escape(const QString& str);
+ QString escapeCdata(const QString& str);
+ QString escapeAmpersand(const QString& str);
+
+ static QString toString(bool value);
+
+ CFG_LOCAL(XmlExportConfig, cfg)
+ bool indent = false;
+ int indentDepth = 0;
+ QString indentStr;
+ QString newLineStr;
+ QString nsStr;
+ QString codecName;
+ bool useAmpersand = true;
+ bool useCdata = true;
+ static const QString docBegin;
+
+ static constexpr int minLenghtForCdata = 100;
+};
+
+#endif // XMLEXPORT_H