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 TippingPosition tipping positions}.
013     * <p>
014     * <u>Validations Performed for All Purposes</u>
015     * <ol>
016     *   <li>Time spent at position 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 TippingPositionValidator
030      extends AbstractValidator<TippingPosition>
031    {
032      /** Creates a new instance. */
033      public TippingPositionValidator()
034      {
035        super(TippingPositionValidator.class.getName(), TippingPosition.class);
036      }
037      
038      /* (non-Javadoc)
039       * @see AbstractValidator#makeValidationList(ValidationPurpose)
040       */
041      @Override
042      protected List<Validation<TippingPosition>>
043        makeValidationList(ValidationPurpose purpose)
044      {
045        List<Validation<TippingPosition>> validations =
046          new ArrayList<Validation<TippingPosition>>();
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<TippingPosition>
058      {
059        protected HasTime(AbstractValidator<TippingPosition> validationContainer,
060                          ValidationPurpose                  reasonForValidation)
061        {
062          super(validationContainer, reasonForValidation,
063                "tipping position", "time at position", "0.0");
064        }
065        
066        @Override
067        protected String getCurrentValue()
068        {
069          return target.getTimeAtPosition().getValue().toString();
070        }
071      }
072    }