diff options
Diffstat (limited to 'Plugins/JsonExport/jsonexport.h')
| -rw-r--r-- | Plugins/JsonExport/jsonexport.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/Plugins/JsonExport/jsonexport.h b/Plugins/JsonExport/jsonexport.h new file mode 100644 index 0000000..150592d --- /dev/null +++ b/Plugins/JsonExport/jsonexport.h @@ -0,0 +1,78 @@ +#ifndef JSONEXPORT_H +#define JSONEXPORT_H + +#include "jsonexport_global.h" +#include "plugins/genericexportplugin.h" +#include "config_builder.h" +#include <QStack> + +CFG_CATEGORIES(JsonExportConfig, + CFG_CATEGORY(JsonExport, + CFG_ENTRY(QString, Format, "format") + ) +) + +class JSONEXPORTSHARED_EXPORT JsonExport : public GenericExportPlugin +{ + Q_OBJECT + SQLITESTUDIO_PLUGIN("jsonexport.json") + + public: + JsonExport(); + + QString getFormatName() const; + ExportManager::StandardConfigFlags standardOptionsToEnable() const; + QString getExportConfigFormName() const; + CfgMain* getConfig(); + void validateOptions(); + QString defaultFileExtension() const; + QString getDefaultEncoding() 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 beforeExport(); + bool init(); + void deinit(); + + private: + void setupConfig(); + void incrIndent(); + void decrIndent(); + void updateIndent(); + void incrElementCount(); + void write(const QString& str); + QString escapeString(const QString& str); + QString formatValue(const QVariant& val); + void beginObject(); + void beginObject(const QString& key); + void endObject(); + void beginArray(); + void beginArray(const QString& key); + void endArray(); + void writeValue(const QVariant& value); + void writeValue(const QString& key, const QVariant& value); + void writePrefixBeforeEnd(); + void writePrefixBeforeNextElement(); + + CFG_LOCAL(JsonExportConfig, cfg) + QStack<int> elementCounter; + bool indent = false; + int indentDepth = 0; + QString indentStr; + QString newLineStr; + QString codecName; +}; + +#endif // JSONEXPORT_H |
