From 458f22c338f39ad777ad3f34b45a81b4eb8dfe8e Mon Sep 17 00:00:00 2001 From: Michael Stahl Date: Fri, 12 Dec 2014 17:47:33 +0100 Subject: reportbuilder: re-add numerous bits of dead code needed by bug fix Change-Id: Ia0a8b8ec3b4684ad6766467c8e3413f91dc8bf67 --- .../FormattedTextLayoutController.java | 81 ++++++++++++++++++++++ .../layoutprocessor/VariablesCollection.java | 7 +- 2 files changed, 87 insertions(+), 1 deletion(-) (limited to 'reportbuilder') diff --git a/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/FormattedTextLayoutController.java b/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/FormattedTextLayoutController.java index 7f1470edc866..8c1f619c8240 100644 --- a/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/FormattedTextLayoutController.java +++ b/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/FormattedTextLayoutController.java @@ -18,13 +18,18 @@ package org.libreoffice.report.pentaho.layoutprocessor; +import org.libreoffice.report.OfficeToken; import org.libreoffice.report.pentaho.OfficeNamespaces; import org.libreoffice.report.pentaho.model.FormattedTextElement; +import org.libreoffice.report.pentaho.model.OfficeDocument; +import org.libreoffice.report.pentaho.model.OfficeStyle; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.jfree.layouting.util.AttributeMap; import org.jfree.report.DataFlags; import org.jfree.report.DataSourceException; +import org.jfree.report.JFreeReportInfo; import org.jfree.report.ReportDataFactoryException; import org.jfree.report.ReportProcessingException; import org.jfree.report.expressions.FormulaExpression; @@ -47,6 +52,27 @@ public class FormattedTextLayoutController private static final Log LOGGER = LogFactory.getLog(FormattedTextLayoutController.class); + private VariablesCollection getVariablesCollection() + { + LayoutController parent = getParent(); + while (parent != null) + { + if (parent instanceof OfficeRepeatingStructureLayoutController) + { + final OfficeRepeatingStructureLayoutController orslc = + (OfficeRepeatingStructureLayoutController) parent; + if (orslc.isNormalFlowProcessing()) + { + return null; + } + + return orslc.getVariablesCollection(); + } + parent = parent.getParent(); + } + return null; + } + @Override public boolean isValueChanged() { @@ -128,6 +154,21 @@ public class FormattedTextLayoutController return join(getFlowController()); } + private OfficeDocument getDocument() + { + LayoutController parent = getParent(); + while (parent != null) + { + final Object node = parent.getNode(); + if (node instanceof OfficeDocument) + { + return (OfficeDocument) node; + } + parent = parent.getParent(); + } + return null; + } + private Element getParentTableCell() { LayoutController parent = getParent(); @@ -143,4 +184,44 @@ public class FormattedTextLayoutController return null; } + private String computeValueStyle() + { + final Element tce = getParentTableCell(); + if (tce == null) + { + return null; + } + + final String cellStyleName = (String) tce.getAttribute(OfficeNamespaces.TABLE_NS, OfficeToken.STYLE_NAME); + if (cellStyleName == null) + { + return null; + } + final OfficeDocument document = getDocument(); + if (document == null) + { + return null; + } + + final OfficeStyle style = document.getStylesCollection().getStyle("table-cell", cellStyleName); + return (String) style.getAttribute(OfficeNamespaces.STYLE_NS, "data-style-name"); + } + + private String computeValueType() + { + final Element tce = getParentTableCell(); + if (tce == null) + { + // NO particular format means: Fallback to string and hope and pray .. + throw new IllegalStateException("A formatted text element must be a child of a Table-Cell."); + } + + final String type = (String) tce.getAttribute(OfficeNamespaces.OFFICE_NS, FormatValueUtility.VALUE_TYPE); + if (type == null) + { + LOGGER.error("The Table-Cell does not have a office:value attribute defined. Your content will be messed up."); + return "string"; + } + return type; + } } diff --git a/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/VariablesCollection.java b/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/VariablesCollection.java index 961206a95590..4bb380eea236 100644 --- a/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/VariablesCollection.java +++ b/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/VariablesCollection.java @@ -68,7 +68,12 @@ public class VariablesCollection return namePrefix; } - + public String addVariable(final FormattedTextElement element) + { + variables.add(element); + final int size = variables.size(); + return namePrefix + size; + } public FormattedTextElement[] getVariables() { -- cgit