[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