Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision f5087482

Von Christian Ehringfeld vor fast 9 Jahren hinzugefügt

  • ID f50874826e742fd68c584d9e437b98cce5708a38
  • Vorgänger 696666eb
  • Nachfolger 6d91d381

some sql and inheritance stuff,debugging entityinstancefactory

Unterschiede anzeigen:

src/entity.cpp
return QHash<QString, Relation>();
}
const QHash<QString, Relation> Entity::getNonInheritedRelations() const
{
const QHash<QString, Relation> Entity::getNonInheritedRelations() const {
auto relations = this->getRelations();
auto superObject = EntityInstanceFactory::newSuperClassInstance(this);
if (superObject) {
auto superRelations = superObject->getRelations();
auto iterator = superRelations.constBegin();
while (iterator != relations.constEnd()) {
if (relations.contains(iterator.key())) {
relations.remove(iterator.key());
}
++iterator;
auto superObject = EntityInstanceFactory::newSuperClassInstance(this);
if (superObject) {
auto superRelations = superObject->getRelations();
auto iterator = superRelations.constBegin();
while (iterator != relations.constEnd()) {
if (relations.contains(iterator.key())) {
relations.remove(iterator.key());
}
delete superObject;
superObject = 0;
++iterator;
}
return relations;
delete superObject;
superObject = 0;
}
return relations;
}
const QStringList Entity::getTransientAttributes() const {
......
return "id";
}
const QStack<const QMetaObject *> Entity::superClasses() const {
const QStack<const QMetaObject *> Entity::superClasses(bool
stopAtSingleTableInheritance) const {
QStack<const QMetaObject *> classes = QStack<const QMetaObject *>();
auto superMetaObject = this->metaObject()->superClass();
if (this->getInheritanceStrategy() == JOINED_TABLE) {
while (QString(superMetaObject->className()) != QString("Entity")) {
classes.push(superMetaObject);
superMetaObject = superMetaObject->superClass();
Entity *e = 0;
while (superMetaObject != 0
&& QString(superMetaObject->className()) != QString("CuteEntityManager::Entity")) {
e = EntityInstanceFactory::createInstance(superMetaObject->className());
if (e) {
classes.push(superMetaObject);
superMetaObject = superMetaObject->superClass();
quint8 s = e->getInheritanceStrategy();
delete e;
e = 0;
if (stopAtSingleTableInheritance && s == PER_CLASS_TABLE) {
break;
}
} else {
break;
}
}
}
return classes;
......
return Entity::getMetaProperties(this->metaObject());
}
const QHash<QString, QMetaProperty> Entity::getSuperMetaProperties() const
{
const QHash<QString, QMetaProperty> Entity::getSuperMetaProperties() const {
auto superMetaObjectPropertyMap = QHash<QString, QMetaProperty>();
auto superMeta = this->metaObject()->superClass();
if (QString(superMeta->className()) != QString("Entity")
if (QString(superMeta->className()) != QString("CuteEntityManager::Entity")
&& this->getInheritanceStrategy() == JOINED_TABLE) {
for (int var = 0; var < superMeta->propertyCount(); ++var) {
QMetaProperty prop = superMeta->property(var);
......
return superMetaObjectPropertyMap;
}
const QHash<QString, QMetaProperty> Entity::getMetaProperties(const QMetaObject *object) {
const QHash<QString, QMetaProperty> Entity::getMetaProperties(
const QMetaObject *object) {
auto h = QHash<QString, QMetaProperty>();
for (int var = 0; var < object->propertyCount(); ++var) {
QMetaProperty m = object->property(var);
......
const QHash<QString, QMetaProperty> Entity::getInheritedMetaProperties() const {
auto classes = this->superClasses();
auto wholeProperties = QHash<QString, QMetaProperty>();
while(!classes.isEmpty()) {
while (!classes.isEmpty()) {
auto metaObject = classes.pop();
auto properties = Entity::getMetaProperties(metaObject);
auto iterator = properties.constBegin();
while (iterator != properties.constEnd()) {
wholeProperties.insert(iterator.key(),iterator.value());
wholeProperties.insert(iterator.key(), iterator.value());
++iterator;
}
}

Auch abrufbar als: Unified diff