Class PerforceDescribeConsumer
- java.lang.Object
-
- org.apache.maven.scm.util.AbstractConsumer
-
- org.apache.maven.scm.provider.perforce.command.changelog.PerforceDescribeConsumer
-
- All Implemented Interfaces:
org.codehaus.plexus.util.cli.StreamConsumer
public class PerforceDescribeConsumer extends AbstractConsumer
Parse the tagged output from "p4 describe -s [change] [change] [...]".
-
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.String
CHANGELIST_DELIMITER
The changelist ends with a blank lineprivate static java.lang.String
COMMENT_DELIMITER
The comment section ends with a blank lineprivate ChangeSet
currentChange
The current log entry being processed by the parserprivate java.lang.String
currentFile
the current file being processed by the parserprivate java.lang.String
currentRevision
The current log entry being processed by the parserprivate java.util.List<ChangeSet>
entries
private static java.util.regex.Pattern
FILE_PATTERN
The regular expression used to match file pathsprivate static int
GET_AFFECTED_FILES
State machine constant: expecting "Affected files"private static int
GET_COMMENT
State machine constant: expecting commentsprivate static int
GET_COMMENT_BEGIN
State machine constant: eat the first blank lineprivate static int
GET_FILE
State machine constant: expecting filesprivate static int
GET_FILES_BEGIN
State machine constant: expecting blank lineprivate static int
GET_REVISION
State machine constant: expecting revisionprivate java.lang.String
repoPath
The location of files within the Perforce depot that we are processing e.g.private static java.util.regex.Pattern
REVISION_PATTERN
The regular expression used to match header linesprivate int
status
Current status of the parserprivate java.lang.String
userDatePattern
-
Constructor Summary
Constructors Constructor Description PerforceDescribeConsumer(java.lang.String repoPath, java.lang.String userDatePattern, ScmLogger logger)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
addEntry(ChangeSet entry, ChangeFile file)
Add a change log entry to the list (if it's not already there) with the given file.void
consumeLine(java.lang.String line)
java.util.List<ChangeSet>
getModifications()
private void
processGetAffectedFiles(java.lang.String line)
Process the current input line in the GET_COMMENT state.private void
processGetComment(java.lang.String line)
Process the current input line in the GET_COMMENT state.private void
processGetFile(java.lang.String line)
Each file matches the fileRegexp.private void
processGetRevision(java.lang.String line)
Most of the relevant info is on the revision line matching the 'pattern' string.-
Methods inherited from class org.apache.maven.scm.util.AbstractConsumer
getLogger, parseDate, parseDate, setLogger
-
-
-
-
Field Detail
-
entries
private java.util.List<ChangeSet> entries
-
GET_REVISION
private static final int GET_REVISION
State machine constant: expecting revision- See Also:
- Constant Field Values
-
GET_COMMENT_BEGIN
private static final int GET_COMMENT_BEGIN
State machine constant: eat the first blank line- See Also:
- Constant Field Values
-
GET_COMMENT
private static final int GET_COMMENT
State machine constant: expecting comments- See Also:
- Constant Field Values
-
GET_AFFECTED_FILES
private static final int GET_AFFECTED_FILES
State machine constant: expecting "Affected files"- See Also:
- Constant Field Values
-
GET_FILES_BEGIN
private static final int GET_FILES_BEGIN
State machine constant: expecting blank line- See Also:
- Constant Field Values
-
GET_FILE
private static final int GET_FILE
State machine constant: expecting files- See Also:
- Constant Field Values
-
status
private int status
Current status of the parser
-
currentRevision
private java.lang.String currentRevision
The current log entry being processed by the parser
-
currentChange
private ChangeSet currentChange
The current log entry being processed by the parser
-
currentFile
private java.lang.String currentFile
the current file being processed by the parser
-
repoPath
private java.lang.String repoPath
The location of files within the Perforce depot that we are processing e.g. //depot/projects/foo/bar
-
userDatePattern
private java.lang.String userDatePattern
-
REVISION_PATTERN
private static final java.util.regex.Pattern REVISION_PATTERN
The regular expression used to match header lines
-
COMMENT_DELIMITER
private static final java.lang.String COMMENT_DELIMITER
The comment section ends with a blank line- See Also:
- Constant Field Values
-
CHANGELIST_DELIMITER
private static final java.lang.String CHANGELIST_DELIMITER
The changelist ends with a blank line- See Also:
- Constant Field Values
-
FILE_PATTERN
private static final java.util.regex.Pattern FILE_PATTERN
The regular expression used to match file paths
-
-
Constructor Detail
-
PerforceDescribeConsumer
public PerforceDescribeConsumer(java.lang.String repoPath, java.lang.String userDatePattern, ScmLogger logger)
-
-
Method Detail
-
getModifications
public java.util.List<ChangeSet> getModifications() throws ScmException
- Throws:
ScmException
-
consumeLine
public void consumeLine(java.lang.String line)
-
addEntry
private void addEntry(ChangeSet entry, ChangeFile file)
Add a change log entry to the list (if it's not already there) with the given file.- Parameters:
entry
- aChangeSet
to be added to the list if another with the same key (p4 change number) doesn't exist already.file
- aChangeFile
to be added to the entry
-
processGetFile
private void processGetFile(java.lang.String line)
Each file matches the fileRegexp.- Parameters:
line
- A line of text from the Perforce log output
-
processGetRevision
private void processGetRevision(java.lang.String line)
Most of the relevant info is on the revision line matching the 'pattern' string.- Parameters:
line
- A line of text from the perforce log output
-
processGetComment
private void processGetComment(java.lang.String line)
Process the current input line in the GET_COMMENT state. This state gathers all of the comments that are part of a log entry.- Parameters:
line
- a line of text from the perforce log output
-
processGetAffectedFiles
private void processGetAffectedFiles(java.lang.String line)
Process the current input line in the GET_COMMENT state. This state gathers all of the comments that are part of a log entry.- Parameters:
line
- a line of text from the perforce log output
-
-