KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > fop > image > analyser > ImageReaderFactory


1 /*
2  * $Id: ImageReaderFactory.java,v 1.6.2.4 2003/02/25 13:38:24 jeremias Exp $
3  * ============================================================================
4  * The Apache Software License, Version 1.1
5  * ============================================================================
6  *
7  * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without modifica-
10  * tion, are permitted provided that the following conditions are met:
11  *
12  * 1. Redistributions of source code must retain the above copyright notice,
13  * this list of conditions and the following disclaimer.
14  *
15  * 2. Redistributions in binary form must reproduce the above copyright notice,
16  * this list of conditions and the following disclaimer in the documentation
17  * and/or other materials provided with the distribution.
18  *
19  * 3. The end-user documentation included with the redistribution, if any, must
20  * include the following acknowledgment: "This product includes software
21  * developed by the Apache Software Foundation (http://www.apache.org/)."
22  * Alternately, this acknowledgment may appear in the software itself, if
23  * and wherever such third-party acknowledgments normally appear.
24  *
25  * 4. The names "FOP" and "Apache Software Foundation" must not be used to
26  * endorse or promote products derived from this software without prior
27  * written permission. For written permission, please contact
28  * apache@apache.org.
29  *
30  * 5. Products derived from this software may not be called "Apache", nor may
31  * "Apache" appear in their name, without prior written permission of the
32  * Apache Software Foundation.
33  *
34  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
35  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
36  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
37  * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
38  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
39  * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
40  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
41  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
42  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
43  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
44  * ============================================================================
45  *
46  * This software consists of voluntary contributions made by many individuals
47  * on behalf of the Apache Software Foundation and was originally created by
48  * James Tauber <jtauber@jtauber.com>. For more information on the Apache
49  * Software Foundation, please see <http://www.apache.org/>.
50  */

51 package org.apache.fop.image.analyser;
52
53 // Java
54
import java.io.InputStream JavaDoc;
55 import java.io.BufferedInputStream JavaDoc;
56 import java.io.IOException JavaDoc;
57 import java.util.List JavaDoc;
58
59 // FOP
60
import org.apache.fop.image.FopImageException;
61
62 /**
63  * Factory for ImageReader objects.
64  * @author Pankaj Narula
65  */

66 public class ImageReaderFactory {
67     protected static List JavaDoc formats = null;
68
69     static {
70         /**@todo make configurable one day...*/
71         formats = new java.util.Vector JavaDoc();
72         try {
73             registerImageReader("org.apache.fop.image.analyser.JPEGReader");
74             registerImageReader("org.apache.fop.image.analyser.BMPReader");
75             registerImageReader("org.apache.fop.image.analyser.GIFReader");
76             registerImageReader("org.apache.fop.image.analyser.PNGReader");
77             registerImageReader("org.apache.fop.image.analyser.TIFFReader");
78             registerImageReader("org.apache.fop.image.analyser.EPSReader");
79             registerImageReader("org.apache.fop.image.analyser.SVGReader");
80         } catch (ClassNotFoundException JavaDoc cnfe) {
81             throw new RuntimeException JavaDoc("One of the default ImageReader implementations is not available: "+cnfe.getMessage());
82         }
83     }
84
85     /**
86      * Registers a new ImageReader implementation.
87      *
88      * @param classname The fully qualified classname
89      * @throws ClassNotFoundException In case the given class cannot be found
90      */

91     public static void registerImageReader(String JavaDoc classname) throws ClassNotFoundException JavaDoc {
92         Class JavaDoc clazz = Class.forName(classname);
93         registerImageReader(clazz);
94     }
95
96
97     /**
98      * Registers a new ImageReader implementation.
99      *
100      * @param clazz The ImageReader implementation class.
101      */

102     public static void registerImageReader(Class JavaDoc clazz) {
103         if (!ImageReader.class.isAssignableFrom(clazz)) throw new RuntimeException JavaDoc("This class does not implement the ImageReader interface: "+clazz.getName());
104         formats.add(clazz);
105     }
106
107     /**
108      * ImageReader maker.
109      *
110      * @param uri URI of the image
111      * @param in image input stream
112      * @return ImageReader object
113      * @exception FopImageException an error occured during creation or
114      * image type is not supported
115      */

116     public static ImageReader Make(String JavaDoc uri,
117                                    InputStream JavaDoc in) throws FopImageException {
118
119         ImageReader reader;
120         BufferedInputStream JavaDoc bis = new BufferedInputStream JavaDoc(in);
121         try {
122             for (int i = 0; i< formats.size(); i++) {
123                 Class JavaDoc clazz = (Class JavaDoc)formats.get(i);
124                 try {
125                     reader = (ImageReader)clazz.newInstance();
126                 } catch (Exception JavaDoc e) {
127                     throw new FopImageException("ImageReader implementation cannot be instantiated: "+e.getMessage());
128                 }
129                 if (reader.verifySignature(uri, bis)) {
130                     return reader;
131                 }
132             }
133         } catch (IOException JavaDoc ex) {
134             throw new FopImageException(ex.getMessage());
135         }
136         return null;
137     }
138
139 }
140
141
Popular Tags