1 28 package net.sf.jasperreports.engine.xml; 29 30 import net.sf.jasperreports.engine.JRException; 31 import net.sf.jasperreports.engine.JRVariable; 32 import net.sf.jasperreports.engine.design.JRDesignSubreportReturnValue; 33 import net.sf.jasperreports.engine.design.JasperDesign; 34 35 import org.xml.sax.Attributes ; 36 37 44 public class JRSubreportReturnValueFactory extends JRBaseFactory 45 { 46 private static final String ATTRIBUTE_subreportVariable = "subreportVariable"; 47 48 private static final String ATTRIBUTE_toVariable = "toVariable"; 49 50 private static final String ATTRIBUTE_calculation = "calculation"; 51 52 private static final String ATTRIBUTE_incrementerFactoryClass = "incrementerFactoryClass"; 53 54 60 public Object createObject(Attributes atts) 61 { 62 JRXmlLoader xmlLoader = (JRXmlLoader) digester.peek(digester.getCount() - 1); 63 JasperDesign design = (JasperDesign) digester.peek(digester.getCount() - 2); 64 65 String variableName = atts.getValue(ATTRIBUTE_toVariable); 66 JRVariable variable = (JRVariable) design.getVariablesMap().get(variableName); 67 if (variable == null) 68 { 69 xmlLoader.addError(new JRException("Unknown variable " + variableName)); 70 } 71 72 JRDesignSubreportReturnValue returnValue = new JRDesignSubreportReturnValue(); 73 returnValue.setSubreportVariable(atts.getValue(ATTRIBUTE_subreportVariable)); 74 returnValue.setToVariable(variableName); 75 76 Byte calculation = (Byte )JRXmlConstants.getCalculationMap().get(atts.getValue(ATTRIBUTE_calculation)); 77 if (calculation != null) 78 { 79 returnValue.setCalculation(calculation.byteValue()); 80 } 81 82 String incrementerFactoryClass = atts.getValue(ATTRIBUTE_incrementerFactoryClass); 83 if (incrementerFactoryClass != null) 84 { 85 returnValue.setIncrementerFactoryClassName(incrementerFactoryClass); 86 } 87 88 return returnValue; 89 } 90 91 } 92 | Popular Tags |