Class 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 line
      private static java.lang.String COMMENT_DELIMITER
      The comment section ends with a blank line
      private ChangeSet currentChange
      The current log entry being processed by the parser
      private java.lang.String currentFile
      the current file being processed by the parser
      private java.lang.String currentRevision
      The current log entry being processed by the parser
      private java.util.List<ChangeSet> entries  
      private static java.util.regex.Pattern FILE_PATTERN
      The regular expression used to match file paths
      private static int GET_AFFECTED_FILES
      State machine constant: expecting "Affected files"
      private static int GET_COMMENT
      State machine constant: expecting comments
      private static int GET_COMMENT_BEGIN
      State machine constant: eat the first blank line
      private static int GET_FILE
      State machine constant: expecting files
      private static int GET_FILES_BEGIN
      State machine constant: expecting blank line
      private static int GET_REVISION
      State machine constant: expecting revision
      private 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 lines
      private int status
      Current status of the parser
      private java.lang.String userDatePattern  
    • Constructor Summary

      Constructors 
      Constructor Description
      PerforceDescribeConsumer​(java.lang.String repoPath, java.lang.String userDatePattern, ScmLogger logger)  
    • 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

      • 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 - a ChangeSet to be added to the list if another with the same key (p4 change number) doesn't exist already.
        file - a ChangeFile 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