diff options
author | Kurt Zenker <kz@openoffice.org> | 2008-05-05 13:35:54 +0000 |
---|---|---|
committer | Kurt Zenker <kz@openoffice.org> | 2008-05-05 13:35:54 +0000 |
commit | 0a1f12aebb5c167bdff4aa5c3d944d7d869ad09c (patch) | |
tree | 3d031a759b10fdf90cc31119b444567b54c06111 /reportdesign | |
parent | 64db760e0d54d64bf6fa3a5ee3ffab0a543d7fcc (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')
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); + } } |