From 6025b6016517c6d898d8957d1d7e03ba71431912 Mon Sep 17 00:00:00 2001 From: tknall Date: Fri, 1 Dec 2006 12:20:24 +0000 Subject: Initial import of release 2.2. git-svn-id: https://joinup.ec.europa.eu/svn/pdf-as/trunk@4 7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c --- src/main/java/com/lowagie/tools/CvsLogParser.java | 138 ++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 src/main/java/com/lowagie/tools/CvsLogParser.java (limited to 'src/main/java/com/lowagie/tools/CvsLogParser.java') diff --git a/src/main/java/com/lowagie/tools/CvsLogParser.java b/src/main/java/com/lowagie/tools/CvsLogParser.java new file mode 100644 index 0000000..39181f1 --- /dev/null +++ b/src/main/java/com/lowagie/tools/CvsLogParser.java @@ -0,0 +1,138 @@ +/* + * $Id: CvsLogParser.java,v 1.5 2006/05/22 11:00:30 blowagie Exp $ + * $Name: $ + * + * This code is free software. It may only be copied or modified + * if you include the following copyright notice: + * + * This code is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * itext@lowagie.com + */ +package com.lowagie.tools; + +import java.io.BufferedReader; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.StreamTokenizer; + +import java.util.Enumeration; + +/** + * If you get a changelog from CVS, for instance: + * cvs -d:ext:blowagie@itext.cvs.sourceforge.net:/cvsroot/itext log -d ">2005-07-29" + * you get an overview that contains all the changes. + * With this class, you can parse out the important entries. + * + * @author blowagie + */ +public class CvsLogParser implements Enumeration { + + /** the tokenizer object. */ + protected StreamTokenizer st; + + /** indicates if the current token contains changes. */ + protected boolean changes = false; + + /** indicates if the tokenizer has more tokens. */ + protected boolean more = false; + + /** + * @param file + * @throws FileNotFoundException + */ + public CvsLogParser(String file) throws FileNotFoundException { + BufferedReader r = new BufferedReader(new InputStreamReader(new FileInputStream(file))); + st = new StreamTokenizer(r); + st.eolIsSignificant(true); + st.ordinaryChar('/'); + st.ordinaryChar('\''); + more = true; + } + + /** + * @see java.util.Enumeration#hasMoreElements() + */ + public boolean hasMoreElements() { + return more; + } + + /** + * Returns the next token in the log file. + * @see java.util.Enumeration#nextElement() + */ + public Object nextElement(){ + StringBuffer token = new StringBuffer(); + StringBuffer line = new StringBuffer(); + boolean moreToken = true; + changes = false; + try { + while (more && moreToken) { + st.nextToken(); + switch(st.ttype) { + case StreamTokenizer.TT_EOF: + more = false; + case StreamTokenizer.TT_EOL: + token.append(line.toString()); + if (line.toString().endsWith("=============================================================================")) { + moreToken = false; + } + else { + line = new StringBuffer("\n"); + } + break; + case StreamTokenizer.TT_WORD: + line.append(st.sval); + line.append(" "); + break; + case StreamTokenizer.TT_NUMBER: + if (st.nval > 0 && line.toString().endsWith("selected revisions :")) { + changes = true; + } + line.append(st.nval); + break; + default: + line.append((char) st.ttype); + } + } + return token.toString(); + } + catch(IOException ioe) { + more = false; + return ""; + } + } + + /** + * Indicates if the current token is one that contains changes. + * @return true if the token is relevant + */ + private boolean hasChanged() { + return changes; + } + + + /** + * Parses a log form CVS. + * @param args the path to the logfile + */ + public static void main(String[] args) { + try { + CvsLogParser p = new CvsLogParser(args[0]); + String token; + while (p.hasMoreElements()) { + token = (String) p.nextElement(); + if (p.hasChanged()) { + System.out.println(token); + } + } + } + catch(Exception e) { + e.printStackTrace(); + } + } +} -- cgit v1.2.3