/*************************************************************************** * * * 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 * ***************************************************************************/ /* 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 * tqparent ) : CodeClassFieldDeclarationBlock ( tqparent ) { setOverallIndentationLevel(1); updateContent(); } JavaCodeClassFieldDeclarationBlock::~JavaCodeClassFieldDeclarationBlock ( ) { } // // Methods // // Other methods // /** */ void JavaCodeClassFieldDeclarationBlock::updateContent( ) { CodeClassField * cf = getParentClassField(); ClassifierCodeDocument * doc = cf->getParentDocument(); JavaCodeClassField * jcf = dynamic_cast(cf); JavaClassifierCodeDocument* jdoc = dynamic_cast(doc); CodeGenerationPolicy * commonpolicy = UMLApp::app()->getCommonPolicy(); CodeGenerationPolicy::ScopePolicy scopePolicy = commonpolicy->getAssociationFieldScope(); // Set the comment TQString notes = getParentObject()->getDoc(); getComment()->setText(notes); // Set the body TQString staticValue = getParentObject()->getStatic() ? "static " : ""; TQString 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 tqparent object break; } } TQString typeName = jcf->getTypeName(); TQString fieldName = jcf->getFieldName(); TQString initialV = jcf->getInitialValue(); if (!cf->parentIsAttribute() && !cf->fieldIsSingleValue()) typeName = "List"; TQString body = staticValue+scopeStr+' '+typeName+' '+fieldName; if (!initialV.isEmpty()) body.append(" = " + initialV); else if (!cf->parentIsAttribute()) { UMLRole * role = dynamic_cast(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 tqparent 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"