package org.jboss.seam.bpm;
import java.io.Reader;
import org.dom4j.Element;
import org.jbpm.graph.def.Node;
import org.jbpm.graph.def.NodeCollection;
import org.jbpm.jpdl.xml.JpdlXmlReader;
import org.jbpm.jpdl.xml.ProblemListener;
import org.xml.sax.InputSource;
/**
* A jPDL parser for Seam pageflow definitions
*
* @author Tom Baeyens
*
*/
public class PageflowParser extends JpdlXmlReader
{
private static final long serialVersionUID = 1L;
public PageflowParser(InputSource inputSource, ProblemListener problemListener)
{
super(inputSource, problemListener);
}
public PageflowParser(InputSource inputSource)
{
super(inputSource);
}
public PageflowParser(Reader reader)
{
super(reader);
}
@Override
public void readNodes(Element nodeCollectionElement, NodeCollection nodeCollection)
{
super.readNodes(nodeCollectionElement, nodeCollection);
if ( "pageflow-definition".equals( nodeCollectionElement.getName() ) )
{
String startPageName = nodeCollectionElement.attributeValue("start-page");
if (startPageName==null)
{
Element startPageElement = nodeCollectionElement.element("start-page");
if (startPageElement!=null)
{
startPageName = startPageElement.attributeValue("name");
}
}
if (startPageName!=null)
{
Node startPage = getProcessDefinition().getNode(startPageName);
if (startPage!=null)
{
getProcessDefinition().setStartState(startPage);
}
}
}
}
}