Example usage for org.apache.commons.digester SetNestedPropertiesRule setTrimData

List of usage examples for org.apache.commons.digester SetNestedPropertiesRule setTrimData

Introduction

In this page you can find the example usage for org.apache.commons.digester SetNestedPropertiesRule setTrimData.

Prototype

public void setTrimData(boolean trimData) 

Source Link

Document

When set to true, any text within child elements will have leading and trailing whitespace removed before assignment to the target object.

Usage

From source file:net.sf.jasperreports.engine.xml.JRPrintXmlLoader.java

/**
 *
 *///w  ww  .j  a  va2 s.c  o m
protected JRXmlDigester prepareDigester() throws ParserConfigurationException, SAXException {
    JRXmlDigester digester = new JRXmlDigester(createParser());

    // use a classloader that resolves both JR classes and classes from the context classloader
    CompositeClassloader digesterClassLoader = new CompositeClassloader(JRPrintXmlLoader.class.getClassLoader(),
            Thread.currentThread().getContextClassLoader());
    digester.setClassLoader(digesterClassLoader);
    digester.setNamespaceAware(true);

    digester.setRuleNamespaceURI(JRXmlConstants.JASPERPRINT_NAMESPACE);

    digester.push(this);
    //digester.setDebug(3);
    digester.setErrorHandler(this);
    digester.setValidating(true);

    /*   */
    digester.addFactoryCreate("jasperPrint", JasperPrintFactory.class.getName());
    digester.addSetNext("jasperPrint", "setJasperPrint", JasperPrint.class.getName());

    /*   */
    digester.addFactoryCreate("*/property", JRPropertyFactory.class.getName());
    digester.addCallMethod("*/property", "setValue", 0);

    /*   */
    digester.addFactoryCreate("jasperPrint/origin", JROriginFactory.class.getName());
    digester.addSetNext("jasperPrint/origin", "addOrigin", JROrigin.class.getName());

    /*   */
    digester.addFactoryCreate("jasperPrint/reportFont", JRStyleFactory.class.getName());
    digester.addSetNext("jasperPrint/reportFont", "addStyle", JRStyle.class.getName());

    /*   */
    digester.addFactoryCreate("jasperPrint/style", JRPrintStyleFactory.class.getName());
    digester.addSetNext("jasperPrint/style", "addStyle", JRStyle.class.getName());

    /*   */
    digester.addFactoryCreate("*/style/pen", JRPenFactory.Style.class.getName());

    /*   */
    digester.addFactoryCreate("*/bookmark", PrintBookmarkFactory.class.getName());
    digester.addSetNext("*/bookmark", "addBookmark", PrintBookmark.class.getName());

    /*   */
    digester.addFactoryCreate("jasperPrint/part", PrintPartFactory.class.getName());

    /*   */
    digester.addFactoryCreate("jasperPrint/page", JRPrintPageFactory.class.getName());
    digester.addSetNext("jasperPrint/page", "addPage", JRPrintPage.class.getName());

    /*   */
    digester.addFactoryCreate("*/line", JRPrintLineFactory.class.getName());
    digester.addSetNext("*/line", "addElement", JRPrintElement.class.getName());

    /*   */
    digester.addFactoryCreate("*/reportElement", JRPrintElementFactory.class.getName());

    /*   */
    digester.addFactoryCreate("*/graphicElement", JRPrintGraphicElementFactory.class.getName());

    /*   */
    digester.addFactoryCreate("*/pen", JRPenFactory.class.getName());

    /*   */
    digester.addFactoryCreate("*/rectangle", JRPrintRectangleFactory.class.getName());
    digester.addSetNext("*/rectangle", "addElement", JRPrintElement.class.getName());

    /*   */
    digester.addFactoryCreate("*/ellipse", JRPrintEllipseFactory.class.getName());
    digester.addSetNext("*/ellipse", "addElement", JRPrintElement.class.getName());

    /*   */
    digester.addFactoryCreate("*/image", JRPrintImageFactory.class.getName());
    digester.addSetNext("*/image", "addElement", JRPrintElement.class.getName());

    /*   */
    digester.addFactoryCreate("*/box", JRBoxFactory.class.getName());

    /*   */
    digester.addFactoryCreate("*/box/pen", JRPenFactory.Box.class.getName());
    digester.addFactoryCreate("*/box/topPen", JRPenFactory.Top.class.getName());
    digester.addFactoryCreate("*/box/leftPen", JRPenFactory.Left.class.getName());
    digester.addFactoryCreate("*/box/bottomPen", JRPenFactory.Bottom.class.getName());
    digester.addFactoryCreate("*/box/rightPen", JRPenFactory.Right.class.getName());

    /*   */
    digester.addFactoryCreate("*/paragraph", JRParagraphFactory.class.getName());
    digester.addFactoryCreate("*/paragraph/tabStop", TabStopFactory.class.getName());
    digester.addSetNext("*/paragraph/tabStop", "addTabStop", TabStop.class.getName());

    /*   */
    digester.addFactoryCreate("*/image/imageSource", JRPrintImageSourceFactory.class.getName());
    digester.addCallMethod("*/image/imageSource", "setImageSource", 0);

    /*   */
    digester.addFactoryCreate("*/text", JRPrintTextFactory.class.getName());
    digester.addSetNext("*/text", "addElement", JRPrintElement.class.getName());
    SetNestedPropertiesRule textRule = new SetNestedPropertiesRule(new String[] { "textContent",
            "textTruncateSuffix", "reportElement", "box", "font", JRXmlConstants.ELEMENT_lineBreakOffsets },
            new String[] { "text", "textTruncateSuffix" });
    textRule.setTrimData(false);
    textRule.setAllowUnknownChildElements(true);
    digester.addRule("*/text", textRule);

    digester.addRule("*/text/textContent",
            new SetPropertiesRule(JRXmlConstants.ATTRIBUTE_truncateIndex, "textTruncateIndex"));

    /*   */
    digester.addFactoryCreate("*/text/font", JRPrintFontFactory.class.getName());
    digester.addSetNext("*/text/font", "setFont", JRFont.class.getName());

    digester.addRule("*/text/" + JRXmlConstants.ELEMENT_lineBreakOffsets, new TextLineBreakOffsetsRule());

    addFrameRules(digester);

    addHyperlinkParameterRules(digester);

    addGenericElementRules(digester);

    return digester;
}

