01: /*
02: * ============================================================================
03: * GNU Lesser General Public License
04: * ============================================================================
05: *
06: * JasperReports - Free Java report-generating library.
07: * Copyright (C) 2001-2006 JasperSoft Corporation http://www.jaspersoft.com
08: *
09: * This library is free software; you can redistribute it and/or
10: * modify it under the terms of the GNU Lesser General Public
11: * License as published by the Free Software Foundation; either
12: * version 2.1 of the License, or (at your option) any later version.
13: *
14: * This library is distributed in the hope that it will be useful,
15: * but WITHOUT ANY WARRANTY; without even the implied warranty of
16: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17: * Lesser General Public License for more details.
18: *
19: * You should have received a copy of the GNU Lesser General Public
20: * License along with this library; if not, write to the Free Software
21: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
22: *
23: * JasperSoft Corporation
24: * 303 Second Street, Suite 450 North
25: * San Francisco, CA 94107
26: * http://www.jaspersoft.com
27: */
28: package net.sf.jasperreports.engine.xml;
29:
30: import java.util.Set;
31:
32: import net.sf.jasperreports.engine.JRVariable;
33: import net.sf.jasperreports.engine.design.JRDesignElementDataset;
34: import net.sf.jasperreports.engine.design.JRDesignGroup;
35:
36: import org.xml.sax.Attributes;
37:
38: /**
39: * @author Ionut Nedelcu (ionutned@users.sourceforge.net)
40: * @version $Id: JRElementDatasetFactory.java 1581 2007-02-12 14:19:02Z shertage $
41: */
42: public class JRElementDatasetFactory extends JRBaseFactory {
43:
44: public Object createObject(Attributes atts) {
45: JRDesignElementDataset dataset = (JRDesignElementDataset) digester
46: .peek();
47:
48: setDatasetAtts(atts, dataset);
49:
50: return dataset;
51: }
52:
53: protected void setDatasetAtts(Attributes atts,
54: JRDesignElementDataset dataset) {
55: JRXmlLoader xmlLoader = (JRXmlLoader) digester.peek(digester
56: .getCount() - 1);
57: Set groupBoundDatasets = xmlLoader.getGroupBoundDatasets();
58:
59: Byte resetType = (Byte) JRXmlConstants.getResetTypeMap().get(
60: atts.getValue(JRXmlConstants.ATTRIBUTE_resetType));
61: if (resetType != null) {
62: dataset.setResetType(resetType.byteValue());
63: }
64: if (dataset.getResetType() == JRVariable.RESET_TYPE_GROUP) {
65: groupBoundDatasets.add(dataset);
66:
67: String groupName = atts
68: .getValue(JRXmlConstants.ATTRIBUTE_resetGroup);
69: if (groupName != null) {
70: JRDesignGroup group = new JRDesignGroup();
71: group.setName(groupName);
72: dataset.setResetGroup(group);
73: }
74: }
75:
76: Byte incrementType = (Byte) JRXmlConstants
77: .getResetTypeMap()
78: .get(
79: atts
80: .getValue(JRXmlConstants.ATTRIBUTE_incrementType));
81: if (incrementType != null) {
82: dataset.setIncrementType(incrementType.byteValue());
83: }
84: if (dataset.getIncrementType() == JRVariable.RESET_TYPE_GROUP) {
85: groupBoundDatasets.add(dataset);
86:
87: String groupName = atts
88: .getValue(JRXmlConstants.ATTRIBUTE_incrementGroup);
89: if (groupName != null) {
90: JRDesignGroup group = new JRDesignGroup();
91: group.setName(groupName);
92: dataset.setIncrementGroup(group);
93: }
94: }
95: }
96:
97: }
|