Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision e0e1ead8

Von Christian Ehringfeld vor fast 9 Jahren hinzugefügt

  • ID e0e1ead821f79cb33d9f212191809e4914172aa8
  • Vorgänger c599658a
  • Nachfolger e5ce87e2

formatting

Unterschiede anzeigen:

src/entitymanager.cpp
for (int var = 0; var < toInitialize.size(); ++var) {
if (ok) {
QString c = toInitialize.at(var);
ok = this->createTable(QSharedPointer<Entity>(EntityInstanceFactory::createInstance(c)));
ok = this->createTable(QSharedPointer<Entity>
(EntityInstanceFactory::createInstance(c)));
} else {
break;
}
......
return ok;
}
EntityManager::EntityManager(const QString &databaseType, QString databasename , QString hostname, QString username,
bool EntityManager::executeQuery(const QString &query) {
return this->db.data()->transaction(query);
}
EntityManager::EntityManager(const QString &databaseType, QString databasename ,
QString hostname,
QString username,
QString password, QString port) {
auto db = new Database(databaseType, this->createConnection(), hostname, databasename, username, password,
auto db = new Database(databaseType, this->createConnection(), hostname,
databasename, username,
password,
port.toInt());
this->db = QSharedPointer<Database>(db);
this->init();
......
return r;
}
QSharedPointer<Entity> EntityManager::findById(const qint64 &id, const QString &classname) {
QSharedPointer<Entity> EntityManager::findById(const qint64 &id,
const QString &classname) {
Entity *e = EntityInstanceFactory::createInstance(classname);
return this->findById(id, e);
}
QSharedPointer<Entity> EntityManager::convert(const QHash<QString, QVariant> &map, const char *classname) {
auto ptr = QSharedPointer<Entity>(EntityInstanceFactory::createInstance(classname, map));
QSharedPointer<Entity> EntityManager::convert(const QHash<QString, QVariant>
&map,
const char *classname) {
auto ptr = QSharedPointer<Entity>(EntityInstanceFactory::createInstance(
classname, map));
this->cache.insert(ptr);
return ptr;
}
QList<QSharedPointer<Entity> > EntityManager::convert(QList<QHash<QString, QVariant> > maps, const char *classname) {
QList<QSharedPointer<Entity> > EntityManager::convert(
QList<QHash<QString, QVariant> > maps,
const char *classname) {
auto list = QList<QSharedPointer<Entity> >();
for (int var = 0; var < maps.size(); ++var) {
auto ptr = this->convert(maps.at(var), classname);
......
return list;
}
void EntityManager::manyToOne(const QSharedPointer<Entity> &entity, const QVariant &id, const QMetaProperty &property) {
void EntityManager::manyToOne(const QSharedPointer<Entity> &entity,
const QVariant &id,
const QMetaProperty &property) {
qint64 convertedId = -1;
bool ok = false;
if ((convertedId == id.toLongLong(&ok)) && ok && convertedId > -1) {
QString className = EntityInstanceFactory::extractEntityType(property.typeName());
QString className = EntityInstanceFactory::extractEntityType(
property.typeName());
QSharedPointer<Entity> ptr = QSharedPointer<Entity>();
if (!(this->cache.contains(convertedId, className) && (ptr = this->cache.get(convertedId, className)) && ptr.data())) {
if (!(this->cache.contains(convertedId, className)
&& (ptr = this->cache.get(convertedId, className)) && ptr.data())) {
ptr = this->findById(convertedId, className);
}
this->setProperty(entity, ptr, property);
}
}
void EntityManager::oneToMany(const QSharedPointer<Entity> &entity, const Relation &r, const QMetaProperty &property) {
void EntityManager::oneToMany(const QSharedPointer<Entity> &entity,
const Relation &r,
const QMetaProperty &property) {
if (entity.data() && entity.data()->getId() > -1) {
Entity *e = EntityInstanceFactory::createInstance(EntityInstanceFactory::extractEntityType(property.typeName()));
QSqlQuery q = this->schema.data()->getQueryBuilder().data()->oneToMany(e->getTablename(),
r.getMappedBy() + "_id", entity.data()->getId());
Entity *e = EntityInstanceFactory::createInstance(
EntityInstanceFactory::extractEntityType(
property.typeName()));
QSqlQuery q = this->schema.data()->getQueryBuilder().data()->oneToMany(
e->getTablename(),
r.getMappedBy() + "_id", entity.data()->getId());
auto listMap = this->convertQueryResult(q);
auto entities = this->convert(listMap, e->getClassname());
delete e;
......
}
void EntityManager::oneToOne(const QSharedPointer<Entity> &entity, const Relation &r, const QMetaProperty &property,
void EntityManager::oneToOne(const QSharedPointer<Entity> &entity,
const Relation &r,
const QMetaProperty &property,
const QVariant &id) {
qint64 convertedId = -1;
bool ok = false;
if (r.getMappedBy().isEmpty()) {
this->manyToOne(entity, id, property);
} else {
Entity *e = EntityInstanceFactory::createInstance(EntityInstanceFactory::extractEntityType(property.typeName()));
QSqlQuery q = this->schema.data()->getQueryBuilder().data()->oneToMany(e->getTablename(),
r.getMappedBy() + "_id", entity.data()->getId(), 1);
Entity *e = EntityInstanceFactory::createInstance(
EntityInstanceFactory::extractEntityType(
property.typeName()));
QSqlQuery q = this->schema.data()->getQueryBuilder().data()->oneToMany(
e->getTablename(),
r.getMappedBy() + "_id", entity.data()->getId(), 1);
auto listMap = this->convertQueryResult(q);
auto entities = this->convert(listMap, e->getClassname());
if (!entities.isEmpty()) {
......
}
void EntityManager::setListProperty(const QSharedPointer<Entity> &entity, QList<QSharedPointer<Entity> > &list,
void EntityManager::setListProperty(const QSharedPointer<Entity> &entity,
QList<QSharedPointer<Entity> > &list,
const QMetaProperty &property) const {
QVariant var;
var.setValue<QList<QSharedPointer<Entity>>>(list);
property.write(entity.data(), var);
}
void EntityManager::setProperty(const QSharedPointer<Entity> &entiy, QSharedPointer<Entity> value,
void EntityManager::setProperty(const QSharedPointer<Entity> &entiy,
QSharedPointer<Entity> value,
const QMetaProperty &property) const {
if (value.data() && value.data()->getId() > -1) {
property.write(entiy.data(), QVariant(value));
......
}
void EntityManager::manyToMany(const QSharedPointer<Entity> &entity, const Relation &r, const QMetaProperty &property) {
Entity *secEntity = EntityInstanceFactory::createInstance(EntityInstanceFactory::extractEntityType(QString(
property.typeName())));
void EntityManager::manyToMany(const QSharedPointer<Entity> &entity,
const Relation &r,
const QMetaProperty &property) {
Entity *secEntity = EntityInstanceFactory::createInstance(
EntityInstanceFactory::extractEntityType(
QString(
property.typeName())));
auto builder = this->schema.data()->getQueryBuilder();
if (secEntity) {
QSharedPointer<Entity> secEntityPtr = QSharedPointer<Entity>(secEntity);
......
}
}
QList<QSharedPointer<Entity> > EntityManager::findEntityByAttributes(const QSharedPointer<Entity> &entity,
bool ignoreID) {
QList<QSharedPointer<Entity> > EntityManager::findEntityByAttributes(
const QSharedPointer<Entity>
&entity,
bool ignoreID) {
auto maps = this->findAllByAttributes(entity, ignoreID);
return this->convert(maps, entity.data()->getClassname());
}
......
}
QList<QHash<QString, QVariant> > EntityManager::findAllByAttributes(const QSharedPointer<Entity> &entity,
bool ignoreID) {
QSqlQuery q = this->schema.data()->getQueryBuilder().data()->findByAttributes(entity, ignoreID);
QList<QHash<QString, QVariant> > EntityManager::findAllByAttributes(
const QSharedPointer<Entity>
&entity,
bool ignoreID) {
QSqlQuery q = this->schema.data()->getQueryBuilder().data()->findByAttributes(
entity, ignoreID);
return this->convertQueryResult(q);
}
QList<QHash <QString, QVariant> > EntityManager::findAllByAttributes(const QHash<QString, QVariant> &m,
const QString &tblname,
bool ignoreID) {
QList<QHash <QString, QVariant> > EntityManager::findAllByAttributes(
const QHash<QString, QVariant>
&m,
const QString &tblname,
bool ignoreID) {
QSqlQuery q = this->schema.data()->getQueryBuilder().data()->findByAttributes(m,
tblname, ignoreID);
return this->convertQueryResult(q);
......
}
QList<QHash<QString, QVariant> > EntityManager::convertQueryResult(QSqlQuery &q) {
QList<QHash<QString, QVariant> > EntityManager::convertQueryResult(
QSqlQuery &q) {
QList<QHash <QString, QVariant> > listmap = QList<QHash <QString, QVariant> >();
this->db->select(q);
QSqlRecord rec = q.record();
......
return this->convertQueryResult(q);
}
void EntityManager::resolveRelations(const QSharedPointer<Entity> &entity, const QHash<QString, QVariant> &map) {
void EntityManager::resolveRelations(const QSharedPointer<Entity> &entity,
const QHash<QString, QVariant> &map) {
auto props = entity.data()->getRelationProperties();
auto iterator = props.constBegin();
while (iterator != props.constEnd()) {
......
return this->schema.data()->getQueryBuilder().data()->createTable(entity);
}
qint8 EntityManager::count(const QSharedPointer<Entity> &entity, bool ignoreID) {
qint8 EntityManager::count(const QSharedPointer<Entity> &entity,
bool ignoreID) {
qint8 rc = -1;
QSqlQuery q = this->schema.data()->getQueryBuilder().data()->count(entity, ignoreID);
QSqlQuery q = this->schema.data()->getQueryBuilder().data()->count(entity,
ignoreID);
this->db->select(q);
if (q.next()) {
rc = q.value(0).toInt();

Auch abrufbar als: Unified diff