Class SvnChangeLogConsumer

  • All Implemented Interfaces:
    org.codehaus.plexus.util.cli.StreamConsumer

    public class SvnChangeLogConsumer
    extends AbstractConsumer
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static int AUTHOR_GROUP  
      private static java.lang.String COMMENT_END_TOKEN
      The comment section ends with a dashed line
      private SvnChangeSet currentChange
      The current log entry being processed by the parser
      private java.lang.StringBuilder currentComment
      The current comment of the entry being processed by the parser
      private java.lang.String currentRevision
      The current revision of the entry being processed by the parser
      private static int DATE_GROUP  
      private static java.util.regex.Pattern DATE_REG_EXP  
      private java.util.List<ChangeSet> entries
      List of change log entries
      private static java.lang.String FILE_END_TOKEN
      The file section ends with a blank line
      private static java.util.regex.Pattern FILE_PATTERN
      There is always action and affected path; when copying/moving, recognize also original path and revision
      private static int GET_COMMENT
      State machine constant: expecting comments
      private static int GET_FILE
      State machine constant: expecting file information
      private static int GET_HEADER
      State machine constant: expecting header
      private static java.util.regex.Pattern HEADER_REG_EXP
      The regular expression used to match header lines
      private static java.util.regex.Pattern ORIG_FILE_PATTERN
      This matches the 'original file info' part of the complete file line.
      private static int REVISION_GROUP  
      private static java.util.regex.Pattern REVISION_REG_EXP1  
      private static java.util.regex.Pattern REVISION_REG_EXP2  
      private int status
      Current status of the parser
      private static java.lang.String SVN_TIMESTAMP_PATTERN
      Date formatter for svn timestamp (after a little massaging)
      private java.lang.String userDateFormat  
    • Constructor Summary

      Constructors 
      Constructor Description
      SvnChangeLogConsumer​(ScmLogger logger, java.lang.String userDateFormat)
      Default constructor.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void consumeLine​(java.lang.String line)
      private java.util.Date getDate​(java.lang.String dateOutput)
      Converts the date time stamp from the svn output into a date object.
      java.util.List<ChangeSet> getModifications()  
      private java.lang.String getRevision​(java.lang.String revisionOutput)
      Gets the svn revision, from the svn log revision output.
      private void processGetComment​(java.lang.String line)
      Process the current input line in the GET_COMMENT state.
      private void processGetFile​(java.lang.String line)
      Process the current input line in the GET_FILE state.
      private void processGetHeader​(java.lang.String line)
      Process the current input line in the GET_HEADER state.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • SVN_TIMESTAMP_PATTERN

        private static final java.lang.String SVN_TIMESTAMP_PATTERN
        Date formatter for svn timestamp (after a little massaging)
        See Also:
        Constant Field Values
      • GET_HEADER

        private static final int GET_HEADER
        State machine constant: expecting header
        See Also:
        Constant Field Values
      • GET_FILE

        private static final int GET_FILE
        State machine constant: expecting file information
        See Also:
        Constant Field Values
      • GET_COMMENT

        private static final int GET_COMMENT
        State machine constant: expecting comments
        See Also:
        Constant Field Values
      • FILE_PATTERN

        private static final java.util.regex.Pattern FILE_PATTERN
        There is always action and affected path; when copying/moving, recognize also original path and revision
      • ORIG_FILE_PATTERN

        private static final java.util.regex.Pattern ORIG_FILE_PATTERN
        This matches the 'original file info' part of the complete file line. Note the use of [:alpha:] instead of literal 'from' - this is meant to allow non-English localizations.
      • FILE_END_TOKEN

        private static final java.lang.String FILE_END_TOKEN
        The file section ends with a blank line
        See Also:
        Constant Field Values
      • COMMENT_END_TOKEN

        private static final java.lang.String COMMENT_END_TOKEN
        The comment section ends with a dashed line
        See Also:
        Constant Field Values
      • status

        private int status
        Current status of the parser
      • entries

        private java.util.List<ChangeSet> entries
        List of change log entries
      • currentChange

        private SvnChangeSet currentChange
        The current log entry being processed by the parser
      • currentRevision

        private java.lang.String currentRevision
        The current revision of the entry being processed by the parser
      • currentComment

        private java.lang.StringBuilder currentComment
        The current comment of the entry being processed by the parser
      • HEADER_REG_EXP

        private static final java.util.regex.Pattern HEADER_REG_EXP
        The regular expression used to match header lines
      • REVISION_REG_EXP1

        private static final java.util.regex.Pattern REVISION_REG_EXP1
      • REVISION_REG_EXP2

        private static final java.util.regex.Pattern REVISION_REG_EXP2
      • DATE_REG_EXP

        private static final java.util.regex.Pattern DATE_REG_EXP
      • userDateFormat

        private final java.lang.String userDateFormat
    • Constructor Detail

      • SvnChangeLogConsumer

        public SvnChangeLogConsumer​(ScmLogger logger,
                                    java.lang.String userDateFormat)
        Default constructor.
    • Method Detail

      • getModifications

        public java.util.List<ChangeSet> getModifications()
      • consumeLine

        public void consumeLine​(java.lang.String line)
      • processGetHeader

        private void processGetHeader​(java.lang.String line)
        Process the current input line in the GET_HEADER state. The author, date, and the revision of the entry are gathered. Note, Subversion does not have per-file revisions, instead, the entire repository is given a single revision number, which is used for the revision number of each file.
        Parameters:
        line - A line of text from the svn log output
      • getRevision

        private java.lang.String getRevision​(java.lang.String revisionOutput)
        Gets the svn revision, from the svn log revision output.
        Parameters:
        revisionOutput -
        Returns:
        the svn revision
      • processGetFile

        private void processGetFile​(java.lang.String line)
        Process the current input line in the GET_FILE state. This state adds each file entry line to the current change log entry. Note, the revision number for the entire entry is used for the revision number of each file.
        Parameters:
        line - A line of text from the svn 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 svn log output
      • getDate

        private java.util.Date getDate​(java.lang.String dateOutput)
        Converts the date time stamp from the svn output into a date object.
        Parameters:
        dateOutput - The date output from an svn log command.
        Returns:
        A date representing the time stamp of the log entry.