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 }