1 package com.openedit.archive.generators; 2 3 import java.io.File ; 4 import java.io.FileInputStream ; 5 import java.io.IOException ; 6 7 import org.apache.commons.logging.Log; 8 import org.apache.commons.logging.LogFactory; 9 10 import com.openedit.OpenEditException; 11 import com.openedit.WebPageRequest; 12 import com.openedit.archive.Archive; 13 import com.openedit.generators.BaseGenerator; 14 import com.openedit.generators.Output; 15 import com.openedit.modules.archive.ArchiveModule; 16 import com.openedit.page.Page; 17 import com.openedit.store.Product; 18 import com.openedit.util.OutputFiller; 19 import com.openedit.util.PathUtilities; 20 21 27 public class OriginalDocumentGenerator extends BaseGenerator 28 { 29 private static final Log log = LogFactory.getLog(OriginalDocumentGenerator.class); 30 31 public void generate( WebPageRequest inReq, Page inPage, Output inOut ) 32 throws OpenEditException 33 { 34 Archive archive = (Archive) inReq.getPageValue("archive"); 36 String productId = PathUtilities.extractFileName( 37 PathUtilities.extractDirectoryPath( inPage.getPath() ) ); 38 Product product = archive.getProduct( productId ); 39 if ( product == null ) 40 { 41 throw new OpenEditException( "No product with ID " + productId ); 42 } 43 44 File originalDocumentFile = archive.getOriginalDocument( product ); 45 if ( originalDocumentFile == null ) 46 { 47 log.error( "Could not determine original document filename for " + product.getName() ); 48 inReq.redirect( archive.getCatalogHome() + "/missingfile.html" ); 49 return; 50 } 51 if ( !originalDocumentFile.exists() ) 52 { 53 log.error( "Original document not found:" + originalDocumentFile ); 54 inReq.redirect(archive.getCatalogHome() + "/missingfile.html"); 55 return; 56 } 57 58 try 59 { 60 FileInputStream fis = new FileInputStream ( originalDocumentFile ); 61 try 62 { 63 new OutputFiller().fill( fis, inOut.getStream() ); 64 } 65 finally 66 { 67 fis.close(); 68 } 69 } 70 catch ( IOException ioe ) 71 { 72 throw new OpenEditException( ioe ); 73 } 74 } 75 76 public boolean canGenerate(WebPageRequest inReq) 77 { 78 return inReq.getPage().isBinary(); 79 } 80 81 } 82 | Popular Tags |