[Uml-devel] kdesdk/umbrello/umbrello

Oliver Kellogg okellogg at users.sourceforge.net
Sun Aug 22 23:41:02 UTC 2004


CVS commit by okellogg: 

resolveTypes(): Override parent method for resolving the origin type.


  M +28 -9     datatype.cpp   1.9
  M +7 -0      datatype.h   1.8


--- kdesdk/umbrello/umbrello/datatype.cpp  #1.8:1.9
@@ -59,13 +59,4 @@ bool UMLDatatype::isReference() {
 }
 
-void UMLDatatype::saveToXMI(QDomDocument& qDoc, QDomElement& qElement) {
-        QDomElement classElement = UMLObject::save("UML:DataType", qDoc);
-        qElement.appendChild( classElement );
-}
-
-bool UMLDatatype::load(QDomElement&) {
-        return true;
-}
-
 void UMLDatatype::init() {
         m_BaseType = ot_Datatype;
@@ -79,2 +70,30 @@ bool UMLDatatype::isInterface() {
 }
 
+bool UMLDatatype::resolveTypes() {
+        if (m_idStr.isEmpty())
+                return true;
+        int id = m_idStr.toInt();
+        UMLDoc *pDoc = UMLApp::app()->getDocument();
+        UMLObject *typeObj = pDoc->findUMLObject(id);
+        m_pOrigType = static_cast<UMLClassifier*>(typeObj);
+        return true;
+}
+
+void UMLDatatype::saveToXMI(QDomDocument& qDoc, QDomElement& qElement) {
+        QDomElement classElement = UMLObject::save("UML:DataType", qDoc);
+        if (m_pOrigType)
+                classElement.setAttribute( "elementReference", m_pOrigType->getID() );
+        qElement.appendChild( classElement );
+}
+
+bool UMLDatatype::load(QDomElement& element) {
+        //CHECK: Does our usage of the elementReference attribute
+        //       violate the XMI standard? - See resolveTypes()
+        m_idStr = element.attribute( "elementReference", "" );
+        if (!m_idStr.isEmpty()) {
+                // @todo We do not currently support composition.
+                m_isRef = true;
+        }
+        return true;
+}
+

--- kdesdk/umbrello/umbrello/datatype.h  #1.7:1.8
@@ -72,4 +72,10 @@ public:
 
         /**
+         * Overrides parent method for resolving the origin type
+         * in case of a pointer.
+         */
+        bool resolveTypes();
+
+        /**
          * Set the origin type (in case of e.g. typedef)
          */
@@ -104,4 +110,5 @@ protected:
         UMLClassifier *m_pOrigType;
         bool m_isRef;
+        QString m_idStr;
 };
 






More information about the umbrello-devel mailing list