public void testRun() throws Exception { final URL url = getClass().getResource("Pre-492.prpt"); assertNotNull(url); final ResourceManager resourceManager = new ResourceManager(); resourceManager.registerDefaults(); final Resource directly = resourceManager.createDirectly(url, MasterReport.class); final MasterReport report = (MasterReport) directly.getResource(); try { final ZipRepository zipRepository = new ZipRepository(new NullOutputStream()); final ContentLocation root = zipRepository.getRoot(); final ContentLocation data = RepositoryUtilities.createLocation( zipRepository, RepositoryUtilities.splitPath("data", "/")); final DebugFlowOutputProcessor outputProcessor = new DebugFlowOutputProcessor(); final HtmlPrinter printer = new AllItemsHtmlPrinter(report.getResourceManager()); printer.setContentWriter(root, new DefaultNameGenerator(root, "report")); printer.setDataWriter(data, new DefaultNameGenerator(data, "content")); printer.setUrlRewriter(new SingleRepositoryURLRewriter()); outputProcessor.setPrinter(printer); final FlowReportProcessor sp = new FlowReportProcessor(report, outputProcessor); sp.processReport(); sp.close(); zipRepository.close(); } catch (IOException ioe) { throw ioe; } catch (ReportProcessingException re) { throw re; } catch (Exception re) { throw new ReportProcessingException("Failed to process the report", re); } }
@Override protected boolean performExport(final MasterReport report) { try { final File targetFile = getInputFileValue(AbstractJFreeReportComponent.REPORTDIRECTORYHTML_TARGETFILE); if (targetFile == null) { return false; } File dataDirectory = getInputFileValue(AbstractJFreeReportComponent.REPORTDIRECTORYHTML_DATADIR); if (dataDirectory == null) { dataDirectory = new File(targetFile, "data/"); // $NON-NLS-1$ } final File targetDirectory = targetFile.getParentFile(); if (dataDirectory.exists() && (dataDirectory.isDirectory() == false)) { dataDirectory = dataDirectory.getParentFile(); if (dataDirectory.isDirectory() == false) { String msg = Messages.getInstance() .getErrorString( "JFreeReportDirectoryComponent.ERROR_0001_INVALID_DIR", //$NON-NLS-1$ dataDirectory.getPath()); throw new ReportProcessingException(msg); } } else if (dataDirectory.exists() == false) { dataDirectory.mkdirs(); } final FileRepository targetRepository = new FileRepository(targetDirectory); final ContentLocation targetRoot = targetRepository.getRoot(); final FileRepository dataRepository = new FileRepository(dataDirectory); final ContentLocation dataRoot = dataRepository.getRoot(); final FlowHtmlOutputProcessor outputProcessor = new FlowHtmlOutputProcessor(); final HtmlPrinter printer = new AllItemsHtmlPrinter(report.getResourceManager()); printer.setContentWriter( targetRoot, new DefaultNameGenerator(targetRoot, targetFile.getName())); printer.setDataWriter( dataRoot, new DefaultNameGenerator(targetRoot, "content")); // $NON-NLS-1$ printer.setUrlRewriter(new FileSystemURLRewriter()); outputProcessor.setPrinter(printer); final FlowReportProcessor sp = new FlowReportProcessor(report, outputProcessor); final int yieldRate = getYieldRate(); if (yieldRate > 0) { sp.addReportProgressListener(new YieldReportListener(yieldRate)); } sp.processReport(); sp.close(); return true; } catch (ReportProcessingException e) { return false; } catch (ContentIOException e) { return false; } }
@Override protected boolean performExport(final MasterReport report, final OutputStream outputStream) { try { String dataDirectory = getInputStringValue(AbstractJFreeReportComponent.REPORTDIRECTORYHTML_DATADIR); if (dataDirectory == null) { dataDirectory = "data"; // $NON-NLS-1$ } final ZipRepository zipRepository = new ZipRepository(); final ContentLocation root = zipRepository.getRoot(); final ContentLocation data = RepositoryUtilities.createLocation( zipRepository, RepositoryUtilities.split(dataDirectory, "/")); // $NON-NLS-1$ final FlowHtmlOutputProcessor outputProcessor = new FlowHtmlOutputProcessor(report.getConfiguration()); final HtmlPrinter printer = new AllItemsHtmlPrinter(report.getResourceManager()); printer.setContentWriter(root, new DefaultNameGenerator(root, "report.html")); // $NON-NLS-1$ printer.setDataWriter(data, new DefaultNameGenerator(data, "content")); // $NON-NLS-1$ printer.setUrlRewriter(new SingleRepositoryURLRewriter()); outputProcessor.setPrinter(printer); final FlowReportProcessor sp = new FlowReportProcessor(report, outputProcessor); final int yieldRate = getYieldRate(); if (yieldRate > 0) { sp.addReportProgressListener(new YieldReportListener(yieldRate)); } sp.processReport(); zipRepository.write(outputStream); close(); return true; } catch (ReportProcessingException e) { error( Messages.getInstance() .getString("JFreeReportZipHtmlComponent.ERROR_0046_FAILED_TO_PROCESS_REPORT"), e); //$NON-NLS-1$ return false; } catch (IOException e) { error( Messages.getInstance() .getString("JFreeReportZipHtmlComponent.ERROR_0046_FAILED_TO_PROCESS_REPORT"), e); //$NON-NLS-1$ return false; } catch (ContentIOException e) { error( Messages.getInstance() .getString("JFreeReportZipHtmlComponent.ERROR_0046_FAILED_TO_PROCESS_REPORT"), e); //$NON-NLS-1$ return false; } }
public void testRichText() throws ReportProcessingException, ContentProcessingException { final Element e = new Element(); e.setElementType(LabelType.INSTANCE); e.setAttribute(AttributeNames.Core.NAMESPACE, AttributeNames.Core.RICH_TEXT_TYPE, "text/html"); e.setAttribute( AttributeNames.Core.NAMESPACE, AttributeNames.Core.VALUE, "Hi I am trying to use the <b>rich text type = text/html</b> in PRD version - 3.7."); e.getStyle().setStyleProperty(TextStyleKeys.FONTSIZE, 12); e.getStyle().setStyleProperty(TextStyleKeys.FONT, "Arial"); e.getStyle().setStyleProperty(ElementStyleKeys.MIN_WIDTH, 285f); e.getStyle().setStyleProperty(ElementStyleKeys.MIN_HEIGHT, 20f); final MasterReport report = new MasterReport(); report.getReportHeader().addElement(e); final LogicalPageBox logicalPageBox = DebugReportRunner.layoutSingleBand(report, report.getReportHeader(), false, false); logicalPageBox.getRepeatFooterArea().setY(logicalPageBox.getContentArea().getHeight()); logicalPageBox.getFooterArea().setY(logicalPageBox.getContentArea().getHeight()); // ModelPrinter.INSTANCE.print(logicalPageBox); final RenderNode[] elementsByNodeType = MatchFactory.findElementsByNodeType(logicalPageBox, LayoutNodeTypes.TYPE_NODE_TEXT); assertEquals( 17, elementsByNodeType.length); // quick and easy way to see that all elements are there. // debugPrintText(elementsByNodeType); final LocalFontRegistry registry = new LocalFontRegistry(); registry.initialize(); final GraphicsOutputProcessorMetaData metaData = new GraphicsOutputProcessorMetaData(new DefaultFontStorage(registry)); metaData.initialize(report.getConfiguration()); final LogicalPageDrawable drawable = new LogicalPageDrawable(); drawable.init(logicalPageBox, metaData, report.getResourceManager()); final TracingGraphics g2 = new TracingGraphics(); drawable.draw(g2, new Rectangle2D.Double(0, 0, 500, 500)); /* for (int i = 0; i < g2.records.size(); i++) { final TextTraceRecord record = g2.records.get(i); System.out.println ("goldenSamples.add(new TextTraceRecord(" + record.x + ", " + record.y + ", \"" + record.text +"\"));"); } */ assertEquals(getSamples(), g2.records); }
/** * This method does what the report designer does on save. * * @param report * @param file * @throws Exception */ private void saveReport(final MasterReport report, final File file) throws Exception { BundleWriter.writeReportToZipFile(report, file); final ResourceManager resourceManager = report.getResourceManager(); final Resource bundleResource = resourceManager.createDirectly(file, DocumentBundle.class); final DocumentBundle bundle = (DocumentBundle) bundleResource.getResource(); final ResourceKey bundleKey = bundle.getBundleKey(); final MemoryDocumentBundle mem = new MemoryDocumentBundle(); BundleUtilities.copyStickyInto(mem, bundle); BundleUtilities.copyMetaData(mem, bundle); report.setBundle(mem); report.setContentBase(mem.getBundleMainKey()); report.setDefinitionSource(bundleKey); }
public void testWizardDefinitionIsAvailable() throws Exception { final File url = GoldTestBase.locateGoldenSampleReport("prd-2887.prpt"); assertNotNull(url); final ResourceManager resourceManager = new ResourceManager(); resourceManager.registerDefaults(); final Resource directly = resourceManager.createDirectly(url, MasterReport.class); final MasterReport org = (MasterReport) directly.getResource(); assertNotNull(WizardProcessorUtil.loadWizardSpecification(org, resourceManager)); final MasterReport report = postProcess(org); assertNotNull(WizardProcessorUtil.loadWizardSpecification(report, report.getResourceManager())); DetailsHeader detailsHeader = report.getDetailsHeader(); detailsHeader.getElement(0).setName("MagicChange"); LogicalPageBox logicalPageBox = DebugReportRunner.layoutPage(report, 1); ModelPrinter.INSTANCE.print(logicalPageBox); }
protected PageableReportProcessor createReportProcessor( final MasterReport report, final int yieldRate) throws ReportProcessingException { proxyOutputStream = new ProxyOutputStream(); printer = new AllItemsHtmlPrinter(report.getResourceManager()); printer.setUrlRewriter(new PentahoURLRewriter(contentHandlerPattern, false)); final PageableHtmlOutputProcessor outputProcessor = new PageableHtmlOutputProcessor(report.getConfiguration()); outputProcessor.setPrinter(printer); proc = new PageableReportProcessor(report, outputProcessor); if (yieldRate > 0) { proc.addReportProgressListener(new YieldReportListener(yieldRate)); } return proc; }
/** Invoked when an action occurs. */ public void actionPerformed(final ActionEvent e) { final ReportDocumentContext activeContext = getActiveContext(); if (activeContext == null) { return; } final ReportDesignerContext context = getReportDesignerContext(); final Component parent = context.getView().getParent(); final Window window = LibSwingUtil.getWindowAncestor(parent); final DocumentMetaDataDialog dialog; if (window instanceof JDialog) { dialog = new DocumentMetaDataDialog((JDialog) window); } else if (window instanceof JFrame) { dialog = new DocumentMetaDataDialog((JFrame) window); } else { dialog = new DocumentMetaDataDialog(); } try { final MasterReport report = activeContext.getContextRoot(); final DocumentBundle bundle = report.getBundle(); final DocumentMetaData oldMetaData = (DocumentMetaData) bundle.getMetaData().clone(); final DocumentMetaData result = dialog.performEdit( oldMetaData, report.getResourceManager(), report.getDefinitionSource()); if (result == null) { return; } final MetaDataEditUndoEntry undoEntry = new MetaDataEditUndoEntry(oldMetaData, result); undoEntry.redo(activeContext); activeContext .getUndo() .addChange(ActionMessages.getString("EditReportPropertiesAction.Text"), undoEntry); } catch (CloneNotSupportedException cne) { // should not happen UncaughtExceptionsModel.getInstance().addException(cne); } }
/** * Saves a report to PDF format. * * @param report the report. * @param fileName target file name. * @return true or false. */ public static boolean createPDF(final MasterReport report, final String fileName) { OutputStream out = null; try { out = new BufferedOutputStream(new FileOutputStream(new File(fileName))); final PdfOutputProcessor outputProcessor = new PdfOutputProcessor(report.getConfiguration(), out, report.getResourceManager()); final PageableReportProcessor proc = new PageableReportProcessor(report, outputProcessor); proc.processReport(); proc.close(); out.close(); return true; } catch (Exception e) { logger.error("Writing PDF failed.", e); return false; } finally { try { if (out != null) { out.close(); } } catch (Exception e) { logger.error("Saving PDF failed.", e); } } }
@SuppressWarnings("deprecation") @Override protected boolean performExport(final MasterReport report, final OutputStream outputStream) { try { IContentRepository contentRepository = null; try { contentRepository = PentahoSystem.get(IContentRepository.class, getSession()); } catch (Throwable t) { debug( Messages.getInstance() .getString("JFreeReportHtmlComponent.DEBUG_0044_PROCESSING_WITHOUT_CONTENT_REPOS"), t); //$NON-NLS-1$ } String contentHandlerPattern = getInputStringValue(AbstractJFreeReportComponent.REPORTHTML_CONTENTHANDLER); if (contentHandlerPattern == null) { final Configuration globalConfig = ClassicEngineBoot.getInstance().getGlobalConfig(); contentHandlerPattern = globalConfig.getConfigProperty("org.pentaho.web.ContentHandler"); // $NON-NLS-1$ } final IApplicationContext ctx = PentahoSystem.getApplicationContext(); final URLRewriter rewriter; final ContentLocation dataLocation; final NameGenerator dataNameGenerator; if ((contentRepository == null) || JFreeReportHtmlComponent.DO_NOT_USE_THE_CONTENT_REPOSITORY) { debug( Messages.getInstance() .getString( "JFreeReportHtmlComponent.DEBUG_0044_PROCESSING_WITHOUT_CONTENT_REPOS")); //$NON-NLS-1$ if (ctx != null) { File dataDirectory = new File(ctx.getFileOutputPath("system/tmp/")); // $NON-NLS-1$ if (dataDirectory.exists() && (dataDirectory.isDirectory() == false)) { dataDirectory = dataDirectory.getParentFile(); if (dataDirectory.isDirectory() == false) { throw new ReportProcessingException( Messages.getInstance() .getErrorString( "JFreeReportDirectoryComponent.ERROR_0001_INVALID_DIR", dataDirectory.getPath())); // $NON-NLS-1$ } } else if (dataDirectory.exists() == false) { dataDirectory.mkdirs(); } final FileRepository dataRepository = new FileRepository(dataDirectory); dataLocation = dataRepository.getRoot(); dataNameGenerator = new DefaultNameGenerator(dataLocation); rewriter = new PentahoURLRewriter(contentHandlerPattern); } else { dataLocation = null; dataNameGenerator = null; rewriter = new PentahoURLRewriter(contentHandlerPattern); } } else { debug( Messages.getInstance() .getString( "JFreeReportHtmlComponent.DEBUG_045_PROCESSING_WITH_CONTENT_REPOS")); //$NON-NLS-1$ final String thePath = getSolutionName() + "/" + getSolutionPath() + "/" + getSession().getId(); // $NON-NLS-1$//$NON-NLS-2$ final IContentLocation pentahoContentLocation = contentRepository.newContentLocation( thePath, getActionName(), getActionTitle(), getSolutionPath(), true); // todo final ReportContentRepository repository = new ReportContentRepository(pentahoContentLocation, getActionName()); dataLocation = repository.getRoot(); dataNameGenerator = new DefaultNameGenerator(dataLocation); rewriter = new PentahoURLRewriter(contentHandlerPattern); } final StreamRepository targetRepository = new StreamRepository(null, outputStream); final ContentLocation targetRoot = targetRepository.getRoot(); final HtmlOutputProcessor outputProcessor = new StreamHtmlOutputProcessor(report.getConfiguration()); final HtmlPrinter printer = new AllItemsHtmlPrinter(report.getResourceManager()); printer.setContentWriter( targetRoot, new DefaultNameGenerator(targetRoot, "index", "html")); // $NON-NLS-1$//$NON-NLS-2$ printer.setDataWriter(dataLocation, dataNameGenerator); printer.setUrlRewriter(rewriter); outputProcessor.setPrinter(printer); final StreamReportProcessor sp = new StreamReportProcessor(report, outputProcessor); final int yieldRate = getYieldRate(); if (yieldRate > 0) { sp.addReportProgressListener(new YieldReportListener(yieldRate)); } sp.processReport(); sp.close(); outputStream.flush(); close(); return true; } catch (ReportProcessingException e) { error( Messages.getInstance() .getString("JFreeReportHtmlComponent.ERROR_0046_FAILED_TO_PROCESS_REPORT"), e); //$NON-NLS-1$ return false; } catch (IOException e) { error( Messages.getInstance() .getString("JFreeReportHtmlComponent.ERROR_0046_FAILED_TO_PROCESS_REPORT"), e); //$NON-NLS-1$ return false; } catch (ContentIOException e) { error( Messages.getInstance() .getString("JFreeReportHtmlComponent.ERROR_0046_FAILED_TO_PROCESS_REPORT"), e); //$NON-NLS-1$ return false; } }
/** Exports the report into an Excel file. */ public void run() { OutputStream out = null; File file = null; try { file = new File(fileName).getCanonicalFile(); final File directory = file.getParentFile(); if (directory != null) { if (directory.exists() == false) { if (directory.mkdirs() == false) { ExcelExportTask.logger.warn( "Can't create directories. Hoping and praying now.."); //$NON-NLS-1$ } } } out = new BufferedOutputStream(new FileOutputStream(file)); final FlowExcelOutputProcessor target = new FlowExcelOutputProcessor(report.getConfiguration(), out, report.getResourceManager()); target.setUseXlsxFormat(false); final FlowReportProcessor reportProcessor = new FlowReportProcessor(report, target); if (progressDialog != null) { progressDialog.setModal(false); progressDialog.setVisible(true); reportProcessor.addReportProgressListener(progressDialog); } reportProcessor.processReport(); out.close(); out = null; if (progressDialog != null) { reportProcessor.removeReportProgressListener(progressDialog); } if (statusListener != null) { statusListener.setStatus( StatusType.INFORMATION, messages.getString("ExcelExportTask.USER_TASK_FINISHED"), null); //$NON-NLS-1$ } } catch (ReportInterruptedException re) { if (statusListener != null) { statusListener.setStatus( StatusType.WARNING, messages.getString("ExcelExportTask.USER_TASK_ABORTED"), null); //$NON-NLS-1$ } try { out.close(); out = null; if (file.delete() == false) { ExcelExportTask.logger.warn("Unable to delete incomplete export:" + file); // $NON-NLS-1$ } } catch (SecurityException se) { // ignore me } catch (IOException ioe) { // ignore me... } } catch (Exception re) { ExcelExportTask.logger.error("Excel export failed", re); // $NON-NLS-1$ if (statusListener != null) { statusListener.setStatus( StatusType.WARNING, messages.getString("ExcelExportTask.USER_TASK_FAILED"), re); //$NON-NLS-1$ } } finally { try { if (out != null) { out.close(); } } catch (Exception e) { ExcelExportTask.logger.error("Unable to close the output stream.", e); // $NON-NLS-1$ if (statusListener != null) { statusListener.setStatus( StatusType.WARNING, messages.getString("ExcelExportTask.USER_TASK_FAILED"), e); //$NON-NLS-1$ } // if there is already another error, this exception is // just a minor obstactle. Something big crashed before ... } } if (progressDialog != null) { progressDialog.setVisible(false); } }