001    package edu.nrao.sss.model.parameter;
002    
003    import java.util.ArrayList;
004    import java.util.Collections;
005    import java.util.HashMap;
006    import java.util.List;
007    
008    //import org.apache.log4j.Logger;
009    
010    import edu.nrao.sss.util.StringUtil;
011    
012    /**
013     * Wraps the ParameterRule enum in a hash for quick lookups on Entity and
014     * Parameter Name.
015     * <p>
016     * <b>Version Info:</b> <table style="margin-left:2em">
017     * <tr>
018     * <td>$Revision: 329 $</td>
019     * </tr>
020     * <tr>
021     * <td>$Date: 2007-02-06 11:43:05 -0700 (Tue, 06 Feb 2007) $</td>
022     * </tr>
023     * <tr>
024     * <td>$Author: switz $</td>
025     * </tr>
026     * </table>
027     * </p>
028     *
029     * @author Stephan Witz
030     * @since 2007-09-10
031     */
032    public class ParameterRules {
033    
034        //private static final Logger log = Logger.getLogger(ParameterRules.class);
035    
036        private static HashMap<String, ParameterRule> map;
037    
038        private static ParameterRules SINGLETON;
039    
040        public static ParameterRules getInstance() {
041            // Just-in-time creation
042            if (SINGLETON == null)
043                SINGLETON = new ParameterRules();
044            return SINGLETON;
045        }
046    
047        private ParameterRules() {
048            map = new HashMap<String, ParameterRule>();
049            // The pad parameters, no bands required
050            for (ParameterRule pRule : ParameterRule.values()) {
051                map.put(pRule.getName() + "," + pRule.getEntityType().getName(), pRule);
052            }
053        }
054    
055        public Object clone() throws CloneNotSupportedException {
056            throw new CloneNotSupportedException();
057        }
058    
059        public String getParameterNames() {
060            List<String> namesList = new ArrayList<String>();
061            for (ParameterRule pRule : map.values())
062                namesList.add(pRule.getName());
063            Collections.sort(namesList);
064            return StringUtil.getInstance().fromCollection(namesList, ", ");
065        }
066    
067        public String getParameterNames(EntityType entityType) {
068            List<String> namesList = new ArrayList<String>();
069            for (ParameterRule pRule : map.values())
070                if (pRule.getEntityType().equals(entityType))
071                    namesList.add(pRule.getName());
072            Collections.sort(namesList);
073            return StringUtil.getInstance().fromCollection(namesList, ", ");
074        }
075    
076        public List<String> getParameterNamesList() {
077            List<String> namesList = new ArrayList<String>();
078            for (ParameterRule pRule : map.values())
079                namesList.add(pRule.getName());
080            Collections.sort(namesList);
081            return namesList;
082        }
083    
084        public List<String> getParameterNamesList(EntityType entityType) {
085            List<String> namesList = new ArrayList<String>();
086            for (ParameterRule pRule : map.values())
087                if (pRule.getEntityType().equals(entityType))
088                    namesList.add(pRule.getName());
089            Collections.sort(namesList);
090            return namesList;
091        }
092    
093        public ParameterRule getParameterRule(String parameterName, EntityType entityType) {
094            return map.get(parameterName + "," + entityType.getName());
095        }
096    }