src/core/net/sf/basedb/util/jep/convert/JepConversionFunction.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
3604 26 Jul 07 nicklas 25 import net.sf.basedb.core.query.Expression;
3604 26 Jul 07 nicklas 26 import net.sf.basedb.core.query.Restriction;
3604 26 Jul 07 nicklas 27 import net.sf.basedb.util.jep.Jep;
3604 26 Jul 07 nicklas 28 import net.sf.basedb.util.jep.JepExpressionFunction;
3604 26 Jul 07 nicklas 29
3604 26 Jul 07 nicklas 30 /**
3604 26 Jul 07 nicklas 31   Convert a built-in JEP function or operation to a Query
3604 26 Jul 07 nicklas 32   API {@link Expression} or {@link Restriction}. Custom function
3604 26 Jul 07 nicklas 33   should implement {@link JepExpressionFunction} which supports
3604 26 Jul 07 nicklas 34   automatic conversion.
3604 26 Jul 07 nicklas 35   
3604 26 Jul 07 nicklas 36   @author nicklas
3604 26 Jul 07 nicklas 37   @version 2.4
3604 26 Jul 07 nicklas 38   @base.modified $Date$
3604 26 Jul 07 nicklas 39 */
3604 26 Jul 07 nicklas 40 public interface JepConversionFunction<T>
3604 26 Jul 07 nicklas 41 {
3604 26 Jul 07 nicklas 42   /**
3604 26 Jul 07 nicklas 43     If this converter is a built-in function. Built-in functions
3604 26 Jul 07 nicklas 44     are automatically put in the enumeration return by
3604 26 Jul 07 nicklas 45     {@link Jep#getFunctions()}.
3604 26 Jul 07 nicklas 46     @return TRUE if it is a function, FALSE otherwise
3604 26 Jul 07 nicklas 47   */
3604 26 Jul 07 nicklas 48   public boolean isFunction();
3604 26 Jul 07 nicklas 49   
3604 26 Jul 07 nicklas 50   /**
3604 26 Jul 07 nicklas 51     If this converter is a built-in operator.
3604 26 Jul 07 nicklas 52     @return TRUE if it is an operator, FALSE otherwise
3604 26 Jul 07 nicklas 53   */
3604 26 Jul 07 nicklas 54   public boolean isOperator();
3604 26 Jul 07 nicklas 55   
3604 26 Jul 07 nicklas 56   /**
3604 26 Jul 07 nicklas 57     Get the name of the function or the symbol of the operator
3604 26 Jul 07 nicklas 58     @return The name or symbol or null
3604 26 Jul 07 nicklas 59   */
3604 26 Jul 07 nicklas 60   public String getName();
3604 26 Jul 07 nicklas 61
3604 26 Jul 07 nicklas 62   /**
3604 26 Jul 07 nicklas 63     Get a short description of the function or operator
3604 26 Jul 07 nicklas 64     @return The description or null
3604 26 Jul 07 nicklas 65   */
3604 26 Jul 07 nicklas 66   public String getDescription();
3604 26 Jul 07 nicklas 67   
3604 26 Jul 07 nicklas 68   /**
3604 26 Jul 07 nicklas 69     Convert the object to an expression.
3604 26 Jul 07 nicklas 70     @param node The object to convert
3604 26 Jul 07 nicklas 71     @return An expression or null
3604 26 Jul 07 nicklas 72     @throws UnsupportedOperationException If this converter can't convert to
3604 26 Jul 07 nicklas 73       expressions
3604 26 Jul 07 nicklas 74   */
3604 26 Jul 07 nicklas 75   public Expression toExpression(T node);
3604 26 Jul 07 nicklas 76
3604 26 Jul 07 nicklas 77   /**
3604 26 Jul 07 nicklas 78     Convert the object to a restriction.
3604 26 Jul 07 nicklas 79     @param node The object to convert
3604 26 Jul 07 nicklas 80     @return A restriction or null
3604 26 Jul 07 nicklas 81     @throws UnsupportedOperationException If this converter can't convert to
3604 26 Jul 07 nicklas 82       restrictions
3604 26 Jul 07 nicklas 83   */
3604 26 Jul 07 nicklas 84   public Restriction toRestriction(T node);
3604 26 Jul 07 nicklas 85 }