1 package org.apache.maven.scm.provider.hg.command.changelog;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.scm.ChangeSet;
23 import org.apache.maven.scm.ScmBranch;
24 import org.apache.maven.scm.ScmException;
25 import org.apache.maven.scm.ScmFileSet;
26 import org.apache.maven.scm.ScmResult;
27 import org.apache.maven.scm.command.changelog.AbstractChangeLogCommand;
28 import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
29 import org.apache.maven.scm.command.changelog.ChangeLogSet;
30 import org.apache.maven.scm.provider.ScmProviderRepository;
31 import org.apache.maven.scm.provider.hg.HgUtils;
32 import org.apache.maven.scm.provider.hg.command.HgCommand;
33
34 import java.util.ArrayList;
35 import java.util.Date;
36 import java.util.Iterator;
37 import java.util.List;
38
39
40
41
42 public class HgChangeLogCommand
43 extends AbstractChangeLogCommand
44 implements HgCommand
45 {
46
47 protected ChangeLogScmResult executeChangeLogCommand( ScmProviderRepository scmProviderRepository,
48 ScmFileSet fileSet, Date startDate, Date endDate,
49 ScmBranch branch, String datePattern )
50 throws ScmException
51 {
52 String[] cmd = new String[]{LOG_CMD, VERBOSE_OPTION};
53 HgChangeLogConsumer consumer = new HgChangeLogConsumer( getLogger(), datePattern );
54 ScmResult result = HgUtils.execute( consumer, getLogger(), fileSet.getBasedir(), cmd );
55
56 List logEntries = consumer.getModifications();
57 List inRangeAndValid = new ArrayList();
58 startDate = startDate == null ? new Date( 0 ) : startDate;
59 endDate = endDate == null ? new Date() : endDate;
60
61 for ( Iterator it = logEntries.iterator(); it.hasNext(); )
62 {
63 ChangeSet change = (ChangeSet) it.next();
64 if ( change.getFiles().size() > 0 )
65 {
66 if ( !change.getDate().before( startDate ) && !change.getDate().after( endDate ) )
67 {
68 inRangeAndValid.add( change );
69 }
70 }
71 }
72
73 ChangeLogSet changeLogSet = new ChangeLogSet( inRangeAndValid, startDate, endDate );
74 return new ChangeLogScmResult( changeLogSet, result );
75 }
76 }