1 13 package org.pentaho.plugin.jfreereport.outputs; 14 15 import java.io.OutputStream ; 16 17 import org.jfree.report.JFreeReport; 18 import org.pentaho.core.repository.IContentItem; 19 import org.pentaho.messages.Messages; 20 21 26 public abstract class AbstractGenerateStreamContentComponent extends 27 AbstractGenerateContentComponent { 28 29 protected AbstractGenerateStreamContentComponent() { 30 } 31 32 protected boolean validateAction() { 33 if (super.validateAction() == false) { 34 return false; 35 } 36 37 if (isDefinedOutput(REPORTGENERATESTREAM_REPORT_OUTPUT)) { 38 return true; 39 } 40 41 if (getOutputNames().size() == 1) { 42 return true; 43 } 44 45 if (getOutputNames().size() == 0) { 46 warn(Messages.getString("Base.WARN_NO_OUTPUT_STREAM")); return true; 48 } 49 50 warn(Messages 51 .getString("AbstractGenerateStreamContentComponent.ERROR_0038_NO_OUTPUT_DEFINED")); return false; 53 } 54 55 protected abstract String getMimeType(); 56 57 protected abstract String getExtension(); 58 59 protected final boolean performExport(final JFreeReport report) { 60 OutputStream outputStream = createOutputStream(); 61 if (outputStream == null) { 62 error(Messages 64 .getErrorString("JFreeReport.ERROR_0008_INVALID_OUTPUT_STREAM")); return false; 66 } 67 68 return performExport(report, outputStream); 69 } 70 71 protected abstract boolean performExport(final JFreeReport report, 72 final OutputStream outputStream); 73 74 protected OutputStream createOutputStream() { 75 final String mimeType = getMimeType(); 77 78 if (isDefinedOutput(REPORTGENERATESTREAM_REPORT_OUTPUT)) { 79 return getOutputStream(REPORTGENERATESTREAM_REPORT_OUTPUT, mimeType, getExtension()); 80 } else if (getOutputNames().size() == 1) { 81 String outputName = (String ) getOutputNames().iterator().next(); 82 IContentItem contentItem = getOutputContentItem(outputName); 83 contentItem.setMimeType(mimeType); 84 try { 85 return contentItem.getOutputStream(getActionName()); 86 } catch (Exception e) { 87 return null; 88 } 89 } 90 if (getOutputNames().size() == 0) { 91 final OutputStream outputStream = getDefaultOutputStream(); 95 if (outputStream != null) { 96 setOutputMimeType(mimeType); 97 } 98 return outputStream; 99 } 100 101 return null; 102 } 103 } 104 | Popular Tags |