summaryrefslogtreecommitdiffstats
path: root/umbrello/umbrello/codegenerators/javacodeclassfielddeclarationblock.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'umbrello/umbrello/codegenerators/javacodeclassfielddeclarationblock.cpp')
-rw-r--r--umbrello/umbrello/codegenerators/javacodeclassfielddeclarationblock.cpp118
1 files changed, 118 insertions, 0 deletions
diff --git a/umbrello/umbrello/codegenerators/javacodeclassfielddeclarationblock.cpp b/umbrello/umbrello/codegenerators/javacodeclassfielddeclarationblock.cpp
new file mode 100644
index 00000000..87ebf78a
--- /dev/null
+++ b/umbrello/umbrello/codegenerators/javacodeclassfielddeclarationblock.cpp
@@ -0,0 +1,118 @@
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * copyright (C) 2004-2006 *
+ * Umbrello UML Modeller Authors <uml-devel@uml.sf.net> *
+ ***************************************************************************/
+
+/* This code generated by:
+ * Author : thomas
+ * Date : Fri Jul 25 2003
+ */
+
+#include "javacodeclassfielddeclarationblock.h"
+
+#include "javacodeclassfield.h"
+#include "javaclassifiercodedocument.h"
+#include "javacodegenerationpolicy.h"
+#include "../codegenerator.h"
+#include "../classifier.h"
+#include "../umlrole.h"
+#include "../uml.h"
+
+// Constructors/Destructors
+//
+
+JavaCodeClassFieldDeclarationBlock::JavaCodeClassFieldDeclarationBlock ( CodeClassField * parent )
+ : CodeClassFieldDeclarationBlock ( parent )
+{
+ setOverallIndentationLevel(1);
+ updateContent();
+}
+
+JavaCodeClassFieldDeclarationBlock::~JavaCodeClassFieldDeclarationBlock ( ) { }
+
+//
+// Methods
+//
+
+
+
+// Other methods
+//
+
+/**
+ */
+void JavaCodeClassFieldDeclarationBlock::updateContent( )
+{
+
+ CodeClassField * cf = getParentClassField();
+ ClassifierCodeDocument * doc = cf->getParentDocument();
+ JavaCodeClassField * jcf = dynamic_cast<JavaCodeClassField*>(cf);
+ JavaClassifierCodeDocument* jdoc = dynamic_cast<JavaClassifierCodeDocument*>(doc);
+ CodeGenerationPolicy * commonpolicy = UMLApp::app()->getCommonPolicy();
+
+ CodeGenerationPolicy::ScopePolicy scopePolicy = commonpolicy->getAssociationFieldScope();
+
+ // Set the comment
+ QString notes = getParentObject()->getDoc();
+ getComment()->setText(notes);
+
+ // Set the body
+ QString staticValue = getParentObject()->getStatic() ? "static " : "";
+ QString scopeStr = jdoc->scopeToJavaDecl(getParentObject()->getVisibility());
+
+ // IF this is from an association, then scope taken as appropriate to policy
+ if(!jcf->parentIsAttribute())
+ {
+ switch (scopePolicy) {
+ case CodeGenerationPolicy::Public:
+ case CodeGenerationPolicy::Private:
+ case CodeGenerationPolicy::Protected:
+ scopeStr = jdoc->scopeToJavaDecl((Uml::Visibility::Value) scopePolicy);
+ break;
+ default:
+ case CodeGenerationPolicy::FromParent:
+ // do nothing here... will leave as from parent object
+ break;
+ }
+ }
+
+ QString typeName = jcf->getTypeName();
+ QString fieldName = jcf->getFieldName();
+ QString initialV = jcf->getInitialValue();
+
+ if (!cf->parentIsAttribute() && !cf->fieldIsSingleValue())
+ typeName = "List";
+
+ QString body = staticValue+scopeStr+' '+typeName+' '+fieldName;
+ if (!initialV.isEmpty())
+ body.append(" = " + initialV);
+ else if (!cf->parentIsAttribute())
+ {
+ UMLRole * role = dynamic_cast<UMLRole*>(cf->getParentObject());
+ if (role->getObject()->getBaseType() == Uml::ot_Interface)
+ {
+ // do nothing.. can't instanciate an interface
+ } else {
+
+ // FIX?: IF a constructor method exists in the classifiercodedoc
+ // of the parent Object, then we can use that instead (if its empty).
+ if(cf->fieldIsSingleValue())
+ {
+ if(!typeName.isEmpty())
+ body.append(" = new " + typeName + " ( )");
+ } else
+ body.append(" = new Vector ( )");
+ }
+ }
+
+ setText(body+';');
+
+}
+
+#include "javacodeclassfielddeclarationblock.moc"