KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jdfix


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

57
58 import java.io.*;
59
60 import org.apache.oro.text.perl.*;
61
62
63 /**
64  * This is an example program demonstrating how to use the PerlTools
65  * match and substitute methods.
66  *
67  @author <a HREF="dfs@savarese.org">Daniel F. Savarese</a>
68  @version $Id: jdfix.java,v 1.1.1.1 2000/07/23 23:08:48 jon Exp $
69  */

70 public final class jdfix {
71
72   /**
73    * This program performs the exact same function as this Perl script.
74    * Notice that the Java program is only so much longer because of all
75    * of the I/O exception handling and InputStream creation. The core
76    * while loop is EXACTLY the same length as the while loop in the Perl
77    * script. This program uses DataInputStream, readLine(), and
78    * PrintStream for JDK 1.0.2 compatibility.
79    * <p>
80    * This is a simple program that takes a javadoc generated HTML file as
81    * input and produces as output the same HTML file, except with a white
82    * background color for the body.
83    * <p>
84    * <pre>
85    * #!/usr/bin/perl
86    *
87    * $#ARGV >= 1 || die "Usage: jdfix input output\n";
88    *
89    * open(INPUT, $ARGV[0]) || warn "Couldn't open $ARGV[0]\n";
90    * open(OUTPUT, ">$ARGV[1]") || warn "Couldn't open $ARGV[1]\n";
91    *
92    * while(<INPUT>){
93    * s/<body>/<body bgcolor="#ffffff">/;
94    * print OUTPUT;
95    * }
96    *
97    * close(INPUT);
98    * close(OUTPUT);
99    * </pre>
100    */

101   public static final void main(String JavaDoc args[]) {
102     String JavaDoc line;
103     BufferedReader input = null;
104     PrintWriter output = null;
105     Perl5Util perl;
106
107     if(args.length < 2) {
108       System.err.println("Usage: jdfix input output");
109       System.exit(1);
110     }
111
112     try {
113       input =
114     new BufferedReader(new FileReader(args[0]));
115     } catch(IOException e) {
116       System.err.println("Error opening input file: " + args[0]);
117       e.printStackTrace();
118       System.exit(1);
119     }
120
121     try {
122       output =
123     new PrintWriter(new FileWriter(args[1]));
124     } catch(IOException e) {
125       System.err.println("Error opening output file: " + args[1]);
126       e.printStackTrace();
127       System.exit(1);
128     }
129
130     perl = new Perl5Util();
131
132     try {
133       while((line = input.readLine()) != null) {
134     line = perl.substitute("s/<body>/<body bgcolor=\"#ffffff\">/", line);
135     output.println(line);
136       }
137     } catch(IOException e) {
138       System.err.println("Error reading from input: " + args[1]);
139       e.printStackTrace();
140       System.exit(1);
141     } finally {
142       try {
143     input.close();
144     output.close();
145       } catch(IOException e) {
146     System.err.println("Error closing files.");
147     e.printStackTrace();
148     System.exit(1);
149       }
150     }
151   }
152
153 }
154
Popular Tags