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

Code
Comments
Other
Rev Date Author Line
4856 27 Mar 09 nicklas 1 /**
4856 27 Mar 09 nicklas 2   $Id$
4856 27 Mar 09 nicklas 3
4856 27 Mar 09 nicklas 4   Copyright (C) 2006 Nicklas Nordborg
4856 27 Mar 09 nicklas 5
4856 27 Mar 09 nicklas 6   This file is part of BASE - BioArray Software Environment.
4856 27 Mar 09 nicklas 7   Available at http://base.thep.lu.se/
4856 27 Mar 09 nicklas 8
4856 27 Mar 09 nicklas 9   BASE is free software; you can redistribute it and/or
4856 27 Mar 09 nicklas 10   modify it under the terms of the GNU General Public License
4856 27 Mar 09 nicklas 11   as published by the Free Software Foundation; either version 3
4856 27 Mar 09 nicklas 12   of the License, or (at your option) any later version.
4856 27 Mar 09 nicklas 13
4856 27 Mar 09 nicklas 14   BASE is distributed in the hope that it will be useful,
4856 27 Mar 09 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
4856 27 Mar 09 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
4856 27 Mar 09 nicklas 17   GNU General Public License for more details.
4856 27 Mar 09 nicklas 18
4856 27 Mar 09 nicklas 19   You should have received a copy of the GNU General Public License
4856 27 Mar 09 nicklas 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
4856 27 Mar 09 nicklas 21 */
4856 27 Mar 09 nicklas 22 package net.sf.basedb.util.formatter;
4856 27 Mar 09 nicklas 23
4856 27 Mar 09 nicklas 24 import net.sf.basedb.util.Coordinate;
7648 13 Mar 19 nicklas 25 import net.sf.basedb.util.excel.ExcelFormatter;
7648 13 Mar 19 nicklas 26 import net.sf.basedb.util.excel.ExcelValue;
4856 27 Mar 09 nicklas 27
4856 27 Mar 09 nicklas 28
4856 27 Mar 09 nicklas 29 /**
4856 27 Mar 09 nicklas 30   Formats an internal well coordinate to an external coordinate. There
4856 27 Mar 09 nicklas 31   are two variants. One that converts to alphabetic values:
6898 12 May 15 nicklas 32   0 -&gt; A, 1 -&gt; B, and so on. And one that converts between 0-based
4856 27 Mar 09 nicklas 33   and 1-based coordinates.
4856 27 Mar 09 nicklas 34   
4856 27 Mar 09 nicklas 35   @author nicklas
4856 27 Mar 09 nicklas 36   @version 2.12
4856 27 Mar 09 nicklas 37   @base.modified $Date$
4856 27 Mar 09 nicklas 38 */
4856 27 Mar 09 nicklas 39 public class WellCoordinateFormatter
7648 13 Mar 19 nicklas 40   implements Formatter<Integer>, ExcelFormatter<Integer, Object>
4856 27 Mar 09 nicklas 41 {
4856 27 Mar 09 nicklas 42   private boolean toAlpha;
4856 27 Mar 09 nicklas 43   /**
4856 27 Mar 09 nicklas 44     Create a well coordinate formatter.
4856 27 Mar 09 nicklas 45     @param toAlpha TRUE to convert to alphabetic coordinates, FALSE
4856 27 Mar 09 nicklas 46       to convert from 0-based to 1-based coordinates
4856 27 Mar 09 nicklas 47   */
4856 27 Mar 09 nicklas 48   public WellCoordinateFormatter(boolean toAlpha)
4856 27 Mar 09 nicklas 49   {
4856 27 Mar 09 nicklas 50     this.toAlpha = toAlpha;
4856 27 Mar 09 nicklas 51   }
4856 27 Mar 09 nicklas 52   
4856 27 Mar 09 nicklas 53   /*
4856 27 Mar 09 nicklas 54     From the Formatter interface
4856 27 Mar 09 nicklas 55     -------------------------------------------
4856 27 Mar 09 nicklas 56   */
4856 27 Mar 09 nicklas 57   @Override
4856 27 Mar 09 nicklas 58   public String format(Integer value)
4856 27 Mar 09 nicklas 59   {
4856 27 Mar 09 nicklas 60     if (value == null) return null;
4856 27 Mar 09 nicklas 61     int v = value+1;
4856 27 Mar 09 nicklas 62     return toAlpha ? Coordinate.numericToAlpha(v) : Integer.toString(v);
4856 27 Mar 09 nicklas 63   }
6127 14 Sep 12 nicklas 64   @Override
4856 27 Mar 09 nicklas 65   public Integer parseString(String value)
4856 27 Mar 09 nicklas 66   {
4856 27 Mar 09 nicklas 67     if (value == null) return null;
4856 27 Mar 09 nicklas 68     return Coordinate.alphaToNumeric(value);
4856 27 Mar 09 nicklas 69   }
4856 27 Mar 09 nicklas 70   // -------------------------------------------
7648 13 Mar 19 nicklas 71
7648 13 Mar 19 nicklas 72   @SuppressWarnings({ "rawtypes", "unchecked" })
7648 13 Mar 19 nicklas 73   @Override
7648 13 Mar 19 nicklas 74   public ExcelValue<Object> toExcelValue(Integer value) 
7648 13 Mar 19 nicklas 75   {
7648 13 Mar 19 nicklas 76     if (value == null) return null;
7648 13 Mar 19 nicklas 77     int v = value+1;
7648 13 Mar 19 nicklas 78     ExcelValue ev = toAlpha ? ExcelValue.asString(Coordinate.numericToAlpha(v)) : ExcelValue.asInt(v);
7648 13 Mar 19 nicklas 79     return ev;
7648 13 Mar 19 nicklas 80   }
4856 27 Mar 09 nicklas 81   
4856 27 Mar 09 nicklas 82 }