Class FormatNumber


  • public class FormatNumber
    extends Function
    • Constructor Detail

      • FormatNumber

        public FormatNumber()
    • Method Detail

      • getName

        public java.lang.String getName()
        Description copied from class: Function
        Get the name of the function. This method must be implemented in all subclasses.
        Specified by:
        getName in class Function
        Returns:
        the name of the function, as used in XSL expressions, but excluding its namespace prefix
      • getDataType

        public int getDataType()
        Determine the data type of the exprEssion
        Specified by:
        getDataType in class Expression
        Returns:
        Value.STRING
      • evaluateAsString

        public java.lang.String evaluateAsString​(Context context)
                                          throws XPathException
        Evaluate in a context where a string is wanted
        Overrides:
        evaluateAsString in class Expression
        Parameters:
        context - The context in which the expression is to be evaluated
        Returns:
        the value of the expression, evaluated in the current context
        Throws:
        XPathException
      • evaluate

        public Value evaluate​(Context c)
                       throws XPathException
        Evaluate in a general context
        Specified by:
        evaluate in class Expression
        Parameters:
        c - The context in which the expression is to be evaluated
        Returns:
        the value of the expression, evaluated in the current context
        Throws:
        XPathException
      • formatNumber

        public java.lang.String formatNumber​(double n,
                                             java.lang.String format,
                                             java.text.DecimalFormatSymbols dfs)
                                      throws XPathException
        Here is the method that does the work. It needs to be synchronized because it remembers information from one invocation to the next; it doesn't matter if these are in different threads but it can't be interrupted. The reason for remembering information is that getting a new DecimalFormatSymbols each time is incredibly expensive, especially with the Microsoft Java VM. Actually the synchronization is unnecessary if there is a bound Controller.
        Throws:
        XPathException
      • getDependencies

        public int getDependencies()
        Determine the dependencies
        Specified by:
        getDependencies in class Expression
      • reduce

        public Expression reduce​(int dep,
                                 Context c)
                          throws XPathException
        Reduce the dependencies
        Specified by:
        reduce in class Expression
        Parameters:
        dep - The dependencies to be removed, e.g. Context.VARIABLES
        c - The context to be used for the partial evaluation
        Returns:
        a new expression (or Value) that does not have any of the specified dependencies
        Throws:
        XPathException