Herunterladen als
root/src/validators/validatorfactory.cpp @ 1b0c0386
e2ee17bf | Christian Ehringfeld | #include "validatorfactory.h"
|
|
#include "defaultvalidator.h"
|
|||
e111d9ab | Christian Ehringfeld | #include "requiredvalidator.h"
|
|
#include "numbervalidator.h"
|
|||
ec6a9500 | Christian Ehringfeld | #include "comparevalidator.h"
|
|
#include "emailvalidator.h"
|
|||
#include "existvalidator.h"
|
|||
#include "filevalidator.h"
|
|||
#include "imagevalidator.h"
|
|||
#include "datevalidator.h"
|
|||
#include "requiredvalidator.h"
|
|||
#include "urlvalidator.h"
|
|||
#include "uniquevalidator.h"
|
|||
519b2fe3 | Christian Ehringfeld | #include "patternvalidator.h"
|
|
b7f1ce8e | Christian Ehringfeld | #include "lengthvalidator.h"
|
|
e2ee17bf | Christian Ehringfeld | using namespace CuteEntityManager;
|
|
fc14f551 | Christian Ehringfeld | ||
e2ee17bf | Christian Ehringfeld | ValidatorFactory::ValidatorFactory() {
|
|
}
|
|||
QHash<QByteArray, ValidatorFactory::Constructor> ValidatorFactory::instance =
|
|||
QHash<QByteArray, ValidatorFactory::Constructor>();
|
|||
fc14f551 | Christian Ehringfeld | QHash<QString, QSharedPointer<Validator>> ValidatorFactory::validatorInstances =
|
|
QHash<QString, QSharedPointer<Validator>>();
|
|||
e2ee17bf | Christian Ehringfeld | ||
fc14f551 | Christian Ehringfeld | Validator *ValidatorFactory::createValidator(const QString &shortname) {
|
|
e2ee17bf | Christian Ehringfeld | if (Validator::builtInValidators().contains(shortname)) {
|
|
fc14f551 | Christian Ehringfeld | return ValidatorFactory::createObject(Validator::builtInValidators().value(
|
|
shortname).toLatin1());
|
|||
e2ee17bf | Christian Ehringfeld | }
|
|
return nullptr;
|
|||
}
|
|||
fc14f551 | Christian Ehringfeld | Validator *ValidatorFactory::createObject(const QByteArray &className) {
|
|
Constructor constructor = ValidatorFactory::instance.value(className);
|
|||
if ( constructor == nullptr ) {
|
|||
return nullptr;
|
|||
}
|
|||
b7f1ce8e | Christian Ehringfeld | ||
fc14f551 | Christian Ehringfeld | return (*constructor)();
|
|
}
|
|||
QSharedPointer<Validator> ValidatorFactory::getValidatorObject(
|
|||
const QString &shortname) {
|
|||
if (!ValidatorFactory::validatorInstances.contains(shortname)) {
|
|||
b7f1ce8e | Christian Ehringfeld | ValidatorFactory::registerClasses();
|
|
fc14f551 | Christian Ehringfeld | ValidatorFactory::validatorInstances.insert(shortname,
|
|
QSharedPointer<Validator>(ValidatorFactory::createValidator(shortname)));
|
|||
}
|
|||
return ValidatorFactory::validatorInstances.value(shortname);
|
|||
}
|
|||
e2ee17bf | Christian Ehringfeld | void ValidatorFactory::registerClasses() {
|
|
if (ValidatorFactory::instance.isEmpty()) {
|
|||
ec6a9500 | Christian Ehringfeld | ValidatorFactory::registerClass<CompareValidator>();
|
|
e2ee17bf | Christian Ehringfeld | ValidatorFactory::registerClass<DefaultValidator>();
|
|
ec6a9500 | Christian Ehringfeld | ValidatorFactory::registerClass<EmailValidator>();
|
|
ValidatorFactory::registerClass<ExistValidator>();
|
|||
ValidatorFactory::registerClass<FileValidator>();
|
|||
ValidatorFactory::registerClass<ImageValidator>();
|
|||
e111d9ab | Christian Ehringfeld | ValidatorFactory::registerClass<NumberValidator>();
|
|
ec6a9500 | Christian Ehringfeld | ValidatorFactory::registerClass<DateValidator>();
|
|
e111d9ab | Christian Ehringfeld | ValidatorFactory::registerClass<RequiredValidator>();
|
|
519b2fe3 | Christian Ehringfeld | ValidatorFactory::registerClass<PatternValidator>();
|
|
ec6a9500 | Christian Ehringfeld | ValidatorFactory::registerClass<UniqueValidator>();
|
|
ValidatorFactory::registerClass<UrlValidator>();
|
|||
b7f1ce8e | Christian Ehringfeld | ValidatorFactory::registerClass<LengthValidator>();
|
|
e2ee17bf | Christian Ehringfeld | }
|
|
}
|