HibernateEnumerationLogicImpl.java

package org.andromda.cartridges.hibernate.metafacades;

import org.andromda.utils.JavaTypeConverter;
import org.apache.commons.lang.StringUtils;


/**
 * MetafacadeLogic implementation for
 * org.andromda.cartridges.hibernate.metafacades.HibernateEnumeration.
 *
 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEnumeration
 */
public class HibernateEnumerationLogicImpl
    extends HibernateEnumerationLogic
{
    private static final long serialVersionUID = 34L;
    // ---------------- constructor -------------------------------
    /**
     * @param metaObject
     * @param context
     */
    public HibernateEnumerationLogicImpl(
        Object metaObject,
        String context)
    {
        super(metaObject, context);
    }

    /**
     * The pattern to use when constructing the enumeration name.
     */
    private static final String ENUMERATION_NAME_PATTERN = "enumerationNamePattern";

    /**
     * Returns the value of the enumeration name pattern.
     *
     * @return the enumeration name pattern.
     */
    private String getEnumerationNamePattern()
    {
        return String.valueOf(this.getConfiguredProperty(ENUMERATION_NAME_PATTERN));
    }

    /**
     * @see org.andromda.cartridges.hibernate.metafacades.HibernateEnumeration#getFullyQualifiedHibernateType()
     */
    @Override
    protected String handleGetFullyQualifiedHibernateType()
    {
        return JavaTypeConverter.getJavaLangTypeName(super.getFullyQualifiedName());
    }

    /**
     * @see org.andromda.cartridges.hibernate.metafacades.HibernateEnumeration#getEnumerationName()
     */
    @Override
    protected String handleGetEnumerationName()
    {
        return StringUtils.trimToEmpty(this.getEnumerationNamePattern()).replaceAll(
            "\\{0\\}",
            super.getName());
    }

    /**
     * @see org.andromda.cartridges.hibernate.metafacades.HibernateEnumeration#getFullyQualifiedHibernateEnumerationType()
     */
    @Override
    protected String handleGetFullyQualifiedHibernateEnumerationType()
    {
        return HibernateMetafacadeUtils.getFullyQualifiedName(
            this.getHibernateEnumerationPackageName(),
            this.getEnumerationName(),
            null);
    }

    /**
     * Check for optional defined enumTypesPackage (overrides modeled package name)
     */
    private String getHibernateEnumerationPackageName() {
        String enumPackageName = (String) this.getConfiguredProperty(HibernateGlobals.ENUM_TYPES_PACKAGE);
        if (enumPackageName != null) {
            return enumPackageName;
        } else {
            return super.getPackageName();
        }
    }

    /**
     * @see org.andromda.cartridges.hibernate.metafacades.HibernateEnumeration#getVersion()
     */
    @Override
    protected int handleGetVersion()
    {
        return Integer.parseInt(((String)this.getConfiguredProperty(HibernateGlobals.HIBERNATE_VERSION)).substring(0, 1));
    }
}