KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > commons > jrcs > tools > JDiff


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

57
58 package org.apache.commons.jrcs.tools;
59
60 import java.io.BufferedReader JavaDoc;
61 import java.io.FileReader JavaDoc;
62 import java.io.IOException JavaDoc;
63 import java.util.ArrayList JavaDoc;
64 import java.util.Date JavaDoc;
65 import java.util.List JavaDoc;
66
67 import org.apache.commons.jrcs.diff.Diff;
68 import org.apache.commons.jrcs.diff.Revision;
69
70
71 /**
72  * A program to compare two files.
73  * <p>JDiff produces the deltas between the two given files in Unix diff
74  * format.
75  * </p>
76  * <p>The program was written as a simple test of the
77  * {@linkplain org.apache.commons.jrcs.diff diff} package.
78  */

79 public class JDiff
80 {
81
82     static final String JavaDoc[] loadFile(String JavaDoc name) throws IOException JavaDoc
83     {
84         BufferedReader JavaDoc data = new BufferedReader JavaDoc(new FileReader JavaDoc(name));
85         List JavaDoc lines = new ArrayList JavaDoc();
86         String JavaDoc s;
87         while ((s = data.readLine()) != null)
88         {
89             lines.add(s);
90         }
91         return (String JavaDoc[])lines.toArray(new String JavaDoc[lines.size()]);
92     }
93
94     static final void usage(String JavaDoc name)
95     {
96         System.err.println("Usage: " + name + " file1 file2");
97     }
98
99     public static void main(String JavaDoc[] argv) throws Exception JavaDoc
100     {
101         if (argv.length < 2)
102         {
103             usage("JDiff");
104         }
105         else
106         {
107             Object JavaDoc[] orig = loadFile(argv[0]);
108             Object JavaDoc[] rev = loadFile(argv[1]);
109
110             Diff df = new Diff(orig);
111             Revision r = df.diff(rev);
112
113             System.err.println("------");
114             System.out.print(r.toString());
115             System.err.println("------" + new Date JavaDoc());
116
117             try
118             {
119                 Object JavaDoc[] reco = r.patch(orig);
120                 //String recos = Diff.arrayToString(reco);
121
if (!Diff.compare(rev, reco))
122                 {
123                     System.err.println("INTERNAL ERROR:"
124                                         + "files differ after patching!");
125                 }
126             }
127             catch (Throwable JavaDoc o)
128             {
129                 System.out.println("Patch failed");
130             }
131         }
132     }
133 }
134
135
Popular Tags