001    package edu.nrao.sss.model.resource;
002    
003    /**
004     * The way in which an observer selects antennas.
005     * <p>
006     * <b>Version Info:</b>
007     * <table style="margin-left:2em">
008     *   <tr><td>$Revision: 429 $</td></tr>
009     *   <tr><td>$Date: 2007-03-08 15:34:34 -0700 (Thu, 08 Mar 2007) $</td></tr>
010     *   <tr><td>$Author: dharland $</td></tr>
011     * </table></p>
012     * 
013     * @author David M. Harland
014     * @since 2007-03-07
015     */
016    public enum AntennaSelectionMethod
017    {
018      /** Select all available antennas. */
019      ALL(false, false),
020      
021      /** Provide a list of specific antennas. */
022      LIST(true, false),
023      
024      /** Select a minimum number of antennas. */
025      MINIMUM_NUMBER(false, true),
026      
027      /**
028       * Select a minimum number of antennas, choosing those that produce
029       * the shortest baselines.
030       */
031      MINIMUM_NUMBER_SHORTEST_BASELINES(false, true),
032      
033      /**
034       * Select a minimum number of antennas, choosing those that produce
035       * the longest baselines.
036       */
037      MINIMUM_NUMBER_LONGEST_BASELINES(false, true),
038      
039      /**
040       * Select a minimum number of antennas, choosing XXX.
041       */
042      MINIMUM_NUMBER_EVEN_DISTRIBUTION(false, true);
043      
044      private boolean requiresManualIdentification;
045      private boolean requiresMinimumNumberSpecification;
046      
047      private AntennaSelectionMethod(boolean manualID, boolean minNum)
048      {
049        requiresManualIdentification       = manualID;
050        requiresMinimumNumberSpecification = minNum;
051      }
052      
053      /**
054       * Returns <i>true</i> if this method requires clients to make a manual
055       * selection of antennas.
056       * 
057       * @return <i>true</i> if this method requires clients to make a manual
058       *         selection of antennas.
059       */
060      public boolean requiresManualIdentification()
061      {
062        return requiresManualIdentification;
063      }
064      
065      /**
066       * Returns <i>true</i> if this method requires clients to specify a minimum
067       * number of antennas to select.
068       * 
069       * @return <i>true</i> if this method requires clients to specify a minimum
070       *         number of antennas to select.
071       */
072      public boolean requiresMinimumNumberSpecification()
073      {
074        return requiresMinimumNumberSpecification;
075      }
076    }