AusweisApp2/src/global/Result.h

109 lines
2.4 KiB
C
Raw Normal View History

2017-07-03 09:30:10 +02:00
/*!
2018-03-28 15:10:51 +02:00
* \copyright Copyright (c) 2014-2018 Governikus GmbH & Co. KG, Germany
2017-07-03 09:30:10 +02:00
*/
#pragma once
2017-07-03 09:33:28 +02:00
#include "GlobalStatus.h"
2017-07-03 09:30:10 +02:00
#include <QCoreApplication>
#include <QJsonObject>
#include <QMap>
#include <QPair>
#include <QSharedData>
#include <QString>
2017-07-03 09:33:28 +02:00
class test_result;
2017-07-03 09:30:10 +02:00
namespace governikus
{
class Result
{
Q_GADGET
Q_DECLARE_TR_FUNCTIONS(governikus::Result)
friend class StartPaosResponse;
2017-09-15 10:23:30 +02:00
friend class ::test_result;
2017-07-03 09:30:10 +02:00
public:
enum class Major
{
2017-07-03 09:33:28 +02:00
Unknown,
2017-07-03 09:30:10 +02:00
Ok,
Warning,
Error
};
Q_ENUM(Major)
private:
class ResultData
: public QSharedData
{
public:
const Major mMajor;
2017-07-03 09:33:28 +02:00
const GlobalStatus::Code mMinor;
2017-07-03 09:30:10 +02:00
const QString mMessage;
const QString mMessageLang;
const Origin mOrigin;
2017-07-03 09:33:28 +02:00
ResultData(Major pMajor, GlobalStatus::Code pMinor, const QString& pMessage, Origin pOrigin);
bool operator ==(const ResultData& pOther) const
{
return mMajor == pOther.mMajor &&
mMinor == pOther.mMinor &&
mMessage == pOther.mMessage &&
mMessageLang == pOther.mMessageLang &&
mOrigin == pOther.mOrigin;
}
2017-07-03 09:30:10 +02:00
};
static const QMap<Major, QString> mMajorResults;
2017-07-03 09:33:28 +02:00
static const QMap<GlobalStatus::Code, QString> mMinorResults;
2017-07-03 09:30:10 +02:00
QSharedDataPointer<ResultData> d;
2017-07-03 09:33:28 +02:00
static Result fromStatus(const GlobalStatus& pStatus);
Result(Major pMajor, GlobalStatus::Code pMinor, const QString& pMessage = QString(), Origin pOrigin = Origin::Client);
Result(const QString& pMajor, const QString& pMinor = QString(), const QString& pMessage = QString(), Origin pOrigin = Origin::Client);
2017-07-03 09:30:10 +02:00
public:
2017-07-03 09:33:28 +02:00
Result(const GlobalStatus& pStatus);
bool operator ==(const Result& pResult) const;
2017-07-03 09:30:10 +02:00
static Result createOk();
static Major parseMajor(const QString& pMajor);
2017-07-03 09:33:28 +02:00
static GlobalStatus::Code parseMinor(const QString& pMinor);
2017-07-03 09:30:10 +02:00
static bool isMajor(const QString& pMajor);
static bool isMinor(const QString& pMinor);
2017-07-03 09:33:28 +02:00
static QString getMessage(GlobalStatus::Code pMinor);
2017-07-03 09:30:10 +02:00
Major getMajor() const;
2017-07-03 09:33:28 +02:00
GlobalStatus::Code getMinor() const;
QString getMessage() const;
2017-07-03 09:30:10 +02:00
const QString& getMessageLang() const;
QString getMajorString() const;
QString getMinorString() const;
bool isValid() const;
bool isOk() const;
bool isOriginServer() const;
QJsonObject toJson() const;
2017-07-03 09:33:28 +02:00
GlobalStatus toStatus() const;
operator GlobalStatus() const;
2017-07-03 09:30:10 +02:00
};
}
QDebug operator <<(QDebug pDbg, const governikus::Result& pResult);