src/core/net/sf/basedb/util/jep/convert/ASTConstantConverter.java

Code
Comments
Other
Rev Date Author Line
3604 26 Jul 07 nicklas 1 /**
3604 26 Jul 07 nicklas 2   $Id$
3604 26 Jul 07 nicklas 3
3675 16 Aug 07 jari 4   Copyright (C) 2007 Nicklas Nordborg
3604 26 Jul 07 nicklas 5
3604 26 Jul 07 nicklas 6   This file is part of BASE - BioArray Software Environment.
3604 26 Jul 07 nicklas 7   Available at http://base.thep.lu.se/
3604 26 Jul 07 nicklas 8
3604 26 Jul 07 nicklas 9   BASE is free software; you can redistribute it and/or
3604 26 Jul 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
3604 26 Jul 07 nicklas 12   of the License, or (at your option) any later version.
3604 26 Jul 07 nicklas 13
3604 26 Jul 07 nicklas 14   BASE is distributed in the hope that it will be useful,
3604 26 Jul 07 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
3604 26 Jul 07 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
3604 26 Jul 07 nicklas 17   GNU General Public License for more details.
3604 26 Jul 07 nicklas 18
3604 26 Jul 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/>.
3604 26 Jul 07 nicklas 21 */
3604 26 Jul 07 nicklas 22 package net.sf.basedb.util.jep.convert;
3604 26 Jul 07 nicklas 23
3604 26 Jul 07 nicklas 24 import net.sf.basedb.core.BaseException;
3604 26 Jul 07 nicklas 25 import net.sf.basedb.core.query.Expression;
3604 26 Jul 07 nicklas 26
3604 26 Jul 07 nicklas 27 import org.nfunk.jep.ASTConstant;
3604 26 Jul 07 nicklas 28
3604 26 Jul 07 nicklas 29 /**
3604 26 Jul 07 nicklas 30   Converts a constant node to an expression.
3604 26 Jul 07 nicklas 31
3604 26 Jul 07 nicklas 32   @author nicklas
3604 26 Jul 07 nicklas 33   @version 2.4
3604 26 Jul 07 nicklas 34   @base.modified $Date$
3604 26 Jul 07 nicklas 35 */
3604 26 Jul 07 nicklas 36 public class ASTConstantConverter
3604 26 Jul 07 nicklas 37   extends AbstractJepConversionFunction<ASTConstant>
3604 26 Jul 07 nicklas 38 {
3604 26 Jul 07 nicklas 39   
3604 26 Jul 07 nicklas 40   public ASTConstantConverter()
3604 26 Jul 07 nicklas 41   {}
3604 26 Jul 07 nicklas 42   
3604 26 Jul 07 nicklas 43   /*
3604 26 Jul 07 nicklas 44     From the JepConversionFunction interface
3604 26 Jul 07 nicklas 45     -------------------------------------------
3604 26 Jul 07 nicklas 46   */
3604 26 Jul 07 nicklas 47   /**
3604 26 Jul 07 nicklas 48     Get the value from the constant node and check the {@link ConverterFactory} for
3604 26 Jul 07 nicklas 49     a registered converter for the class and use it.
3604 26 Jul 07 nicklas 50     @return An expression or null if the value is null
3604 26 Jul 07 nicklas 51     @throws BaseException If the node can't be converted
3604 26 Jul 07 nicklas 52   */
6875 20 Apr 15 nicklas 53   @SuppressWarnings({ "unchecked", "rawtypes" })
3604 26 Jul 07 nicklas 54   @Override
3604 26 Jul 07 nicklas 55   public Expression toExpression(ASTConstant node)
3604 26 Jul 07 nicklas 56   {
3604 26 Jul 07 nicklas 57     Expression e = null;
3604 26 Jul 07 nicklas 58     Object value = node.getValue();
3604 26 Jul 07 nicklas 59     if (value != null)
3604 26 Jul 07 nicklas 60     {
3604 26 Jul 07 nicklas 61       JepConversionFunction converter = ConverterFactory.getConverterByClass(value);
3604 26 Jul 07 nicklas 62       if (converter != null)
3604 26 Jul 07 nicklas 63       {
3604 26 Jul 07 nicklas 64         e = converter.toExpression(value);
3604 26 Jul 07 nicklas 65       }
3604 26 Jul 07 nicklas 66       if (e == null)
3604 26 Jul 07 nicklas 67       {
3604 26 Jul 07 nicklas 68         throw new BaseException("Unsupported JEP constant: " + value.getClass().getName());
3604 26 Jul 07 nicklas 69       }
3604 26 Jul 07 nicklas 70     }
3604 26 Jul 07 nicklas 71     return e;
3604 26 Jul 07 nicklas 72   }
3604 26 Jul 07 nicklas 73   // -------------------------------------------
3604 26 Jul 07 nicklas 74
3604 26 Jul 07 nicklas 75 }