[Uml-devel] kdesdk/umbrello/umbrello
Oliver Kellogg
okellogg at users.sourceforge.net
Sat Jan 3 20:19:01 UTC 2004
CVS commit by okellogg:
{saveTo,loadFrom}XMI: Use "package" as the attribute identifier instead of
"packageid" (approach UML DTD conformance)
M +18 -11 umlobject.cpp 1.19
--- kdesdk/umbrello/umbrello/umlobject.cpp #1.18:1.19
@@ -8,4 +8,5 @@
***************************************************************************/
+#include <qregexp.h>
#include <kdebug.h>
#include "umldoc.h"
@@ -220,5 +221,5 @@ bool UMLObject::saveToXMI( QDomDocument
qElement.setAttribute( "comment", m_Doc ); //CHECK: uml13.dtd compliance
if (m_pUMLPackage) //FIXME: uml13.dtd compliance
- qElement.setAttribute( "packageid", m_pUMLPackage->getID() );
+ qElement.setAttribute( "package", m_pUMLPackage->getID() );
switch (m_Scope) {
case Uml::Public:
@@ -290,12 +291,18 @@ bool UMLObject::loadFromXMI( QDomElement
return false;
- QString pkgId = element.attribute( "packageid", "-1" );
- if (pkgId == "-1") {
- // Old files used "package" instead so test for it.
- QString pkgName = element.attribute( "package", "" );
- if (pkgName != "") {
- setPackage( pkgName );
- }
+ QString pkg = element.attribute( "packageid", "-1" );
+ // Some interim versions used "packageid" so test for it.
+ int pkgId = -1;
+ if (pkg != "-1") {
+ pkgId = pkg.toInt();
} else {
+ pkg = element.attribute( "package", "" );
+ if (pkg.contains(QRegExp("\\D")))
+ // Old versions saved the package name instead of the xmi.id.
+ setPackage( pkg );
+ else
+ pkgId = pkg.toInt();
+ }
+ if (pkgId != -1) {
UMLDoc* umldoc = dynamic_cast<UMLDoc *>( parent() );
if (umldoc == NULL) {
@@ -304,8 +311,8 @@ bool UMLObject::loadFromXMI( QDomElement
return true; // soft error
}
- UMLObject *pkgObj = umldoc->findUMLObject( pkgId.toInt() );
+ UMLObject *pkgObj = umldoc->findUMLObject( pkgId );
if (pkgObj == NULL) {
kdDebug() << "UMLObject::loadFromXMI: cannot resolve packageid "
- << pkgId.toInt() << endl;
+ << pkgId << endl;
return true; // soft error
}
@@ -313,5 +320,5 @@ bool UMLObject::loadFromXMI( QDomElement
if (m_pUMLPackage == NULL) {
kdDebug() << "UMLObject::loadFromXMI: object of packageid "
- << pkgId.toInt() << " is not a package" << endl;
+ << pkgId << " is not a package" << endl;
return true; // soft error
}
More information about the umbrello-devel
mailing list