Browse Source

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
master
Stefan Bodewig 20 years ago
parent
commit
644897e7a5
4 changed files with 71 additions and 18 deletions
  1. +4
    -3
      proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnChangeLogParser.java
  2. +5
    -4
      proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnChangeLogTask.java
  3. +10
    -7
      proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnChangeLogWriter.java
  4. +52
    -4
      proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnEntry.java

+ 4
- 3
proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnChangeLogParser.java View File

@@ -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();
}

/**


+ 5
- 4
proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnChangeLogTask.java View File

@@ -46,7 +46,7 @@ import org.apache.tools.ant.util.FileUtils;
* <font color=#0000ff>&lt;!-- Root element --&gt;</font>
* <font color=#6a5acd>&lt;!ELEMENT</font> changelog <font color=#ff00ff>(entry</font><font color=#ff00ff>+</font><font color=#ff00ff>)</font><font color=#6a5acd>&gt;</font>
* <font color=#0000ff>&lt;!-- SVN Entry --&gt;</font>
* <font color=#6a5acd>&lt;!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>&gt;</font>
* <font color=#6a5acd>&lt;!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>&gt;</font>
* <font color=#0000ff>&lt;!-- Date of svn entry --&gt;</font>
* <font color=#6a5acd>&lt;!ELEMENT</font> date <font color=#ff00ff>(#PCDATA)</font><font color=#6a5acd>&gt;</font>
* <font color=#0000ff>&lt;!-- Time of svn entry --&gt;</font>
@@ -55,10 +55,11 @@ import org.apache.tools.ant.util.FileUtils;
* <font color=#6a5acd>&lt;!ELEMENT</font> author <font color=#ff00ff>(#PCDATA)</font><font color=#6a5acd>&gt;</font>
* <font color=#0000ff>&lt;!-- commit message --&gt;</font>
* <font color=#6a5acd>&lt;!ELEMENT</font> msg <font color=#ff00ff>(#PCDATA)</font><font color=#6a5acd>&gt;</font>
* <font color=#0000ff>&lt;!-- List of files affected --&gt;</font>
* <font color=#6a5acd>&lt;!ELEMENT</font> file <font color=#ff00ff>(name</font><font color=#ff00ff>?</font><font color=#ff00ff>)</font><font color=#6a5acd>&gt;</font>
* <font color=#0000ff>&lt;!-- Name of the file --&gt;</font>
* <font color=#0000ff>&lt;!-- List of paths affected --&gt;</font>
* <font color=#6a5acd>&lt;!ELEMENT</font> path <font color=#ff00ff>(name,action)</font><font color=#ff00ff></font><font color=#ff00ff>)</font><font color=#6a5acd>&gt;</font>
* <font color=#0000ff>&lt;!-- Name of the path --&gt;</font>
* <font color=#6a5acd>&lt;!ELEMENT</font> name <font color=#ff00ff>(#PCDATA)</font><font color=#6a5acd>&gt;</font>
* <font color=#6a5acd>&lt;!ELEMENT</font> action <font color=#ff00ff>(added|modified|deleted)</font><font color=#6a5acd>&gt;</font>
* <font color=#0000ff>&lt;!-- Revision number --&gt;</font>
* <font color=#6a5acd>&lt;!ELEMENT</font> revision <font color=#ff00ff>(#PCDATA)</font><font color=#6a5acd>&gt;</font>
* </pre>


+ 10
- 7
proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnChangeLogWriter.java View File

@@ -65,16 +65,19 @@ public class SvnChangeLogWriter {
+ "</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>");
}
}


+ 52
- 4
proposal/sandbox/svn/src/main/org/apache/tools/ant/taskdefs/svn/SvnEntry.java View File

@@ -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];
}
}

}

Loading…
Cancel
Save