From 644897e7a5ca067009c5c56dee3922707fe705ef Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Tue, 15 Feb 2005 11:12:15 +0000 Subject: [PATCH] Add more info on paths, don't accumulate information, msg -> message git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@277661 13f79535-47bb-0310-9956-ffa450edef68 --- .../ant/taskdefs/svn/SvnChangeLogParser.java | 7 ++- .../ant/taskdefs/svn/SvnChangeLogTask.java | 9 +-- .../ant/taskdefs/svn/SvnChangeLogWriter.java | 17 +++--- .../tools/ant/taskdefs/svn/SvnEntry.java | 56 +++++++++++++++++-- 4 files changed, 71 insertions(+), 18 deletions(-) diff --git a/proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnChangeLogParser.java b/proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnChangeLogParser.java index ba20d5725..7e48dc113 100644 --- a/proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnChangeLogParser.java +++ b/proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnChangeLogParser.java @@ -98,7 +98,7 @@ class SvnChangeLogParser extends LineOrientedOutputStream { //We have ended changelog for that particular revision //so we can save it final int end - = message.length() - lineSeparator.length(); //was -1 + = message.length() - lineSeparator.length(); message = message.substring(0, end); saveEntry(); status = GET_REVISION_LINE; @@ -147,8 +147,8 @@ class SvnChangeLogParser extends LineOrientedOutputStream { // ignore } else if (line.equals("")) { status = GET_MESSAGE; - } else { - paths.add(line.substring(5)); + } else if (line.length() > 5) { + paths.add(new SvnEntry.Path(line.substring(5), line.charAt(3))); } } @@ -159,6 +159,7 @@ class SvnChangeLogParser extends LineOrientedOutputStream { SvnEntry entry = new SvnEntry(date, revision, author, message, paths); entries.add(entry); + reset(); } /** diff --git a/proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnChangeLogTask.java b/proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnChangeLogTask.java index 26f3dea9b..718416135 100644 --- a/proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnChangeLogTask.java +++ b/proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnChangeLogTask.java @@ -46,7 +46,7 @@ import org.apache.tools.ant.util.FileUtils; * <!-- Root element --> * <!ELEMENT changelog (entry+)> * <!-- SVN Entry --> - * <!ELEMENT entry (date,time,revision,author,file+,msg,msg)> + * <!ELEMENT entry (date,time,revision,author,path+,msg,msg)> * <!-- Date of svn entry --> * <!ELEMENT date (#PCDATA)> * <!-- Time of svn entry --> @@ -55,10 +55,11 @@ import org.apache.tools.ant.util.FileUtils; * <!ELEMENT author (#PCDATA)> * <!-- commit message --> * <!ELEMENT msg (#PCDATA)> - * <!-- List of files affected --> - * <!ELEMENT file (name?)> - * <!-- Name of the file --> + * <!-- List of paths affected --> + * <!ELEMENT path (name,action))> + * <!-- Name of the path --> * <!ELEMENT name (#PCDATA)> + * <!ELEMENT action (added|modified|deleted)> * <!-- Revision number --> * <!ELEMENT revision (#PCDATA)> * diff --git a/proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnChangeLogWriter.java b/proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnChangeLogWriter.java index f220b27f6..95550e2fd 100644 --- a/proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnChangeLogWriter.java +++ b/proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnChangeLogWriter.java @@ -65,16 +65,19 @@ public class SvnChangeLogWriter { + ""); output.println("\t\t"); - output.println("\t\t"); + output.println("\t\t" + entry.getRevision() + + ""); - String[] paths = entry.getPaths(); + SvnEntry.Path[] paths = entry.getPaths(); for (int i = 0; i < paths.length; i++) { - output.println("\t\t"); - output.println("\t\t\t"); - output.println("\t\t"); + output.println("\t\t"); + output.println("\t\t\t"); + output.println("\t\t\t" + paths[i].getActionDescription() + + ""); + output.println("\t\t"); } - output.println("\t\t"); + output.println("\t\t"); output.println("\t"); } } diff --git a/proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnEntry.java b/proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnEntry.java index 9babcc058..1602f43aa 100644 --- a/proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnEntry.java +++ b/proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnEntry.java @@ -60,8 +60,8 @@ public class SvnEntry { * @param path the path to add * @param revision the revision */ - public void addPath(final String name) { - paths.add(name); + public void addPath(final String name, final char action) { + paths.add(new Path(name, action)); } /** @@ -108,8 +108,56 @@ public class SvnEntry { * Gets the paths in this SvnEntry * @return the files */ - public String[] getPaths() { - return (String[]) paths.toArray(new String[paths.size()]); + public Path[] getPaths() { + return (Path[]) paths.toArray(new Path[paths.size()]); + } + + public static class Path { + + private static final char ADDED_MARKER = 'A'; + private static final char MODIFIED_MARKER = 'M'; + private static final char DELETED_MARKER = 'D'; + + public static final int ADDED = 0; + public static final int MODIFIED = 1; + public static final int DELETED = 2; + + private static final String[] ACTIONS = { + "added", "modified", "deleted", + }; + + private final String name; + private final int action; + + public Path(final String name, final char actionChar) { + this.name = name; + switch (actionChar) { + case ADDED_MARKER: + action = ADDED; + break; + case MODIFIED_MARKER: + action = MODIFIED; + break; + case DELETED_MARKER: + action = DELETED; + break; + default: + throw new IllegalArgumentException("Unkown action; " + + actionChar); + } + } + + public String getName() { + return name; + } + + public int getAction() { + return action; + } + + public String getActionDescription() { + return ACTIONS[action]; + } } }