shared: processors: Use DocumentProcessResult instead of PageData vector

This commit is contained in:
Albert S. 2023-05-14 14:14:51 +02:00 committed by Albert S.
parent e68706b8d6
commit 9a2ef19308
10 changed files with 26 additions and 30 deletions

View File

@ -24,7 +24,9 @@ QString DefaultTextProcessor::processText(const QByteArray &data) const
return {}; return {};
} }
QVector<PageData> DefaultTextProcessor::process(const QByteArray &data) const DocumentProcessResult DefaultTextProcessor::process(const QByteArray &data) const
{ {
return {{0, processText(data)}}; DocumentProcessResult result;
result.pages.append({0, processText(data)});
return result;
} }

View File

@ -11,7 +11,7 @@ class DefaultTextProcessor : public Processor
public: public:
DefaultTextProcessor(); DefaultTextProcessor();
QString processText(const QByteArray &data) const; QString processText(const QByteArray &data) const;
QVector<PageData> process(const QByteArray &data) const override; DocumentProcessResult process(const QByteArray &data) const override;
}; };
#endif // DEFAULTTEXTPROCESSOR_H #endif // DEFAULTTEXTPROCESSOR_H

View File

@ -10,7 +10,7 @@ class NothingProcessor : public Processor
NothingProcessor(); NothingProcessor();
public: public:
QVector<PageData> process(const QByteArray & /*data*/) const override DocumentProcessResult process(const QByteArray & /*data*/) const override
{ {
return {}; return {};
} }

View File

@ -3,12 +3,12 @@
#include "odtprocessor.h" #include "odtprocessor.h"
#include "tagstripperprocessor.h" #include "tagstripperprocessor.h"
QVector<PageData> OdtProcessor::process(const QByteArray & /*data*/) const DocumentProcessResult OdtProcessor::process(const QByteArray & /*data*/) const
{ {
throw LooqsGeneralException("Not implemented yet"); throw LooqsGeneralException("Not implemented yet");
} }
QVector<PageData> OdtProcessor::process(QString path) const DocumentProcessResult OdtProcessor::process(QString path) const
{ {
QuaZipFile zipFile(path); QuaZipFile zipFile(path);
zipFile.setFileName("content.xml"); zipFile.setFileName("content.xml");

View File

@ -8,9 +8,9 @@ class OdtProcessor : public Processor
{ {
this->PREFERED_DATA_SOURCE = FILEPATH; this->PREFERED_DATA_SOURCE = FILEPATH;
} }
QVector<PageData> process(const QByteArray &data) const override; DocumentProcessResult process(const QByteArray &data) const override;
QVector<PageData> process(QString path) const override; DocumentProcessResult process(QString path) const override;
}; };
#endif // ODTPROCESSOR_H #endif // ODTPROCESSOR_H

View File

@ -2,8 +2,8 @@
#define PROCESSOR_H #define PROCESSOR_H
#include <QVector> #include <QVector>
#include <QFile> #include <QFile>
#include "pagedata.h"
#include "utils.h" #include "utils.h"
#include "documentprocessresult.h"
enum DataSource enum DataSource
{ {
FILEPATH, FILEPATH,
@ -18,8 +18,8 @@ class Processor
* a single file */ * a single file */
DataSource PREFERED_DATA_SOURCE = ARRAY; DataSource PREFERED_DATA_SOURCE = ARRAY;
Processor(); Processor();
virtual QVector<PageData> process(const QByteArray &data) const = 0; virtual DocumentProcessResult process(const QByteArray &data) const = 0;
virtual QVector<PageData> process(QString path) const virtual DocumentProcessResult process(QString path) const
{ {
return process(Utils::readFile(path)); return process(Utils::readFile(path));
} }

View File

@ -65,18 +65,12 @@ void SandboxedProcessor::enableSandbox(QString readablePath)
exile_free_policy(policy); exile_free_policy(policy);
} }
void SandboxedProcessor::printResults(const QVector<PageData> &pageData) void SandboxedProcessor::printResults(const DocumentProcessResult &result)
{ {
QFile fsstdout; QFile fsstdout;
fsstdout.open(stdout, QIODevice::WriteOnly); fsstdout.open(stdout, QIODevice::WriteOnly);
QDataStream stream(&fsstdout); QDataStream stream(&fsstdout);
stream << result;
for(const PageData &data : pageData)
{
stream << data;
// fsstdout.flush();
}
fsstdout.close(); fsstdout.close();
} }
@ -102,7 +96,7 @@ SaveFileResult SandboxedProcessor::process()
return OK; return OK;
} }
QVector<PageData> pageData; DocumentProcessResult processResult;
QString absPath = fileInfo.absoluteFilePath(); QString absPath = fileInfo.absoluteFilePath();
try try
@ -111,13 +105,13 @@ SaveFileResult SandboxedProcessor::process()
{ {
/* Read access to FS needed... doh..*/ /* Read access to FS needed... doh..*/
enableSandbox(absPath); enableSandbox(absPath);
pageData = processor->process(absPath); processResult = processor->process(absPath);
} }
else else
{ {
QByteArray data = Utils::readFile(absPath); QByteArray data = Utils::readFile(absPath);
enableSandbox(); enableSandbox();
pageData = processor->process(data); processResult = processor->process(data);
} }
} }
catch(LooqsGeneralException &e) catch(LooqsGeneralException &e)
@ -126,6 +120,6 @@ SaveFileResult SandboxedProcessor::process()
return PROCESSFAIL; return PROCESSFAIL;
} }
printResults(pageData); printResults(processResult);
return pageData.isEmpty() ? OK_WASEMPTY : OK; return processResult.pages.isEmpty() ? OK_WASEMPTY : OK;
} }

View File

@ -2,7 +2,7 @@
#define SANDBOXEDPROCESSOR_H #define SANDBOXEDPROCESSOR_H
#include <QString> #include <QString>
#include <QMimeDatabase> #include <QMimeDatabase>
#include "pagedata.h" #include "documentprocessresult.h"
#include "savefileresult.h" #include "savefileresult.h"
class SandboxedProcessor class SandboxedProcessor
@ -12,7 +12,7 @@ class SandboxedProcessor
QMimeDatabase mimeDatabase; QMimeDatabase mimeDatabase;
void enableSandbox(QString readablePath = ""); void enableSandbox(QString readablePath = "");
void printResults(const QVector<PageData> &pageData); void printResults(const DocumentProcessResult &pageData);
public: public:
SandboxedProcessor(QString filepath) SandboxedProcessor(QString filepath)

View File

@ -4,11 +4,11 @@ TagStripperProcessor::TagStripperProcessor()
{ {
} }
QVector<PageData> TagStripperProcessor::process(const QByteArray &data) const DocumentProcessResult TagStripperProcessor::process(const QByteArray &data) const
{ {
auto result = DefaultTextProcessor::process(data); auto result = DefaultTextProcessor::process(data);
// TODO: does not work properly with <br> and does not deal with entities... // TODO: does not work properly with <br> and does not deal with entities...
Q_ASSERT(result.pages.size() > 0);
result[0].content.remove(QRegExp("<[^>]*>")); result.pages[0].content.remove(QRegExp("<[^>]*>"));
return result; return result;
} }

View File

@ -8,7 +8,7 @@ class TagStripperProcessor : public DefaultTextProcessor
TagStripperProcessor(); TagStripperProcessor();
public: public:
QVector<PageData> process(const QByteArray &data) const override; DocumentProcessResult process(const QByteArray &data) const override;
}; };
#endif // XMLSTRIPPERPROCESSOR_H #endif // XMLSTRIPPERPROCESSOR_H