You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdesdk/umbrello/umbrello/entityattribute.cpp

179 lines
5.6 KiB

/***************************************************************************
* *
* 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) 2002-2006 *
* Umbrello UML Modeller Authors <uml-devel@uml.sf.net> *
***************************************************************************/
// own header
#include "entityattribute.h"
// qt/kde includes
#include <tqregexp.h>
#include <kdebug.h>
// app includes
#include "umlcanvasobject.h"
#include "umldoc.h"
#include "uml.h"
#include "dialogs/umlentityattributedialog.h"
#include "object_factory.h"
UMLEntityAttribute::UMLEntityAttribute( const UMLObject *parent, const TQString& name,
Uml::IDType id, Uml::Visibility s,
UMLObject *type, const TQString& iv )
: UMLAttribute(parent, name, id, s, type, iv) {
init();
if (m_pSecondary) {
m_pSecondary->setBaseType(Uml::ot_Entity);
}
}
UMLEntityAttribute::UMLEntityAttribute(const UMLObject *parent) : UMLAttribute(parent) {
init();
}
UMLEntityAttribute::~UMLEntityAttribute() { }
void UMLEntityAttribute::init() {
m_BaseType = Uml::ot_EntityAttribute;
m_indexType = Uml::None;
m_autoIncrement = false;
m_null = false;
}
TQString UMLEntityAttribute::getAttributes() const{
return m_attributes;
}
void UMLEntityAttribute::setAttributes(const TQString& attributes) {
m_attributes = attributes;
}
TQString UMLEntityAttribute::getValues() const{
return m_values;
}
void UMLEntityAttribute::setValues(const TQString& values) {
m_values = values;
}
bool UMLEntityAttribute::getAutoIncrement() const{
return m_autoIncrement;
}
void UMLEntityAttribute::setAutoIncrement(const bool autoIncrement) {
m_autoIncrement = autoIncrement;
}
Uml::DBIndex_Type UMLEntityAttribute::getIndexType() const{
return m_indexType;
}
void UMLEntityAttribute::setIndexType(const Uml::DBIndex_Type indexType) {
m_indexType = indexType;
}
bool UMLEntityAttribute::getNull() const{
return m_null;
}
void UMLEntityAttribute::setNull(const bool nullIn) {
m_null = nullIn;
}
TQString UMLEntityAttribute::toString(Uml::Signature_Type sig) {
TQString s;
//FIXME
if(sig == Uml::st_ShowSig || sig == Uml::st_NoSig) {
s=m_Vis.toString(true) + ' ';
} else
s = "";
if(sig == Uml::st_ShowSig || sig == Uml::st_SigNoVis) {
TQString string = s + getName() + " : " + getTypeName();
if(m_InitialValue.length() > 0)
string += " = " + m_InitialValue;
return string;
} else
return s + getName();
}
bool UMLEntityAttribute::operator==( UMLEntityAttribute &rhs) {
if( this == &rhs )
return true;
if( !UMLObject::operator==( rhs ) )
return false;
// The type name is the only distinguishing criterion.
// (Some programming languages might support more, but others don't.)
if (m_pSecondary != rhs.m_pSecondary)
return false;
return true;
}
void UMLEntityAttribute::copyInto(UMLEntityAttribute *rhs) const
{
// call the parent first.
UMLClassifierListItem::copyInto(rhs);
// Copy all datamembers
rhs->m_pSecondary = m_pSecondary;
rhs->m_SecondaryId = m_SecondaryId;
rhs->m_InitialValue = m_InitialValue;
rhs->m_ParmKind = m_ParmKind;
}
UMLObject* UMLEntityAttribute::clone() const
{
UMLEntityAttribute* clone = new UMLEntityAttribute( (UMLEntityAttribute*)parent() );
copyInto(clone);
return clone;
}
void UMLEntityAttribute::saveToXMI( TQDomDocument & qDoc, TQDomElement & qElement ) {
TQDomElement entityattributeElement = UMLObject::save("UML:EntityAttribute", qDoc);
if (m_pSecondary == NULL) {
kDebug() << "UMLEntityAttribute::saveToXMI(" << m_Name
<< "): m_pSecondary is NULL, using local name "
<< m_SecondaryId << endl;
entityattributeElement.setAttribute( "type", m_SecondaryId );
} else {
entityattributeElement.setAttribute( "type", ID2STR(m_pSecondary->getID()) );
}
entityattributeElement.setAttribute( "initialValue", m_InitialValue );
entityattributeElement.setAttribute( "dbindex_type", m_indexType );
entityattributeElement.setAttribute( "values", m_values );
entityattributeElement.setAttribute( "attributes", m_attributes );
entityattributeElement.setAttribute( "auto_increment", m_autoIncrement );
entityattributeElement.setAttribute( "allow_null", m_null );
qElement.appendChild( entityattributeElement );
}
bool UMLEntityAttribute::load( TQDomElement & element ) {
if (! UMLAttribute::load(element))
return false;
int indexType = element.attribute( "dbindex_type", "1100" ).toInt();
m_indexType = ( Uml::DBIndex_Type )indexType;
m_values = element.attribute( "values", "" );
m_attributes = element.attribute( "attributes", "" );
m_autoIncrement = ( bool )element.attribute( "auto_increment", "" ).toInt();
m_null = ( bool )element.attribute( "allow_null", "" ).toInt();
return true;
}
bool UMLEntityAttribute::showPropertiesDialog(TQWidget* parent) {
UMLEntityAttributeDialog dialog(parent, this);
return dialog.exec();
}
#include "entityattribute.moc"