1 16 package org.outerj.daisy.books.publisher.impl.publicationprocess; 17 18 import org.outerj.daisy.books.store.BookInstance; 19 import org.outerj.daisy.books.publisher.impl.BookInstanceLayout; 20 import org.outerj.daisy.repository.LocaleHelper; 21 import org.apache.cocoon.components.flow.util.PipelineUtil; 22 import org.apache.cocoon.components.LifecycleHelper; 23 24 import java.io.InputStream ; 25 import java.io.OutputStream ; 26 import java.util.Map ; 27 import java.util.HashMap ; 28 29 public class ApplyPipelineTask implements PublicationProcessTask { 30 private final String input; 31 private final String output; 32 private final String pipe; 33 34 public ApplyPipelineTask(String input, String output, String pipe) { 35 this.input = input; 36 this.output = output; 37 this.pipe = pipe; 38 } 39 40 public void run(PublicationContext context) throws Exception { 41 context.getPublicationLog().info("Running apply pipeline task."); 42 String publicationOutputPath = BookInstanceLayout.getPublicationOutputPath(context.getPublicationOutputName()); 43 String startXmlLocation = publicationOutputPath + input; 44 applyPipeline(context, pipe, startXmlLocation, publicationOutputPath + output); 45 } 46 47 52 public static void applyPipeline(PublicationContext context, String pipe, String input, String output) throws Exception { 53 BookInstance bookInstance = context.getBookInstance(); 54 InputStream is = null; 55 OutputStream os = null; 56 try { 57 is = bookInstance.getResource(input); 58 os = bookInstance.getResourceOutputStream(output); 59 Map params = new HashMap (); 60 params.put("bookXmlInputStream", is); 61 params.put("bookInstanceName", bookInstance.getName()); 62 params.put("bookInstance", bookInstance); 63 params.put("locale", context.getLocale()); 64 params.put("pubProps", context.getProperties()); 65 params.put("bookMetadata", context.getBookMetadata()); 66 params.put("localeAsString", LocaleHelper.getString(context.getLocale())); 67 params.put("publicationTypeName", context.getPublicationTypeName()); 68 params.put("publicationOutputName", context.getPublicationOutputName()); 69 PublicationProcessTaskUtil.executePipeline(context.getDaisyCocoonPath() + "/books/publicationTypes/" + context.getPublicationTypeName() + "/" + pipe, params, os, context); 70 } finally { 71 if (is != null) 72 try { is.close(); } catch (Exception e) {} 73 if (os != null) 74 try { os.close(); } catch (Exception e) {} 75 } 76 } 77 } 78 | Popular Tags |