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

Code
Comments
Other
Rev Date Author Line
7655 19 Mar 19 nicklas 1 /**
7655 19 Mar 19 nicklas 2   $Id $
7655 19 Mar 19 nicklas 3
7655 19 Mar 19 nicklas 4   Copyright (C) 2019 Nicklas Nordborg
7655 19 Mar 19 nicklas 5
7655 19 Mar 19 nicklas 6   This file is part of BASE - BioArray Software Environment.
7655 19 Mar 19 nicklas 7   Available at http://base.thep.lu.se/
7655 19 Mar 19 nicklas 8
7655 19 Mar 19 nicklas 9   BASE is free software; you can redistribute it and/or
7655 19 Mar 19 nicklas 10   modify it under the terms of the GNU General Public License
7655 19 Mar 19 nicklas 11   as published by the Free Software Foundation; either version 3
7655 19 Mar 19 nicklas 12   of the License, or (at your option) any later version.
7655 19 Mar 19 nicklas 13
7655 19 Mar 19 nicklas 14   BASE is distributed in the hope that it will be useful,
7655 19 Mar 19 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
7655 19 Mar 19 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
7655 19 Mar 19 nicklas 17   GNU General Public License for more details.
7655 19 Mar 19 nicklas 18
7655 19 Mar 19 nicklas 19   You should have received a copy of the GNU General Public License
7655 19 Mar 19 nicklas 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
7655 19 Mar 19 nicklas 21 */
7655 19 Mar 19 nicklas 22 package net.sf.basedb.util.formatter;
7655 19 Mar 19 nicklas 23
7655 19 Mar 19 nicklas 24 import java.text.NumberFormat;
7655 19 Mar 19 nicklas 25 import java.text.ParseException;
7655 19 Mar 19 nicklas 26
7655 19 Mar 19 nicklas 27 import net.sf.basedb.util.excel.ExcelFormatter;
7655 19 Mar 19 nicklas 28 import net.sf.basedb.util.excel.ExcelValue;
7655 19 Mar 19 nicklas 29
7655 19 Mar 19 nicklas 30 /**
7655 19 Mar 19 nicklas 31    Formatter implementation for numeric values that simply wrap a
7655 19 Mar 19 nicklas 32    NumberFormat instance.
7655 19 Mar 19 nicklas 33    
7655 19 Mar 19 nicklas 34   @author nicklas
7655 19 Mar 19 nicklas 35   @since 3.15
7655 19 Mar 19 nicklas 36 */
7655 19 Mar 19 nicklas 37 public class NumberFormatFormatter
7655 19 Mar 19 nicklas 38   implements Formatter<Number>, ExcelFormatter<Number, Number>
7655 19 Mar 19 nicklas 39 {
7655 19 Mar 19 nicklas 40
7655 19 Mar 19 nicklas 41   private final NumberFormat format;
7655 19 Mar 19 nicklas 42   
7655 19 Mar 19 nicklas 43   /**
7655 19 Mar 19 nicklas 44     Create a new number formatter.
7655 19 Mar 19 nicklas 45   */
7655 19 Mar 19 nicklas 46   public NumberFormatFormatter(NumberFormat format)
7655 19 Mar 19 nicklas 47   {
7655 19 Mar 19 nicklas 48     this.format = format;
7655 19 Mar 19 nicklas 49   }
7655 19 Mar 19 nicklas 50   
7655 19 Mar 19 nicklas 51   /*
7655 19 Mar 19 nicklas 52     From the Formatter interface
7655 19 Mar 19 nicklas 53     -------------------------------------------
7655 19 Mar 19 nicklas 54   */
7655 19 Mar 19 nicklas 55   @Override
7655 19 Mar 19 nicklas 56   public String format(Number value)
7655 19 Mar 19 nicklas 57   {
7655 19 Mar 19 nicklas 58     return value == null ? "" : format.format(value);
7655 19 Mar 19 nicklas 59   }
7655 19 Mar 19 nicklas 60   @Override
7655 19 Mar 19 nicklas 61   public Number parseString(String value)
7655 19 Mar 19 nicklas 62   {
7655 19 Mar 19 nicklas 63     if (value == null) return null;
7655 19 Mar 19 nicklas 64     try
7655 19 Mar 19 nicklas 65     {
7655 19 Mar 19 nicklas 66       return format.parse(value);
7655 19 Mar 19 nicklas 67     }
7655 19 Mar 19 nicklas 68     catch (ParseException ex)
7655 19 Mar 19 nicklas 69     {
7655 19 Mar 19 nicklas 70       throw new NumberFormatException("For input string: \"" + value + "\"");
7655 19 Mar 19 nicklas 71     }
7655 19 Mar 19 nicklas 72   }
7655 19 Mar 19 nicklas 73   // -------------------------------------------
7655 19 Mar 19 nicklas 74
7655 19 Mar 19 nicklas 75   @Override
7655 19 Mar 19 nicklas 76   public ExcelValue<Number> toExcelValue(Number value) 
7655 19 Mar 19 nicklas 77   {
7655 19 Mar 19 nicklas 78     return ExcelValue.asNumber(value, null);
7655 19 Mar 19 nicklas 79   }
7655 19 Mar 19 nicklas 80
7655 19 Mar 19 nicklas 81 }