Package org.andromda.metafacades.uml14

Source Code of org.andromda.metafacades.uml14.ModelFacadeLogicImpl$ActionStateWithStereotypeFilter

package org.andromda.metafacades.uml14;

import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;

import org.andromda.metafacades.uml.ActivityGraphFacade;
import org.andromda.metafacades.uml.ClassifierFacade;
import org.andromda.metafacades.uml.UseCaseFacade;
import org.apache.commons.collections.Predicate;
import org.omg.uml.behavioralelements.activitygraphs.ActionState;
import org.omg.uml.behavioralelements.activitygraphs.ActivityGraph;
import org.omg.uml.behavioralelements.statemachines.CompositeState;
import org.omg.uml.behavioralelements.usecases.UseCase;
import org.omg.uml.foundation.core.ModelElement;


/**
* Metaclass facade implementation.
*/
public class ModelFacadeLogicImpl
    extends ModelFacadeLogic
{
    // ---------------- constructor -------------------------------
    public ModelFacadeLogicImpl(
        org.omg.uml.UmlPackage metaObject,
        String context)
    {
        super(metaObject, context);
    }

    /**
     * @see org.andromda.metafacades.uml.ModelFacade#getRootPackage()
     */
    protected Object handleGetRootPackage()
    {
        Collection rootPackages = metaObject.getModelManagement().getModel().refAllOfType();
        return rootPackages.iterator().next();
    }

    /**
     * @see org.andromda.metafacades.uml.ModelFacade#getAllActors()
     */
    protected Collection handleGetAllActors()
    {
        return metaObject.getUseCases().getActor().refAllOfType();
    }

    /**
     * @see org.andromda.metafacades.uml.ModelFacade#getAllActionStates()
     */
    protected Collection handleGetAllActionStates()
    {
        return metaObject.getActivityGraphs().getActionState().refAllOfType();
    }

    /**
     * @see org.andromda.metafacades.uml.ModelFacade#getAllUseCases()
     */
    protected Collection handleGetAllUseCases()
    {
        return metaObject.getUseCases().getUseCase().refAllOfType();
    }

    /**
     * @see org.andromda.metafacades.uml.ModelFacade#getAllClasses()
     */
    protected Collection handleGetAllClasses()
    {
        return metaObject.getCore().getUmlClass().refAllOfType();
    }

    /**
     * @see org.andromda.metafacades.uml.ModelFacade#getAllObjectFlowStates()
     */
    protected Collection handleGetAllObjectFlowStates()
    {
        return metaObject.getActivityGraphs().getObjectFlowState().refAllOfType();
    }

    /**
     * @see org.andromda.metafacades.uml.ModelFacade#findUseCaseWithTaggedValueOrHyperlink(java.lang.String, java.lang.String)
     */
    protected UseCaseFacade handleFindUseCaseWithTaggedValueOrHyperlink(
        String tag,
        String value)
    {
        return (UseCaseFacade)shieldedElement(UML14MetafacadeUtils.findUseCaseWithTaggedValueOrHyperlink(tag, value));
    }

    /**
     * @see org.andromda.metafacades.uml.ModelFacade#findClassWithTaggedValueOrHyperlink(java.lang.String, java.lang.String)
     */
    protected ClassifierFacade handleFindClassWithTaggedValueOrHyperlink(
        String tag,
        String value)
    {
        return (ClassifierFacade)shieldedElement(UML14MetafacadeUtils.findClassWithTaggedValueOrHyperlink(tag, value));
    }

    /**
     * @see org.andromda.metafacades.uml.ModelFacade#findActivityGraphByName(java.lang.String)
     */
    protected ActivityGraphFacade handleFindActivityGraphByName(String name)
    {
        return (ActivityGraphFacade)shieldedElement(UML14MetafacadeUtils.findFirstActivityGraphWithName(name));
    }

    /**
     * @see org.andromda.metafacades.uml.ModelFacade#findActivityGraphByNameAndStereotype(java.lang.String, java.lang.String)
     */
    protected ActivityGraphFacade handleFindActivityGraphByNameAndStereotype(
        String name,
        String stereotypeName)
    {
        return (ActivityGraphFacade)shieldedElement(
            UML14MetafacadeUtils.findFirstActivityGraphWithNameAndStereotype(name, stereotypeName));
    }

    /**
     * @see org.andromda.metafacades.uml.ModelFacade#findUseCaseByName(java.lang.String)
     */
    protected UseCaseFacade handleFindUseCaseByName(String name)
    {
        return (UseCaseFacade)shieldedElement(UML14MetafacadeUtils.findFirstUseCaseWithName(name));
    }

    /**
     * @see org.andromda.metafacades.uml.ModelFacade#findUseCaseWithNameAndStereotype(java.lang.String, java.lang.String)
     */
    protected UseCaseFacade handleFindUseCaseWithNameAndStereotype(
        String name,
        String stereotypeName)
    {
        return (UseCaseFacade)shieldedElement(
            UML14MetafacadeUtils.findFirstUseCaseWithNameAndStereotype(name, stereotypeName));
    }

    /**
     * @see org.andromda.metafacades.uml.ModelFacade#findFinalStatesWithNameOrHyperlink(org.andromda.metafacades.uml.UseCaseFacade)
     */
    protected Collection handleFindFinalStatesWithNameOrHyperlink(UseCaseFacade useCase)
    {
        UseCase useCaseMetaClass = UML14MetafacadeUtils.getMetaClass(useCase);
        return shieldedElements(UML14MetafacadeUtils.findFinalStatesWithNameOrHyperlink(useCaseMetaClass));
    }

    /**
     * @see org.andromda.metafacades.uml.ModelFacade#getAllActionStatesWithStereotype(org.andromda.metafacades.uml.ActivityGraphFacade, java.lang.String)
     */
    protected Collection handleGetAllActionStatesWithStereotype(
        ActivityGraphFacade activityGraph,
        String stereotypeName)
    {
        ActivityGraph activityGraphMetaClass = UML14MetafacadeUtils.getMetaClass(activityGraph);

        CompositeState compositeState = (CompositeState)activityGraphMetaClass.getTop();
        return filter(
            compositeState.getSubvertex(),
            new ActionStateWithStereotypeFilter(stereotypeName));
    }

    private final static class ActionStateWithStereotypeFilter
        implements Predicate
    {
        private String stereotypeName = null;

        public ActionStateWithStereotypeFilter(final String stereotypeName)
        {
            this.stereotypeName = stereotypeName;
        }

        public boolean evaluate(final Object object)
        {
            return (object instanceof ActionState) &&
            UML14MetafacadeUtils.isStereotypePresent((ModelElement)object, stereotypeName);
        }
    }

    private Collection filter(
        Collection collection,
        Predicate collectionFilter)
    {
        final Set filteredCollection = new LinkedHashSet();
        for (final Iterator iterator = collection.iterator(); iterator.hasNext();)
        {
            Object object = iterator.next();
            if (collectionFilter.evaluate(object))
            {
                filteredCollection.add(object);
            }
        }
        return filteredCollection;
    }
}
TOP

Related Classes of org.andromda.metafacades.uml14.ModelFacadeLogicImpl$ActionStateWithStereotypeFilter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.