[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