summaryrefslogtreecommitdiff
path: root/reportdesign
diff options
context:
space:
mode:
authorKurt Zenker <kz@openoffice.org>2008-05-05 13:35:54 +0000
committerKurt Zenker <kz@openoffice.org>2008-05-05 13:35:54 +0000
commit0a1f12aebb5c167bdff4aa5c3d944d7d869ad09c (patch)
tree3d031a759b10fdf90cc31119b444567b54c06111 /reportdesign
parent64db760e0d54d64bf6fa3a5ee3ffab0a543d7fcc (diff)
INTEGRATION: CWS dba30beta (1.3.6); FILE MERGED
2008/04/22 10:30:28 oj 1.3.6.1: #i88503# merge changes from rptchart02
Diffstat (limited to 'reportdesign')
-rw-r--r--reportdesign/java/com/sun/star/report/pentaho/output/OleProducer.java30
-rw-r--r--reportdesign/java/com/sun/star/report/pentaho/output/StylesWriter.java6
-rw-r--r--reportdesign/java/com/sun/star/report/pentaho/output/chart/ChartRawReportProcessor.java15
-rw-r--r--reportdesign/java/com/sun/star/report/pentaho/output/chart/ChartRawReportTarget.java188
4 files changed, 210 insertions, 29 deletions
diff --git a/reportdesign/java/com/sun/star/report/pentaho/output/OleProducer.java b/reportdesign/java/com/sun/star/report/pentaho/output/OleProducer.java
index f2e56d4e3d04..7d2be73f5870 100644
--- a/reportdesign/java/com/sun/star/report/pentaho/output/OleProducer.java
+++ b/reportdesign/java/com/sun/star/report/pentaho/output/OleProducer.java
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: OleProducer.java,v $
- * $Revision: 1.3 $
+ * $Revision: 1.4 $
*
* This file is part of OpenOffice.org.
*
@@ -39,8 +39,10 @@ import com.sun.star.report.ReportExecutionException;
import com.sun.star.report.ReportJobDefinition;
import com.sun.star.report.pentaho.DefaultNameGenerator;
import com.sun.star.report.pentaho.PentahoReportEngine;
+import com.sun.star.report.pentaho.PentahoReportEngineMetaData;
import java.io.IOException;
-import java.util.Vector;
+import java.util.List;
+import org.jfree.util.Log;
/**
*
@@ -48,11 +50,11 @@ import java.util.Vector;
*/
public class OleProducer {
- private InputRepository inputRepository;
- private OutputRepository outputRepository;
- private DefaultNameGenerator nameGenerator;
- private DataSourceFactory dataSourceFactory;
- private ImageService imageService;
+ private final InputRepository inputRepository;
+ private final OutputRepository outputRepository;
+ private final DefaultNameGenerator nameGenerator;
+ private final DataSourceFactory dataSourceFactory;
+ private final ImageService imageService;
public OleProducer(final InputRepository inputRepository,
@@ -71,14 +73,14 @@ public class OleProducer {
this.imageService = imageService;
}
- String produceOle(final String source,final Vector masterColumns,final Vector masterValues,final Vector detailColumns) {
+ String produceOle(final String source,final List masterColumns,final List masterValues,final List detailColumns) {
InputRepository subInputRepository = null;
OutputRepository subOutputRepository = null;
String output = "";
try {
subInputRepository = inputRepository.openInputRepository(source);
- output = nameGenerator.generateStorageName("Object ", null);
- subOutputRepository = outputRepository.openOutputRepository(output);
+ output = nameGenerator.generateStorageName("Object", null);
+ subOutputRepository = outputRepository.openOutputRepository(output, PentahoReportEngineMetaData.OPENDOCUMENT_CHART);
try {
final PentahoReportEngine engine = new PentahoReportEngine();
@@ -89,7 +91,7 @@ public class OleProducer {
procParms.setProperty(ReportEngineParameterNames.OUTPUT_REPOSITORY, subOutputRepository);
procParms.setProperty(ReportEngineParameterNames.INPUT_NAME, "content.xml");
procParms.setProperty(ReportEngineParameterNames.OUTPUT_NAME, "content.xml");
- procParms.setProperty(ReportEngineParameterNames.CONTENT_TYPE, "application/vnd.oasis.opendocument.chart");
+ procParms.setProperty(ReportEngineParameterNames.CONTENT_TYPE, PentahoReportEngineMetaData.OPENDOCUMENT_CHART);
procParms.setProperty(ReportEngineParameterNames.INPUT_DATASOURCE_FACTORY, dataSourceFactory);
procParms.setProperty(ReportEngineParameterNames.INPUT_MASTER_COLUMNS, masterColumns);
procParms.setProperty(ReportEngineParameterNames.INPUT_MASTER_VALUES, masterValues);
@@ -98,12 +100,12 @@ public class OleProducer {
engine.createJob(definition).execute();
} catch (ReportExecutionException ex) {
- ex.printStackTrace();
+ Log.error("ReportProcessing failed", ex);
} catch (IOException ex) {
- ex.printStackTrace();
+ Log.error("ReportProcessing failed", ex);
}
} catch (IOException ex) {
- ex.printStackTrace();
+ Log.error("ReportProcessing failed", ex);
} finally {
if (subInputRepository != null) {
subInputRepository.closeInputRepository();
diff --git a/reportdesign/java/com/sun/star/report/pentaho/output/StylesWriter.java b/reportdesign/java/com/sun/star/report/pentaho/output/StylesWriter.java
index 9289dac5bdec..ad0f26f46041 100644
--- a/reportdesign/java/com/sun/star/report/pentaho/output/StylesWriter.java
+++ b/reportdesign/java/com/sun/star/report/pentaho/output/StylesWriter.java
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: StylesWriter.java,v $
- * $Revision: 1.3 $
+ * $Revision: 1.4 $
*
* This file is part of OpenOffice.org.
*
@@ -70,8 +70,8 @@ import org.jfree.xmlns.writer.XmlWriterSupport;
*/
public class StylesWriter
{
- private XmlWriter xmlWriter;
- private boolean writeOpeningTag;
+ private final XmlWriter xmlWriter;
+ private final boolean writeOpeningTag;
public StylesWriter(final Writer writer)
{
diff --git a/reportdesign/java/com/sun/star/report/pentaho/output/chart/ChartRawReportProcessor.java b/reportdesign/java/com/sun/star/report/pentaho/output/chart/ChartRawReportProcessor.java
index 7bb344b11ceb..8cb438c81a09 100644
--- a/reportdesign/java/com/sun/star/report/pentaho/output/chart/ChartRawReportProcessor.java
+++ b/reportdesign/java/com/sun/star/report/pentaho/output/chart/ChartRawReportProcessor.java
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: ChartRawReportProcessor.java,v $
- * $Revision: 1.3 $
+ * $Revision: 1.4 $
*
* This file is part of OpenOffice.org.
*
@@ -49,11 +49,11 @@ import org.jfree.resourceloader.ResourceManager;
public class ChartRawReportProcessor extends SinglePassReportProcessor
{
- private OutputRepository outputRepository;
- private String targetName;
- private InputRepository inputRepository;
- private ImageService imageService;
- private DataSourceFactory dataSourceFactory;
+ private final OutputRepository outputRepository;
+ private final String targetName;
+ private final InputRepository inputRepository;
+ private final ImageService imageService;
+ private final DataSourceFactory dataSourceFactory;
public ChartRawReportProcessor(final InputRepository inputRepository,
final OutputRepository outputRepository,
@@ -102,9 +102,6 @@ public class ChartRawReportProcessor extends SinglePassReportProcessor
ReportProcessingException
{
final ReportTarget reportTarget = createReportTarget(job);
- // first run: collect table cell sizes for all tables
- processReportRun(job, reportTarget);
- // second run: uses table cell data to output a single uniform table
processReportRun(job, reportTarget);
}
}
diff --git a/reportdesign/java/com/sun/star/report/pentaho/output/chart/ChartRawReportTarget.java b/reportdesign/java/com/sun/star/report/pentaho/output/chart/ChartRawReportTarget.java
index 8a5a1729028a..6c46ea7d3da1 100644
--- a/reportdesign/java/com/sun/star/report/pentaho/output/chart/ChartRawReportTarget.java
+++ b/reportdesign/java/com/sun/star/report/pentaho/output/chart/ChartRawReportTarget.java
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: ChartRawReportTarget.java,v $
- * $Revision: 1.3 $
+ * $Revision: 1.4 $
*
* This file is part of OpenOffice.org.
*
@@ -33,20 +33,37 @@ import com.sun.star.report.DataSourceFactory;
import com.sun.star.report.ImageService;
import com.sun.star.report.InputRepository;
import com.sun.star.report.OutputRepository;
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.OfficeToken;
import com.sun.star.report.pentaho.PentahoReportEngineMetaData;
-import com.sun.star.report.pentaho.output.spreadsheet.SpreadsheetRawReportTarget;
+import com.sun.star.report.pentaho.output.OfficeDocumentReportTarget;
+import java.io.IOException;
+import org.jfree.layouting.util.AttributeMap;
+import org.jfree.report.DataFlags;
+import org.jfree.report.DataSourceException;
import org.jfree.report.ReportProcessingException;
import org.jfree.report.flow.ReportJob;
+import org.jfree.report.flow.ReportTargetUtil;
import org.jfree.resourceloader.ResourceKey;
import org.jfree.resourceloader.ResourceManager;
+import org.jfree.util.Log;
+import org.jfree.util.PrintStreamLogTarget;
+import org.jfree.xmlns.common.AttributeList;
+import org.jfree.xmlns.writer.XmlWriter;
+import org.jfree.xmlns.writer.XmlWriterSupport;
/**
*
* @author Ocke Janssen
*/
-public class ChartRawReportTarget extends SpreadsheetRawReportTarget
+public class ChartRawReportTarget extends OfficeDocumentReportTarget
{
+ private boolean inFilterElements = false;
+ private boolean tableRowsStarted = false;
+ private int tableCount = 0;
+ private int closeTags = 0;
+
public ChartRawReportTarget(final ReportJob reportJob,
final ResourceManager resourceManager,
final ResourceKey baseResource,
@@ -58,6 +75,7 @@ public class ChartRawReportTarget extends SpreadsheetRawReportTarget
throws ReportProcessingException
{
super(reportJob, resourceManager, baseResource, inputRepository, outputRepository, target, imageService, dataSourceFactory);
+ Log.getInstance().addTarget(new PrintStreamLogTarget());
}
protected String getTargetMimeType()
@@ -74,4 +92,168 @@ public class ChartRawReportTarget extends SpreadsheetRawReportTarget
{
return "raw/" + PentahoReportEngineMetaData.OPENDOCUMENT_CHART;
}
+
+ protected void startContent(final AttributeMap attrs) throws IOException, DataSourceException, ReportProcessingException
+ {
+ inFilterElements = false;
+ closeTags = 0;
+ tableCount = 0;
+ final XmlWriter xmlWriter = getXmlWriter();
+ xmlWriter.writeTag(OfficeNamespaces.OFFICE_NS, getStartContent(), null, XmlWriterSupport.OPEN);
+ ++closeTags;
+ }
+
+ protected void endContent(final AttributeMap attrs) throws IOException, DataSourceException, ReportProcessingException
+ {
+ final XmlWriter xmlWriter = getXmlWriter();
+ //xmlWriter.writeCloseTag();
+ while (closeTags > 0)
+ {
+ xmlWriter.writeCloseTag();
+ --closeTags;
+ }
+ }
+
+ protected void startReportSection(final AttributeMap attrs, final int role)
+ throws IOException, DataSourceException, ReportProcessingException
+ {
+ }
+
+ protected void endReportSection(final AttributeMap attrs, final int role)
+ throws IOException, DataSourceException, ReportProcessingException
+ {
+ }
+
+ protected void startOther(final AttributeMap attrs) throws IOException, DataSourceException, ReportProcessingException
+ {
+ final String namespace = ReportTargetUtil.getNamespaceFromAttribute(attrs);
+ if (!isFilteredNamespace(namespace))
+ {
+ final String elementType = ReportTargetUtil.getElemenTypeFromAttribute(attrs);
+ try
+ {
+ processElement(attrs, namespace, elementType);
+ }
+ catch (IOException e)
+ {
+ throw new ReportProcessingException("Failed", e);
+ }
+ }
+ }
+
+ private boolean isFiltered(final String elementType)
+ {
+ return OfficeToken.TABLE_HEADER_COLUMNS.equals(elementType) ||
+ OfficeToken.TABLE_HEADER_ROWS.equals(elementType) ||
+ OfficeToken.TABLE_COLUMNS.equals(elementType);
+ }
+
+ protected void endOther(final AttributeMap attrs) throws IOException, DataSourceException, ReportProcessingException
+ {
+ if ( tableRowsStarted && getCurrentRole() == ROLE_TEMPLATE)
+ {
+ return;
+ }
+ final String namespace = ReportTargetUtil.getNamespaceFromAttribute(attrs);
+ if (!isFilteredNamespace(namespace))
+ {
+ final String elementType = ReportTargetUtil.getElemenTypeFromAttribute(attrs);
+ // if this is the report namespace, write out a table definition ..
+ if (OfficeNamespaces.TABLE_NS.equals(namespace))
+ {
+ if (OfficeToken.TABLE.equals(elementType) ||
+ OfficeToken.TABLE_ROWS.equals(elementType))
+ {
+ return;
+ }
+ else if (isFiltered(elementType))
+ {
+ inFilterElements = false;
+ if (tableCount > 1)
+ {
+ return;
+ }
+ }
+ }
+ else if (OfficeNamespaces.CHART_NS.equals(namespace) && "chart".equals(elementType))
+ {
+ return;
+ }
+ if (inFilterElements && tableCount > 1)
+ {
+ return;
+ }
+ final XmlWriter xmlWriter = getXmlWriter();
+ xmlWriter.writeCloseTag();
+ --closeTags;
+ }
+ }
+
+ public void processContent(final DataFlags value)
+ throws DataSourceException, ReportProcessingException
+ {
+ if ( !(tableRowsStarted && getCurrentRole() == ROLE_TEMPLATE))
+ {
+ super.processContent(value);
+ }
+ }
+
+ private void processElement(final AttributeMap attrs, final String namespace, final String elementType)
+ throws IOException, ReportProcessingException
+ {
+ if ( tableRowsStarted && getCurrentRole() == ROLE_TEMPLATE)
+ {
+ return;
+ }
+ if (OfficeNamespaces.TABLE_NS.equals(namespace))
+ {
+ if (OfficeToken.TABLE.equals(elementType))
+ {
+ tableCount += 1;
+ if (tableCount > 1)
+ {
+ return;
+ }
+ }
+ else if (OfficeToken.TABLE_ROWS.equals(elementType))
+ {
+ if (tableCount > 1)
+ {
+ return;
+ }
+ tableRowsStarted = true;
+ }
+ else if (isFiltered(elementType))
+ {
+ inFilterElements = true;
+ if (tableCount > 1)
+ {
+ return;
+ }
+ }
+ }
+ if (inFilterElements && tableCount > 1)
+ {
+ return;
+ }
+
+ // All styles have to be processed or you will loose the paragraph-styles and inline text-styles.
+ // ..
+ performStyleProcessing(attrs);
+
+ final AttributeList attrList = buildAttributeList(attrs);
+ final XmlWriter xmlWriter = getXmlWriter();
+ xmlWriter.writeTag(namespace, elementType, attrList, XmlWriter.OPEN);
+ ++closeTags;
+ // System.out.println("elementType = " + elementType);
+ }
+ // /////////////////////////////////////////////////////////////////////////
+ public void processText(final String text) throws DataSourceException, ReportProcessingException
+ {
+ if (inFilterElements && tableCount > 1)
+ {
+ return;
+ }
+ super.processText(text);
+ }
}