001    package org.nakedobjects.applib.fixtures;
002    
003    /**
004     * Enumerates the different types of {@link InstallableFixture fixture}s supported.
005     * 
006     * @see InstallableFixture#getType()
007     */
008    public enum FixtureType {
009            /**
010             * A fixture that installs data (either reference data or operational data)
011             * into an object store.
012             * 
013             * <p>
014             * Some object stores are in-memory only, in which case these will always want
015             * fixtures of this type to be installed.  However, for object stores that
016             * persist the data (such as XML or to an RDBMS), these typically do <i>not</i>
017             * want data fixtures run (except possibly for the very first time booted to
018             * initially seed them). 
019             */
020            OBJECT_STORE,
021            /**
022             * Analogous to {@link FixtureType#DATA}, but for fixtures (in particular, the
023             * {@link PerspectiveFixture}) that are used to setup {@link Profile}s and their
024             * {@link Perspective}s.
025             * 
026             * @see UserProfileService
027             */
028            USER_PROFILE,
029            /**
030             * A fixture that neither installs data into the object store nor perspectives
031             * into the {@link UserProfileService}.
032             * 
033             * <p>
034             * Fixtures of this type are always installed.  Typical examples are:
035             * <ul>
036             * <li> composite fixtures that just aggregate other fixtures
037             * <li> fixtures that set up the date/time (see {@link DateFixture})
038             * <li> fixtures that specify the user to logon as (see {@link LogonFixture}).
039             * </ul>
040             */
041            OTHER;
042    }