From d2011e6d90809b4f6a801920215636c7fc0222a2 Mon Sep 17 00:00:00 2001 From: ltheussl Date: Thu, 27 Apr 2006 18:41:27 +0000 Subject: [PATCH] PR: MPCHANGELOG-86 Support time period in MKS changelog parser. git-svn-id: https://svn.apache.org/repos/asf/maven/maven-1/plugins/trunk@397602 13f79535-47bb-0310-9956-ffa450edef68 --- changelog/project.xml | 5 ++ .../maven/mkslib/MksChangeLogParser.java | 73 +++++++++++++++++++ .../src/test-resources/mkslib/mkslog.txt | 16 ++++ .../maven/mkslib/MksChangeLogParserTest.java | 20 ++++- changelog/xdocs/changes.xml | 1 + 5 files changed, 113 insertions(+), 2 deletions(-) diff --git a/changelog/project.xml b/changelog/project.xml index ac032284..2acdd9b3 100644 --- a/changelog/project.xml +++ b/changelog/project.xml @@ -83,6 +83,11 @@ Christoph Jerolimov + c.jerolimov@tarent.de + tarent GmbH, Germany + + Java Developer + diff --git a/changelog/src/main/org/apache/maven/mkslib/MksChangeLogParser.java b/changelog/src/main/org/apache/maven/mkslib/MksChangeLogParser.java index dde6512c..7f6de076 100644 --- a/changelog/src/main/org/apache/maven/mkslib/MksChangeLogParser.java +++ b/changelog/src/main/org/apache/maven/mkslib/MksChangeLogParser.java @@ -85,8 +85,74 @@ public class MksChangeLogParser implements ChangeLogParser /** current changelog file */ private ChangeLogFile changeLogFile; + /** date filter, only entries after this date match */ + private Date filterDateStart; + + /** date filter, only entries before this date match */ + private Date filterDateEnd; + public void init( ChangeLog changeLog ) { + if (changeLog.getType().equals("range")) + { + try + { + if ( ( changeLog.getRange() != null ) + && ( changeLog.getRange().length() != 0 ) ) + { + long range = Integer.parseInt(changeLog.getRange()); + filterDateStart = new Date(System.currentTimeMillis() + - ( range * ( 24 * 60 * 60 * 1000 ) ) ); + filterDateEnd = null; + } + else + { + throw new NumberFormatException("no range"); + } + } + catch (NumberFormatException e) + { + e.printStackTrace(); + filterDateStart = null; + filterDateEnd = null; + } + } + else if (changeLog.getType().equals("date")) + { + if ( ( changeLog.getMarkerStart() != null ) + && ( changeLog.getMarkerStart().length() != 0 ) ) + { + try + { + filterDateStart = new SimpleDateFormat("y-M-d"). + parse(changeLog.getMarkerStart()); + } + catch (ParseException e) + { + e.printStackTrace(); + filterDateStart = null; + } + } + + if ( ( changeLog.getMarkerEnd() != null ) + && ( changeLog.getMarkerEnd().length() != 0 ) ) + { + try + { + filterDateEnd = new SimpleDateFormat("y-M-d"). + parse(changeLog.getMarkerEnd()); + } + catch (ParseException e) + { + e.printStackTrace(); + filterDateEnd = null; + } + } + } + else if (changeLog.getType().equals("tag")) + { + // MKS filter for 'tag' is not impl yet. + } } public void cleanup() @@ -269,6 +335,13 @@ public class MksChangeLogParser implements ChangeLogParser return; } + // do not add if entry doesn't match date range. + if ( (filterDateStart != null && changeLogEntry.getDate().before(filterDateStart)) || + (filterDateEnd != null && changeLogEntry.getDate().after(filterDateEnd)) ) + { + return; + } + String key = ENTRY_KEY_TIMESTAMP_FORMAT.format( changeLogEntry.getDate() ) + changeLogEntry.getAuthor() + changeLogEntry.getComment(); diff --git a/changelog/src/test-resources/mkslib/mkslog.txt b/changelog/src/test-resources/mkslib/mkslog.txt index ac9d9a97..23559a43 100644 --- a/changelog/src/test-resources/mkslib/mkslog.txt +++ b/changelog/src/test-resources/mkslib/mkslog.txt @@ -54,3 +54,19 @@ revision 1.1 date: Jan 16, 2006 - 16:02 PM; author: AUTHOR; state: InWork; lines: +0 -0 Initial revision =============================================================================== +member name: myproject/oldfile; working file: /myproject/oldfile +head: 1.1 +member: 1.1 +branch: +locks: ; strict +attributes: +file format: text +revision storage: reverse deltas +total revisions: 1; branches: 0; branch revisions: 0 +description: +Initial Version +----------------------- +revision 1.1 +date: Jan 14, 2006 - 11:02 PM; author: AUTHOR; state: InWork; lines: +0 -0 +Initial revision +=============================================================================== diff --git a/changelog/src/test/org/apache/maven/mkslib/MksChangeLogParserTest.java b/changelog/src/test/org/apache/maven/mkslib/MksChangeLogParserTest.java index ec6b5187..61e6d0a1 100644 --- a/changelog/src/test/org/apache/maven/mkslib/MksChangeLogParserTest.java +++ b/changelog/src/test/org/apache/maven/mkslib/MksChangeLogParserTest.java @@ -20,12 +20,14 @@ package org.apache.maven.mkslib; import junit.framework.TestCase; +import org.apache.maven.changelog.ChangeLog; import org.apache.maven.changelog.ChangeLogEntry; import java.io.FileInputStream; import java.io.IOException; import java.util.Collection; +import java.util.Date; import java.util.Iterator; import java.util.Locale; @@ -38,6 +40,9 @@ import java.util.Locale; */ public class MksChangeLogParserTest extends TestCase { + /** the {link ChangeLog} used for testing */ + private ChangeLog changeLog; + /** the {@link MksChangeLogParser} used for testing */ private MksChangeLogParser instance; @@ -59,14 +64,25 @@ public class MksChangeLogParserTest extends TestCase */ public void setUp() throws Exception { - // We force the english locale + // We force the german locale // because the test file uses it. - Locale.setDefault(Locale.ENGLISH); + Locale.setDefault(Locale.GERMAN); String baseDir = System.getProperty( "basedir" ); + if (baseDir == null) + baseDir = "/home/christoph/workspace/changelog"; assertNotNull( "The system property basedir was not defined.", baseDir ); testFile = baseDir + "/src/test-resources/mkslib/mkslog.txt"; + + System.out.println(new Date()); + + changeLog = new ChangeLog(); + changeLog.setType("date"); + changeLog.setMarkerStart("2006-01-15"); + changeLog.setMarkerEnd("2006-01-31"); + instance = new MksChangeLogParser(); + instance.init( changeLog ); } /** diff --git a/changelog/xdocs/changes.xml b/changelog/xdocs/changes.xml index 272adec1..3f388fd0 100644 --- a/changelog/xdocs/changes.xml +++ b/changelog/xdocs/changes.xml @@ -25,6 +25,7 @@ + Support time period in MKS changelog parser. Upgrade to Xerces 2.8.0. Replace the deprecated xmlParserAPIs by xml-apis 1.3.03. Add the xml-resolver dependency for xerces. Upgrade to Junit 3.8.2.