commit 6734364c6f0382198005314dcb726106996ba6cd
Author: Christian Ehringfeld <c.ehringfeld@t-online.de>
Date:   Sat Apr 15 14:31:24 2017 +0200

    Revert "Pupil persisting problem"
    
    This reverts commit 57853172b5a545ed71b9c36c8a874e98b998c5c1.

diff --git a/samples/simple/group.cpp b/samples/simple/group.cpp
index d8b01a2..120fa7d 100644
--- a/samples/simple/group.cpp
+++ b/samples/simple/group.cpp
@@ -9,6 +9,8 @@ Group::Group() : Entity() {
 const QHash<QString, CuteEntityManager::Relation> Group::getRelations() const {
     auto hash = QHash<QString, CuteEntityManager::Relation>();
     hash.insert("persons", CuteEntityManager::Relation("persons",
+                RelationType::MANY_TO_MANY));
+    hash.insert("pupils", CuteEntityManager::Relation("pupils",
                 RelationType::MANY_TO_MANY, QString("groups")));
     hash.insert("mainTeacher", CuteEntityManager::Relation("mainTeacher",
                 RelationType::MANY_TO_ONE));
@@ -22,6 +24,21 @@ QString Group::getName() const {
 void Group::setName(const QString &value) {
     name = value;
 }
+QList<QSharedPointer<Pupil> > Group::getPupils() const {
+    return pupils;
+}
+
+void Group::setPupils(const QList<QSharedPointer<Pupil> > &value) {
+    pupils = value;
+}
+
+void Group::addPupil(Pupil *pupil) {
+    this->pupils.append(QSharedPointer<Pupil>(pupil));
+}
+
+QSharedPointer<Pupil> Group::pupilAt(int i) {
+    return this->pupils.at(i);
+}
 
 QSharedPointer<Person> Group::getMainTeacher() const {
     return mainTeacher;
diff --git a/samples/simple/group.h b/samples/simple/group.h
index d24dd51..2222109 100644
--- a/samples/simple/group.h
+++ b/samples/simple/group.h
@@ -12,6 +12,7 @@ using namespace CuteEntityManager;
 class Group: public CuteEntityManager::Entity {
     Q_OBJECT
     EM_MACRO(Group)
+    Q_PROPERTY(QList<QSharedPointer<Pupil>> pupils READ getPupils WRITE setPupils)
     Q_PROPERTY(QList<QSharedPointer<Person>> persons READ getPersons WRITE
                setPersons)
     Q_PROPERTY(QString name READ getName WRITE setName)
@@ -25,7 +26,12 @@ class Group: public CuteEntityManager::Entity {
     QString getName() const;
     void setName(const QString &value);
 
-        QSharedPointer<Person> getMainTeacher() const;
+    QList<QSharedPointer<Pupil> > getPupils() const;
+    void setPupils(const QList<QSharedPointer<Pupil> > &value);
+    void addPupil(Pupil *pupil);
+    QSharedPointer<Pupil> pupilAt(int i);
+
+    QSharedPointer<Person> getMainTeacher() const;
     void setMainTeacher(const QSharedPointer<Person> &value);
 
     QList<QSharedPointer<Person> > getPersons() const;
@@ -33,6 +39,7 @@ class Group: public CuteEntityManager::Entity {
     void setPersons(const QList<QSharedPointer<Person> > &value);
 
   protected:
+    QList<QSharedPointer<Pupil>> pupils;
     QList<QSharedPointer<Person>> persons;
     QSharedPointer<Person> mainTeacher;
     QString name;
diff --git a/samples/simple/main.cpp b/samples/simple/main.cpp
index 3a7c436..41bcfc6 100644
--- a/samples/simple/main.cpp
+++ b/samples/simple/main.cpp
@@ -25,11 +25,11 @@ int main(int argc, char *argv[]) {
     EntityInstanceFactory::registerClass<Person>();
     EntityInstanceFactory::registerClass<Pupil>();
     EntityInstanceFactory::registerClass<Group>();
-//    EntityInstanceFactory::registerClass<Occasion>();
-//    EntityInstanceFactory::registerClass<Incident>();
-//    EntityInstanceFactory::registerClass<RatingMarkDefinition>();
-//    EntityInstanceFactory::registerClass<RatingMarkIncident>();
-//    EntityInstanceFactory::registerClass<RatingMarkSystem>();
+    EntityInstanceFactory::registerClass<Occasion>();
+    EntityInstanceFactory::registerClass<Incident>();
+    EntityInstanceFactory::registerClass<RatingMarkDefinition>();
+    EntityInstanceFactory::registerClass<RatingMarkIncident>();
+    EntityInstanceFactory::registerClass<RatingMarkSystem>();
 
 
 
@@ -38,29 +38,24 @@ int main(int argc, char *argv[]) {
                 CuteEntityManager::EntityManager("QSQLITE",
                         QDir::currentPath() + "/db.sqlite"));
     qDebug()<<QDir::currentPath();
-    QStringList inits = QStringList() << "Address" << "Contact" << "Person" << "Pupil" << "Group";
-
-    // << "Incident" << "Occasion" << "RatingMarkDefinition" << "RatingMarkIncident" << "RatingMarkSystem";
+    QStringList inits = QStringList() << "Address" << "Contact" << "Person" << "Pupil" << "Group" << "Incident" << "Occasion" << "RatingMarkDefinition" << "RatingMarkIncident" << "RatingMarkSystem";
     e->startup("0.1", inits);
 
 
-//    auto entities = DataCreation::createRatingEntities();
-//    e->save(entities);
+    auto entities = DataCreation::createRatingEntities();
+    e->save(entities);
 
 //    QSharedPointer<Pupil> pupil = QSharedPointer<Pupil>(new Pupil("Vorname","Nachname","","","Keks"));
 //    e->save(pupil);
 
     QSharedPointer<Pupil> pupil = QSharedPointer<Pupil>(new Pupil());
     pupil->setLegalGuardianNote("note");
-    try {
-    e->save(QList<QSharedPointer<Entity>>()<<pupil);
-    } catch(QString s) {
-    qDebug()<<s;
-    }
+    e->save(pupil);
+
 //    QSharedPointer<Person> person = QSharedPointer<Person>(new Person("Vorname","Nachname","","","Keks"));
 //    e->save(person);
 
-/*
+
 
     QSharedPointer<Occasion> occasion = QSharedPointer<Occasion>(new Occasion("IrgendeinAnlass"));
     QSharedPointer<RatingMarkIncident> inc = QSharedPointer<RatingMarkIncident>(new RatingMarkIncident());
@@ -77,6 +72,6 @@ int main(int argc, char *argv[]) {
     e->save(inc);
 
 
-*/
+
     return 0;
 }
diff --git a/samples/simple/person.cpp b/samples/simple/person.cpp
index de6a735..8f42a50 100644
--- a/samples/simple/person.cpp
+++ b/samples/simple/person.cpp
@@ -20,6 +20,9 @@ const QHash<QString, CuteEntityManager::Relation> Person::getRelations() const {
     hash.insert("groups", CuteEntityManager::Relation("groups",
                 RelationType::MANY_TO_MANY,
                 QString("persons")));
+    hash.insert("maintainedGroups", CuteEntityManager::Relation("maintainedGroups",
+                RelationType::ONE_TO_MANY,
+                QString("mainTeacher")));
     hash.insert("contacts", CuteEntityManager::Relation("contacts",
                 RelationType::MANY_TO_MANY));
     hash.insert("addresses", CuteEntityManager::Relation("addresses",
@@ -119,3 +122,13 @@ void Person::addContact(Contact *contact) {
 void Person::addAddress(Address *address) {
     this->addresses.append(QSharedPointer<Address>(address));
 }
+
+QList<QSharedPointer<Group> > Person::getMaintainedGroups() const {
+    return maintainedGroups;
+}
+
+void Person::setMaintainedGroups(const QList<QSharedPointer<Group> > &value) {
+    maintainedGroups = value;
+
+}
+
diff --git a/samples/simple/person.h b/samples/simple/person.h
index 03536ce..a5a7ac1 100644
--- a/samples/simple/person.h
+++ b/samples/simple/person.h
@@ -25,6 +25,8 @@ class Person: public Entity {
                setCustomPictureFileName)
     Q_PROPERTY(QDate birthday READ getBirthday WRITE setBirthday)
     Q_PROPERTY(QList<QSharedPointer<Group>> groups READ getGroups WRITE setGroups)
+    Q_PROPERTY(QList<QSharedPointer<Group>> maintainedGroups READ
+               getMaintainedGroups WRITE setMaintainedGroups)
     Q_PROPERTY(QList<QSharedPointer<Contact>> contacts READ getContacts WRITE
                setContacts)
     Q_PROPERTY(QList<QSharedPointer<Address>> addresses READ
@@ -73,7 +75,8 @@ class Person: public Entity {
     void addContact(Contact *contact);
     void addAddress(Address *address);
 
-
+    QList<QSharedPointer<Group> > getMaintainedGroups() const;
+    void setMaintainedGroups(const QList<QSharedPointer<Group> > &value);
 
   protected:
     QString firstName;
@@ -85,6 +88,7 @@ class Person: public Entity {
     QList <QSharedPointer<Contact>> contacts;
     QList <QSharedPointer<Address>> addresses;
     QList <QSharedPointer<Group>> groups;
+    QList <QSharedPointer<Group>> maintainedGroups;
 
 };
 
