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 PointingPosition pointing 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 PointingPositionValidator
030      extends AbstractValidator<PointingPosition>
031    {
032      /** Creates a new instance. */
033      public PointingPositionValidator()
034      {
035        super(PointingPositionValidator.class.getName(), PointingPosition.class);
036      }
037      
038      /* (non-Javadoc)
039       * @see AbstractValidator#makeValidationList(ValidationPurpose)
040       */
041      @Override
042      protected List<Validation<PointingPosition>>
043        makeValidationList(ValidationPurpose purpose)
044      {
045        List<Validation<PointingPosition>> validations =
046          new ArrayList<Validation<PointingPosition>>();
047        
048        validations.add(new HasPosition(this, purpose));
049        
050        return validations; 
051      }
052      
053      //============================================================================
054      // UNITIALIZED FIELD VALIDATIONS
055      //============================================================================
056      
057      class HasPosition extends DataNotEnteredValidation<PointingPosition>
058      {
059        protected HasPosition(
060                    AbstractValidator<PointingPosition> validationContainer,
061                    ValidationPurpose                   reasonForValidation)
062        {
063          super(validationContainer, reasonForValidation,
064                "pointing position", "time at position", "0.0");
065        }
066        
067        @Override
068        protected String getCurrentValue()
069        {
070          return target.getTimeAtPosition().getValue().toString();
071        }
072      }
073    }