001    package edu.nrao.sss.model.project.scan;
002    
003    import java.util.ArrayList;
004    import java.util.List;
005    
006    import edu.nrao.sss.validation.AbstractValidator;
007    import edu.nrao.sss.validation.DataNotEnteredValidation;
008    import edu.nrao.sss.validation.Validation;
009    import edu.nrao.sss.validation.ValidationPurpose;
010    
011    /**
012     * A validator of {@link DelaySetting delay settings}.
013     * <p>
014     * <u>Validations Performed for All Purposes</u>
015     * <ol>
016     *   <li>Time spent at setting is greater than zero.</li>
017     * </ol></p>
018     * <p>
019     * <b>Version Info:</b>
020     * <table style="margin-left:2em">
021     *   <tr><td>$Revision: 1256 $</td></tr>
022     *   <tr><td>$Date: 2008-04-29 15:55:50 -0600 (Tue, 29 Apr 2008) $</td></tr>
023     *   <tr><td>$Author: dharland $</td></tr>
024     * </table></p>
025     * 
026     * @author David M. Harland
027     * @since 2007-02-21
028     */
029    public class DelaySettingValidator
030      extends AbstractValidator<DelaySetting>
031    {
032      /** Creates a new instance. */
033      public DelaySettingValidator()
034      {
035        super(DelaySettingValidator.class.getName(), DelaySetting.class);
036      }
037      
038      /* (non-Javadoc)
039       * @see AbstractValidator#makeValidationList(ValidationPurpose)
040       */
041      @Override
042      protected List<Validation<DelaySetting>>
043        makeValidationList(ValidationPurpose purpose)
044      {
045        List<Validation<DelaySetting>> validations =
046          new ArrayList<Validation<DelaySetting>>();
047        
048        validations.add(new HasTime(this, purpose));
049        
050        return validations; 
051      }
052      
053      //============================================================================
054      // UNITIALIZED FIELD VALIDATIONS
055      //============================================================================
056      
057      class HasTime extends DataNotEnteredValidation<DelaySetting>
058      {
059        protected HasTime(AbstractValidator<DelaySetting> validationContainer,
060                          ValidationPurpose               reasonForValidation)
061        {
062          super(validationContainer, reasonForValidation,
063                "delay setting", "time at setting", "0.0");
064        }
065        
066        @Override
067        protected String getCurrentValue()
068        {
069          return target.getTimeAtSetting().getValue().toString();
070        }
071      }
072    }