TaggedValueFacadeLogicImpl.java

package org.andromda.metafacades.uml14;

import java.util.ArrayList;
import java.util.Collection;
import org.apache.commons.lang.StringUtils;
import org.omg.uml.foundation.core.TagDefinition;
import org.omg.uml.foundation.core.TaggedValue;

/**
 * Metaclass facade implementation.
 * @author Bob Fields
 */
public class TaggedValueFacadeLogicImpl
        extends TaggedValueFacadeLogic
{
    private static final long serialVersionUID = -2281273076847314771L;

    /**
     * @param metaObject
     * @param context
     */
    public TaggedValueFacadeLogicImpl(TaggedValue metaObject, String context)
    {
        super(metaObject, context);
    }

    /**
     * @see org.andromda.metafacades.uml14.ModelElementFacadeLogic#handleGetName()
     */
    public String handleGetName()
    {
        String name = super.handleGetName();
        if (StringUtils.isEmpty(name))
        {
            final TagDefinition type = this.metaObject.getType();
            if (type != null)
            {
                name = type.getName();
                // sometimes it is the TagType
                if (StringUtils.isEmpty(name))
                {
                    name = type.getTagType();
                }
            }
        }
        return name;
    }

    /**
     * @see org.andromda.metafacades.uml.TaggedValueFacade#getValues()
     */
    @Override
    public Collection handleGetValues()
    {
        final Collection values = new ArrayList();
        values.addAll(metaObject.getDataValue());
        values.addAll(this.shieldedElements(metaObject.getReferenceValue()));
        return values;
    }

    /**
     * @see org.andromda.metafacades.uml.TaggedValueFacade#getValue()
     */
    @Override
    public Object handleGetValue()
    {
        final Collection values = this.getValues();
        return (values.isEmpty()) ? null : values.iterator().next();
    }

}