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.StringCHANGELIST_DELIMITERThe changelist ends with a blank lineprivate static java.lang.StringCOMMENT_DELIMITERThe comment section ends with a blank lineprivate ChangeSetcurrentChangeThe current log entry being processed by the parserprivate java.lang.StringcurrentFilethe current file being processed by the parserprivate java.lang.StringcurrentRevisionThe current log entry being processed by the parserprivate java.util.List<ChangeSet>entriesprivate static java.util.regex.PatternFILE_PATTERNThe regular expression used to match file pathsprivate static intGET_AFFECTED_FILESState machine constant: expecting "Affected files"private static intGET_COMMENTState machine constant: expecting commentsprivate static intGET_COMMENT_BEGINState machine constant: eat the first blank lineprivate static intGET_FILEState machine constant: expecting filesprivate static intGET_FILES_BEGINState machine constant: expecting blank lineprivate static intGET_REVISIONState machine constant: expecting revisionprivate java.lang.StringrepoPathThe location of files within the Perforce depot that we are processing e.g.private static java.util.regex.PatternREVISION_PATTERNThe regular expression used to match header linesprivate intstatusCurrent status of the parserprivate java.lang.StringuserDatePattern
-
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 voidaddEntry(ChangeSet entry, ChangeFile file)Add a change log entry to the list (if it's not already there) with the given file.voidconsumeLine(java.lang.String line)java.util.List<ChangeSet>getModifications()private voidprocessGetAffectedFiles(java.lang.String line)Process the current input line in the GET_COMMENT state.private voidprocessGetComment(java.lang.String line)Process the current input line in the GET_COMMENT state.private voidprocessGetFile(java.lang.String line)Each file matches the fileRegexp.private voidprocessGetRevision(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- aChangeSetto be added to the list if another with the same key (p4 change number) doesn't exist already.file- aChangeFileto 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
-
-