001    package edu.nrao.sss.model.parameter;
002    
003    /**
004     * An enumeration of the Parameter constraints.
005     * <p>
006     * <b>Version Info:</b>
007     * <table style="margin-left:2em">
008     *   <tr><td>$Revision: 329 $</td></tr>
009     *   <tr><td>$Date: 2007-02-06 11:43:05 -0700 (Tue, 06 Feb 2007) $</td></tr>
010     *   <tr><td>$Author: switz $</td></tr>
011     * </table></p>
012     * 
013     * @author Stephan Witz
014     * @since 2007--09-10
015     */
016    public enum ParameterRule {
017        // Pad parameters, no bands required
018        PADAZ("PADAZ", EntityType.PAD, ValueType.DOUBLE, false),
019        PADEWTILT("EWTILT", EntityType.PAD, ValueType.DOUBLE, false),
020        PADNSTILT("NSTILT", EntityType.PAD, ValueType.DOUBLE, false),
021        PADAZENCZERO("AZENCZERO", EntityType.PAD, ValueType.DOUBLE, false),
022        PADX("X", EntityType.PAD, ValueType.DOUBLE, false),
023        PADY("Y", EntityType.PAD, ValueType.DOUBLE, false),
024        PADZ("Z", EntityType.PAD, ValueType.DOUBLE, false),
025        WGDELAY("WGDELAY", EntityType.PAD, ValueType.DOUBLE, false),
026        FIBERDELAY("FIBERDELAY", EntityType.PAD, ValueType.DOUBLE, false),
027        LOFIBERLENGHT("LOFIBERLENGTH", EntityType.PAD, ValueType.DOUBLE, false),
028        PARKAZIMUTH("PARKAZIMUTH", EntityType.PAD, ValueType.DOUBLE, false),
029        // Antenna parameters, no bands required
030        LOCATION("LOCATION", EntityType.ANTENNA, ValueType.PAD_NAME, false),
031        ANTEWTILT("EWTILT", EntityType.ANTENNA, ValueType.DOUBLE, false),
032        ANTNSTILT("NSTILT", EntityType.ANTENNA, ValueType.DOUBLE, false),
033        ANTAZENCZERO("AZENCZERO", EntityType.ANTENNA, ValueType.DOUBLE, false),
034        PERPENDICULARITY("PERPENDICULARITY", EntityType.ANTENNA, ValueType.DOUBLE, false),
035        AZCENTERINGCOS("AZCENTERINGCOS", EntityType.ANTENNA, ValueType.DOUBLE, false),
036        AZCENTERINGSIN("AZCENTERINGSIN", EntityType.ANTENNA, ValueType.DOUBLE, false),
037        ELCENTERINGCOS("ELCENTERINGCOS", EntityType.ANTENNA, ValueType.DOUBLE, false),
038        ELCENTERINGSIN("ELCENTERINGSIN", EntityType.ANTENNA, ValueType.DOUBLE, false),
039        ANTX("X", EntityType.ANTENNA, ValueType.DOUBLE, false),
040        ANTY("Y", EntityType.ANTENNA, ValueType.DOUBLE, false),
041        ANTZ("Z", EntityType.ANTENNA, ValueType.DOUBLE, false),
042        DCS("DCS", EntityType.ANTENNA, ValueType.OCTAL_INT, false),
043        KTERM("KTERM", EntityType.ANTENNA, ValueType.DOUBLE, false),
044        WGCHAN("WGCHAN", EntityType.ANTENNA, ValueType.DECIMAL_INT, false),
045        DELAY("DELAY", EntityType.ANTENNA, ValueType.DOUBLE, false),
046        DIGITIZERA("DIGITIZERA", EntityType.ANTENNA, ValueType.DOUBLE, false),
047        DIGITIZERB("DIGITIZERB", EntityType.ANTENNA, ValueType.DOUBLE, false),
048        DIGITIZERC("DIGITIZERC", EntityType.ANTENNA, ValueType.DOUBLE, false),
049        DIGITIZERD("DIGITIZERD", EntityType.ANTENNA, ValueType.DOUBLE, false),
050        SUBROTUP("SUBROTUP", EntityType.ANTENNA, ValueType.DOUBLE, false),
051        WIDAR("WIDAR", EntityType.ANTENNA, ValueType.DECIMAL_INT, false),
052        WIDARDELAYADJ("WIDARDELAYADJ", EntityType.ANTENNA, ValueType.DOUBLE, false),
053        // Antenna parameters, bands required
054        AZCOLIMATION("AZCOLIMATION", EntityType.ANTENNA, ValueType.DOUBLE, true),
055        ELCOLIMATION("ELCOLIMATION", EntityType.ANTENNA, ValueType.DOUBLE, true),
056        ROTATION("ROTATION", EntityType.ANTENNA, ValueType.DOUBLE, true),
057        FOCUS("FOCUS", EntityType.ANTENNA, ValueType.DOUBLE, true),
058        DELAYA("DELAYA", EntityType.ANTENNA, ValueType.DOUBLE, true),
059        DELAYB("DELAYB", EntityType.ANTENNA, ValueType.DOUBLE, true),
060        DELAYC("DELAYC", EntityType.ANTENNA, ValueType.DOUBLE, true),
061        DELAYD("DELAYD", EntityType.ANTENNA, ValueType.DOUBLE, true),
062        TCALA("TCALA", EntityType.ANTENNA, ValueType.DOUBLE, true),
063        TCALB("TCALB", EntityType.ANTENNA, ValueType.DOUBLE, true),
064        TCALC("TCALC", EntityType.ANTENNA, ValueType.DOUBLE, true),
065        TCALD("TCALD", EntityType.ANTENNA, ValueType.DOUBLE, true),
066        IFARFA("IFARFA", EntityType.ANTENNA, ValueType.DECIMAL_INT, true),
067        IFBRFA("IFBRFA", EntityType.ANTENNA, ValueType.DECIMAL_INT, true),
068        IFCRFA("IFCRFA", EntityType.ANTENNA, ValueType.DECIMAL_INT, true),
069        IFDRFA("IFDRFA", EntityType.ANTENNA, ValueType.DECIMAL_INT, true),
070        IFAOUTA("IFAOUTA", EntityType.ANTENNA, ValueType.DECIMAL_INT, true),
071        IFBOUTA("IFBOUTA", EntityType.ANTENNA, ValueType.DECIMAL_INT, true),
072        IFCOUTA("IFCOUTA", EntityType.ANTENNA, ValueType.DECIMAL_INT, true),
073        IFDOUTA("IFDOUTA", EntityType.ANTENNA, ValueType.DECIMAL_INT, true),
074        // Setup parameters, no bands required
075        GROUPVEL1("GROUPVEL1", EntityType.SETUP, ValueType.DOUBLE, false),
076        GROUPVEL2("GROUPVEL2", EntityType.SETUP, ValueType.DOUBLE, false),
077        GROUPVEL3("GROUPVEL3", EntityType.SETUP, ValueType.DOUBLE, false),
078        GROUPVEL4("GROUPVEL4", EntityType.SETUP, ValueType.DOUBLE, false),
079        GROUPVEL5("GROUPVEL5", EntityType.SETUP, ValueType.DOUBLE, false),
080        GROUPVEL6("GROUPVEL6", EntityType.SETUP, ValueType.DOUBLE, false),
081        GROUPVEL7("GROUPVEL7", EntityType.SETUP, ValueType.DOUBLE, false),
082        GROUPVEL8("GROUPVEL8", EntityType.SETUP, ValueType.DOUBLE, false),
083        GROUPVEL9("GROUPVEL9", EntityType.SETUP, ValueType.DOUBLE, false),
084        WG201("WG201", EntityType.SETUP, ValueType.DOUBLE, false),
085        WG202("WG202", EntityType.SETUP, ValueType.DOUBLE, false),
086        WG203("WG203", EntityType.SETUP, ValueType.DOUBLE, false),
087        WG204("WG204", EntityType.SETUP, ValueType.DOUBLE, false),
088        WG205("WG205", EntityType.SETUP, ValueType.DOUBLE, false),
089        WG206("WG206", EntityType.SETUP, ValueType.DOUBLE, false),
090        WG207("WG207", EntityType.SETUP, ValueType.DOUBLE, false),
091        WG208("WG208", EntityType.SETUP, ValueType.DOUBLE, false),
092        WG209("WG209", EntityType.SETUP, ValueType.DOUBLE, false),
093        // Setup parameters, bands required
094        DEFAULTACFREQ("DEFAULTACFREQ", EntityType.SETUP, ValueType.DOUBLE, true),
095        DEFAULBDFREQ("DEFAULTBDFREQ", EntityType.SETUP, ValueType.DOUBLE, true),
096        FOCUSCHANGE("FOCUSCHANGE", EntityType.SETUP, ValueType.DOUBLE, true),
097        ROTATIONCHANGE("ROTATIONCHANGE", EntityType.SETUP, ValueType.DOUBLE, true);
098        
099        private final String name;
100        private final EntityType entityType;
101        private final ValueType valueType;
102        private final boolean bandRequired;
103        
104        ParameterRule(String name, EntityType entityType, ValueType valueType, boolean bandRequired) {
105            this.name = name;
106            this.entityType = entityType;
107            this.valueType = valueType;
108            this.bandRequired = bandRequired;
109        }
110        public String getName() {
111            return name;
112        }
113        public EntityType getEntityType() {
114            return entityType;
115        }
116        public ValueType getValueType() {
117            return valueType;
118        }
119        public boolean isBandRequired() {
120            return bandRequired;
121        }
122        public String toString() {
123            StringBuilder result = new StringBuilder();
124            result.append("name:   "+getName()+"\n");
125            if (getEntityType() == null)
126                result.append("entity type: null\n");
127            else
128                result.append("entity type: "+getEntityType().getName()+"\n");
129            result.append("band:   "+isBandRequired()+"\n");
130            if (getValueType() == null)
131                result.append("value type: null\n");
132            else
133                result.append("value type: "+getValueType().getName()+"\n");
134            return result.toString();
135        }
136    }