Revision f5087482
Von Christian Ehringfeld vor mehr als 10 Jahren hinzugefügt
| 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
some sql and inheritance stuff,debugging entityinstancefactory