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

Code
Comments
Other
Rev Date Author Line
7088 03 Mar 16 nicklas 1 /**
7088 03 Mar 16 nicklas 2   $Id$
7088 03 Mar 16 nicklas 3
7088 03 Mar 16 nicklas 4   Copyright (C) 2013 Nicklas Nordborg
7088 03 Mar 16 nicklas 5
7088 03 Mar 16 nicklas 6   This file is part of BASE - BioArray Software Environment.
7088 03 Mar 16 nicklas 7   Available at http://base.thep.lu.se/
7088 03 Mar 16 nicklas 8
7088 03 Mar 16 nicklas 9   BASE is free software; you can redistribute it and/or
7088 03 Mar 16 nicklas 10   modify it under the terms of the GNU General Public License
7088 03 Mar 16 nicklas 11   as published by the Free Software Foundation; either version 3
7088 03 Mar 16 nicklas 12   of the License, or (at your option) any later version.
7088 03 Mar 16 nicklas 13
7088 03 Mar 16 nicklas 14   BASE is distributed in the hope that it will be useful,
7088 03 Mar 16 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
7088 03 Mar 16 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
7088 03 Mar 16 nicklas 17   GNU General Public License for more details.
7088 03 Mar 16 nicklas 18
7088 03 Mar 16 nicklas 19   You should have received a copy of the GNU General Public License
7088 03 Mar 16 nicklas 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
7088 03 Mar 16 nicklas 21 */
7088 03 Mar 16 nicklas 22 package net.sf.basedb.util.formatter;
7088 03 Mar 16 nicklas 23
7088 03 Mar 16 nicklas 24 /**
7088 03 Mar 16 nicklas 25   Formatter implementation that converts an enum constant 
7088 03 Mar 16 nicklas 26   into it's name() as the formatted value.
7088 03 Mar 16 nicklas 27
7088 03 Mar 16 nicklas 28   @author Nicklas
7088 03 Mar 16 nicklas 29   @since 3.8
7088 03 Mar 16 nicklas 30 */
7088 03 Mar 16 nicklas 31 public class EnumFormatter<T extends Enum<T>>
7088 03 Mar 16 nicklas 32   implements Formatter<Enum<T>>
7088 03 Mar 16 nicklas 33 {
7088 03 Mar 16 nicklas 34   private final Class<T> enumClass;
7088 03 Mar 16 nicklas 35   private String nullValue = "";
7088 03 Mar 16 nicklas 36
7088 03 Mar 16 nicklas 37   /**
7088 03 Mar 16 nicklas 38     Create a new formatter. Null values are formatted as an empty string.
7088 03 Mar 16 nicklas 39     @param enumClass Only required if using the parseString method
7088 03 Mar 16 nicklas 40   */
7088 03 Mar 16 nicklas 41   public EnumFormatter(Class<T> enumClass)
7088 03 Mar 16 nicklas 42   {
7088 03 Mar 16 nicklas 43     this.enumClass = enumClass;
7088 03 Mar 16 nicklas 44   }
7088 03 Mar 16 nicklas 45
7088 03 Mar 16 nicklas 46   /**
7088 03 Mar 16 nicklas 47     Create a new formatter.
7088 03 Mar 16 nicklas 48     @param enumClass Only required if using the parseString method
7088 03 Mar 16 nicklas 49     @param nullValue The string to return if a null item is 
7150 27 Apr 16 nicklas 50       passed to {@link #format(Enum)}
7088 03 Mar 16 nicklas 51   */
7088 03 Mar 16 nicklas 52   public EnumFormatter(Class<T> enumClass, String nullValue)
7088 03 Mar 16 nicklas 53   {
7088 03 Mar 16 nicklas 54     this.enumClass = enumClass;
7088 03 Mar 16 nicklas 55     this.nullValue = nullValue;
7088 03 Mar 16 nicklas 56   }
7088 03 Mar 16 nicklas 57
7088 03 Mar 16 nicklas 58   /*
7088 03 Mar 16 nicklas 59     From the Formatter interface
7088 03 Mar 16 nicklas 60     -------------------------------------------
7088 03 Mar 16 nicklas 61   */
7088 03 Mar 16 nicklas 62   @Override
7088 03 Mar 16 nicklas 63   public String format(Enum<T> value)
7088 03 Mar 16 nicklas 64   {
7088 03 Mar 16 nicklas 65     return value == null ? nullValue : value.name(); 
7088 03 Mar 16 nicklas 66   }
7088 03 Mar 16 nicklas 67
7088 03 Mar 16 nicklas 68   @Override
7088 03 Mar 16 nicklas 69   public Enum<T> parseString(String value)
7088 03 Mar 16 nicklas 70   {
7088 03 Mar 16 nicklas 71     try
7088 03 Mar 16 nicklas 72     {
7088 03 Mar 16 nicklas 73       return Enum.valueOf(enumClass, value);
7088 03 Mar 16 nicklas 74     }
7088 03 Mar 16 nicklas 75     catch (Exception ex)
7088 03 Mar 16 nicklas 76     {}
7088 03 Mar 16 nicklas 77     return null;
7088 03 Mar 16 nicklas 78   }
7088 03 Mar 16 nicklas 79   // -------------------------------------------
7088 03 Mar 16 nicklas 80     
7088 03 Mar 16 nicklas 81   
7088 03 Mar 16 nicklas 82   
7088 03 Mar 16 nicklas 83 }