org.andromda.metafacades.uml14.EntityAttributeLogicImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of andromda-metafacades-uml14 Show documentation
Show all versions of andromda-metafacades-uml14 Show documentation
The UML 1.4 metafacades. This is the set of UML 1.4 metafacades
implementations. These implement the common UML metafacades.
The newest version!
package org.andromda.metafacades.uml14;
import org.andromda.metafacades.uml.ClassifierFacade;
import org.andromda.metafacades.uml.EntityMetafacadeUtils;
import org.andromda.metafacades.uml.EnumerationFacade;
import org.andromda.metafacades.uml.NameMasker;
import org.andromda.metafacades.uml.TypeMappings;
import org.andromda.metafacades.uml.UMLMetafacadeProperties;
import org.andromda.metafacades.uml.UMLProfile;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
/**
* Metaclass facade implementation.
* @author Bob Fields
*/
public class EntityAttributeLogicImpl
extends EntityAttributeLogic
{
private static final long serialVersionUID = 34L;
/**
* @param metaObject
* @param context
*/
public EntityAttributeLogicImpl(Object metaObject, String context)
{
super(metaObject, context);
}
/**
* The logger instance.
*/
private static final Logger logger = Logger.getLogger(EntityAttributeLogicImpl.class);
/**
* Overridden to provide name masking.
*
* @see org.andromda.metafacades.uml.ModelElementFacade#getName()
*/
@Override
protected String handleGetName()
{
final String nameMask = String.valueOf(this.getConfiguredProperty(
UMLMetafacadeProperties.ENTITY_PROPERTY_NAME_MASK));
return NameMasker.mask(super.handleGetName(), nameMask);
}
/**
* @see org.andromda.metafacades.uml.EntityAttribute#getColumnName()
*/
@Override
protected String handleGetColumnName()
{
final Short maxSqlNameLength =
Short.valueOf((String)this.getConfiguredProperty(UMLMetafacadeProperties.MAX_SQL_NAME_LENGTH));
final String columnNamePrefix =
this.isConfiguredProperty(UMLMetafacadeProperties.COLUMN_NAME_PREFIX)
? ObjectUtils.toString(this.getConfiguredProperty(UMLMetafacadeProperties.COLUMN_NAME_PREFIX)) : null;
final String columnNameSuffix =
this.isConfiguredProperty(UMLMetafacadeProperties.COLUMN_NAME_SUFFIX)
? ObjectUtils.toString(this.getConfiguredProperty(UMLMetafacadeProperties.COLUMN_NAME_SUFFIX)) : null;
return EntityMetafacadeUtils.getSqlNameFromTaggedValue(
columnNamePrefix, this, UMLProfile.TAGGEDVALUE_PERSISTENCE_COLUMN,
maxSqlNameLength, columnNameSuffix,
this.getConfiguredProperty(UMLMetafacadeProperties.SQL_NAME_SEPARATOR));
}
/**
* @see org.andromda.metafacades.uml.EntityAttribute#getColumnLength()
*/
@Override
protected String handleGetColumnLength()
{
return (String)this.findTaggedValue(UMLProfile.TAGGEDVALUE_PERSISTENCE_COLUMN_LENGTH);
}
/**
* @see org.andromda.metafacades.uml.EntityAttribute#isIdentifier()
*/
@Override
protected boolean handleIsIdentifier()
{
return this.hasStereotype(UMLProfile.STEREOTYPE_IDENTIFIER);
}
/*
* @see org.andromda.metafacades.uml.EntityAttribute#isUnique()
@Override
protected boolean handleIsUnique()
{
return this.hasStereotype(UMLProfile.STEREOTYPE_UNIQUE);
}
*/
/**
* @see org.andromda.metafacades.uml.EntityAttribute#getColumnIndex()
*/
@Override
protected String handleGetColumnIndex()
{
final String index = (String)this.findTaggedValue(UMLProfile.TAGGEDVALUE_PERSISTENCE_COLUMN_INDEX);
return index != null ? StringUtils.trimToEmpty(index) : null;
}
/**
* @see org.andromda.metafacades.uml.EntityAttribute#getSqlType()
*/
@Override
protected String handleGetSqlType()
{
String value = null;
if (this.getSqlMappings() != null)
{
final ClassifierFacade type = this.getType();
if (type != null)
{
String typeName = type.getFullyQualifiedName(true);
// if its an enumeration, the sql type is the literal type
if (type.isEnumeration())
{
ClassifierFacade literalType = ((EnumerationFacade)type).getLiteralType();
if (literalType != null)
{
typeName = literalType.getFullyQualifiedName(true);
}
}
value = this.getSqlMappings().getTo(typeName);
final String columnLength = this.getColumnLength();
if (StringUtils.isNotBlank(columnLength))
{
value = EntityMetafacadeUtils.constructSqlTypeName(value, columnLength);
}
}
}
return value;
}
/**
* @see org.andromda.metafacades.uml.EntityAttribute#getJdbcType()
*/
@Override
protected String handleGetJdbcType()
{
String value = null;
if (this.getJdbcMappings() != null)
{
final ClassifierFacade type = this.getType();
if (type != null)
{
final String typeName = type.getFullyQualifiedName(true);
value = this.getJdbcMappings().getTo(typeName);
}
}
return value;
}
/**
* Gets the SQL mappings that have been set for this entity attribute.
*
* @return the SQL Mappings instance.
*/
protected TypeMappings handleGetSqlMappings()
{
return this.getMappingsProperty(UMLMetafacadeProperties.SQL_MAPPINGS_URI);
}
/**
* Gets the JDBC mappings.
*/
@Override
protected TypeMappings handleGetJdbcMappings()
{
return this.getMappingsProperty(UMLMetafacadeProperties.JDBC_MAPPINGS_URI);
}
/**
* Gets a Mappings instance from a property registered under the given propertyName
.
*
* @param propertyName the property name to register under.
* @return the Mappings instance.
*/
private TypeMappings getMappingsProperty(final String propertyName)
{
final Object property = this.getConfiguredProperty(propertyName);
TypeMappings mappings = null;
String uri;
if (property instanceof String)
{
uri = (String)property;
try
{
mappings = TypeMappings.getInstance(uri);
this.setProperty(propertyName, mappings);
}
catch (Throwable th)
{
String errMsg = "Error getting '" + propertyName + "' --> '" + uri + '\'';
logger.error(errMsg, th);
// don't throw the exception
}
}
else
{
mappings = (TypeMappings)property;
}
return mappings;
}
/**
* @see org.andromda.metafacades.uml14.EntityAttributeLogic#handleIsTransient()
*/
protected boolean handleIsTransient()
{
return this.hasStereotype(UMLProfile.STEREOTYPE_TRANSIENT);
}
/**
* @return unique group
* @see org.andromda.metafacades.uml.EntityAttribute#getUniqueGroup()
*/
protected String handleGetUniqueGroup() {
final String group = (String)this.findTaggedValue(UMLProfile.TAGGEDVALUE_PERSISTENCE_COLUMN_UNIQUE_GROUP);
return group != null ? StringUtils.trimToEmpty(group) : null;
}
/**
* @see org.andromda.metafacades.uml.EntityAttribute#getKeywords()
public Collection handleGetKeywords()
{
//return super.getKeywords();
return this.metaObject.getKeywords();
}
*/
/*public String handleGetLabel()
{
return this.metaObject.getLabel();
}
public ModelElementFacade handleGetModelNamespace()
{
return this.metaObject.getNamespace();
}
public String handleGetQualifiedName()
{
return this.metaObject.getQualifiedName();
}*/
/**
* @see org.andromda.metafacades.uml.ModelElementFacade#hasKeyword(String)
public boolean handleHasKeyword(String keywordName)
{
return super.hasKeyword(keywordName);
}
*/
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy