
/***************************************************************************
 *                                                                         *
 *   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.                                   *
 *                                                                         *
 ***************************************************************************/

/*  This code generated by: 
 *      Author : thomas
 *      Date   : Mon Jun 30 2003
 */


#include <kdebug.h>
#include <qregexp.h>

#include "javacodeclassfield.h"
#include "javacodecomment.h"
#include "javacodegenerator.h"

#include "../attribute.h"
#include "../umlobject.h"
#include "../umlrole.h"

// #include "javacodeaccessormethod.h"
#include "javaclassifiercodedocument.h"

// Constructors/Destructors
//  

JavaCodeClassField::JavaCodeClassField (JavaClassifierCodeDocument * parentDoc, UMLRole * role) 
    : CodeClassField((ClassifierCodeDocument*)parentDoc, role) 
{

}

JavaCodeClassField::JavaCodeClassField (JavaClassifierCodeDocument * parentDoc, UMLAttribute * attrib) 
    : CodeClassField((ClassifierCodeDocument*)parentDoc, attrib) 
{

}

JavaCodeClassField::~JavaCodeClassField ( ) { }

//  
// Methods
//  

// Other methods
//  

QString JavaCodeClassField::getFieldName() {
        if (parentIsAttribute()) 
	{
		UMLAttribute * at = (UMLAttribute*) getParentObject();
		return cleanName(at->getName());
	} 
	else
	{
		UMLRole * role = (UMLRole*) getParentObject();
		QString roleName = role->getName();
		if(fieldIsSingleValue()) {
			return roleName.replace(0, 1, roleName.left(1).lower());
		} else { 
			return roleName.lower() + "Vector";
		}
	}
}


QString JavaCodeClassField::getInitialValue() {

        if (parentIsAttribute()) 
	{
		UMLAttribute * at = dynamic_cast<UMLAttribute*>( getParentObject() );
		if (at) {
                	return fixInitialStringDeclValue(at->getInitialValue(), getTypeName());
		} else {
			kdError() << "JavaodeClassField::getInitialValue: parent object is not a UMLAttribute"
				  << endl;
			return "";
		}
                return fixInitialStringDeclValue(at->getInitialValue(), getTypeName());
        } 
	else 
	{
		if(fieldIsSingleValue()) {
// FIX : IF the multiplicity is "1" then we should init a new object here, if its 0 or 1,
//       then we can just return 'empty' string (minor problem).
			return QString("");
		} else {
			return " new "+getListFieldClassName()+"( )";
		}
        }

}

QString JavaCodeClassField::getTypeName ( ) 
{
	JavaCodeGenerator * gen = dynamic_cast<JavaCodeGenerator*>(getParentGenerator());
	return gen->fixTypeName(CodeClassField::getTypeName());
}

#include "javacodeclassfield.moc"
