001    /**
002     * ========================================
003     * JFreeReport : a free Java report library
004     * ========================================
005     *
006     * Project Info:  http://reporting.pentaho.org/
007     *
008     * (C) Copyright 2000-2007, by Object Refinery Limited, Pentaho Corporation and Contributors.
009     *
010     * This library is free software; you can redistribute it and/or modify it under the terms
011     * of the GNU Lesser General Public License as published by the Free Software Foundation;
012     * either version 2.1 of the License, or (at your option) any later version.
013     *
014     * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
015     * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
016     * See the GNU Lesser General Public License for more details.
017     *
018     * You should have received a copy of the GNU Lesser General Public License along with this
019     * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
020     * Boston, MA 02111-1307, USA.
021     *
022     * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
023     * in the United States and other countries.]
024     *
025     * ------------
026     * $Id: AttrFunctionDescription.java 3525 2007-10-16 11:43:48Z tmorgner $
027     * ------------
028     * (C) Copyright 2000-2005, by Object Refinery Limited.
029     * (C) Copyright 2005-2007, by Pentaho Corporation.
030     */
031    
032    package org.jfree.report.expressions.formula.sys;
033    
034    import org.jfree.formula.function.AbstractFunctionDescription;
035    import org.jfree.formula.function.FunctionCategory;
036    import org.jfree.formula.function.userdefined.UserDefinedFunctionCategory;
037    import org.jfree.formula.typing.Type;
038    import org.jfree.formula.typing.coretypes.AnyType;
039    import org.jfree.formula.typing.coretypes.TextType;
040    
041    /**
042     * Creation-Date: 29.11.2006, 18:04:18
043     *
044     * @author Thomas Morgner
045     */
046    public class AttrFunctionDescription extends AbstractFunctionDescription
047    {
048      public AttrFunctionDescription()
049      {
050        super("org.jfree.report.expressions.formula.sys.Attr-Function");
051      }
052    
053      public int getParameterCount()
054      {
055        return 1;
056      }
057    
058      public boolean isInfiniteParameterCount()
059      {
060        return false;
061      }
062    
063      public Type getParameterType(final int position)
064      {
065        return TextType.TYPE;
066      }
067    
068      public Type getValueType()
069      {
070        return AnyType.TYPE;
071      }
072    
073      /**
074       * Defines, whether the parameter at the given position is mandatory. A
075       * mandatory parameter must be filled in, while optional parameters need not
076       * to be filled in.
077       *
078       * @return
079       */
080      public boolean isParameterMandatory(final int position)
081      {
082        if (position == 0)
083        {
084          return true;
085        }
086        return false;
087      }
088    
089      /**
090       * Returns the default value for an optional parameter. If the value returned
091       * here is null, then this either means, that the parameter is mandatory or
092       * that the default value is computed by the expression itself.
093       *
094       * @param position
095       * @return
096       */
097      public Object getDefaultValue(final int position)
098      {
099        return null;
100      }
101    
102      public FunctionCategory getCategory()
103      {
104        return UserDefinedFunctionCategory.CATEGORY;
105      }
106    
107    }