1:
31: package ;
32:
33: import ;
34:
35: import ;
36: import ;
37: import ;
38: import ;
39: import ;
40: import ;
41: import ;
42:
43:
48: public class SubReportReadHandler extends SectionReadHandler
49: {
50: private SubReport subReport;
51: private ArrayList importParameters;
52: private ArrayList exportParameters;
53: private StringReadHandler queryReadHandler;
54:
55: public SubReportReadHandler()
56: {
57: subReport = new SubReport();
58: importParameters = new ArrayList();
59: exportParameters = new ArrayList();
60: }
61:
62:
68: protected void startParsing(final Attributes attrs) throws SAXException
69: {
70: super.startParsing(attrs);
71: final String source = attrs.getValue(getUri(), "href");
72: if (source != null)
73: {
74:
75: }
76: }
77:
78:
86: protected XmlReadHandler getHandlerForChild(final String uri,
87: final String tagName,
88: final Attributes atts)
89: throws SAXException
90: {
91: final XmlReadHandler base = super.getHandlerForChild(uri, tagName, atts);
92: if (base != null)
93: {
94: return base;
95: }
96: if (FlowReportFactoryModule.NAMESPACE.equals(uri))
97: {
98: if ("import-parameter".equals(tagName))
99: {
100: final ParameterMappingReadHandler handler = new ParameterMappingReadHandler();
101: importParameters.add(handler);
102: return handler;
103: }
104: if ("export-parameter".equals(tagName))
105: {
106: final ParameterMappingReadHandler handler = new ParameterMappingReadHandler();
107: exportParameters.add(handler);
108: return handler;
109: }
110: if ("query".equals(tagName))
111: {
112: queryReadHandler = new StringReadHandler();
113: return queryReadHandler;
114: }
115: }
116: return null;
117: }
118:
119:
124: protected void doneParsing() throws SAXException
125: {
126: super.doneParsing();
127: final SubReport report = (SubReport) getElement();
128: for (int i = 0; i < importParameters.size(); i++)
129: {
130: final ParameterMappingReadHandler handler =
131: (ParameterMappingReadHandler) importParameters.get(i);
132: report.addInputParameter(handler.getName(), handler.getAlias());
133: }
134: for (int i = 0; i < exportParameters.size(); i++)
135: {
136: final ParameterMappingReadHandler handler =
137: (ParameterMappingReadHandler) exportParameters.get(i);
138: report.addExportParameter(handler.getAlias(), handler.getName());
139: }
140: if (queryReadHandler == null)
141: {
142: throw new ParseException("Query is not specified.", getLocator());
143: }
144: final String result = queryReadHandler.getResult();
145: report.setQuery(result);
146: }
147:
148: protected Element getElement()
149: {
150: return subReport;
151: }
152: }