001// license-header java merge-point
002//
003// Attention: generated code (by Metafacade.vsl) - do not modify!
004//
005package org.andromda.metafacades.uml;
006
007import java.util.List;
008
009/**
010 * Represents a use case used in the "front end" of an application.
011 *
012 * Metafacade interface to be used by AndroMDA cartridges.
013 */
014public interface FrontEndUseCase
015    extends UseCaseFacade
016{
017    /**
018     * Indicates the metafacade type (used for metafacade mappings).
019     *
020     * @return boolean always <code>true</code>
021     */
022    public boolean isFrontEndUseCaseMetaType();
023
024    /**
025     * The actions for this use-case. This will include the initial action to start the use-case.
026     * @return List<FrontEndAction>
027     */
028    public List<FrontEndAction> getActions();
029
030    /**
031     * Returns the activity graph describing this use-case in more detail.
032     * @return FrontEndActivityGraph
033     */
034    public FrontEndActivityGraph getActivityGraph();
035
036    /**
037     * All roles that directly or indirectly related to any "front-end" use cases.
038     * @return List<Role>
039     */
040    public List<Role> getAllRoles();
041
042    /**
043     * Returns all struts use-cases in this "front end" application.
044     * @return List<FrontEndUseCase>
045     */
046    public List<FrontEndUseCase> getAllUseCases();
047
048    /**
049     * Returns the controller for this use-case.
050     * @return FrontEndController
051     */
052    public FrontEndController getController();
053
054    /**
055     * The first view of this use case, this may actually return a view of another use case if the
056     * first is found by traveling through the final state.
057     * @return FrontEndView
058     */
059    public FrontEndView getInitialView();
060
061    /**
062     * The final states linking to this use case
063     * @return List<FrontEndFinalState>
064     */
065    public List<FrontEndFinalState> getReferencingFinalStates();
066
067    /**
068     * Returns all roles that are directly and indirectly associated to this use-case.
069     * @return List<Role>
070     */
071    public List<Role> getRoles();
072
073    /**
074     * The variables for all views in this use-case. A parameter qualifies to be a variable when it
075     * explicitely and directly receives it via an action.
076     * @return List<FrontEndParameter>
077     */
078    public List<FrontEndParameter> getViewVariables();
079
080    /**
081     * All views that are part of this use case.
082     * @return List<FrontEndView>
083     */
084    public List<FrontEndView> getViews();
085
086    /**
087     * True if this use-case is the entry point to the front end.
088     * @return boolean
089     */
090    public boolean isEntryUseCase();
091
092    /**
093     * Indicates if this use case is "secured".  This is true when there is at least one role
094     * associated to it.
095     * @return boolean
096     */
097    public boolean isSecured();
098}