Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 28d2f01a

Von Christian Ehringfeld vor mehr als 8 Jahren hinzugefügt

  • ID 28d2f01abb8a0130364394432ca605f538c26f14
  • Vorgänger 519b2fe3
  • Nachfolger a72dc7ae

validators

Unterschiede anzeigen:

src/validators/uniquevalidator.cpp
#include "uniquevalidator.h"
#include "src/entitymanager.h"
using namespace CuteEntityManager;
UniqueValidator::UniqueValidator() {
UniqueValidator::UniqueValidator() : Validator() {
}
QList<ErrorMsg> UniqueValidator::validate(QVariant value,
QList<Param> params) const {
QList<ErrorMsg> msgs = QList<ErrorMsg>();
if (!params.isEmpty()) {
QString targetAttribute = "";
QString targetClass = "";
QString entityManagerID = "";
for (int i = 0; i < params.size(); ++i) {
if (params.at(i).getName() == "targetAttribute") {
targetAttribute = params.at(i).getValue().toString();
} else if (params.at(i).getName() == "entityManagerID") {
entityManagerID = params.at(i).getValue().toString();
} else if (params.at(i).getName() == "targetClass") {
targetClass = params.at(i).getValue().toString();
}
}
EntityManager *em = nullptr;
if (entityManagerID.isEmpty()) {
em = EntityManager::getDefaultInstance();
} else {
em = EntityManager::getInstance(entityManagerID);
}
if (!em) {
msgs.append(ErrorMsg("", "No entitymanager."));
} else {
Query q = Query();
auto e = EntityInstanceFactory::createInstance(
targetClass.toLatin1().constData());
q.appendFrom(e->getTablename());
delete e;
e = nullptr;
QHash<QString, QVariant> params = QHash<QString, QVariant>();
params.insert(targetAttribute, value);
q.appendWhere(Expression(targetAttribute, params));
if (em->count(q) > 0) {
msgs.append(ErrorMsg("",
"<property> \"" + value.toString() + "\" has already been taken."));
}
}
} else {
msgs.append(ErrorMsg("", "UniqueValidator has not enough parameters."));
}
return msgs;
}
ErrorMsg UniqueValidator::validateParam(QVariant value, Param param) const {
Q_UNUSED(value)
Q_UNUSED(param)
return ErrorMsg();
}

Auch abrufbar als: Unified diff