1 package com.openedit.archive.generators; 2 3 import java.io.File ; 4 import java.io.IOException ; 5 import java.net.URL ; 6 import java.net.URLEncoder ; 7 8 import org.apache.commons.logging.Log; 9 import org.apache.commons.logging.LogFactory; 10 11 import com.openedit.OpenEditException; 12 import com.openedit.WebPageRequest; 13 import com.openedit.archive.Archive; 14 import com.openedit.generators.FileGenerator; 15 import com.openedit.generators.Output; 16 import com.openedit.page.Page; 17 import com.openedit.store.Product; 18 import com.openedit.util.PathUtilities; 19 import com.openedit.util.URLUtilities; 20 21 27 public class ConvertGenerator extends TempFileGenerator 28 { 29 private static final Log log = LogFactory.getLog(ConvertGenerator.class); 30 31 public void generate( WebPageRequest inReq, Page inPage, Output inOut ) throws OpenEditException 32 { 33 Archive archive = (Archive) inReq.getPageValue(Archive.ARCHIVE_PARAM ); 34 35 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 String dir = archive.getStore().getProductPathFinder().idToPath(product.getId()); 45 String type = PathUtilities.extractPageType(inPage.getPath()); 46 File convertFile = archive.makeCacheFile(product, "/convert/" + PathUtilities.extractPagePath(dir) + "." + type ); 47 if ( convertFile.exists() && convertFile.length() > 0) 48 { 49 super.generate(inReq,convertFile,inOut); 50 return; 51 } 52 try 53 { 54 convertFile.getParentFile().mkdirs(); 55 convertFile.createNewFile(); 57 File originalDocumentFile = archive.getOriginalDocument( product ); 59 if ( originalDocumentFile == null || !originalDocumentFile.exists() ) 60 { 61 log.error( "original document filename missing " + product.getName() ); 62 inReq.redirect(archive.getCatalogHome() + "/missingfile.html" ); 63 return; 64 } 65 66 if ( !archive.convert(originalDocumentFile,convertFile) ) 67 { 68 throw new OpenEditException("Could not convert image to: " + inPage.getPath()); 69 } 70 else 71 { 72 super.generate(inReq,convertFile,inOut); 73 } 75 } 76 catch ( Exception ioe ) 77 { 78 inReq.redirect(archive.getCatalogHome() + "/missingfile.html?error=" + URLEncoder.encode(ioe.toString())); 79 } 80 finally 81 { 82 if ( convertFile.length() == 0) 83 { 84 convertFile.delete(); 85 } 87 } 88 } 89 } 90 | Popular Tags |