From 04e8dd0b1972fde90d711ccf7ca28130a4adc3b6 Mon Sep 17 00:00:00 2001 From: Lukáš Lalinský Date: Sun, 4 Jan 2009 21:16:52 +0100 Subject: Store relationship's colums in XML --- src/domutils.h | 18 ++++++++++++++++++ src/items/database/databaserelationship.cpp | 18 ++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/src/domutils.h b/src/domutils.h index 06b2cf4..a3abcc8 100644 --- a/src/domutils.h +++ b/src/domutils.h @@ -118,6 +118,24 @@ readFloatElement(QDomElement &parent, const QString &name, qreal defaultValue = return 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) { 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 #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 * -- cgit v1.2.3-54-g00ecf