KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jicengine > io > AbstractResource


1 package org.jicengine.io;
2
3 import java.io.*;
4
5 /**
6  * implements the most general methods of the Resource-interface.
7  *
8  * <p>
9  * Copyright (C) 2004 Timo Laitinen
10  * </p>
11  *
12  * @author Timo Laitinen
13  * @created 2004-09-20
14  * @since JICE-0.10
15  * @version 1.0
16  */

17
18 public abstract class AbstractResource implements Resource {
19
20     private String JavaDoc identifier;
21     private String JavaDoc mimeType;
22
23     /**
24      *
25      */

26     protected AbstractResource(String JavaDoc identifier)
27     {
28         this.identifier = identifier;
29     }
30
31     public abstract InputStream getInputStream() throws IOException;
32
33     /**
34      * <p>
35      * Simple implementation of <code>getReader()</code> that
36      * wraps the <code>InputStream</code> obtained from <code>getInputStream()</code>
37      * with a <code>InputStreamReader</code>.
38      * </p>
39      *
40      * <p>
41      * Override this method if a better alternative for creating the <code>Reader</code>
42      * is available.
43      * </p>
44      */

45     public Reader getReader() throws IOException
46     {
47         return new InputStreamReader(getInputStream());
48     }
49
50     /**
51      * <p>
52      * Determines the availability of the Resource by calling
53      * <code>getInputStream()</code>: resource is available if the method doesn't
54      * throw an exception.
55      * </p>
56      *
57      * <p>
58      * Override this if a more efficient way for determining
59      * the availability is possible.
60      * </p>
61      */

62     public boolean isAvailable()
63     {
64         try {
65             getInputStream();
66             return true;
67         } catch (IOException e){
68             return false;
69         }
70     }
71
72     public void writeTo(OutputStream out) throws IOException
73     {
74         InputStream in = getInputStream();
75         int i;
76         while ((i = in.read()) != -1) {
77             out.write(i);
78         }
79         out.close();
80         in.close();
81     }
82
83     public void writeTo(Writer writer) throws IOException
84     {
85         Reader reader = getReader();
86         BufferedReader buffReader;
87         if( reader instanceof BufferedReader ){
88             buffReader = (BufferedReader) reader;
89         }
90         else {
91             buffReader = new BufferedReader(reader);
92         }
93
94         BufferedWriter buffWriter;
95         if( writer instanceof BufferedWriter ){
96             buffWriter = (BufferedWriter) writer;
97         }
98         else {
99             buffWriter = new BufferedWriter(writer);
100         }
101
102         String JavaDoc line;
103         while ((line = buffReader.readLine()) != null) {
104             buffWriter.write(line);
105             buffWriter.write("\n");
106         }
107         buffWriter.close();
108         buffReader.close();
109     }
110
111     public String JavaDoc getIdentifier()
112     {
113         return this.identifier;
114     }
115
116     public void setMimeType(String JavaDoc mimeType)
117     {
118         this.mimeType = mimeType;
119     }
120
121     /**
122      * Returns the mime-type set with setMimeType().
123      */

124     public String JavaDoc getMimeType()
125     {
126         return this.mimeType;
127     }
128
129     public abstract Resource getResource(String JavaDoc relativePath) throws IOException;
130
131     /**
132      * @return the identifier
133      */

134     public String JavaDoc toString()
135     {
136         return getIdentifier();
137     }
138 }
139
Popular Tags