Class JazzStatusConsumer

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

public class JazzStatusConsumer extends AbstractRepositoryConsumer
Consume the output of the scm command for the "status" operation.

It is normally just used to build up a list of ScmFile objects that have their ScmFileStatus set. This class has been expanded so that the Workspace, Component and Baseline are also collected and set back in the JazzScmProviderRepository. The Workspace and Component names are needed for some other commands (list, for example), so we can easily get this information here.

As this class has expanded over time, it has become more and more of a state machine, one that needs to parse the output of the "scm status --wide" command. If there are any issues with this provider, I would suggest this is a good place to start.

  • Field Details

    • WORKSPACE_PATTERN

      private static final Pattern WORKSPACE_PATTERN
    • COMPONENT_PATTERN1

      private static final Pattern COMPONENT_PATTERN1
    • COMPONENT_PATTERN2

      private static final Pattern COMPONENT_PATTERN2
    • BASELINE_PATTERN

      private static final Pattern BASELINE_PATTERN
    • CHANGESET_PATTERN

      private static final Pattern CHANGESET_PATTERN
    • STATUS_CMD_WORKSPACE

      public static final String STATUS_CMD_WORKSPACE
      The "Status" command output line that contains the "Workspace" name.
      See Also:
    • STATUS_CMD_COMPONENT

      public static final String STATUS_CMD_COMPONENT
      The "Status" command output line that contains the "Component" name.
      See Also:
    • STATUS_CMD_BASELINE

      public static final String STATUS_CMD_BASELINE
      The "Status" command output line that contains the "Baseline" name.
      See Also:
    • STATUS_CMD_OUTGOING

      public static final String STATUS_CMD_OUTGOING
      The "Status" command output line that contains the "Outgoing" eye catcher.
      See Also:
    • STATUS_CMD_INCOMING

      public static final String STATUS_CMD_INCOMING
      The "Status" command output line that contains the "Incoming" eye catcher.
      See Also:
    • STATUS_CMD_CHANGE_SETS

      public static final String STATUS_CMD_CHANGE_SETS
      The "Status" command output line that contains the line "Change sets:". This will be followed by the change set lines themselves.
      See Also:
    • STATUS_CMD_BASELINES

      public static final String STATUS_CMD_BASELINES
      The "Status" command output line that contains the "Baselines" eye catcher.
      See Also:
    • STATUS_CMD_ADD_FLAG

      public static final String STATUS_CMD_ADD_FLAG
      The "Status" command status flag for a resource that has been added.
      See Also:
    • STATUS_CMD_CHANGE_FLAG

      public static final String STATUS_CMD_CHANGE_FLAG
      The "Status" command status flag for when the content or properties of a file have been modified, or the properties of a directory have changed.
      See Also:
    • STATUS_CMD_DELETE_FLAG

      public static final String STATUS_CMD_DELETE_FLAG
      The "Status" command status flag for a resource that has been deleted.
      See Also:
    • STATUS_CMD_MOVED_FLAG

      public static final String STATUS_CMD_MOVED_FLAG
      The "Status" command status flag for a resource that has been renamed or moved.
      See Also:
    • fChangedFiles

      private List<ScmFile> fChangedFiles
      A List of ScmFile objects that have their ScmFileStatus set.
    • seenOutgoingChangeSets

      private boolean seenOutgoingChangeSets
      Implement a simple state machine: Have we seen the "Change sets:" (outgoing) line or not?
    • seenIncomingChangeSets

      private boolean seenIncomingChangeSets
      Implement a simple state machine: Have we seen the "Change sets:" (incoming) line or not?
  • Constructor Details

    • JazzStatusConsumer

      public JazzStatusConsumer(ScmProviderRepository repo, ScmLogger logger)
      Constructor for our "scm status" consumer.
      Parameters:
      repo - The JazzScmProviderRepository being used.
      logger - The ScmLogger to use.
  • Method Details

    • consumeLine

      public void consumeLine(String line)
      Process one line of output from the execution of the "scm status" command.
      Specified by:
      consumeLine in interface org.codehaus.plexus.util.cli.StreamConsumer
      Overrides:
      consumeLine in class AbstractRepositoryConsumer
      Parameters:
      line - The line of output from the external command that has been pumped to us.
      See Also:
      • StreamConsumer.consumeLine(java.lang.String)
    • containsWorkspace

      private boolean containsWorkspace(String line)
    • extractWorkspace

      private void extractWorkspace(String line)
    • containsComponent

      private boolean containsComponent(String line)
    • extractComponent

      private void extractComponent(String line)
    • containsBaseline

      private boolean containsBaseline(String line)
    • extractBaseline

      private void extractBaseline(String line)
    • containsStatusFlag

      private boolean containsStatusFlag(String line)
    • extractChangedFile

      private void extractChangedFile(String line)
    • getChangedFiles

      public List<ScmFile> getChangedFiles()
    • containsOutgoing

      private boolean containsOutgoing(String line)
    • containsIncoming

      private boolean containsIncoming(String line)
    • containsBaselines

      private boolean containsBaselines(String line)
    • extractChangeSetAlias

      private Integer extractChangeSetAlias(String line)
      Extract and return an Integer of a change set alias, from both incoming and outgoing changesets.
      Parameters:
      line - The line to extract the change sets from.
      Returns:
      A parsed Integer value, or null if not able to parse.