bodewig 2005/02/15 03:12:15 Modified: proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn SvnChangeLogParser.java SvnChangeLogTask.java SvnChangeLogWriter.java SvnEntry.java Log: Add more info on paths, don't accumulate information, msg -> message Revision Changes Path 1.2 +5 -4 ant/proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnChangeLogParser.java Index: SvnChangeLogParser.java =================================================================== RCS file: /home/cvs/ant/proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnChangeLogParser.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- SvnChangeLogParser.java 14 Feb 2005 13:28:33 -0000 1.1 +++ SvnChangeLogParser.java 15 Feb 2005 11:12:15 -0000 1.2 @@ -98,7 +98,7 @@ //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 @@ // 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 @@ SvnEntry entry = new SvnEntry(date, revision, author, message, paths); entries.add(entry); + reset(); } /** 1.2 +5 -4 ant/proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnChangeLogTask.java Index: SvnChangeLogTask.java =================================================================== RCS file: /home/cvs/ant/proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnChangeLogTask.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- SvnChangeLogTask.java 14 Feb 2005 13:28:33 -0000 1.1 +++ SvnChangeLogTask.java 15 Feb 2005 11:12:15 -0000 1.2 @@ -46,7 +46,7 @@ * <font color=#0000ff><!-- Root element --></font> * <font color=#6a5acd><!ELEMENT</font> changelog <font color=#ff00ff>(entry</font><font color=#ff00ff>+</font><font color=#ff00ff>)</font><font color=#6a5acd>></font> * <font color=#0000ff><!-- SVN Entry --></font> - * <font color=#6a5acd><!ELEMENT</font> entry <font color=#ff00ff>(date,time,revision,author,file</font><font color=#ff00ff>+,msg</font><font color=#ff00ff>,msg)</font><font color=#6a5acd>></font> + * <font color=#6a5acd><!ELEMENT</font> entry <font color=#ff00ff>(date,time,revision,author,path</font><font color=#ff00ff>+,msg</font><font color=#ff00ff>,msg)</font><font color=#6a5acd>></font> * <font color=#0000ff><!-- Date of svn entry --></font> * <font color=#6a5acd><!ELEMENT</font> date <font color=#ff00ff>(#PCDATA)</font><font color=#6a5acd>></font> * <font color=#0000ff><!-- Time of svn entry --></font> @@ -55,10 +55,11 @@ * <font color=#6a5acd><!ELEMENT</font> author <font color=#ff00ff>(#PCDATA)</font><font color=#6a5acd>></font> * <font color=#0000ff><!-- commit message --></font> * <font color=#6a5acd><!ELEMENT</font> msg <font color=#ff00ff>(#PCDATA)</font><font color=#6a5acd>></font> - * <font color=#0000ff><!-- List of files affected --></font> - * <font color=#6a5acd><!ELEMENT</font> file <font color=#ff00ff>(name</font><font color=#ff00ff>?</font><font color=#ff00ff>)</font><font color=#6a5acd>></font> - * <font color=#0000ff><!-- Name of the file --></font> + * <font color=#0000ff><!-- List of paths affected --></font> + * <font color=#6a5acd><!ELEMENT</font> path <font color=#ff00ff>(name,action)</font><font color=#ff00ff></font><font color=#ff00ff>)</font><font color=#6a5acd>></font> + * <font color=#0000ff><!-- Name of the path --></font> * <font color=#6a5acd><!ELEMENT</font> name <font color=#ff00ff>(#PCDATA)</font><font color=#6a5acd>></font> + * <font color=#6a5acd><!ELEMENT</font> action <font color=#ff00ff>(added|modified|deleted)</font><font color=#6a5acd>></font> * <font color=#0000ff><!-- Revision number --></font> * <font color=#6a5acd><!ELEMENT</font> revision <font color=#ff00ff>(#PCDATA)</font><font color=#6a5acd>></font> * </pre> 1.2 +10 -7 ant/proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnChangeLogWriter.java Index: SvnChangeLogWriter.java =================================================================== RCS file: /home/cvs/ant/proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnChangeLogWriter.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- SvnChangeLogWriter.java 14 Feb 2005 13:28:33 -0000 1.1 +++ SvnChangeLogWriter.java 15 Feb 2005 11:12:15 -0000 1.2 @@ -65,16 +65,19 @@ + "</time>"); output.println("\t\t<author><![CDATA[" + entry.getAuthor() + "]]></author>"); - output.println("\t\t<revision><![CDATA[" + entry.getRevision() - + "]]></revision>"); + output.println("\t\t<revision>" + entry.getRevision() + + "</revision>"); - String[] paths = entry.getPaths(); + SvnEntry.Path[] paths = entry.getPaths(); for (int i = 0; i < paths.length; i++) { - output.println("\t\t<file>"); - output.println("\t\t\t<name><![CDATA[" + paths[i] + "]]></name>"); - output.println("\t\t</file>"); + output.println("\t\t<path>"); + output.println("\t\t\t<name><![CDATA[" + paths[i].getName() + + "]]></name>"); + output.println("\t\t\t<action>" + paths[i].getActionDescription() + + "</action>"); + output.println("\t\t</path>"); } - output.println("\t\t<msg><![CDATA[" + entry.getMessage() + "]]></msg>"); + output.println("\t\t<message><![CDATA[" + entry.getMessage() + "]]></message>"); output.println("\t</entry>"); } } 1.2 +52 -4 ant/proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnEntry.java Index: SvnEntry.java =================================================================== RCS file: /home/cvs/ant/proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnEntry.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- SvnEntry.java 14 Feb 2005 13:28:33 -0000 1.1 +++ SvnEntry.java 15 Feb 2005 11:12:15 -0000 1.2 @@ -60,8 +60,8 @@ * @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 @@ * 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]; + } } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]