19 #include "validatormin_p.h"
24 ValidatorRule(*new ValidatorMinPrivate(field, type, min, messages, defValKey))
36 const QString v =
value(params);
46 case QMetaType::Short:
49 case QMetaType::LongLong:
51 const qlonglong val = c->
locale().toLongLong(v, &ok);
52 if (Q_UNLIKELY(!ok)) {
54 qCWarning(C_VALIDATOR,
"ValidatorMin: Failed to parse value of field %s into number at %s::%s.", qPrintable(
field()), qPrintable(c->controllerName()), qPrintable(c->actionName()));
56 const qlonglong min = d->extractLongLong(c, params, d->min, &ok);
57 if (Q_UNLIKELY(!ok)) {
59 qCWarning(C_VALIDATOR,
"ValidatorMin: Invalid minimum comparison value for field %s in %s::%s.", qPrintable(
field()), qPrintable(c->controllerName()), qPrintable(c->actionName()));
63 {QStringLiteral(
"val"), val},
64 {QStringLiteral(
"min"), min}
66 qCDebug(C_VALIDATOR,
"ValidatorMin: Validation failed for field %s in %s::%s: %lli is not greater than %lli.", qPrintable(
field()), qPrintable(c->controllerName()), qPrintable(c->actionName()), val, min);
74 case QMetaType::UChar:
75 case QMetaType::UShort:
77 case QMetaType::ULong:
78 case QMetaType::ULongLong:
80 const qulonglong val = v.toULongLong(&ok);
81 if (Q_UNLIKELY(!ok)) {
83 qCWarning(C_VALIDATOR,
"ValidatorMin: Failed to parse value of field %s into number at %s::%s.", qPrintable(
field()), qPrintable(c->controllerName()), qPrintable(c->actionName()));
85 const qulonglong min = d->extractULongLong(c, params, d->min, &ok);
86 if (Q_UNLIKELY(!ok)) {
88 qCWarning(C_VALIDATOR,
"ValidatorMin: Invalid minimum comparison value for field %s in %s::%s.", qPrintable(
field()), qPrintable(c->controllerName()), qPrintable(c->actionName()));
92 {QStringLiteral(
"val"), val},
93 {QStringLiteral(
"min"), min}
95 qCDebug(C_VALIDATOR,
"ValidatorMin: Validation failed for field %s in %s::%s: %llu is not greater than %llu.", qPrintable(
field()), qPrintable(c->controllerName()), qPrintable(c->actionName()), val, min);
103 case QMetaType::Float:
104 case QMetaType::Double:
106 const double val = v.toDouble(&ok);
107 if (Q_UNLIKELY(!ok)) {
109 qCWarning(C_VALIDATOR,
"ValidatorMin: Failed to parse value of field %s into number at %s::%s.", qPrintable(
field()), qPrintable(c->controllerName()), qPrintable(c->actionName()));
111 const double min = d->extractDouble(c, params, d->min, &ok);
112 if (Q_UNLIKELY(!ok)) {
114 qCWarning(C_VALIDATOR,
"ValidatorMin: Invalid minimum comparison value for field %s in %s::%s.", qPrintable(
field()), qPrintable(c->controllerName()), qPrintable(c->actionName()));
118 {QStringLiteral(
"val"), val},
119 {QStringLiteral(
"min"), min}
121 qCDebug(C_VALIDATOR,
"ValidatorMin: Validation failed for field %s in %s::%s: %f is not greater than %f.", qPrintable(
field()), qPrintable(c->controllerName()), qPrintable(c->actionName()), val, min);
129 case QMetaType::QString:
131 const qlonglong val =
static_cast<qlonglong
>(v.length());
132 const qlonglong min = d->extractLongLong(c, params, d->min, &ok);
133 if (Q_UNLIKELY(!ok)) {
135 qCWarning(C_VALIDATOR,
"ValidatorMin: Invalid minimum comparison value for field %s in %s::%s.", qPrintable(
field()), qPrintable(c->controllerName()), qPrintable(c->actionName()));
139 {QStringLiteral(
"val"), val},
140 {QStringLiteral(
"min"), min}
142 qCDebug(C_VALIDATOR,
"ValidatorMin: Validation failed for field %s in %s::%s: string length %lli is not longer than %lli.", qPrintable(
field()), qPrintable(c->controllerName()), qPrintable(c->actionName()), val, min);
150 qCWarning(C_VALIDATOR,
"ValidatorMin: The comparison type with ID %i for field %s at %s::%s is not supported.",
static_cast<int>(d->type), qPrintable(
field()), qPrintable(c->controllerName()), qPrintable(c->actionName()));
156 if (d->type != QMetaType::QString) {
157 const QVariant _v = d->valueToNumber(c, v, d->type);
164 result.
value.setValue<QString>(v);
180 const QVariantMap map = errorData.toMap();
183 case QMetaType::Char:
184 case QMetaType::Short:
186 case QMetaType::Long:
187 case QMetaType::LongLong:
188 case QMetaType::QString:
189 min = c->
locale().toString(map.value(QStringLiteral(
"min")).toLongLong());
191 case QMetaType::UChar:
192 case QMetaType::UShort:
193 case QMetaType::UInt:
194 case QMetaType::ULong:
195 case QMetaType::ULongLong:
196 min = c->
locale().toString(map.value(QStringLiteral(
"min")).toULongLong());
198 case QMetaType::Float:
199 case QMetaType::Double:
200 min = c->
locale().toString(map.value(QStringLiteral(
"min")).toDouble());
207 const QString _label =
label(c);
209 if (_label.isEmpty()) {
210 if (d->type == QMetaType::QString) {
211 error = c->
translate(
"Cutelyst::ValidatorMin",
"The text must be longer than %1 characters.").arg(min);
213 error = c->
translate(
"Cutelyst::ValidatorMin",
"The value must be greater than %1.").arg(min);
216 if (d->type == QMetaType::QString) {
217 error = c->
translate(
"Cutelyst::ValidatorMin",
"The text in the “%1“ field must be longer than %2 characters.").arg(_label, min);
219 error = c->
translate(
"Cutelyst::ValidatorMin",
"The value in the “%1” field must be greater than %2.").arg(_label, min);
230 int field = errorData.toInt();
231 const QString _label =
label(c);
234 if (_label.isEmpty()) {
235 error = c->
translate(
"Cutelyst::ValidatorMin",
"The minimum comparison value is not valid.");
237 error = c->
translate(
"Cutelyst::ValidatorMin",
"The minimum comparison value for the “%1” field is not valid.").arg(_label);
239 }
else if (
field == 0) {
241 if (_label.isEmpty()) {
242 error = c->
translate(
"Cutelyst::ValidatorMin",
"The comparison type with ID %1 is not supported.").arg(
static_cast<int>(d->type));
244 error = c->
translate(
"Cutelyst::ValidatorMin",
"The comparison type with ID %1 for the “%2” field is not supported.").arg(QString::number(
static_cast<int>(d->type)), _label);
257 const QString _label =
label(c);
258 if ((d->type == QMetaType::Float) || (d->type == QMetaType::Double)) {
259 if (_label.isEmpty()) {
260 error = c->
translate(
"Cutelyst::ValidatorMin",
"Failed to parse the input value into a floating point number.");
262 error = c->
translate(
"Cutelyst::ValidatorMin",
"Failed to parse the input value for the “%1” field into a floating point number.").arg(_label);
265 if (_label.isEmpty()) {
266 error = c->
translate(
"Cutelyst::ValidatorMin",
"Failed to parse the input value into an integer number.");
268 error = c->
translate(
"Cutelyst::ValidatorMin",
"Failed to parse the input value for the “%1” field into an integer number.").arg(_label);