From 020f9a52c4a54560f617aea642a180e96294e9cc Mon Sep 17 00:00:00 2001 From: Peter Donald Date: Tue, 16 Apr 2002 10:05:54 +0000 Subject: [PATCH] Make tagEntry a top level class. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272453 13f79535-47bb-0310-9956-ffa450edef68 --- .../tools/ant/taskdefs/cvslib/CvsTagDiff.java | 144 ++++++------------ .../ant/taskdefs/cvslib/CvsTagEntry.java | 105 +++++++++++++ 2 files changed, 151 insertions(+), 98 deletions(-) create mode 100644 src/main/org/apache/tools/ant/taskdefs/cvslib/CvsTagEntry.java diff --git a/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsTagDiff.java b/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsTagDiff.java index 53d7184a9..b5f006bfd 100644 --- a/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsTagDiff.java +++ b/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsTagDiff.java @@ -96,29 +96,29 @@ import java.util.Vector; * <!-- Previous revision number --> * <!ELEMENT prevrevision ( #PCDATA ) > * - * + * * @author Frederic Lavigne * @version $Revision$ $Date$ * @since Ant 1.5 * @ant.task name="cvstagdiff" */ public class CvsTagDiff extends Task { - + /** * Token to identify a new file in the rdiff log */ static final String FILE_IS_NEW = " is new; current revision "; - + /** * Token to identify a modified file in the rdiff log */ static final String FILE_HAS_CHANGED = " changed from revision "; - + /** * Token to identify a removed file in the rdiff log */ static final String FILE_WAS_REMOVED = " is removed"; - + /** * The cvs task which will perform the rdiff. */ @@ -133,7 +133,7 @@ public class CvsTagDiff extends Task { * The earliest tag from which diffs are to be included in the report. */ private String m_startTag; - + /** * The latest tag from which diffs are to be included in the report. */ @@ -143,25 +143,25 @@ public class CvsTagDiff extends Task { * The earliest date from which diffs are to be included in the report. */ private String m_startDate; - + /** * The latest date from which diffs are to be included in the report. */ private String m_endDate; - + /** * The file in which to write the diff report. */ private File m_destfile; - + /** * Used to create the temp file for cvs log */ private FileUtils m_fileUtils = FileUtils.newFileUtils(); - + /** * Initialize this task. - * CvsTagDiff initializes a member cvs task in init() to perform the + * CvsTagDiff initializes a member cvs task in init() to perform the * rdiff in execute(). * * @exception BuildException if an error occurs @@ -169,7 +169,7 @@ public class CvsTagDiff extends Task { public void init() throws BuildException { m_cvs = (Cvs) getProject().createTask("cvs"); } - + /** * @see org.apache.tools.ant.taskdefs.AbstractCvsTask#setCompressionLevel(int) */ @@ -259,7 +259,7 @@ public class CvsTagDiff extends Task { public void setEndTag(String s) { m_endTag = s; } - + /** * Set the end date. * @@ -277,7 +277,7 @@ public class CvsTagDiff extends Task { public void setDestFile(File f) { m_destfile = f; } - + /** * Execute task. * @@ -286,12 +286,12 @@ public class CvsTagDiff extends Task { public void execute() throws BuildException { // validate the input parameters validate(); - + // build the rdiff command String rdiff = "rdiff -s " + - (m_startTag != null ? ("-r " + m_startTag) : ("-D " + m_startDate)) - + " " - + (m_endTag != null ? ("-r " + m_endTag) : ("-D " + m_endDate)) + (m_startTag != null ? ("-r " + m_startTag) : ("-D " + m_startDate)) + + " " + + (m_endTag != null ? ("-r " + m_endTag) : ("-D " + m_endDate)) + " " + m_package; log("Cvs command is " + rdiff, Project.MSG_VERBOSE); m_cvs.setCommand(rdiff); @@ -300,7 +300,7 @@ public class CvsTagDiff extends Task { try { tmpFile = m_fileUtils.createTempFile("cvstagdiff", ".log", null); m_cvs.setOutput(tmpFile); - + // run the cvs command m_cvs.execute(); @@ -316,7 +316,7 @@ public class CvsTagDiff extends Task { } } } - + /** * Parse the tmpFile and return and array of CvsTagEntry to be * written in the output. @@ -328,10 +328,10 @@ public class CvsTagDiff extends Task { private CvsTagEntry[] parseRDiff(File tmpFile) throws BuildException { // parse the output of the command BufferedReader reader = null; - + try { reader = new BufferedReader(new FileReader(tmpFile)); - + // entries are of the form: // File module/filename is new; current revision 1.1 // or @@ -341,22 +341,22 @@ public class CvsTagDiff extends Task { // release tag SKINLF_12 // get rid of 'File module/" - int headerLength = 5 + m_package.length() + 1; + int headerLength = 5 + m_package.length() + 1; Vector entries = new Vector(); - + String line = reader.readLine(); int index; CvsTagEntry entry = null; - + while (null != line) { line = line.substring(headerLength); - + if ((index = line.indexOf(FILE_IS_NEW)) != -1) { // it is a new file // set the revision but not the prevrevision String filename = line.substring(0, index); String rev = line.substring(index + FILE_IS_NEW.length()); - + entries.addElement(entry = new CvsTagEntry(filename, rev)); log(entry.toString(), Project.MSG_VERBOSE); } else if ((index = line.indexOf(FILE_HAS_CHANGED)) != -1) { @@ -364,40 +364,40 @@ public class CvsTagDiff extends Task { // set the revision and the prevrevision String filename = line.substring(0, index); int revSeparator = line.indexOf(" to ", index); - String prevRevision = - line.substring(index + FILE_HAS_CHANGED.length(), + String prevRevision = + line.substring(index + FILE_HAS_CHANGED.length(), revSeparator); // 4 is " to " length String revision = line.substring(revSeparator + 4); - - entries.addElement(entry = new CvsTagEntry(filename, - revision, + + entries.addElement(entry = new CvsTagEntry(filename, + revision, prevRevision)); log(entry.toString(), Project.MSG_VERBOSE); } else if ((index = line.indexOf(FILE_WAS_REMOVED)) != -1) { // it is a removed file String filename = line.substring(0, index); - + entries.addElement(entry = new CvsTagEntry(filename)); log(entry.toString(), Project.MSG_VERBOSE); } line = reader.readLine(); } - + CvsTagEntry[] array = new CvsTagEntry[entries.size()]; entries.copyInto(array); - - return array; + + return array; } catch (IOException e) { throw new BuildException("Error in parsing", e); } finally { if (reader != null) { try { - reader.close(); + reader.close(); } catch (IOException e) { } } - } + } } /** @@ -443,7 +443,7 @@ public class CvsTagDiff extends Task { } } } - + /** * Write a single entry to the given writer. * @@ -455,17 +455,17 @@ public class CvsTagDiff extends Task { writer.println("\t\t"); writer.println("\t\t\t" + entry.getFile() + ""); if (entry.getRevision() != null) { - writer.println("\t\t\t" + entry.getRevision() + writer.println("\t\t\t" + entry.getRevision() + ""); } if (entry.getPreviousRevision() != null) { - writer.println("\t\t\t" + writer.println("\t\t\t" + entry.getPreviousRevision() + ""); } - writer.println("\t\t"); + writer.println("\t\t"); writer.println("\t"); } - + /** * Validate the parameters specified for task. * @@ -475,11 +475,11 @@ public class CvsTagDiff extends Task { if (null == m_package) { throw new BuildException("Package/module must be set."); } - + if (null == m_destfile) { throw new BuildException("Destfile must be set."); } - + if (null == m_startTag && null == m_startDate) { throw new BuildException("Start tag or start date must be set."); } @@ -488,7 +488,7 @@ public class CvsTagDiff extends Task { throw new BuildException("Only one of start tag and start date " + "must be set."); } - + if (null == m_endTag && null == m_endDate) { throw new BuildException("End tag or end date must be set."); } @@ -496,58 +496,6 @@ public class CvsTagDiff extends Task { if (null != m_endTag && null != m_endDate) { throw new BuildException("Only one of end tag and end date must " + "be set."); - } - } - - /** - * Holds the information of a line of rdiff - */ - static class CvsTagEntry { - String m_filename; - String m_prevRevision; - String m_revision; - - public CvsTagEntry(String filename) { - this(filename, null, null); - } - - public CvsTagEntry(String filename, String revision) { - this(filename, revision, null); - } - - public CvsTagEntry(String filename, String revision, - String prevRevision) { - m_filename = filename; - m_revision = revision; - m_prevRevision = prevRevision; - } - - public String getFile() { - return m_filename; - } - - public String getRevision() { - return m_revision; - } - - public String getPreviousRevision() { - return m_prevRevision; - } - - public String toString() { - StringBuffer buffer = new StringBuffer(); - buffer.append(m_filename); - if ((m_revision == null) && (m_prevRevision == null)) { - buffer.append(" was removed"); - } else if (m_revision != null && m_prevRevision == null) { - buffer.append(" is new; current revision is ") - .append(m_revision); - } else if (m_revision != null && m_prevRevision != null) { - buffer.append(" has changed from ") - .append(m_prevRevision).append(" to ").append(m_revision); - } - return buffer.toString(); } } - } diff --git a/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsTagEntry.java b/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsTagEntry.java new file mode 100644 index 000000000..6b5a8bd6f --- /dev/null +++ b/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsTagEntry.java @@ -0,0 +1,105 @@ +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, if + * any, must include the following acknowlegement: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The names "The Jakarta Project", "Ant", and "Apache Software + * Foundation" must not be used to endorse or promote products derived + * from this software without prior written permission. For written + * permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache" + * nor may "Apache" appear in their names without prior written + * permission of the Apache Group. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + */ +package org.apache.tools.ant.taskdefs.cvslib; + +/** + * Holds the information of a line of rdiff + */ +class CvsTagEntry { + String m_filename; + String m_prevRevision; + String m_revision; + + public CvsTagEntry(String filename) { + this(filename, null, null); + } + + public CvsTagEntry(String filename, String revision) { + this(filename, revision, null); + } + + public CvsTagEntry(String filename, String revision, + String prevRevision) { + m_filename = filename; + m_revision = revision; + m_prevRevision = prevRevision; + } + + public String getFile() { + return m_filename; + } + + public String getRevision() { + return m_revision; + } + + public String getPreviousRevision() { + return m_prevRevision; + } + + public String toString() { + StringBuffer buffer = new StringBuffer(); + buffer.append(m_filename); + if ((m_revision == null) && (m_prevRevision == null)) { + buffer.append(" was removed"); + } else if (m_revision != null && m_prevRevision == null) { + buffer.append(" is new; current revision is ") + .append(m_revision); + } else if (m_revision != null && m_prevRevision != null) { + buffer.append(" has changed from ") + .append(m_prevRevision).append(" to ").append(m_revision); + } + return buffer.toString(); + } +}