summaryrefslogtreecommitdiff
path: root/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeGroupLayoutController.java
diff options
context:
space:
mode:
Diffstat (limited to 'reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeGroupLayoutController.java')
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeGroupLayoutController.java275
1 files changed, 136 insertions, 139 deletions
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeGroupLayoutController.java b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeGroupLayoutController.java
index 25e12d17edab..12604e931238 100644
--- a/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeGroupLayoutController.java
+++ b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeGroupLayoutController.java
@@ -27,8 +27,6 @@
* for a copy of the LGPLv3 License.
*
************************************************************************/
-
-
package com.sun.star.report.pentaho.layoutprocessor;
import com.sun.star.report.pentaho.model.OfficeGroup;
@@ -52,158 +50,157 @@ import org.jfree.report.structure.Element;
* @since 15.03.2007
*/
public class OfficeGroupLayoutController extends SectionLayoutController
- implements OfficeRepeatingStructureLayoutController
+ implements OfficeRepeatingStructureLayoutController
{
- public static final int STATE_PROCESS_REPEATING_HEADER = 0;
- public static final int STATE_PROCESS_REPEATING_FOOTER = 1;
- public static final int STATE_PROCESS_NORMAL_FLOW = 3;
- private boolean waitForJoin;
- private int state;
- private VariablesCollection variablesCollection;
- private boolean repeatHeader;
- private boolean repeatFooter;
-
- public OfficeGroupLayoutController()
- {
- }
-
-
- /**
- * 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 = OfficeGroupLayoutController.STATE_PROCESS_REPEATING_HEADER;
- variablesCollection = new VariablesCollection(computeVariablesPrefix());
-
-
- final OfficeGroup group = (OfficeGroup) getElement();
- final OfficeGroupSection header = group.getHeader();
- repeatHeader = (header != null && header.isRepeatSection());
-
- final OfficeGroupSection footer = group.getFooter();
- repeatFooter = (footer != null && footer.isRepeatSection());
- }
-
-
- protected LayoutController processContent(final ReportTarget target)
- throws DataSourceException, ReportProcessingException,
- ReportDataFactoryException
- {
- if (state == OfficeGroupLayoutController.STATE_PROCESS_REPEATING_HEADER)
+
+ public static final int STATE_PROCESS_REPEATING_HEADER = 0;
+ public static final int STATE_PROCESS_REPEATING_FOOTER = 1;
+ public static final int STATE_PROCESS_NORMAL_FLOW = 3;
+ private boolean waitForJoin;
+ private int state;
+ private VariablesCollection variablesCollection;
+ private boolean repeatHeader;
+ private boolean repeatFooter;
+
+ public OfficeGroupLayoutController()
+ {
+ }
+
+ /**
+ * 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 = OfficeGroupLayoutController.STATE_PROCESS_REPEATING_HEADER;
+ variablesCollection = new VariablesCollection(computeVariablesPrefix());
- final OfficeGroupLayoutController controller =
- (OfficeGroupLayoutController) clone();
- controller.state =
- OfficeGroupLayoutController.STATE_PROCESS_REPEATING_FOOTER;
- if (!repeatHeader)
- {
- return controller;
- }
+ final OfficeGroup group = (OfficeGroup) getElement();
+ final OfficeGroupSection header = group.getHeader();
+ repeatHeader = (header != null && header.isRepeatSection());
- final OfficeGroup group = (OfficeGroup) getElement();
- final OfficeGroupSection header = group.getHeader();
- controller.waitForJoin = true;
- return processChild(controller, header, getFlowController());
+ final OfficeGroupSection footer = group.getFooter();
+ repeatFooter = (footer != null && footer.isRepeatSection());
}
- if (state == OfficeGroupLayoutController.STATE_PROCESS_REPEATING_FOOTER)
+ protected LayoutController processContent(final ReportTarget target)
+ throws DataSourceException, ReportProcessingException,
+ ReportDataFactoryException
{
+ if (state == OfficeGroupLayoutController.STATE_PROCESS_REPEATING_HEADER)
+ {
+
+ final OfficeGroupLayoutController controller =
+ (OfficeGroupLayoutController) clone();
+ controller.state =
+ OfficeGroupLayoutController.STATE_PROCESS_REPEATING_FOOTER;
+
+ if (!repeatHeader)
+ {
+ return controller;
+ }
+
+ final OfficeGroup group = (OfficeGroup) getElement();
+ final OfficeGroupSection header = group.getHeader();
+ controller.waitForJoin = true;
+ return processChild(controller, header, getFlowController());
+ }
+
+ if (state == OfficeGroupLayoutController.STATE_PROCESS_REPEATING_FOOTER)
+ {
+
+ final OfficeGroupLayoutController controller =
+ (OfficeGroupLayoutController) clone();
+ controller.state = OfficeGroupLayoutController.STATE_PROCESS_NORMAL_FLOW;
+
+ if (!repeatFooter)
+ {
+ return controller;
+ }
+
+ final OfficeGroup group = (OfficeGroup) getElement();
+ final OfficeGroupSection footer = group.getFooter();
+ controller.waitForJoin = true;
+ return processChild(controller, footer, getFlowController());
+ }
+
+ return super.processContent(target);
+ }
- final OfficeGroupLayoutController controller =
- (OfficeGroupLayoutController) clone();
- controller.state = OfficeGroupLayoutController.STATE_PROCESS_NORMAL_FLOW;
+ /**
+ * 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 OfficeGroupLayoutController derived = (OfficeGroupLayoutController) clone();
+ derived.setProcessingState(ElementLayoutController.OPENED);
+ derived.setFlowController(flowController);
+ derived.waitForJoin = false;
+ return derived;
+ }
+ return super.join(flowController);
+ }
- if (!repeatFooter)
- {
- return controller;
- }
+ public boolean isNormalFlowProcessing()
+ {
+ return state == OfficeGroupLayoutController.STATE_PROCESS_NORMAL_FLOW;
+ }
- final OfficeGroup group = (OfficeGroup) getElement();
- final OfficeGroupSection footer = group.getFooter();
- controller.waitForJoin = true;
- return processChild(controller, footer, getFlowController());
+ private String computeVariablesPrefix()
+ {
+ int count = 0;
+ LayoutController lc = this;
+ while (lc != null)
+ {
+ if (lc instanceof OfficeGroupLayoutController)
+ {
+ count++;
+ }
+ lc = lc.getParent();
+ }
+ return "auto_group_" + count + "_";
}
- return super.processContent(target);
- }
-
- /**
- * 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)
+ public VariablesCollection getVariablesCollection()
{
- final OfficeGroupLayoutController derived = (OfficeGroupLayoutController) clone();
- derived.setProcessingState(ElementLayoutController.OPENED);
- derived.setFlowController(flowController);
- derived.waitForJoin = false;
- return derived;
+ return variablesCollection;
}
- return super.join(flowController);
- }
-
- public boolean isNormalFlowProcessing ()
- {
- return state == OfficeGroupLayoutController.STATE_PROCESS_NORMAL_FLOW;
- }
-
- private String computeVariablesPrefix()
- {
- int count = 0;
- LayoutController lc = this;
- while (lc != null)
+
+ protected AttributeMap computeAttributes(final FlowController fc, final Element element, final ReportTarget target)
+ throws DataSourceException
{
- if (lc instanceof OfficeGroupLayoutController)
- {
- count++;
- }
- lc = lc.getParent();
+ final AttributeMap map = new AttributeMap(super.computeAttributes(fc, element, target));
+ final String value = String.valueOf(repeatHeader || repeatFooter);
+ map.setAttribute(JFreeReportInfo.REPORT_NAMESPACE, "repeating-header-or-footer", value);
+ map.makeReadOnly();
+ return map;
}
- return "auto_group_" + count + "_";
- }
-
- public VariablesCollection getVariablesCollection()
- {
- return variablesCollection;
- }
-
- protected AttributeMap computeAttributes(final FlowController fc, final Element element, final ReportTarget target)
- throws DataSourceException
- {
- final AttributeMap map = new AttributeMap( super.computeAttributes(fc, element, target) );
- final String value = String.valueOf(repeatHeader || repeatFooter);
- map.setAttribute(JFreeReportInfo.REPORT_NAMESPACE, "repeating-header-or-footer", value);
- map.makeReadOnly();
- return map;
- }
}