src/core/net/sf/basedb/util/parser/LineNoFunction.java

Code
Comments
Other
Rev Date Author Line
3618 01 Aug 07 nicklas 1 /**
3618 01 Aug 07 nicklas 2   $Id$
3618 01 Aug 07 nicklas 3
3675 16 Aug 07 jari 4   Copyright (C) 2007 Nicklas Nordborg
3618 01 Aug 07 nicklas 5
3618 01 Aug 07 nicklas 6   This file is part of BASE - BioArray Software Environment.
3618 01 Aug 07 nicklas 7   Available at http://base.thep.lu.se/
3618 01 Aug 07 nicklas 8
3618 01 Aug 07 nicklas 9   BASE is free software; you can redistribute it and/or
3618 01 Aug 07 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
3618 01 Aug 07 nicklas 12   of the License, or (at your option) any later version.
3618 01 Aug 07 nicklas 13
3618 01 Aug 07 nicklas 14   BASE is distributed in the hope that it will be useful,
3618 01 Aug 07 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
3618 01 Aug 07 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
3618 01 Aug 07 nicklas 17   GNU General Public License for more details.
3618 01 Aug 07 nicklas 18
3618 01 Aug 07 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/>.
3618 01 Aug 07 nicklas 21 */
3618 01 Aug 07 nicklas 22 package net.sf.basedb.util.parser;
3618 01 Aug 07 nicklas 23
3618 01 Aug 07 nicklas 24 import java.util.Stack;
3618 01 Aug 07 nicklas 25
3618 01 Aug 07 nicklas 26 import org.nfunk.jep.ParseException;
3618 01 Aug 07 nicklas 27
3618 01 Aug 07 nicklas 28 import net.sf.basedb.util.jep.JepFunction;
3618 01 Aug 07 nicklas 29
3618 01 Aug 07 nicklas 30 /**
3618 01 Aug 07 nicklas 31   Adds a <code>lineNo()</code> function to Jep. The lineNo() function is used with the 
3618 01 Aug 07 nicklas 32   {@link FlatFileParser} to get the current line number. Use the 
3618 01 Aug 07 nicklas 33   {@link FlatFileParser#getMapper(String)} with an argument starting with an equal
3618 01 Aug 07 nicklas 34   sign to create a mapper that uses Jep.
3618 01 Aug 07 nicklas 35   <pre class="code">
3618 01 Aug 07 nicklas 36 FlatFileParser ffp = ...
3618 01 Aug 07 nicklas 37 Mapper lineNoMapper = ffp.getMapper("=lineNo()");
3618 01 Aug 07 nicklas 38 while (ffp.hasMoreData())
3618 01 Aug 07 nicklas 39 {
3618 01 Aug 07 nicklas 40   Data data = ffp.nextData();
3618 01 Aug 07 nicklas 41   int lineNumber = lineNoMapper.getInt(data);
3618 01 Aug 07 nicklas 42 }
3618 01 Aug 07 nicklas 43 </pre>
3618 01 Aug 07 nicklas 44
3618 01 Aug 07 nicklas 45   @author nicklas
3618 01 Aug 07 nicklas 46   @version 2.4
3618 01 Aug 07 nicklas 47   @base.modified $Date$
3618 01 Aug 07 nicklas 48 */
3618 01 Aug 07 nicklas 49 public class LineNoFunction
3618 01 Aug 07 nicklas 50   implements JepFunction
3618 01 Aug 07 nicklas 51 {
3618 01 Aug 07 nicklas 52   
3618 01 Aug 07 nicklas 53   private FlatFileParser.Data data;
3618 01 Aug 07 nicklas 54   
3618 01 Aug 07 nicklas 55   public LineNoFunction()
3618 01 Aug 07 nicklas 56   {}
3618 01 Aug 07 nicklas 57   
3618 01 Aug 07 nicklas 58   /*
3618 01 Aug 07 nicklas 59     From the JepFunction interface
3618 01 Aug 07 nicklas 60     -------------------------------------------
3618 01 Aug 07 nicklas 61   */
3618 01 Aug 07 nicklas 62   /**
3618 01 Aug 07 nicklas 63     @return The string "lineNo"
3618 01 Aug 07 nicklas 64   */
6127 14 Sep 12 nicklas 65   @Override
3618 01 Aug 07 nicklas 66   public String getFunctionName()
3618 01 Aug 07 nicklas 67   {
3618 01 Aug 07 nicklas 68     return "lineNo";
3618 01 Aug 07 nicklas 69   }
3618 01 Aug 07 nicklas 70   // -------------------------------------------
3618 01 Aug 07 nicklas 71   /*
3618 01 Aug 07 nicklas 72     From the PostfixMathCommandI interface
3618 01 Aug 07 nicklas 73     -------------------------------------------
3618 01 Aug 07 nicklas 74   */
3618 01 Aug 07 nicklas 75   /**
3618 01 Aug 07 nicklas 76     @return Always 0
3618 01 Aug 07 nicklas 77   */
6127 14 Sep 12 nicklas 78   @Override
3618 01 Aug 07 nicklas 79   public int getNumberOfParameters()
3618 01 Aug 07 nicklas 80   {
3618 01 Aug 07 nicklas 81     return 0;
3618 01 Aug 07 nicklas 82   }
6127 14 Sep 12 nicklas 83   @Override
3618 01 Aug 07 nicklas 84   public void setCurNumberOfParameters(int n)
3618 01 Aug 07 nicklas 85   {}
6127 14 Sep 12 nicklas 86   @Override
3618 01 Aug 07 nicklas 87   public boolean checkNumberOfParameters(int n)
3618 01 Aug 07 nicklas 88   {
3618 01 Aug 07 nicklas 89     return n == 0;
3618 01 Aug 07 nicklas 90   }
6127 14 Sep 12 nicklas 91   @Override
6875 20 Apr 15 nicklas 92   @SuppressWarnings({"unchecked", "rawtypes"})
3618 01 Aug 07 nicklas 93   public void run(Stack stack)
3618 01 Aug 07 nicklas 94     throws ParseException
3618 01 Aug 07 nicklas 95   {
3618 01 Aug 07 nicklas 96     if (stack == null) 
3618 01 Aug 07 nicklas 97     {
3618 01 Aug 07 nicklas 98       throw new ParseException("Stack is null");
3618 01 Aug 07 nicklas 99     }
3618 01 Aug 07 nicklas 100     stack.push(data.lineNo());
3618 01 Aug 07 nicklas 101   }
3618 01 Aug 07 nicklas 102   // -------------------------------------------
3618 01 Aug 07 nicklas 103
3618 01 Aug 07 nicklas 104   public void setData(FlatFileParser.Data data)
3618 01 Aug 07 nicklas 105   {
3618 01 Aug 07 nicklas 106     this.data = data;
3618 01 Aug 07 nicklas 107   }
3618 01 Aug 07 nicklas 108
3618 01 Aug 07 nicklas 109 }