001: /*
002: * ====================================================================
003: *
004: * The Apache Software License, Version 1.1
005: *
006: * Copyright (c) 1999-2003 The Apache Software Foundation.
007: * All rights reserved.
008: *
009: * Redistribution and use in source and binary forms, with or without
010: * modification, are permitted provided that the following conditions
011: * are met:
012: *
013: * 1. Redistributions of source code must retain the above copyright
014: * notice, this list of conditions and the following disclaimer.
015: *
016: * 2. Redistributions in binary form must reproduce the above copyright
017: * notice, this list of conditions and the following disclaimer in
018: * the documentation and/or other materials provided with the
019: * distribution.
020: *
021: * 3. The end-user documentation included with the redistribution, if
022: * any, must include the following acknowledgement:
023: * "This product includes software developed by the
024: * Apache Software Foundation (http://www.apache.org/)."
025: * Alternately, this acknowledgement may appear in the software itself,
026: * if and wherever such third-party acknowledgements normally appear.
027: *
028: * 4. The names "The Jakarta Project", "Commons", and "Apache Software
029: * Foundation" must not be used to endorse or promote products derived
030: * from this software without prior written permission. For written
031: * permission, please contact apache@apache.org.
032: *
033: * 5. Products derived from this software may not be called "Apache"
034: * nor may "Apache" appear in their names without prior written
035: * permission of the Apache Software Foundation.
036: *
037: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
038: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
039: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
040: * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
041: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
042: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
043: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
044: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
045: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
046: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
047: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
048: * SUCH DAMAGE.
049: * ====================================================================
050: *
051: * This software consists of voluntary contributions made by many
052: * individuals on behalf of the Apache Software Foundation. For more
053: * information on the Apache Software Foundation, please see
054: * <http://www.apache.org/>.
055: *
056: */
057:
058: package org.apache.commons.jrcs.tools;
059:
060: import org.apache.commons.jrcs.diff.Diff;
061: import org.apache.commons.jrcs.rcs.*;
062:
063: /**
064: * A tool to extract information from CVS/RCS archives.
065: * <p>This simple tool was built as a feature test of the
066: * {@linkplain org.apache.commons.jrcs.rcs rcs} library.
067: * </p>
068: */
069: public class JRCS {
070: static Archive archive;
071: static Object[] orig;
072:
073: static public void main(String[] args) throws Exception {
074: // try {
075: if (args.length > 2) {
076: System.err.println("usage: ");
077: } else {
078: if (args.length >= 1) {
079: archive = new Archive(args[0]);
080: } else {
081: archive = new Archive("test,v", System.in);
082: }
083: System.err.println();
084: System.err
085: .println("==========================================");
086: //System.out.println(archive.toString());
087: //System.out.println(archive.getRevision("5.2.7.1"));
088: //System.out.println(archive.getRevision(args[1], true));
089: //archive.addRevision(new Object[]{}, args[1]);
090: orig = archive.getRevision("1.3");
091: System.out.println("*-orig-*********");
092: System.out.print(Diff.arrayToString(orig));
093: System.out.println("**********");
094: //!! commented out because of package access error (jvz).
095: //Object[] other = archive.getRevision("1.2");
096: //System.out.println(Diff.diff(archive.removeKeywords(orig),
097: // archive.removeKeywords(other)).toRCSString());
098: trywith("1.2.3.1");
099: trywith("1.2.3.5");
100: trywith("1.2.3.1.");
101: trywith("1.2");
102: trywith("1.2.2");
103: /*
104: trywith("1.2.2.2");
105: trywith("1.2.2.1.1");
106: trywith("1.2.2");
107: trywith("1.2.3");
108: trywith("1.2.3");
109: */
110: }
111: /* }
112: catch(java.io.IOException e) {
113: System.out.println(e.getClass().toString());
114: System.out.println(e.getMessage());
115: e.printStackTrace();
116: }
117: */
118: }
119:
120: static int n = 1;
121:
122: static void trywith(String ver) {
123: try {
124: System.out.println();
125: System.out.println("-------------");
126: System.out.println("Adding " + ver);
127:
128: /*
129: List editor = new ArrayList(Arrays.asList(orig));
130: editor.subList(0,1).clear();
131: editor.add(0, "hola!");
132: Object[] rev = editor.toArray();
133: */
134: Object[] rev = Diff.randomEdit(orig, n++);
135: //rev = Diff.stringToArray(archive.doKeywords(Diff.arrayToString(rev), null));
136: //System.out.print(Archive.arrayToString(rev));
137:
138: Version newVer = archive.addRevision(rev, ver);
139: System.out.println(newVer + " added");
140:
141: if (newVer != null) {
142: //Object[] rec = archive.getRevision(newVer);
143: //System.out.print(Archive.arrayToString(rec));
144:
145: /* !! commented out because of package access errors (jvz).
146: if (!Diff.compare(archive.removeKeywords(rec),
147: archive.removeKeywords(rev)))
148: {
149: System.out.println("revisions differ!");
150: System.out.println("**********");
151: System.out.println(Diff.arrayToString(rec));
152: System.out.println("**********");
153: System.out.println(Diff.arrayToString(rev));
154: System.out.println("**********");
155: System.out.print(Diff.diff(rec, rev).toRCSString());
156: System.out.println("**********");
157: }
158: */
159: }
160: System.out.println(ver + " OK");
161: } catch (Exception e) {
162: System.err.println(e.getMessage());
163: e.printStackTrace();
164: }
165: }
166: }
|