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

Code
Comments
Other
Rev Date Author Line
2733 16 Oct 06 nicklas 1 /**
2733 16 Oct 06 nicklas 2   $Id$
2733 16 Oct 06 nicklas 3
3675 16 Aug 07 jari 4   Copyright (C) 2006 Nicklas Nordborg
2733 16 Oct 06 nicklas 5
2733 16 Oct 06 nicklas 6   This file is part of BASE - BioArray Software Environment.
2733 16 Oct 06 nicklas 7   Available at http://base.thep.lu.se/
2733 16 Oct 06 nicklas 8
2733 16 Oct 06 nicklas 9   BASE is free software; you can redistribute it and/or
2733 16 Oct 06 nicklas 10   modify it under the terms of the GNU General Public License
4479 05 Sep 08 jari 11   as published by the Free Software Foundation; either version 3
2733 16 Oct 06 nicklas 12   of the License, or (at your option) any later version.
2733 16 Oct 06 nicklas 13
2733 16 Oct 06 nicklas 14   BASE is distributed in the hope that it will be useful,
2733 16 Oct 06 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
2733 16 Oct 06 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2733 16 Oct 06 nicklas 17   GNU General Public License for more details.
2733 16 Oct 06 nicklas 18
2733 16 Oct 06 nicklas 19   You should have received a copy of the GNU General Public License
4515 11 Sep 08 jari 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
2733 16 Oct 06 nicklas 21 */
2942 22 Nov 06 nicklas 22 package net.sf.basedb.util.formatter;
2733 16 Oct 06 nicklas 23
2733 16 Oct 06 nicklas 24 import net.sf.basedb.util.Values;
7647 13 Mar 19 nicklas 25 import net.sf.basedb.util.excel.ExcelFormatter;
7647 13 Mar 19 nicklas 26 import net.sf.basedb.util.excel.ExcelValue;
2733 16 Oct 06 nicklas 27
2733 16 Oct 06 nicklas 28 /**
2733 16 Oct 06 nicklas 29    Formats a number for output on a web page.
2733 16 Oct 06 nicklas 30
2733 16 Oct 06 nicklas 31   @author nicklas
3028 14 Dec 06 nicklas 32   @version 2.2
2733 16 Oct 06 nicklas 33   @base.modified $Date$
2733 16 Oct 06 nicklas 34 */
2733 16 Oct 06 nicklas 35 public class NumberFormatter
7647 13 Mar 19 nicklas 36   implements Formatter<Number>, ExcelFormatter<Number, Number>
2733 16 Oct 06 nicklas 37 {
2733 16 Oct 06 nicklas 38
2733 16 Oct 06 nicklas 39   private int numDecimals;
3028 14 Dec 06 nicklas 40   private boolean doubleValues;
2733 16 Oct 06 nicklas 41   
2733 16 Oct 06 nicklas 42   /**
2733 16 Oct 06 nicklas 43     Create a new number formatter.
2733 16 Oct 06 nicklas 44     @param numDecimals The number of decimals to display, or a negative
2733 16 Oct 06 nicklas 45       value to display all decimals
3028 14 Dec 06 nicklas 46     @param doubleValues If the {@link #parseString(String)} should return double 
3028 14 Dec 06 nicklas 47       or float values
2733 16 Oct 06 nicklas 48     @see Values#formatNumber(Float, int)
2733 16 Oct 06 nicklas 49   */
3028 14 Dec 06 nicklas 50   public NumberFormatter(int numDecimals, boolean doubleValues)
2733 16 Oct 06 nicklas 51   {
2733 16 Oct 06 nicklas 52     this.numDecimals = numDecimals;
3028 14 Dec 06 nicklas 53     this.doubleValues = doubleValues;
2733 16 Oct 06 nicklas 54   }
2733 16 Oct 06 nicklas 55   
2733 16 Oct 06 nicklas 56   /*
2733 16 Oct 06 nicklas 57     From the Formatter interface
2733 16 Oct 06 nicklas 58     -------------------------------------------
2733 16 Oct 06 nicklas 59   */
6127 14 Sep 12 nicklas 60   @Override
2733 16 Oct 06 nicklas 61   public String format(Number value)
2733 16 Oct 06 nicklas 62   {
2733 16 Oct 06 nicklas 63     return value == null ? "" : Values.formatNumber(value.floatValue(), numDecimals);
2733 16 Oct 06 nicklas 64   }
6127 14 Sep 12 nicklas 65   @Override
2942 22 Nov 06 nicklas 66   public Number parseString(String value)
2942 22 Nov 06 nicklas 67   {
5432 29 Sep 10 nicklas 68     if (value == null) return null;
3028 14 Dec 06 nicklas 69     Number n = null;
3028 14 Dec 06 nicklas 70     if (doubleValues)
3028 14 Dec 06 nicklas 71     {
3028 14 Dec 06 nicklas 72       n = Double.valueOf(value);
3028 14 Dec 06 nicklas 73     }
3028 14 Dec 06 nicklas 74     else
3028 14 Dec 06 nicklas 75     {
3028 14 Dec 06 nicklas 76       n = Float.valueOf(value);
3028 14 Dec 06 nicklas 77     }
3028 14 Dec 06 nicklas 78     return n;
2942 22 Nov 06 nicklas 79   }
2733 16 Oct 06 nicklas 80   // -------------------------------------------
2733 16 Oct 06 nicklas 81
7647 13 Mar 19 nicklas 82   /**
7647 13 Mar 19 nicklas 83     @since 3.15
7647 13 Mar 19 nicklas 84   */
7647 13 Mar 19 nicklas 85   @Override
7647 13 Mar 19 nicklas 86   public ExcelValue<Number> toExcelValue(Number value) 
7647 13 Mar 19 nicklas 87   {
7647 13 Mar 19 nicklas 88     return ExcelValue.asNumber(value, numDecimals);
7647 13 Mar 19 nicklas 89   }
7647 13 Mar 19 nicklas 90
2733 16 Oct 06 nicklas 91 }