src/core/net/sf/basedb/util/formatter/LookupFormatter.java

Code
Comments
Other
Rev Date Author Line
4857 27 Mar 09 nicklas 1 /**
4857 27 Mar 09 nicklas 2   $Id$
4857 27 Mar 09 nicklas 3
4857 27 Mar 09 nicklas 4   Copyright (C) 2006 Nicklas Nordborg
4857 27 Mar 09 nicklas 5
4857 27 Mar 09 nicklas 6   This file is part of BASE - BioArray Software Environment.
4857 27 Mar 09 nicklas 7   Available at http://base.thep.lu.se/
4857 27 Mar 09 nicklas 8
4857 27 Mar 09 nicklas 9   BASE is free software; you can redistribute it and/or
4857 27 Mar 09 nicklas 10   modify it under the terms of the GNU General Public License
4857 27 Mar 09 nicklas 11   as published by the Free Software Foundation; either version 3
4857 27 Mar 09 nicklas 12   of the License, or (at your option) any later version.
4857 27 Mar 09 nicklas 13
4857 27 Mar 09 nicklas 14   BASE is distributed in the hope that it will be useful,
4857 27 Mar 09 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
4857 27 Mar 09 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
4857 27 Mar 09 nicklas 17   GNU General Public License for more details.
4857 27 Mar 09 nicklas 18
4857 27 Mar 09 nicklas 19   You should have received a copy of the GNU General Public License
4857 27 Mar 09 nicklas 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
4857 27 Mar 09 nicklas 21 */
4857 27 Mar 09 nicklas 22 package net.sf.basedb.util.formatter;
4857 27 Mar 09 nicklas 23
4857 27 Mar 09 nicklas 24 import java.util.HashMap;
4857 27 Mar 09 nicklas 25 import java.util.Map;
4857 27 Mar 09 nicklas 26
4857 27 Mar 09 nicklas 27 import net.sf.basedb.util.Enumeration;
4857 27 Mar 09 nicklas 28
4857 27 Mar 09 nicklas 29 /**
4857 27 Mar 09 nicklas 30   A formatter implementation that uses a map to lookup values from
4857 27 Mar 09 nicklas 31   a set of keys. A default value may be specified that is returned
4857 27 Mar 09 nicklas 32   in case no lookup has been defined for a given key.
4857 27 Mar 09 nicklas 33   
4857 27 Mar 09 nicklas 34   @author nicklas
4857 27 Mar 09 nicklas 35   @version 2.12
4857 27 Mar 09 nicklas 36   @base.modified $Date$
4857 27 Mar 09 nicklas 37 */
4857 27 Mar 09 nicklas 38 public class LookupFormatter<T>
4857 27 Mar 09 nicklas 39   implements Formatter<T>
4857 27 Mar 09 nicklas 40 {
4857 27 Mar 09 nicklas 41   private final Map<T, String> map;
4857 27 Mar 09 nicklas 42   private String defaultValue;
4857 27 Mar 09 nicklas 43   
4857 27 Mar 09 nicklas 44   /**
4857 27 Mar 09 nicklas 45     Create a new lookup formatter
4857 27 Mar 09 nicklas 46   */
4857 27 Mar 09 nicklas 47   public LookupFormatter()
4857 27 Mar 09 nicklas 48   {
4857 27 Mar 09 nicklas 49     this.map = new HashMap<T, String>();
4857 27 Mar 09 nicklas 50   }
4857 27 Mar 09 nicklas 51   
4857 27 Mar 09 nicklas 52   /**
4857 27 Mar 09 nicklas 53     Create a new lookup formatter and initialise it with
4857 27 Mar 09 nicklas 54     the key-value pairs in the given map. The key value pairs
4857 27 Mar 09 nicklas 55     are copied to a new map internal to the lookup formatter.
4857 27 Mar 09 nicklas 56     @param in A map object or null
4857 27 Mar 09 nicklas 57   */
4857 27 Mar 09 nicklas 58   public LookupFormatter(Map<? extends T, ? extends String> in)
4857 27 Mar 09 nicklas 59   {
4857 27 Mar 09 nicklas 60     this();
4857 27 Mar 09 nicklas 61     if (in != null) putAll(in);
4857 27 Mar 09 nicklas 62   }
4857 27 Mar 09 nicklas 63   
4857 27 Mar 09 nicklas 64   /**
4857 27 Mar 09 nicklas 65     Create a new lookup formatter and initialise it with
4857 27 Mar 09 nicklas 66     the key-value pairs in the given enumeration. The key value pairs
4857 27 Mar 09 nicklas 67     are copied to a new map internal to the lookup formatter.
4857 27 Mar 09 nicklas 68     @param in An enumeration object or null
4857 27 Mar 09 nicklas 69   */
4857 27 Mar 09 nicklas 70   public LookupFormatter(Enumeration<? extends T, ? extends String> in)
4857 27 Mar 09 nicklas 71   {
4857 27 Mar 09 nicklas 72     this();
4857 27 Mar 09 nicklas 73     if (in != null) putAll(in);
4857 27 Mar 09 nicklas 74   }
4857 27 Mar 09 nicklas 75
4857 27 Mar 09 nicklas 76   /*
4857 27 Mar 09 nicklas 77     From the Formatter interface
4857 27 Mar 09 nicklas 78     -------------------------------------------
4857 27 Mar 09 nicklas 79   */
4857 27 Mar 09 nicklas 80   @Override
4857 27 Mar 09 nicklas 81   public String format(T key)
4857 27 Mar 09 nicklas 82   {
4857 27 Mar 09 nicklas 83     String value = defaultValue;
4857 27 Mar 09 nicklas 84     if (map.containsKey(key))
4857 27 Mar 09 nicklas 85     {
4857 27 Mar 09 nicklas 86       value = map.get(key);
4857 27 Mar 09 nicklas 87     }
4857 27 Mar 09 nicklas 88     return value;
4857 27 Mar 09 nicklas 89   }
6127 14 Sep 12 nicklas 90   @Override
4857 27 Mar 09 nicklas 91   public T parseString(String value)
4857 27 Mar 09 nicklas 92   {
4857 27 Mar 09 nicklas 93     throw new UnsupportedOperationException("parseString: " + value);
4857 27 Mar 09 nicklas 94   }
4857 27 Mar 09 nicklas 95   // -------------------------------------------
4857 27 Mar 09 nicklas 96
4857 27 Mar 09 nicklas 97   /**
4857 27 Mar 09 nicklas 98     Set a default value that is returned by the {@link #format(Object)}
4857 27 Mar 09 nicklas 99     method in case no lookup has been specified for a key.
4857 27 Mar 09 nicklas 100   */
4857 27 Mar 09 nicklas 101   public void setDefaultValue(String defaultValue)
4857 27 Mar 09 nicklas 102   {
4857 27 Mar 09 nicklas 103     this.defaultValue = defaultValue;
4857 27 Mar 09 nicklas 104   }
4857 27 Mar 09 nicklas 105   
4857 27 Mar 09 nicklas 106   /**
4857 27 Mar 09 nicklas 107     Get the default value.
4857 27 Mar 09 nicklas 108   */
4857 27 Mar 09 nicklas 109   public String getDefaultValue()
4857 27 Mar 09 nicklas 110   {
4857 27 Mar 09 nicklas 111     return defaultValue;
4857 27 Mar 09 nicklas 112   }
4857 27 Mar 09 nicklas 113   
4857 27 Mar 09 nicklas 114   /**
4857 27 Mar 09 nicklas 115     Add a lookup key/value pair.
4857 27 Mar 09 nicklas 116     @param key The key
4857 27 Mar 09 nicklas 117     @param value The value that is returned as the lookup value for the given key
4857 27 Mar 09 nicklas 118   */
4857 27 Mar 09 nicklas 119   public void put(T key, String value)
4857 27 Mar 09 nicklas 120   {
4857 27 Mar 09 nicklas 121     map.put(key, value);
4857 27 Mar 09 nicklas 122   }
4857 27 Mar 09 nicklas 123   
4857 27 Mar 09 nicklas 124   /**
4857 27 Mar 09 nicklas 125     Copy multiple lookup key/value pairs from a map
4857 27 Mar 09 nicklas 126     @param in The map to copy key/value pair from
4857 27 Mar 09 nicklas 127   */
4857 27 Mar 09 nicklas 128   public void putAll(Map<? extends T, ? extends String> in)
4857 27 Mar 09 nicklas 129   {
4857 27 Mar 09 nicklas 130     map.putAll(in);
4857 27 Mar 09 nicklas 131   }
4857 27 Mar 09 nicklas 132   
4857 27 Mar 09 nicklas 133   /**
4857 27 Mar 09 nicklas 134     Copy multiple lookup key/value pairs from an enumeration.
4857 27 Mar 09 nicklas 135     @param in The enumeration to copy key/value pair from
4857 27 Mar 09 nicklas 136   */
4857 27 Mar 09 nicklas 137   public void putAll(Enumeration<? extends T, ? extends String> in)
4857 27 Mar 09 nicklas 138   {
4857 27 Mar 09 nicklas 139     for (int i = 0; i < in.size(); ++i)
4857 27 Mar 09 nicklas 140     {
4857 27 Mar 09 nicklas 141       map.put(in.getKey(i), in.getValue(i));
4857 27 Mar 09 nicklas 142     }
4857 27 Mar 09 nicklas 143   }
4857 27 Mar 09 nicklas 144   
4857 27 Mar 09 nicklas 145   /**
4857 27 Mar 09 nicklas 146     Checks if a given key has been registered.
4857 27 Mar 09 nicklas 147     @param key The key
4857 27 Mar 09 nicklas 148     @return TRUE if an entry exists for the key, or FALSE otherwise
4857 27 Mar 09 nicklas 149   */
4857 27 Mar 09 nicklas 150   public boolean containsKey(Object key)
4857 27 Mar 09 nicklas 151   {
4857 27 Mar 09 nicklas 152     return map.containsKey(key);
4857 27 Mar 09 nicklas 153   }
4857 27 Mar 09 nicklas 154   
4857 27 Mar 09 nicklas 155   /**
4857 27 Mar 09 nicklas 156     Get registered lookup value for a given key
4857 27 Mar 09 nicklas 157     @param key The key
4857 27 Mar 09 nicklas 158     @return The registered lookup value, or null if no value has
4857 27 Mar 09 nicklas 159       been registered
4857 27 Mar 09 nicklas 160   */
4857 27 Mar 09 nicklas 161   public String get(Object key)
4857 27 Mar 09 nicklas 162   {
4857 27 Mar 09 nicklas 163     return map.get(key);
4857 27 Mar 09 nicklas 164   }
4857 27 Mar 09 nicklas 165
4857 27 Mar 09 nicklas 166   /**
4857 27 Mar 09 nicklas 167     Get the number of registered lookup entries.
4857 27 Mar 09 nicklas 168   */
4857 27 Mar 09 nicklas 169   public int size()
4857 27 Mar 09 nicklas 170   {
4857 27 Mar 09 nicklas 171     return map.size();
4857 27 Mar 09 nicklas 172   }
4857 27 Mar 09 nicklas 173   
4857 27 Mar 09 nicklas 174   /**
4857 27 Mar 09 nicklas 175     Checks if the lookup map is empty or not.
4857 27 Mar 09 nicklas 176   */
4857 27 Mar 09 nicklas 177   public boolean isEmpty()
4857 27 Mar 09 nicklas 178   {
4857 27 Mar 09 nicklas 179     return map.isEmpty();
4857 27 Mar 09 nicklas 180   }
4857 27 Mar 09 nicklas 181   
4857 27 Mar 09 nicklas 182   /**
4857 27 Mar 09 nicklas 183     Remove all registered lookup entries.
4857 27 Mar 09 nicklas 184   */
4857 27 Mar 09 nicklas 185   public void clear()
4857 27 Mar 09 nicklas 186   {
4857 27 Mar 09 nicklas 187     map.clear();
4857 27 Mar 09 nicklas 188   }
4857 27 Mar 09 nicklas 189   
4857 27 Mar 09 nicklas 190   /**
4857 27 Mar 09 nicklas 191     Remove an entry from the lookup map.
4857 27 Mar 09 nicklas 192     @param key The key
4857 27 Mar 09 nicklas 193     @return The value that was associated with the key
4857 27 Mar 09 nicklas 194   */
4857 27 Mar 09 nicklas 195   public String remove(Object key)
4857 27 Mar 09 nicklas 196   {
4857 27 Mar 09 nicklas 197     return map.remove(key);
4857 27 Mar 09 nicklas 198   }
4857 27 Mar 09 nicklas 199   
4857 27 Mar 09 nicklas 200 }