[Uml-devel] branches/KDE/3.5/kdesdk/umbrello/umbrello

Oliver Kellogg okellogg at users.sourceforge.net
Thu Feb 2 14:08:12 UTC 2006


SVN commit 505038 by okellogg:

assignUniqueIdOnCreation(), create{Attribute,Operation}(): New.


 M  +65 -27    object_factory.cpp  
 M  +21 -0     object_factory.h  


--- branches/KDE/3.5/kdesdk/umbrello/umbrello/object_factory.cpp #505037:505038
@@ -25,6 +25,8 @@
 #include "umlpackagelist.h"
 #include "package.h"
 #include "classifier.h"
+#include "attribute.h"
+#include "operation.h"
 #include "datatype.h"
 #include "enum.h"
 #include "entity.h"
@@ -42,6 +44,19 @@
 
 namespace Object_Factory {
 
+Uml::IDType g_predefinedId = Uml::id_None;
+
+void assignUniqueIdOnCreation(bool yesno) {
+    if (yesno)
+        g_predefinedId = Uml::id_None;
+    else
+        g_predefinedId = Uml::id_Reserved;
+}
+
+bool assignUniqueIdOnCreation() {
+    return (g_predefinedId == Uml::id_None);
+}
+
 UMLObject* createUMLObject(Uml::Object_Type type, const QString &n,
                            UMLPackage *parentPkg /* = NULL */,
                            bool prepend /* = false */) {
@@ -81,33 +96,46 @@
         } while (bValidNameEntered == false);
     }
     UMLObject *o = NULL;
-    if(type == Uml::ot_Actor) {
-        o = new UMLActor(name);
-    } else if(type == Uml::ot_UseCase) {
-        o = new UMLUseCase(name);
-    } else if(type == Uml::ot_Class ) {
-        o = new UMLClassifier(name);
-    } else if(type == Uml::ot_Package) {
-        o = new UMLPackage(name);
-    } else if(type == Uml::ot_Component) {
-        o = new UMLComponent(name);
-    } else if(type == Uml::ot_Node) {
-        o = new UMLNode(name);
-    } else if(type == Uml::ot_Artifact) {
-        o = new UMLArtifact(name);
-    } else if(type == Uml::ot_Interface) {
-        UMLClassifier *c = new UMLClassifier(name);
-        c->setInterface();
-        o = c;
-    } else if(type == Uml::ot_Datatype) {
-        o = new UMLDatatype(name);
-    } else if(type == Uml::ot_Enum) {
-        o = new UMLEnum(name);
-    } else if(type == Uml::ot_Entity) {
-        o = new UMLEntity(name);
-    } else {
-        kdWarning() << "CreateUMLObject(int) error unknown type: " << type << endl;
-        return (UMLObject*)0L;
+    switch (type) {
+        case Uml::ot_Actor:
+            o = new UMLActor(name, g_predefinedId);
+            break;
+        case Uml::ot_UseCase:
+            o = new UMLUseCase(name, g_predefinedId);
+            break;
+        case Uml::ot_Class:
+            o = new UMLClassifier(name, g_predefinedId);
+            break;
+        case Uml::ot_Package:
+            o = new UMLPackage(name, g_predefinedId);
+            break;
+        case Uml::ot_Component:
+            o = new UMLComponent(name, g_predefinedId);
+            break;
+        case Uml::ot_Node:
+            o = new UMLNode(name, g_predefinedId);
+            break;
+        case Uml::ot_Artifact:
+            o = new UMLArtifact(name, g_predefinedId);
+            break;
+        case Uml::ot_Interface: {
+            UMLClassifier *c = new UMLClassifier(name, g_predefinedId);
+            c->setInterface();
+            o = c;
+            break;
+        }
+        case Uml::ot_Datatype:
+            o = new UMLDatatype(name, g_predefinedId);
+            break;
+        case Uml::ot_Enum:
+            o = new UMLEnum(name, g_predefinedId);
+            break;
+        case Uml::ot_Entity:
+            o = new UMLEntity(name, g_predefinedId);
+            break;
+        default:
+            kdWarning() << "CreateUMLObject(int) error unknown type: " << type << endl;
+            return NULL;
     }
     o->setUMLPackage(parentPkg);
     doc->addUMLObject(o, prepend);
@@ -115,6 +143,16 @@
     return o;
 }
 
+UMLAttribute *createAttribute(UMLObject *parent, QString name) {
+    UMLAttribute *attr = new UMLAttribute(parent, name, g_predefinedId);
+    return attr;
+}
+
+UMLOperation *createOperation(UMLClassifier *parent, QString name) {
+    UMLOperation *op = new UMLOperation(parent, name, g_predefinedId);
+    return op;
+}
+
 UMLObject* makeObjectFromXMI(const QString &xmiTag) {
     UMLObject* pObject = 0;
     if (Uml::tagEq(xmiTag, "UseCase")) {
--- branches/KDE/3.5/kdesdk/umbrello/umbrello/object_factory.h #505037:505038
@@ -17,6 +17,9 @@
 
 class UMLObject;
 class UMLPackage;
+class UMLClassifier;
+class UMLAttribute;
+class UMLOperation;
 
 namespace Object_Factory {
 
@@ -37,7 +40,25 @@
                            UMLPackage *parentPkg = 0,
                            bool prepend = false);
 
+UMLAttribute *createAttribute(UMLObject *parent, QString name);
+
+UMLOperation *createOperation(UMLClassifier *parent, QString name);
+
 /**
+ * Control whether the createUMLObject() solicits a new unique ID for the
+ * created object.
+ * By default, unique ID generation is turned on.
+ *
+ * @param yesno   False turns UID generation off, true turns it on.
+ */
+void assignUniqueIdOnCreation(bool yesno);
+
+/**
+ * Return whether unique ID generation is on or off.
+ */
+bool assignUniqueIdOnCreation();
+
+/**
  * Make a new UMLObject according to the given XMI tag.
  * Used by loadFromXMI and clipboard paste.
  */




More information about the umbrello-devel mailing list