// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: packimports(3) fieldsfirst lnc
// Source File Name: SAXONGroup.java
package com.icl.saxon.style;
import com.icl.saxon.Context;
import com.icl.saxon.expr.*;
import com.icl.saxon.tree.*;
import java.util.Stack;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
// Referenced classes of package com.icl.saxon.style:
// XSLForEach, SAXONItem, GroupActivation, StyleElement,
// StandardNames
public class SAXONGroup extends XSLForEach
{
Expression groupBy;
public SAXONGroup()
{
/* 18*/ groupBy = null;
}
public boolean isInstruction()
{
/* 26*/ return true;
}
public void prepareAttributes()
throws TransformerConfigurationException
{
/* 32*/ StandardNames standardnames = getStandardNames();
/* 33*/ AttributeCollection attributecollection = getAttributeList();
/* 35*/ String s = null;
/* 36*/ String s1 = null;
/* 38*/ for(int i = 0; i < attributecollection.getLength(); i++)
{
/* 39*/ int j = attributecollection.getNameCode(i);
/* 40*/ int k = j & 0xfffff;
/* 41*/ if(k == standardnames.SELECT)
/* 42*/ s = attributecollection.getValue(i);
/* 43*/ else
/* 43*/ if(k == standardnames.GROUP_BY)
/* 44*/ s1 = attributecollection.getValue(i);
/* 46*/ else
/* 46*/ checkUnknownAttribute(j);
}
/* 50*/ if(s == null)
/* 51*/ reportAbsence("select");
/* 53*/ else
/* 53*/ super.select = makeExpression(s);
/* 56*/ if(s1 == null)
/* 57*/ reportAbsence("group-by");
/* 59*/ else
/* 59*/ groupBy = makeExpression(s1);
}
public void validate()
throws TransformerConfigurationException
{
/* 64*/ checkWithinTemplate();
/* 65*/ super.select = handleSortKeys(super.select);
/* 68*/ Object obj = this;
/* 69*/ SAXONItem saxonitem = null;
/* 71*/ for(; obj != null; obj = ((NodeImpl) (obj)).getNextInDocument(this))
{
/* 71*/ if(!(obj instanceof SAXONItem))
/* 72*/ continue;
/* 72*/ saxonitem = (SAXONItem)obj;
/* 73*/ break;
}
/* 77*/ if(saxonitem == null)
/* 78*/ compileError("saxon:group must have a nested saxon:item element");
}
public void process(Context context)
throws TransformerException
{
/* 84*/ Object obj = super.select.enumerate(context, false);
/* 85*/ if(!(obj instanceof LastPositionFinder))
/* 86*/ obj = new LookaheadEnumerator(((com.icl.saxon.om.NodeEnumeration) (obj)));
/* 89*/ Context context1 = context.newContext();
/* 90*/ context1.setLastPositionFinder((LastPositionFinder)obj);
/* 94*/ GroupActivation groupactivation = new GroupActivation(this, groupBy, ((com.icl.saxon.om.NodeEnumeration) (obj)), context1);
/* 95*/ Stack stack = context1.getGroupActivationStack();
/* 96*/ stack.push(groupactivation);
/* 99*/ for(; groupactivation.hasMoreElements(); context.setReturnValue(context1.getReturnValue()))
{
/* 99*/ groupactivation.nextElement();
/* 100*/ processChildren(context1);
}
/* 104*/ stack.pop();
}
}