KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > outerj > daisy > books > publisher > impl > publicationprocess > ApplyPipelineTask


1 /*
2  * Copyright 2004 Outerthought bvba and Schaubroeck nv
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

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 JavaDoc;
25 import java.io.OutputStream JavaDoc;
26 import java.util.Map JavaDoc;
27 import java.util.HashMap JavaDoc;
28
29 public class ApplyPipelineTask implements PublicationProcessTask {
30     private final String JavaDoc input;
31     private final String JavaDoc output;
32     private final String JavaDoc pipe;
33
34     public ApplyPipelineTask(String JavaDoc input, String JavaDoc output, String JavaDoc pipe) {
35         this.input = input;
36         this.output = output;
37         this.pipe = pipe;
38     }
39
40     public void run(PublicationContext context) throws Exception JavaDoc {
41         context.getPublicationLog().info("Running apply pipeline task.");
42         String JavaDoc publicationOutputPath = BookInstanceLayout.getPublicationOutputPath(context.getPublicationOutputName());
43         String JavaDoc startXmlLocation = publicationOutputPath + input;
44         applyPipeline(context, pipe, startXmlLocation, publicationOutputPath + output);
45     }
46
47     /**
48      *
49      * @param input absolute path within the book instance
50      * @param output absolute path within the book instance
51      */

52     public static void applyPipeline(PublicationContext context, String JavaDoc pipe, String JavaDoc input, String JavaDoc output) throws Exception JavaDoc {
53         BookInstance bookInstance = context.getBookInstance();
54         InputStream JavaDoc is = null;
55         OutputStream JavaDoc os = null;
56         try {
57             is = bookInstance.getResource(input);
58             os = bookInstance.getResourceOutputStream(output);
59             Map JavaDoc params = new HashMap JavaDoc();
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 JavaDoc e) {}
73             if (os != null)
74                 try { os.close(); } catch (Exception JavaDoc e) {}
75         }
76     }
77 }
78
Popular Tags