diff options
author | Lukáš Lalinský <lalinsky@gmail.com> | 2009-01-04 21:16:52 +0100 |
---|---|---|
committer | Lukáš Lalinský <lalinsky@gmail.com> | 2009-01-04 21:16:52 +0100 |
commit | 04e8dd0b1972fde90d711ccf7ca28130a4adc3b6 (patch) | |
tree | f8f9d596c528d252e1e1bfaaf54254867269af93 | |
parent | 4022a373822cf0e17151dc2a599ff7310a822599 (diff) | |
download | dbmodel-04e8dd0b1972fde90d711ccf7ca28130a4adc3b6.tar.xz |
Store relationship's colums in XML
-rw-r--r-- | src/domutils.h | 18 | ||||
-rw-r--r-- | src/items/database/databaserelationship.cpp | 18 |
2 files changed, 36 insertions, 0 deletions
diff --git a/src/domutils.h b/src/domutils.h index 06b2cf4..a3abcc8 100644 --- a/src/domutils.h +++ b/src/domutils.h @@ -119,6 +119,24 @@ readFloatElement(QDomElement &parent, const QString &name, qreal defaultValue = } inline void +appendIntElement(QDomDocument &doc, QDomElement &parent, const QString &name, int value) +{ + QDomElement element = doc.createElement(name); + element.appendChild(doc.createTextNode(QString::number(value))); + parent.appendChild(element); +} + +inline int +readIntElement(QDomElement &parent, const QString &name, int defaultValue = 0) +{ + QDomElement element = parent.firstChildElement(name); + if (!element.isNull()) { + return element.text().toInt(); + } + return defaultValue; +} + +inline void appendPointElement(QDomDocument &doc, QDomElement &parent, const QString &name, QPointF value) { if (!value.isNull()) { diff --git a/src/items/database/databaserelationship.cpp b/src/items/database/databaserelationship.cpp index e407ce2..aacacf6 100644 --- a/src/items/database/databaserelationship.cpp +++ b/src/items/database/databaserelationship.cpp @@ -18,6 +18,7 @@ #include <QDebug> #include "diagramdocument.h" #include "column.h" +#include "columnlist.h" #include "databasetable.h" #include "line.h" #include "databaserelationship.h" @@ -384,6 +385,15 @@ DatabaseRelationship::loadFromXml(QDomElement element, DiagramDocument *document setChildOptional(readBoolElement(modalityElement, "child", true, "Optional", "Mandatory")); setParentOptional(readBoolElement(modalityElement, "parent", true, "Optional", "Mandatory")); } + QDomElement columnsElement = relationshipeElement.firstChildElement("columns"); + if (!columnsElement.isNull()) { + int index = readIntElement(columnsElement, "child", -1); + if (index != -1 && childTable()) + setChildColumn(childTable()->columnList()->column(index)); + index = readIntElement(columnsElement, "parent", -1); + if (index != -1 && parentTable()) + setParentColumn(parentTable()->columnList()->column(index)); + } } } @@ -398,6 +408,14 @@ DatabaseRelationship::saveToXml(QDomDocument doc, QDomElement element) relationshipeElement.appendChild(modalityElement); appendBoolElement(doc, modalityElement, "child", d->childOptional, "Optional", "Mandatory"); appendBoolElement(doc, modalityElement, "parent", d->parentOptional, "Optional", "Mandatory"); + if (d->childColumn || d->parentColumn) { + QDomElement columnsElement = doc.createElement("columns"); + relationshipeElement.appendChild(columnsElement); + if (d->childColumn) + appendIntElement(doc, columnsElement, "child", childTable()->columnList()->indexOf(d->childColumn)); + if (d->parentColumn) + appendIntElement(doc, columnsElement, "parent", parentTable()->columnList()->indexOf(d->parentColumn)); + } } DiagramItemProperties * |