PSMmetaclassLogicImpl.java

package org.andromda.cartridges.meta.metafacades;
import org.andromda.metafacades.uml.OperationFacade;
/**
 * MetafacadeLogic implementation for
 * org.andromda.cartridges.meta.metafacades.PSMmetaclass.
 *
 * @see org.andromda.cartridges.meta.metafacades.PSMmetaclass
 * @author Bob Fields
 */
public class PSMmetaclassLogicImpl extends PSMmetaclassLogic
{
    private static final long serialVersionUID = 34L;
    /**
     * @param metaObjectIn
     * @param context
     */
    public PSMmetaclassLogicImpl(Object metaObjectIn, String context)
    {
        super(metaObjectIn, context);
    }
    /**
     * @see org.andromda.cartridges.meta.metafacades.PSMmetaclass#isOperationsPresent()
     */
    @Override
    protected boolean handleIsOperationsPresent()
    {
        return !this.getOperations().isEmpty();
    }
    /**
     * @see org.andromda.cartridges.meta.metafacades.PSMmetaclassLogic#handleIsImplMustBeAbstract()
     */
    @Override
    protected boolean handleIsImplMustBeAbstract()
    {
        boolean result = false;
        // if the class itself is abstract, make the impl abstract, too.
        if (this.isAbstract())
        {
            result = true;
        }
        else
        {
            // if the class contains abstract operations, the impl must be
            // abstract, too, because the abstract operations will not be
            // generated as methods.
            for (OperationFacade operation : this.getOperations())
            {
                if (operation.isAbstract())
                {
                    result = true;
                    break;
                }
            }
        }
        return result;
    }
}