001package org.andromda.cartridges.ejb3.metafacades;
002
003import java.text.MessageFormat;
004import org.andromda.metafacades.uml.UMLProfile;
005import org.apache.commons.lang.ObjectUtils;
006import org.apache.commons.lang.StringUtils;
007
008/**
009 * MetafacadeLogic implementation for org.andromda.cartridges.ejb3.metafacades.EJB3EmbeddedValueFacade.
010 *
011 * @see EJB3EmbeddedValueFacade
012 */
013public class EJB3EmbeddedValueFacadeLogicImpl
014    extends EJB3EmbeddedValueFacadeLogic
015{
016    private static final long serialVersionUID = 34L;
017    /**
018     * The property which stores the pattern defining the embedded value
019     * implementation name.
020     */
021    static final String EMBEDDED_VALUE_IMPLEMENTATION_NAME_PATTERN = "embeddedValueImplementationNamePattern";
022
023    /**
024     * @param metaObject
025     * @param context
026     */
027    public EJB3EmbeddedValueFacadeLogicImpl(final Object metaObject, final String context)
028    {
029        super(metaObject, context);
030    }
031
032    /**
033     * @see EJB3EmbeddedValueFacade#isImmutable()
034     */
035    @Override
036    protected boolean handleIsImmutable()
037    {
038        boolean immutable = false;
039        Object value = this.findTaggedValue(UMLProfile.TAGGEDVALUE_PERSISTENCE_IMMUTABLE);
040        if (value != null)
041        {
042            immutable = Boolean.valueOf(ObjectUtils.toString(value)).booleanValue();
043        }
044        return immutable;
045    }
046
047    /**
048     * @see EJB3EmbeddedValueFacade#getImplementationName()
049     */
050    @Override
051    protected String handleGetImplementationName()
052    {
053        return MessageFormat.format(
054                this.getImplementationNamePattern(),
055                StringUtils.trimToEmpty(this.getName()));
056    }
057
058    /**
059     * Gets the value of the {@link #EMBEDDED_VALUE_IMPLEMENTATION_NAME_PATTERN}
060     *
061     * @return the embedded value name pattern.
062     */
063    private String getImplementationNamePattern()
064    {
065        return String.valueOf(this.getConfiguredProperty(EMBEDDED_VALUE_IMPLEMENTATION_NAME_PATTERN));
066    }
067
068    /**
069     * @see EJB3EmbeddedValueFacadeLogic#handleGetFullyQualifiedImplementationName()
070     */
071    @Override
072    protected String handleGetFullyQualifiedImplementationName()
073    {
074        return EJB3MetafacadeUtils.getFullyQualifiedName(
075                this.getPackageName(),
076                this.getImplementationName(),
077                null);
078    }
079}