summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukáš Lalinský <lalinsky@gmail.com>2009-01-04 21:16:52 +0100
committerLukáš Lalinský <lalinsky@gmail.com>2009-01-04 21:16:52 +0100
commit04e8dd0b1972fde90d711ccf7ca28130a4adc3b6 (patch)
treef8f9d596c528d252e1e1bfaaf54254867269af93
parent4022a373822cf0e17151dc2a599ff7310a822599 (diff)
downloaddbmodel-04e8dd0b1972fde90d711ccf7ca28130a4adc3b6.tar.gz
dbmodel-04e8dd0b1972fde90d711ccf7ca28130a4adc3b6.tar.bz2
Store relationship's colums in XML
-rw-r--r--src/domutils.h18
-rw-r--r--src/items/database/databaserelationship.cpp18
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 *