for (int i = 0; i < nodes.length; i++)
{
final Node node = nodes[i];
if (node instanceof OfficeGroup)
{
final OfficeGroup group = (OfficeGroup) node;
final FormulaExpression exp = (FormulaExpression) group.getGroupingExpression();
if (exp == null)
{
continue;
}
try
{
final String expression = exp.getFormulaExpression();
if (expression == null)
{
continue;
}
final FormulaFunction function = (FormulaFunction) parser.parse(expression);
final LValue[] parameters = function.getChildValues();
if (parameters.length > 0)
{
String name = parameters[0].toString();
if (parameters[0] instanceof ContextLookup)
{
final ContextLookup context = (ContextLookup) parameters[0];
name = context.getName();
}
for (int j = 0; j < reportFunctions.length; j++)
{
if (reportFunctions[j] instanceof FormulaExpression)
{
final FormulaExpression reportExp = (FormulaExpression) reportFunctions[j];
if (reportExp.getName().equals(name))
{
LValue val = parser.parse(reportExp.getFormulaExpression());
while( !(val instanceof ContextLookup))
{
if (val instanceof Term)
{
val = ((Term)val).getHeadValue();
}
else if (val instanceof FormulaFunction)
{
final FormulaFunction reportFunction = (FormulaFunction) val;
val = reportFunction.getChildValues()[0];
}
}
if (val instanceof ContextLookup)
{
final ContextLookup context = (ContextLookup) val;
name = context.getName();
}
break;
}
}
}
final Object[] pair = new Object[2];
pair[0] = name;
pair[1] = group.getAttribute(OfficeNamespaces.OOREPORT_NS, "sort-ascending");
expressions.add(pair);
}
}
catch (ParseException ex)
{