From source file:net.sf.jasperreports.engine.xml.JRXmlDigesterFactory.java

/**
 * Configures the given digester for parsing jasperreport xml report definition files.
 *///from w w w  . j av a 2 s .c  o m
public static void configureDigester(JasperReportsContext jasperReportsContext, Digester digester)
        throws SAXException, ParserConfigurationException {
    // set a composite classloader that includes both the JR classloader
    // and the context classloader
    CompositeClassloader digesterClassLoader = new CompositeClassloader(
            JRXmlDigesterFactory.class.getClassLoader(), Thread.currentThread().getContextClassLoader());
    digester.setClassLoader(digesterClassLoader);

    digester.setErrorHandler(new ErrorHandlerImpl());

    digester.setNamespaceAware(true);

    digester.setRuleNamespaceURI(JRXmlConstants.JASPERREPORTS_NAMESPACE);

    /*   */
    digester.addFactoryCreate("jasperReport", JasperDesignFactory.class.getName());
    digester.addSetNext("jasperReport", "setJasperDesign", JasperDesign.class.getName());

    /*   */
    digester.addFactoryCreate("*/property", JRPropertyFactory.class.getName());
    digester.addCallMethod("*/property", "setValue", 0);

    String propertyExpressionPattern = "jasperReport/" + JRXmlConstants.ELEMENT_propertyExpression;
    digester.addFactoryCreate(propertyExpressionPattern, DatasetPropertyExpressionFactory.class.getName());
    digester.addSetNext(propertyExpressionPattern, "addPropertyExpression",
            DatasetPropertyExpression.class.getName());
    digester.addFactoryCreate(propertyExpressionPattern, depStringExprFactoryClass.getName());
    digester.addSetNext(propertyExpressionPattern, "setValueExpression", JRExpression.class.getName());
    digester.addCallMethod(propertyExpressionPattern, "setText", 0);

    propertyExpressionPattern = "*/subDataset/" + JRXmlConstants.ELEMENT_propertyExpression;
    digester.addFactoryCreate(propertyExpressionPattern, DatasetPropertyExpressionFactory.class.getName());
    digester.addSetNext(propertyExpressionPattern, "addPropertyExpression",
            DatasetPropertyExpression.class.getName());
    digester.addFactoryCreate(propertyExpressionPattern, depStringExprFactoryClass.getName());
    digester.addSetNext(propertyExpressionPattern, "setValueExpression", JRExpression.class.getName());
    digester.addCallMethod(propertyExpressionPattern, "setText", 0);

    propertyExpressionPattern = "*/" + JRXmlConstants.ELEMENT_propertyExpression;
    digester.addFactoryCreate(propertyExpressionPattern, JRPropertyExpressionFactory.class.getName());
    digester.addSetNext(propertyExpressionPattern, "addPropertyExpression",
            JRPropertyExpression.class.getName());
    digester.addFactoryCreate(propertyExpressionPattern, depStringExprFactoryClass.getName());
    digester.addSetNext(propertyExpressionPattern, "setValueExpression", JRExpression.class.getName());
    digester.addCallMethod(propertyExpressionPattern, "setText", 0);

    /*   */
    digester.addCallMethod("jasperReport/import", "addImport", 1);
    digester.addCallParam("jasperReport/import", 0, "value");

    addTemplateRules(digester);

    /*   */
    digester.addFactoryCreate("jasperReport/reportFont", JRStyleFactory.class.getName());
    digester.addSetNext("jasperReport/reportFont", "addStyle", JRStyle.class.getName());

    /*   */
    digester.addFactoryCreate("jasperReport/style", JRStyleFactory.class.getName());
    digester.addSetNext("jasperReport/style", "addStyle", JRStyle.class.getName());

    digester.addFactoryCreate("jasperReport/style/conditionalStyle", JRConditionalStyleFactory.class.getName());
    digester.addFactoryCreate("jasperReport/style/conditionalStyle/conditionExpression",
            depBooleanExprFactoryClass.getName());
    digester.addSetNext("jasperReport/style/conditionalStyle/conditionExpression", "setConditionExpression",
            JRExpression.class.getName());
    digester.addCallMethod("jasperReport/style/conditionalStyle/conditionExpression", "setText", 0);
    digester.addFactoryCreate("jasperReport/style/conditionalStyle/style",
            JRConditionalStyleFillerFactory.class.getName());
    digester.addFactoryCreate("*/style/pen", JRPenFactory.Style.class.getName());

    /*   */
    digester.addFactoryCreate("*/scriptlet", JRScriptletFactory.class.getName());
    digester.addSetNext("*/scriptlet", "addScriptlet", JRScriptlet.class.getName());
    digester.addCallMethod("*/scriptlet/scriptletDescription", "setDescription", 0);

    /*   */
    digester.addFactoryCreate("*/parameter", JRParameterFactory.class.getName());
    digester.addSetNext("*/parameter", "addParameter", JRParameter.class.getName());
    digester.addCallMethod("*/parameter/parameterDescription", "setDescription", 0);

    /*   */
    @SuppressWarnings("deprecation")
    Class<?> depDefaultValueExprFactory = JRDefaultValueExpressionFactory.class;
    digester.addFactoryCreate("*/parameter/defaultValueExpression", depDefaultValueExprFactory.getName());
    digester.addSetNext("*/parameter/defaultValueExpression", "setDefaultValueExpression",
            JRExpression.class.getName());
    digester.addCallMethod("*/parameter/defaultValueExpression", "setText", 0);

    /*   */
    digester.addFactoryCreate("*/queryString", JRQueryFactory.class.getName());
    digester.addSetNext("*/queryString", "setQuery", JRDesignQuery.class.getName());
    digester.addCallMethod("*/queryString", "setText", 0);

    /*   */
    digester.addFactoryCreate("*/field", JRFieldFactory.class.getName());
    digester.addSetNext("*/field", "addField", JRField.class.getName());
    digester.addCallMethod("*/field/fieldDescription", "setDescription", 0);

    /*   */
    digester.addFactoryCreate("*/sortField", JRSortFieldFactory.class.getName());
    digester.addSetNext("*/sortField", "addSortField", JRSortField.class.getName());

    /*   */
    digester.addFactoryCreate("*/variable", JRVariableFactory.class.getName());
    digester.addSetNext("*/variable", "addVariable", JRDesignVariable.class.getName());
    digester.addCallMethod("*/variable/variableDescription", "setDescription", 0);

    /*   */
    @SuppressWarnings("deprecation")
    Class<?> depVariableExprFactory = JRVariableExpressionFactory.class;
    digester.addFactoryCreate("*/variable/variableExpression", depVariableExprFactory.getName());
    digester.addSetNext("*/variable/variableExpression", "setExpression", JRExpression.class.getName());
    digester.addCallMethod("*/variable/variableExpression", "setText", 0);

    /*   */
    @SuppressWarnings("deprecation")
    Class<?> depInitialValueExprFactory = JRInitialValueExpressionFactory.class;
    digester.addFactoryCreate("*/variable/initialValueExpression", depInitialValueExprFactory.getName());
    digester.addSetNext("*/variable/initialValueExpression", "setInitialValueExpression",
            JRExpression.class.getName());
    digester.addCallMethod("*/variable/initialValueExpression", "setText", 0);

    String filterExpressionPath = "*/" + JRXmlConstants.ELEMENT_filterExpression;
    digester.addFactoryCreate(filterExpressionPath, depBooleanExprFactoryClass.getName());
    digester.addSetNext(filterExpressionPath, "setFilterExpression", JRExpression.class.getName());
    digester.addCallMethod(filterExpressionPath, "setText", 0);

    /*   */
    digester.addFactoryCreate("*/group", JRGroupFactory.class.getName());
    digester.addSetNext("*/group", "addGroup", JRDesignGroup.class.getName());

    /*   */
    digester.addFactoryCreate("*/group/groupExpression", depObjectExprFactoryClass.getName());
    digester.addSetNext("*/group/groupExpression", "setExpression", JRExpression.class.getName());
    digester.addCallMethod("*/group/groupExpression", "setText", 0);

    /*   */
    digester.addFactoryCreate("jasperReport/background/band", JRBandFactory.class.getName());
    digester.addSetNext("jasperReport/background/band", "setBackground", JRBand.class.getName());
    digester.addFactoryCreate("jasperReport/title/band", JRBandFactory.class.getName());
    digester.addSetNext("jasperReport/title/band", "setTitle", JRBand.class.getName());
    digester.addFactoryCreate("jasperReport/pageHeader/band", JRBandFactory.class.getName());
    digester.addSetNext("jasperReport/pageHeader/band", "setPageHeader", JRBand.class.getName());
    digester.addFactoryCreate("jasperReport/columnHeader/band", JRBandFactory.class.getName());
    digester.addSetNext("jasperReport/columnHeader/band", "setColumnHeader", JRBand.class.getName());
    digester.addFactoryCreate("jasperReport/group/groupHeader",
            JRSectionFactory.GroupHeaderSectionFactory.class.getName());
    //      digester.addSetNext("jasperReport/group/groupHeader", "setGroupHeader", JRSection.class.getName());
    digester.addFactoryCreate("jasperReport/group/groupHeader/band", JRBandFactory.class.getName());
    digester.addSetNext("jasperReport/group/groupHeader/band", "addBand", JRBand.class.getName());
    digester.addFactoryCreate("jasperReport/detail", JRSectionFactory.DetailSectionFactory.class.getName());
    //digester.addSetNext("jasperReport/detail", "setDetail", JRSection.class.getName());
    digester.addFactoryCreate("jasperReport/detail/band", JRBandFactory.class.getName());
    digester.addSetNext("jasperReport/detail/band", "addBand", JRBand.class.getName());
    digester.addFactoryCreate("jasperReport/group/groupFooter",
            JRSectionFactory.GroupFooterSectionFactory.class.getName());
    //      digester.addSetNext("jasperReport/group/groupFooter", "setGroupFooter", JRSection.class.getName());
    digester.addFactoryCreate("jasperReport/group/groupFooter/band", JRBandFactory.class.getName());
    digester.addSetNext("jasperReport/group/groupFooter/band", "addBand", JRBand.class.getName());
    digester.addFactoryCreate("jasperReport/columnFooter/band", JRBandFactory.class.getName());
    digester.addSetNext("jasperReport/columnFooter/band", "setColumnFooter", JRBand.class.getName());
    digester.addFactoryCreate("jasperReport/pageFooter/band", JRBandFactory.class.getName());
    digester.addSetNext("jasperReport/pageFooter/band", "setPageFooter", JRBand.class.getName());
    digester.addFactoryCreate("jasperReport/lastPageFooter/band", JRBandFactory.class.getName());
    digester.addSetNext("jasperReport/lastPageFooter/band", "setLastPageFooter", JRBand.class.getName());
    digester.addFactoryCreate("jasperReport/summary/band", JRBandFactory.class.getName());
    digester.addSetNext("jasperReport/summary/band", "setSummary", JRBand.class.getName());
    digester.addFactoryCreate("jasperReport/noData/band", JRBandFactory.class.getName());
    digester.addSetNext("jasperReport/noData/band", "setNoData", JRBand.class.getName());

    /*   */
    digester.addFactoryCreate("*/band/printWhenExpression", depBooleanExprFactoryClass.getName());
    digester.addSetNext("*/band/printWhenExpression", "setPrintWhenExpression", JRExpression.class.getName());
    digester.addCallMethod("*/band/printWhenExpression", "setText", 0);

    /*   */
    digester.addFactoryCreate("*/part/printWhenExpression", depBooleanExprFactoryClass.getName());
    digester.addSetNext("*/part/printWhenExpression", "setPrintWhenExpression", JRExpression.class.getName());
    digester.addCallMethod("*/part/printWhenExpression", "setText", 0);

    /*   */
    digester.addFactoryCreate("*/band/returnValue", ExpressionReturnValueFactory.class.getName());
    digester.addSetNext("*/band/returnValue", "addReturnValue", ExpressionReturnValue.class.getName());
    digester.addFactoryCreate("*/band/returnValue/expression", depObjectExprFactoryClass.getName());
    digester.addSetNext("*/band/returnValue/expression", "setExpression", JRExpression.class.getName());
    digester.addCallMethod("*/band/returnValue/expression", "setText", 0);

    /*   */
    digester.addFactoryCreate("*/break", JRBreakFactory.class.getName());
    digester.addSetNext("*/break", "addElement", JRDesignElement.class.getName());

    /*   */
    digester.addFactoryCreate("*/line", JRLineFactory.class.getName());
    digester.addSetNext("*/line", "addElement", JRDesignElement.class.getName());

    /*   */
    digester.addFactoryCreate("*/reportElement", JRElementFactory.class.getName());

    /*   */
    digester.addFactoryCreate("*/reportElement/printWhenExpression", depBooleanExprFactoryClass.getName());
    digester.addSetNext("*/reportElement/printWhenExpression", "setPrintWhenExpression",
            JRExpression.class.getName());
    digester.addCallMethod("*/reportElement/printWhenExpression", "setText", 0);

    /*   */
    digester.addFactoryCreate("*/graphicElement", JRGraphicElementFactory.class.getName());

    /*   */
    digester.addFactoryCreate("*/graphicElement/pen", JRPenFactory.class.getName());

    /*   */
    digester.addFactoryCreate("*/rectangle", JRRectangleFactory.class.getName());
    digester.addSetNext("*/rectangle", "addElement", JRDesignElement.class.getName());

    /*   */
    digester.addFactoryCreate("*/ellipse", JREllipseFactory.class.getName());
    digester.addSetNext("*/ellipse", "addElement", JRDesignElement.class.getName());

    /*   */
    digester.addFactoryCreate("*/image", JRImageFactory.class.getName());
    digester.addSetNext("*/image", "addElement", JRDesignElement.class.getName());

    /*   */
    digester.addFactoryCreate("*/box", JRBoxFactory.class.getName());

    /*   */
    digester.addFactoryCreate("*/box/pen", JRPenFactory.Box.class.getName());
    digester.addFactoryCreate("*/box/topPen", JRPenFactory.Top.class.getName());
    digester.addFactoryCreate("*/box/leftPen", JRPenFactory.Left.class.getName());
    digester.addFactoryCreate("*/box/bottomPen", JRPenFactory.Bottom.class.getName());
    digester.addFactoryCreate("*/box/rightPen", JRPenFactory.Right.class.getName());

    /*   */
    digester.addFactoryCreate("*/paragraph", JRParagraphFactory.class.getName());
    digester.addFactoryCreate("*/paragraph/tabStop", TabStopFactory.class.getName());
    digester.addSetNext("*/paragraph/tabStop", "addTabStop", TabStop.class.getName());

    /*   */
    @SuppressWarnings("deprecation")
    Class<?> lcDepStringExprFactoryClass = JRStringExpressionFactory.class;
    digester.addFactoryCreate("*/image/imageExpression", lcDepStringExprFactoryClass.getName());
    digester.addSetNext("*/image/imageExpression", "setExpression", JRExpression.class.getName());
    digester.addCallMethod("*/image/imageExpression", "setText", 0);

    /*   */
    digester.addFactoryCreate("*/staticText", JRStaticTextFactory.class.getName());
    digester.addSetNext("*/staticText", "addElement", JRDesignElement.class.getName());
    SetNestedPropertiesRule textRule = new SetNestedPropertiesRule(
            new String[] { "text", "reportElement", "box", "textElement" }, new String[] { "text" });
    textRule.setTrimData(false);
    textRule.setAllowUnknownChildElements(true);
    digester.addRule("*/staticText", textRule);

    /*   */
    digester.addFactoryCreate("*/textElement", JRTextElementFactory.class.getName());

    /*   */
    digester.addFactoryCreate("*/textElement/font", JRFontFactory.TextElementFontFactory.class.getName());

    /*   */
    digester.addFactoryCreate("*/textField", JRTextFieldFactory.class.getName());
    digester.addSetNext("*/textField", "addElement", JRDesignElement.class.getName());

    /*   */
    digester.addFactoryCreate("*/textField/textFieldExpression", lcDepStringExprFactoryClass.getName());
    digester.addSetNext("*/textField/textFieldExpression", "setExpression", JRExpression.class.getName());
    digester.addCallMethod("*/textField/textFieldExpression", "setText", 0);

    /*   */
    digester.addFactoryCreate("*/textField/patternExpression", JRExpressionFactory.class.getName());
    digester.addSetNext("*/textField/patternExpression", "setPatternExpression", JRExpression.class.getName());
    digester.addCallMethod("*/textField/patternExpression", "setText", 0);

    /*   */
    digester.addFactoryCreate("*/anchorNameExpression", depStringExprFactoryClass.getName());
    digester.addSetNext("*/anchorNameExpression", "setAnchorNameExpression", JRExpression.class.getName());
    digester.addCallMethod("*/anchorNameExpression", "setText", 0);
    digester.addFactoryCreate("*/hyperlinkReferenceExpression", depStringExprFactoryClass.getName());
    digester.addSetNext("*/hyperlinkReferenceExpression", "setHyperlinkReferenceExpression",
            JRExpression.class.getName());
    digester.addCallMethod("*/hyperlinkReferenceExpression", "setText", 0);
    digester.addFactoryCreate("*/hyperlinkWhenExpression", depBooleanExprFactoryClass.getName());
    digester.addSetNext("*/hyperlinkWhenExpression", "setHyperlinkWhenExpression",
            JRExpression.class.getName());
    digester.addCallMethod("*/hyperlinkWhenExpression", "setText", 0);
    digester.addFactoryCreate("*/hyperlinkAnchorExpression", depStringExprFactoryClass.getName());
    digester.addSetNext("*/hyperlinkAnchorExpression", "setHyperlinkAnchorExpression",
            JRExpression.class.getName());
    digester.addCallMethod("*/hyperlinkAnchorExpression", "setText", 0);
    @SuppressWarnings("deprecation")
    Class<?> depIntegerExprFactory = JRExpressionFactory.IntegerExpressionFactory.class;
    digester.addFactoryCreate("*/hyperlinkPageExpression", depIntegerExprFactory.getName());
    digester.addSetNext("*/hyperlinkPageExpression", "setHyperlinkPageExpression",
            JRExpression.class.getName());
    digester.addCallMethod("*/hyperlinkPageExpression", "setText", 0);

    String hyperlinkTooltipExpressionPattern = "*/" + JRXmlConstants.ELEMENT_hyperlinkTooltipExpression;
    digester.addFactoryCreate(hyperlinkTooltipExpressionPattern, depStringExprFactoryClass.getName());
    digester.addSetNext(hyperlinkTooltipExpressionPattern, "setHyperlinkTooltipExpression",
            JRExpression.class.getName());
    digester.addCallMethod(hyperlinkTooltipExpressionPattern, "setText", 0);

    addHyperlinkParameterRules(digester);

    /*   */
    digester.addFactoryCreate("*/subreport", JRSubreportFactory.class.getName());
    digester.addRule("*/subreport",
            new XmlConstantPropertyRule(JRXmlConstants.ATTRIBUTE_overflowType, OverflowType.values()));
    digester.addSetNext("*/subreport", "addElement", JRDesignElement.class.getName());

    /*   */
    digester.addFactoryCreate("*/subreport/subreportParameter", JRSubreportParameterFactory.class.getName());
    digester.addSetNext("*/subreport/subreportParameter", "addParameter", JRSubreportParameter.class.getName());

    /*   */
    digester.addFactoryCreate("*/subreport/returnValue", JRSubreportReturnValueFactory.class.getName());
    digester.addSetNext("*/subreport/returnValue", "addReturnValue", JRSubreportReturnValue.class.getName());

    /*   */
    @SuppressWarnings("deprecation")
    Class<?> depMapExprFactory = JRExpressionFactory.MapExpressionFactory.class;
    digester.addFactoryCreate("*/parametersMapExpression", depMapExprFactory.getName());
    digester.addSetNext("*/parametersMapExpression", "setParametersMapExpression",
            JRExpression.class.getName());
    digester.addCallMethod("*/parametersMapExpression", "setText", 0);

    /*   */
    digester.addFactoryCreate("*/subreport/subreportParameter/subreportParameterExpression",
            depObjectExprFactoryClass.getName());
    digester.addSetNext("*/subreport/subreportParameter/subreportParameterExpression", "setExpression",
            JRExpression.class.getName());
    digester.addCallMethod("*/subreport/subreportParameter/subreportParameterExpression", "setText", 0);

    /*   */
    @SuppressWarnings("deprecation")
    Class<?> depConnectionExprFactory = JRExpressionFactory.ConnectionExpressionFactory.class;
    digester.addFactoryCreate("*/connectionExpression", depConnectionExprFactory.getName());
    digester.addSetNext("*/connectionExpression", "setConnectionExpression", JRExpression.class.getName());
    digester.addCallMethod("*/connectionExpression", "setText", 0);

    /*   */
    @SuppressWarnings("deprecation")
    Class<?> depDataSourceExprFactory = JRExpressionFactory.DataSourceExpressionFactory.class;
    digester.addFactoryCreate("*/dataSourceExpression", depDataSourceExprFactory.getName());
    digester.addSetNext("*/dataSourceExpression", "setDataSourceExpression", JRExpression.class.getName());
    digester.addCallMethod("*/dataSourceExpression", "setText", 0);

    /*   */
    @SuppressWarnings("deprecation")
    Class<?> depSubreportExprFactory = JRSubreportExpressionFactory.class;
    digester.addFactoryCreate("*/subreport/subreportExpression", depSubreportExprFactory.getName());
    digester.addSetNext("*/subreport/subreportExpression", "setExpression", JRExpression.class.getName());
    digester.addCallMethod("*/subreport/subreportExpression", "setText", 0);

    /*   */
    digester.addFactoryCreate("*/elementGroup", JRElementGroupFactory.class.getName());
    digester.addSetNext("*/elementGroup", "addElementGroup", JRDesignElementGroup.class.getName());

    addChartRules(digester);

    addDatasetRules(digester);

    addCrosstabRules(digester);

    addFrameRules(digester);

    addComponentRules(jasperReportsContext, digester);

    addPartComponentRules(jasperReportsContext, digester);

    addGenericElementRules(digester);

    addMultiAxisDataRules(digester);
}