001package org.andromda.metafacades.uml14;
002
003import org.andromda.metafacades.uml.UMLMetafacadeProperties;
004import org.andromda.metafacades.uml.ValueObject;
005
006/**
007 * MetafacadeLogic implementation for org.andromda.metafacades.uml.ValueObjectAssociationEnd.
008 *
009 * @see org.andromda.metafacades.uml.ValueObjectAssociationEnd
010 * @author Bob Fields
011 */
012public class ValueObjectAssociationEndLogicImpl
013        extends ValueObjectAssociationEndLogic
014{
015    private static final long serialVersionUID = 5854044247502868320L;
016
017    /**
018     * @param metaObject
019     * @param context
020     */
021    public ValueObjectAssociationEndLogicImpl(Object metaObject, String context)
022    {
023        super(metaObject, context);
024    }
025
026    /**
027     * Overridden to provide handling of array names within many type multiplicities.
028     *
029     * @see org.andromda.metafacades.uml.AssociationEndFacade#getGetterSetterTypeName()
030     */
031    @Override
032    protected String handleGetGetterSetterTypeName()
033    {
034        String name = super.handleGetGetterSetterTypeName();
035        if (this.isMany())
036        {
037            boolean useArrays = Boolean.valueOf(String.valueOf(this.getConfiguredProperty(
038                    UMLMetafacadeProperties.USE_ARRAYS_FOR_MULTIPLICITIES_OF_TYPE_MANY)));
039            if (useArrays)
040            {
041                if (this.getType() != null)
042                {
043                    name = this.getType().getFullyQualifiedArrayName();
044                }
045            }
046        }
047        return name;
048    }
049
050    /**
051     * @see org.andromda.metafacades.uml.ValueObjectAssociationEnd#isValueObjectType()
052     */
053    @Override
054    protected boolean handleIsValueObjectType()
055    {
056        return this.getType() instanceof ValueObject;
057    }
058
059}