1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 package org.codehaus.mojo.scmchangelog.scm.hg.command.changelog;
25
26 import java.util.ArrayList;
27 import java.util.Date;
28 import java.util.Iterator;
29 import java.util.List;
30
31 import org.apache.maven.scm.ChangeSet;
32 import org.apache.maven.scm.ScmBranch;
33 import org.apache.maven.scm.ScmException;
34 import org.apache.maven.scm.ScmFileSet;
35 import org.apache.maven.scm.ScmResult;
36 import org.apache.maven.scm.ScmVersion;
37 import org.apache.maven.scm.command.changelog.AbstractChangeLogCommand;
38 import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
39 import org.apache.maven.scm.command.changelog.ChangeLogSet;
40 import org.apache.maven.scm.log.ScmLogger;
41 import org.apache.maven.scm.provider.ScmProviderRepository;
42 import org.apache.maven.scm.provider.hg.HgUtils;
43 import org.apache.maven.scm.provider.hg.command.HgCommandConstants;
44
45
46
47
48
49
50
51
52
53
54 public class HgChangeLogCommand
55 extends AbstractChangeLogCommand
56 {
57
58
59
60
61
62
63
64
65
66
67 protected ChangeLogScmResult executeChangeLogCommand(
68 ScmProviderRepository repository, ScmFileSet fileSet,
69 ScmVersion startVersion, ScmVersion endVersion, String datePattern )
70 throws ScmException
71 {
72 String revisions = "-r"
73 + startVersion.getName()
74 + ':'
75 + endVersion.getName();
76 String[] cmd = new String[]
77 {
78 HgCommandConstants.LOG_CMD, HgCommandConstants.VERBOSE_OPTION, revisions
79 };
80 ScmLogger logger = getLogger();
81 HgChangeLogConsumer consumer = new HgChangeLogConsumer( logger,
82 datePattern );
83 ScmResult result = HgUtils.execute( consumer, logger,
84 fileSet.getBasedir(), cmd );
85 logger.debug( result.toString() );
86
87 List logEntries = consumer.getModifications();
88 List inRangeAndValid = new ArrayList();
89 Date startDate = new Date( 0 );
90 Date endDate = new Date();
91 Iterator it = logEntries.iterator();
92
93 while ( it.hasNext() )
94 {
95 ChangeSet change = ( ChangeSet ) it.next();
96
97 if ( change.getFiles().size() > 0 )
98 {
99 inRangeAndValid.add( change );
100 }
101 }
102
103 ChangeLogSet changeLogSet = new ChangeLogSet( inRangeAndValid,
104 startDate, endDate );
105
106 return new ChangeLogScmResult( changeLogSet, result );
107 }
108
109
110
111
112
113
114
115
116
117
118
119
120 protected ChangeLogScmResult executeChangeLogCommand(
121 ScmProviderRepository repository, ScmFileSet fileSet, Date startDate,
122 Date endDate, ScmBranch branch, String datePattern )
123 throws ScmException
124 {
125 String revisions = "-r "
126 + branch.getName();
127 String[] cmd = new String[]
128 {
129 HgCommandConstants.LOG_CMD, HgCommandConstants.VERBOSE_OPTION, revisions
130 };
131 HgChangeLogConsumer consumer = new HgChangeLogConsumer( getLogger(),
132 datePattern );
133 ScmResult result = HgUtils.execute( consumer, getLogger(),
134 fileSet.getBasedir(), cmd );
135 List logEntries = consumer.getModifications();
136 List inRangeAndValid = new ArrayList();
137 startDate = ( startDate == null ) ? new Date( 0 ) : startDate;
138 endDate = ( endDate == null ) ? new Date() : endDate;
139 Iterator it = logEntries.iterator();
140 while ( it.hasNext() )
141 {
142 ChangeSet change = ( ChangeSet ) it.next();
143 if ( change.getFiles().size() > 0 )
144 {
145 if ( !change.getDate().before( startDate )
146 && !change.getDate().after( endDate ) )
147 {
148 inRangeAndValid.add( change );
149 }
150 }
151 }
152 ChangeLogSet changeLogSet = new ChangeLogSet( inRangeAndValid,
153 startDate, endDate );
154 return new ChangeLogScmResult( changeLogSet, result );
155 }
156 }