forked from loafle/openapi-generator-original
362 lines
9.4 KiB
Plaintext
Vendored
362 lines
9.4 KiB
Plaintext
Vendored
{{>licenseInfo}}
|
|
#include <QDebug>
|
|
#include <QJsonParseError>
|
|
#include "{{prefix}}Helpers.h"
|
|
|
|
{{#cppNamespaceDeclarations}}
|
|
namespace {{this}} {
|
|
{{/cppNamespaceDeclarations}}
|
|
|
|
class {{prefix}}SerializerSettings {
|
|
public:
|
|
static void setDateTimeFormat(const QString & dtFormat){
|
|
getInstance()->dateTimeFormat = dtFormat;
|
|
}
|
|
static QString getDateTimeFormat() {
|
|
return getInstance()->dateTimeFormat;
|
|
}
|
|
static {{prefix}}SerializerSettings *getInstance(){
|
|
if(instance == nullptr){
|
|
instance = new {{prefix}}SerializerSettings();
|
|
}
|
|
return instance;
|
|
}
|
|
private:
|
|
explicit {{prefix}}SerializerSettings(){
|
|
instance = this;
|
|
dateTimeFormat.clear();
|
|
}
|
|
static {{prefix}}SerializerSettings *instance;
|
|
QString dateTimeFormat;
|
|
};
|
|
|
|
{{prefix}}SerializerSettings * {{prefix}}SerializerSettings::instance = nullptr;
|
|
|
|
bool setDateTimeFormat(const QString& dateTimeFormat){
|
|
bool success = false;
|
|
auto dt = QDateTime::fromString(QDateTime::currentDateTime().toString(dateTimeFormat), dateTimeFormat);
|
|
if(dt.isValid()){
|
|
success = true;
|
|
{{prefix}}SerializerSettings::setDateTimeFormat(dateTimeFormat);
|
|
}
|
|
return success;
|
|
}
|
|
|
|
|
|
QString toStringValue(const QString &value) {
|
|
return value;
|
|
}
|
|
|
|
QString toStringValue(const QDateTime &value) {
|
|
// ISO 8601
|
|
return {{prefix}}SerializerSettings::getInstance()->getDateTimeFormat().isEmpty()? value.toString(Qt::ISODate):value.toString({{prefix}}SerializerSettings::getInstance()->getDateTimeFormat());
|
|
}
|
|
|
|
QString toStringValue(const QByteArray &value) {
|
|
return QString(value);
|
|
}
|
|
|
|
QString toStringValue(const QDate &value) {
|
|
// ISO 8601
|
|
return value.toString(Qt::DateFormat::ISODate);
|
|
}
|
|
|
|
QString toStringValue(const qint32 &value) {
|
|
return QString::number(value);
|
|
}
|
|
|
|
QString toStringValue(const qint64 &value) {
|
|
return QString::number(value);
|
|
}
|
|
|
|
QString toStringValue(const bool &value) {
|
|
return QString(value ? "true" : "false");
|
|
}
|
|
|
|
QString toStringValue(const float &value) {
|
|
return QString::number(static_cast<double>(value));
|
|
}
|
|
|
|
QString toStringValue(const double &value) {
|
|
return QString::number(value);
|
|
}
|
|
|
|
QString toStringValue(const {{prefix}}Object &value) {
|
|
return value.asJson();
|
|
}
|
|
|
|
QString toStringValue(const {{prefix}}Enum &value) {
|
|
return value.asJson();
|
|
}
|
|
|
|
QString toStringValue(const {{prefix}}HttpFileElement &value) {
|
|
return value.asJson();
|
|
}
|
|
|
|
QJsonValue toJsonValue(const QString &value) {
|
|
return QJsonValue(value);
|
|
}
|
|
|
|
QJsonValue toJsonValue(const QDateTime &value) {
|
|
return QJsonValue(value.toString({{prefix}}SerializerSettings::getInstance()->getDateTimeFormat().isEmpty()?value.toString(Qt::ISODate):value.toString({{prefix}}SerializerSettings::getInstance()->getDateTimeFormat())));
|
|
}
|
|
|
|
QJsonValue toJsonValue(const QByteArray &value) {
|
|
return QJsonValue(QString(value.toBase64()));
|
|
}
|
|
|
|
QJsonValue toJsonValue(const QDate &value) {
|
|
return QJsonValue(value.toString(Qt::ISODate));
|
|
}
|
|
|
|
QJsonValue toJsonValue(const qint32 &value) {
|
|
return QJsonValue(value);
|
|
}
|
|
|
|
QJsonValue toJsonValue(const qint64 &value) {
|
|
return QJsonValue(value);
|
|
}
|
|
|
|
QJsonValue toJsonValue(const bool &value) {
|
|
return QJsonValue(value);
|
|
}
|
|
|
|
QJsonValue toJsonValue(const float &value) {
|
|
return QJsonValue(static_cast<double>(value));
|
|
}
|
|
|
|
QJsonValue toJsonValue(const double &value) {
|
|
return QJsonValue(value);
|
|
}
|
|
|
|
QJsonValue toJsonValue(const {{prefix}}Object &value) {
|
|
return value.asJsonObject();
|
|
}
|
|
|
|
QJsonValue toJsonValue(const {{prefix}}Enum &value) {
|
|
return value.asJsonValue();
|
|
}
|
|
|
|
QJsonValue toJsonValue(const {{prefix}}HttpFileElement &value) {
|
|
return value.asJsonValue();
|
|
}
|
|
|
|
bool fromStringValue(const QString &inStr, QString &value) {
|
|
value.clear();
|
|
value.append(inStr);
|
|
return !inStr.isEmpty();
|
|
}
|
|
|
|
bool fromStringValue(const QString &inStr, QDateTime &value) {
|
|
if (inStr.isEmpty()) {
|
|
return false;
|
|
} else {
|
|
auto dateTime = {{prefix}}SerializerSettings::getInstance()->getDateTimeFormat().isEmpty()?QDateTime::fromString(inStr, Qt::ISODate) :QDateTime::fromString(inStr, {{prefix}}SerializerSettings::getInstance()->getDateTimeFormat());
|
|
if (dateTime.isValid()) {
|
|
value.setDate(dateTime.date());
|
|
value.setTime(dateTime.time());
|
|
} else {
|
|
qDebug() << "DateTime is invalid";
|
|
}
|
|
return dateTime.isValid();
|
|
}
|
|
}
|
|
|
|
bool fromStringValue(const QString &inStr, QByteArray &value) {
|
|
if (inStr.isEmpty()) {
|
|
return false;
|
|
} else {
|
|
value.clear();
|
|
value.append(inStr.toUtf8());
|
|
return value.count() > 0;
|
|
}
|
|
}
|
|
|
|
bool fromStringValue(const QString &inStr, QDate &value) {
|
|
if (inStr.isEmpty()) {
|
|
return false;
|
|
} else {
|
|
auto date = QDate::fromString(inStr, Qt::DateFormat::ISODate);
|
|
if (date.isValid()) {
|
|
value.setDate(date.year(), date.month(), date.day());
|
|
} else {
|
|
qDebug() << "Date is invalid";
|
|
}
|
|
return date.isValid();
|
|
}
|
|
}
|
|
|
|
bool fromStringValue(const QString &inStr, qint32 &value) {
|
|
bool ok = false;
|
|
value = QVariant(inStr).toInt(&ok);
|
|
return ok;
|
|
}
|
|
|
|
bool fromStringValue(const QString &inStr, qint64 &value) {
|
|
bool ok = false;
|
|
value = QVariant(inStr).toLongLong(&ok);
|
|
return ok;
|
|
}
|
|
|
|
bool fromStringValue(const QString &inStr, bool &value) {
|
|
value = QVariant(inStr).toBool();
|
|
return ((inStr == "true") || (inStr == "false"));
|
|
}
|
|
|
|
bool fromStringValue(const QString &inStr, float &value) {
|
|
bool ok = false;
|
|
value = QVariant(inStr).toFloat(&ok);
|
|
return ok;
|
|
}
|
|
|
|
bool fromStringValue(const QString &inStr, double &value) {
|
|
bool ok = false;
|
|
value = QVariant(inStr).toDouble(&ok);
|
|
return ok;
|
|
}
|
|
|
|
bool fromStringValue(const QString &inStr, {{prefix}}Object &value)
|
|
{
|
|
QJsonParseError err;
|
|
QJsonDocument::fromJson(inStr.toUtf8(),&err);
|
|
if ( err.error == QJsonParseError::NoError ){
|
|
value.fromJson(inStr);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
bool fromStringValue(const QString &inStr, {{prefix}}Enum &value) {
|
|
value.fromJson(inStr);
|
|
return true;
|
|
}
|
|
|
|
bool fromStringValue(const QString &inStr, {{prefix}}HttpFileElement &value) {
|
|
return value.fromStringValue(inStr);
|
|
}
|
|
|
|
bool fromJsonValue(QString &value, const QJsonValue &jval) {
|
|
bool ok = true;
|
|
if (!jval.isUndefined() && !jval.isNull()) {
|
|
if (jval.isString()) {
|
|
value = jval.toString();
|
|
} else if (jval.isBool()) {
|
|
value = jval.toBool() ? "true" : "false";
|
|
} else if (jval.isDouble()) {
|
|
value = QString::number(jval.toDouble());
|
|
} else {
|
|
ok = false;
|
|
}
|
|
} else {
|
|
ok = false;
|
|
}
|
|
return ok;
|
|
}
|
|
|
|
bool fromJsonValue(QDateTime &value, const QJsonValue &jval) {
|
|
bool ok = true;
|
|
if (!jval.isUndefined() && !jval.isNull() && jval.isString()) {
|
|
value = {{prefix}}SerializerSettings::getInstance()->getDateTimeFormat().isEmpty()?QDateTime::fromString(jval.toString(), Qt::ISODate): QDateTime::fromString(jval.toString(), {{prefix}}SerializerSettings::getInstance()->getDateTimeFormat());
|
|
ok = value.isValid();
|
|
} else {
|
|
ok = false;
|
|
}
|
|
return ok;
|
|
}
|
|
|
|
bool fromJsonValue(QByteArray &value, const QJsonValue &jval) {
|
|
bool ok = true;
|
|
if (!jval.isUndefined() && !jval.isNull() && jval.isString()) {
|
|
value = QByteArray::fromBase64(QByteArray::fromStdString(jval.toString().toStdString()));
|
|
ok = value.size() > 0;
|
|
} else {
|
|
ok = false;
|
|
}
|
|
return ok;
|
|
}
|
|
|
|
bool fromJsonValue(QDate &value, const QJsonValue &jval) {
|
|
bool ok = true;
|
|
if (!jval.isUndefined() && !jval.isNull() && jval.isString()) {
|
|
value = QDate::fromString(jval.toString(), Qt::ISODate);
|
|
ok = value.isValid();
|
|
} else {
|
|
ok = false;
|
|
}
|
|
return ok;
|
|
}
|
|
|
|
bool fromJsonValue(qint32 &value, const QJsonValue &jval) {
|
|
bool ok = true;
|
|
if (!jval.isUndefined() && !jval.isNull() && !jval.isObject() && !jval.isArray()) {
|
|
value = jval.toInt();
|
|
} else {
|
|
ok = false;
|
|
}
|
|
return ok;
|
|
}
|
|
|
|
bool fromJsonValue(qint64 &value, const QJsonValue &jval) {
|
|
bool ok = true;
|
|
if (!jval.isUndefined() && !jval.isNull() && !jval.isObject() && !jval.isArray()) {
|
|
value = jval.toVariant().toLongLong();
|
|
} else {
|
|
ok = false;
|
|
}
|
|
return ok;
|
|
}
|
|
|
|
bool fromJsonValue(bool &value, const QJsonValue &jval) {
|
|
bool ok = true;
|
|
if (jval.isBool()) {
|
|
value = jval.toBool();
|
|
} else {
|
|
ok = false;
|
|
}
|
|
return ok;
|
|
}
|
|
|
|
bool fromJsonValue(float &value, const QJsonValue &jval) {
|
|
bool ok = true;
|
|
if (jval.isDouble()) {
|
|
value = static_cast<float>(jval.toDouble());
|
|
} else {
|
|
ok = false;
|
|
}
|
|
return ok;
|
|
}
|
|
|
|
bool fromJsonValue(double &value, const QJsonValue &jval) {
|
|
bool ok = true;
|
|
if (jval.isDouble()) {
|
|
value = jval.toDouble();
|
|
} else {
|
|
ok = false;
|
|
}
|
|
return ok;
|
|
}
|
|
|
|
bool fromJsonValue({{prefix}}Object &value, const QJsonValue &jval) {
|
|
bool ok = true;
|
|
if (jval.isObject()) {
|
|
value.fromJsonObject(jval.toObject());
|
|
ok = value.isValid();
|
|
} else {
|
|
ok = false;
|
|
}
|
|
return ok;
|
|
}
|
|
|
|
bool fromJsonValue({{prefix}}Enum &value, const QJsonValue &jval) {
|
|
value.fromJsonValue(jval);
|
|
return true;
|
|
}
|
|
|
|
bool fromJsonValue({{prefix}}HttpFileElement &value, const QJsonValue &jval) {
|
|
return value.fromJsonValue(jval);
|
|
}
|
|
|
|
{{#cppNamespaceDeclarations}}
|
|
} // namespace {{this}}
|
|
{{/cppNamespaceDeclarations}}
|