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.model.resource.Resource; 007 import edu.nrao.sss.model.source.Source; 008 import edu.nrao.sss.validation.AbstractValidator; 009 import edu.nrao.sss.validation.DataNotEnteredValidation; 010 import edu.nrao.sss.validation.Validation; 011 import edu.nrao.sss.validation.ValidationPurpose; 012 013 /** 014 * A validator of {@link SwitchSetting switch settings}. 015 * <p> 016 * <u>Validations Performed for All Purposes</u> 017 * <ol> 018 * <li>Setting has source.</li> 019 * <li>Setting has resource.</li> 020 * <li>Time spent at setting is greater than zero.</li> 021 * </ol></p> 022 * <p> 023 * <b>Version Info:</b> 024 * <table style="margin-left:2em"> 025 * <tr><td>$Revision: 1256 $</td></tr> 026 * <tr><td>$Date: 2008-04-29 15:55:50 -0600 (Tue, 29 Apr 2008) $</td></tr> 027 * <tr><td>$Author: dharland $</td></tr> 028 * </table></p> 029 * 030 * @author David M. Harland 031 * @since 2007-02-21 032 */ 033 public class SwitchSettingValidator 034 extends AbstractValidator<SwitchSetting> 035 { 036 /** Creates a new instance. */ 037 public SwitchSettingValidator() 038 { 039 super(SwitchSettingValidator.class.getName(), SwitchSetting.class); 040 } 041 042 /* (non-Javadoc) 043 * @see AbstractValidator#makeValidationList(ValidationPurpose) 044 */ 045 @Override 046 protected List<Validation<SwitchSetting>> 047 makeValidationList(ValidationPurpose purpose) 048 { 049 List<Validation<SwitchSetting>> validations = 050 new ArrayList<Validation<SwitchSetting>>(); 051 052 validations.add(new HasSource (this, purpose)); 053 validations.add(new HasResource(this, purpose)); 054 validations.add(new HasTime (this, purpose)); 055 056 return validations; 057 } 058 059 //============================================================================ 060 // UNITIALIZED FIELD VALIDATIONS 061 //============================================================================ 062 063 class HasResource extends DataNotEnteredValidation<SwitchSetting> 064 { 065 protected HasResource(AbstractValidator<SwitchSetting> validationContainer, 066 ValidationPurpose reasonForValidation) 067 { 068 super(validationContainer, reasonForValidation, 069 "switch setting", "resource", null); 070 } 071 072 @Override 073 protected String getCurrentValue() 074 { 075 Resource rsrc = target.getResource(); 076 077 return rsrc == null ? null : rsrc.getName(); 078 } 079 } 080 081 082 class HasSource extends DataNotEnteredValidation<SwitchSetting> 083 { 084 protected HasSource(AbstractValidator<SwitchSetting> validationContainer, 085 ValidationPurpose reasonForValidation) 086 { 087 super(validationContainer, reasonForValidation, 088 "switch setting", "source", null); 089 } 090 091 @Override 092 protected String getCurrentValue() 093 { 094 Source src = target.getSource(); 095 096 return src == null ? null : src.getName(); 097 } 098 } 099 100 class HasTime extends DataNotEnteredValidation<SwitchSetting> 101 { 102 protected HasTime(AbstractValidator<SwitchSetting> validationContainer, 103 ValidationPurpose reasonForValidation) 104 { 105 super(validationContainer, reasonForValidation, 106 "switch setting", "time at setting", "0.0"); 107 } 108 109 @Override 110 protected String getCurrentValue() 111 { 112 return target.getTimeAtSetting().getValue().toString(); 113 } 114 } 115 }