01: //The Salmon Open Framework for Internet Applications (SOFIA)
02: //Copyright (C) 1999 - 2004, Salmon LLC
03: //
04: //This program is free software; you can redistribute it and/or
05: //modify it under the terms of the GNU General Public License version 2
06: //as published by the Free Software Foundation;
07: //
08: //This program is distributed in the hope that it will be useful,
09: //but WITHOUT ANY WARRANTY; without even the implied warranty of
10: //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11: //GNU General Public License for more details.
12: //
13: //You should have received a copy of the GNU General Public License
14: //along with this program; if not, write to the Free Software
15: //Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
16: //
17: //For more information please visit http://www.salmonllc.com
18: package com.salmonllc.examples.example20;
19:
20: import com.salmonllc.html.events.SubReportEvent;
21: import com.salmonllc.html.events.SubReportListener;
22: import com.salmonllc.jsp.JspController;
23: import com.salmonllc.util.MessageLog;
24:
25: /**
26: * NestedController: a SOFIA generated controller
27: */
28: public class NestedController extends JspController implements
29: SubReportListener {
30: public com.salmonllc.jsp.JspSubReportContainer _subreport1;
31:
32: public com.salmonllc.examples.example20.ExampleSourceCodeModel _joinDatasource;
33: public com.salmonllc.examples.example20.ExampleModel _examplesDatasource;
34: public com.salmonllc.examples.example20.SourceCodeModel _sourceCodeDatasource;
35:
36: /**
37: * Initialize the page. Set up listeners and perform other initialization activities.
38: */
39: public void initialize() {
40: try {
41: _examplesDatasource.retrieve();
42: _joinDatasource.retrieve();
43: } catch (Exception e) {
44: MessageLog.writeErrorMessage(
45: "NestedController.initialize()", e, this );
46: }
47: //The report uses a subreport container. We need to register a listener so the controller
48: //gets notified when a subreport is about to print. This allow the controller to load
49: //that data for the subreport datasource for each row in the main report.
50: _subreport1.addSubReportListener(this );
51: }
52:
53: /**
54: * Get's fired right before a sub report will be renderd. Retrieve the data from the subreport using data in the main data table row as selection criteria.
55: */
56: public void subReportInvoked(SubReportEvent evt) throws Exception {
57: int exampleID = ((ExampleModel) evt.getDataStoreBuffer())
58: .getExamplesExampleId(evt.getRow());
59: _sourceCodeDatasource
60: .retrieve(SourceCodeModel.SOURCE_CODE_EXAMPLE_ID + "="
61: + exampleID);
62:
63: }
64:
65: }
|