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.Collection;
008
009/**
010 * Represents an enumeration. A data type whose values are enumerated in the model as enumeration
011 * literals. May also be a Classifier with Stereotype Enumeration.
012 *
013 * Metafacade interface to be used by AndroMDA cartridges.
014 */
015public interface EnumerationFacade
016    extends ClassifierFacade
017{
018    /**
019     * Indicates the metafacade type (used for metafacade mappings).
020     *
021     * @return boolean always <code>true</code>
022     */
023    public boolean isEnumerationFacadeMetaType();
024
025    /**
026     * The 'from' operation name.  This is the name of the operation that takes the actual literal
027     * value and allows a new enumeration to be constructed.
028     * @return String
029     */
030    public String getFromOperationName();
031
032    /**
033     * The 'from' operation signature.  This is the signature that takes the actual literal value
034     * and allows a new enumeration to be constructed.
035     * @return String
036     */
037    public String getFromOperationSignature();
038
039    /**
040     * The type of the enumeration's literals.
041     * @return ClassifierFacade
042     */
043    public ClassifierFacade getLiteralType();
044
045    /**
046     * This enumeration's literals.
047     * @return Collection<AttributeFacade>
048     */
049    public Collection<AttributeFacade> getLiterals();
050
051    /**
052     * The enumeration member variables.
053     * @return Collection<AttributeFacade>
054     */
055    public Collection<AttributeFacade> getMemberVariables();
056
057    /**
058     * Indicates whether the enumeration must be generated using a Java 5 type-safe enum or a
059     * traditional enumeration-pattern class.
060     * @return boolean
061     */
062    public boolean isTypeSafe();
063}