summaryrefslogtreecommitdiff
path: root/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeDetailLayoutController.java
diff options
context:
space:
mode:
authorOliver Bolte <obo@openoffice.org>2009-03-04 15:27:10 +0000
committerOliver Bolte <obo@openoffice.org>2009-03-04 15:27:10 +0000
commit9544c14f4a931d8d8b2e66a6cb87fb53d4505cd4 (patch)
tree29b05df340e2c19c9e60947d63bf7b425cfb95c2 /reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeDetailLayoutController.java
parent4f4fe6aa7203aac35a774108f4880553df5b93a4 (diff)
CWS-TOOLING: integrate CWS rptfix04
2009-02-23 01:59:54 +0100 rene r268341 : #i10000# fix system-jfreereport build 2009-02-13 10:17:16 +0100 oj r267696 : #i98549# integrate zip form pentaho package 2009-02-03 14:48:34 +0100 oj r267330 : set formula locale to doc locale 2009-02-03 14:45:54 +0100 oj r267329 : set formula locale to doc locale 2009-02-03 11:50:03 +0100 oj r267311 : set formula locale to doc locale 2009-02-03 08:55:02 +0100 oj r267297 : unix line ends 2009-01-28 11:21:24 +0100 rene r267043 : #i98549# s/DESIGN/BUILDER/ also for Sun 2009-01-27 17:17:50 +0100 rene r267012 : merge builfix from trunk 2009-01-27 14:16:30 +0100 rene r266991 : #i10000# fix rebase which left out the whole changes in former config_office; sync variable names (s/LIB_//) and some other things 2009-01-27 10:01:09 +0100 oj r266959 : CWS-TOOLING: rebase CWS rptfix04 to trunk@266944 (milestone: DEV300:m40) 2009-01-27 08:00:16 +0100 oj r266951 : conflict in mergeinfo 2009-01-26 12:23:03 +0100 oj r266914 : #i98383# fix grouping 2009-01-23 22:03:03 +0100 rene r266852 : fix --enable-report-builder description 2009-01-23 10:37:27 +0100 oj r266778 : set escape processing when set at query 2009-01-23 09:17:16 +0100 fs r266770 : add CWS name to version 2009-01-21 13:57:35 +0100 oj r266669 : merge for build bots 2009-01-20 09:07:24 +0100 oj r266552 : CWS-TOOLING: rebase CWS rptfix04 to trunk@266428 (milestone: DEV300:m39) 2009-01-20 08:34:16 +0100 oj r266551 : rebase 2009-01-20 08:33:59 +0100 oj r266550 : rebase 2009-01-20 08:32:50 +0100 oj r266549 : rebase 2009-01-20 08:30:13 +0100 oj r266548 : rebase 2009-01-20 08:29:30 +0100 oj r266547 : rebase 2009-01-20 08:22:33 +0100 oj r266546 : merge short cuts from dba31g 2009-01-19 21:04:08 +0100 rene r266525 : #i10000# we need officecfg for component-update.dtd 2009-01-19 21:01:26 +0100 rene r266524 : #i10000# fix import 2009-01-19 20:26:20 +0100 rene r266523 : #i10000# remove svn conflicts markers; fix build 2009-01-19 14:23:56 +0100 rene r266496 : libbase depends on apache-commons.. 2009-01-19 14:00:42 +0100 oj r266495 : merge from m39 2009-01-19 12:39:00 +0100 oj r266489 : CWS-TOOLING: rebase CWS rptfix04 to trunk@266428 (milestone: DEV300:m39) 2009-01-16 11:47:04 +0100 oj r266410 : #i97560# add , between expressions 2009-01-09 17:11:38 +0100 rene r266103 : don't show "checking which Apache commons-* libs to use" when we neither build the wiki editor nor the SRB 2009-01-09 16:48:02 +0100 rene r266099 : #i10000# reportbuilder needs apache-commons 2009-01-09 15:43:35 +0100 oj r266093 : use of new nspaces 2009-01-09 15:41:34 +0100 oj r266092 : use of new nspaces 2009-01-09 14:44:15 +0100 rene r266088 : fix typo/description 2009-01-09 12:48:51 +0100 rene r266074 : #i10000# fix install 2009-01-09 11:52:53 +0100 rene r266070 : #i10000# more build fixes 2009-01-09 10:53:13 +0100 rene r266062 : #i10000# ENABLE_REPORTBUILDER also in set_soenv.in, fix typo 2009-01-09 10:40:24 +0100 rene r266060 : #i10000# configure fix for new reportbuilder module, typo fix at libfonts 2009-01-09 10:01:52 +0100 rene r266055 : #i10000# adapt to current configure.in 2009-01-09 09:59:32 +0100 oj r266054 : add new pentaho jars 2009-01-09 09:47:54 +0100 oj r266049 : merge changes from DEV300_m39 2009-01-09 09:14:08 +0100 oj r266048 : merge from DEV300_m39 2009-01-09 08:28:43 +0100 oj r266045 : merge changes from dba31g 2009-01-09 07:58:10 +0100 oj r266044 : replace JCOMMON with LIB 2009-01-08 13:42:24 +0100 oj r266005 : move ext to reportbuilder 2009-01-08 13:41:38 +0100 oj r266004 : add dep for license 2009-01-08 13:27:56 +0100 oj r266001 : new module for Sun report Builder extension 2009-01-07 12:58:13 +0100 oj r265960 : CWS-TOOLING: rebase CWS rptfix04 to trunk@265758 (milestone: DEV300:m38) 2008-12-15 13:47:18 +0100 oj r265481 : new pentaho resources 2008-12-15 10:04:01 +0100 oj r265462 : integrate new pentaho sources 2008-12-15 10:02:54 +0100 oj r265461 : #i96888# fix date time function 2008-12-12 09:23:29 +0100 oj r265389 : #97174# check of res < 0 removed 2008-12-12 09:15:54 +0100 oj r265388 : #i9716# fix for DayFunction 2008-12-11 12:24:24 +0100 oj r265281 : integrate new pentaho sources 2008-12-11 11:49:16 +0100 oj r265273 : integrate new pentaho sources 2008-12-11 09:34:07 +0100 oj r265248 : integrate new pentaho sources 2008-12-10 18:58:06 +0100 oj r265227 : introduce new pentaho sources 2008-12-10 18:56:43 +0100 oj r265226 : introduce new pentaho sources 2008-12-10 18:54:26 +0100 oj r265225 : introduce new pentaho sources 2008-12-10 18:42:59 +0100 oj r265221 : introduce new pentaho sources 2008-12-10 17:24:23 +0100 oj r265212 : introduce new pentaho sources 2008-12-10 17:24:07 +0100 oj r265211 : new pentaho sources 2008-12-10 17:23:00 +0100 oj r265210 : introduce new pentaho sources
Diffstat (limited to 'reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeDetailLayoutController.java')
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeDetailLayoutController.java164
1 files changed, 164 insertions, 0 deletions
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeDetailLayoutController.java b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeDetailLayoutController.java
new file mode 100644
index 000000000000..9060ed64981d
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeDetailLayoutController.java
@@ -0,0 +1,164 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: OfficeDetailLayoutController.java,v $
+ * $Revision: 1.4 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+
+package com.sun.star.report.pentaho.layoutprocessor;
+
+import com.sun.star.report.pentaho.model.VariablesDeclarationSection;
+import org.jfree.report.DataSourceException;
+import org.jfree.report.ReportDataFactoryException;
+import org.jfree.report.ReportProcessingException;
+import org.jfree.report.ReportData;
+import org.jfree.report.data.GlobalMasterRow;
+import org.jfree.report.data.ReportDataRow;
+import org.jfree.report.flow.FlowController;
+import org.jfree.report.flow.ReportTarget;
+import org.jfree.report.flow.layoutprocessor.ElementLayoutController;
+import org.jfree.report.flow.layoutprocessor.LayoutController;
+import org.jfree.report.flow.layoutprocessor.SectionLayoutController;
+
+/**
+ * Creation-Date: 11.04.2007, 11:04:02
+ *
+ * @author Thomas Morgner
+ */
+public class OfficeDetailLayoutController extends SectionLayoutController
+{
+ public static final int STATE_PROCESS_VARIABLES = 2;
+ public static final int STATE_PROCESS_NORMAL_FLOW = 3;
+
+ private boolean waitForJoin;
+ private int state;
+
+ public OfficeDetailLayoutController()
+ {
+ }
+
+ /**
+ * Initializes the layout controller. This method is called exactly once. It
+ * is the creators responsibility to call this method.
+ * <p/>
+ * Calling initialize after the first advance must result in a
+ * IllegalStateException.
+ *
+ * @param node the currently processed object or layout node.
+ * @param flowController the current flow controller.
+ * @param parent the parent layout controller that was responsible for
+ * instantiating this controller.
+ * @throws org.jfree.report.DataSourceException
+ * if there was a problem reading data from the datasource.
+ * @throws org.jfree.report.ReportProcessingException
+ * if there was a general problem during the report processing.
+ * @throws org.jfree.report.ReportDataFactoryException
+ * if a query failed.
+ */
+ public void initialize(final Object node,
+ final FlowController flowController,
+ final LayoutController parent)
+ throws DataSourceException, ReportDataFactoryException,
+ ReportProcessingException
+ {
+ super.initialize(node, flowController, parent);
+ state = OfficeDetailLayoutController.STATE_PROCESS_VARIABLES;
+ }
+
+ /**
+ * This method is called for each newly instantiated layout controller. The returned layout controller instance should
+ * have a processing state of either 'OPEN' or 'FINISHING' depending on whether there is any content or any child
+ * nodes to process.
+ *
+ * @param target the report target that receives generated events.
+ * @return the new layout controller instance representing the new state.
+ * @throws org.jfree.report.DataSourceException
+ * if there was a problem reading data from the datasource.
+ * @throws org.jfree.report.ReportProcessingException
+ * if there was a general problem during the report processing.
+ * @throws org.jfree.report.ReportDataFactoryException
+ * if a query failed.
+ */
+ protected LayoutController startElement(final ReportTarget target)
+ throws DataSourceException, ReportProcessingException, ReportDataFactoryException
+ {
+ final FlowController fc = getFlowController();
+ final GlobalMasterRow masterRow = fc.getMasterRow();
+ final ReportDataRow reportDataRow = masterRow.getReportDataRow();
+ final ReportData reportData = reportDataRow.getReportData();
+ if (!reportData.isReadable())
+ {
+ reportData.isReadable();
+ // If this report has no data, then do not print the detail section. The detail section
+ // is the only section that behaves this way, and for now this is only done in the OO-implementation
+ final SectionLayoutController derived = (SectionLayoutController) clone();
+ derived.setProcessingState(ElementLayoutController.FINISHED);
+ derived.setFlowController(fc);
+ return derived;
+ }
+
+ if (state == OfficeDetailLayoutController.STATE_PROCESS_VARIABLES)
+ {
+ final VariablesDeclarationSection variables = new VariablesDeclarationSection();
+ final OfficeDetailLayoutController controller = (OfficeDetailLayoutController) clone();
+ controller.state = OfficeDetailLayoutController.STATE_PROCESS_NORMAL_FLOW;
+ controller.waitForJoin = true;
+ return processChild(controller, variables, fc);
+ }
+
+ return super.startElement(target);
+ }
+
+ protected void resetSectionForRepeat()
+ {
+ super.resetSectionForRepeat();
+ state = STATE_PROCESS_VARIABLES;
+ }
+
+ /**
+ * Joins with a delegated process flow. This is generally called from a child
+ * flow and should *not* (I mean it!) be called from outside. If you do,
+ * you'll suffer.
+ *
+ * @param flowController the flow controller of the parent.
+ * @return the joined layout controller that incorperates all changes from the
+ * delegate.
+ */
+ public LayoutController join(final FlowController flowController)
+ {
+ if (waitForJoin)
+ {
+ final OfficeDetailLayoutController derived = (OfficeDetailLayoutController) clone();
+ derived.setProcessingState(ElementLayoutController.NOT_STARTED);
+ derived.setFlowController(flowController);
+ derived.waitForJoin = false;
+ return derived;
+ }
+ return super.join(flowController);
+ }
+
+}