Class PathAnnotations


  • public class PathAnnotations
    extends java.lang.Object
    Conveniently bundles up possible Perforce path-based metadata annotations and associated operations. This includes revision, label, changelist, and date annotations (at least). Most useful for converting to / from string representations associated with string file paths.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected int changelistId  
      protected java.util.Date date  
      protected int endRevision  
      protected java.lang.String label  
      static java.lang.String NONREV_PFX
      The string used to start Perforce file label / changelist / date metadata annotations.
      static java.lang.String REV_PFX
      The string used to start Perforce file revision metadata annotations.
      static java.lang.String REV_SEP
      The string used to separate Perforce file revision metadata annotations.
      protected int startRevision  
    • Constructor Summary

      Constructors 
      Constructor Description
      PathAnnotations()
      Construct a PathAnnotations object with default field values:
      startRev, endRev = IFileSpec.NO_FILE_REVISION;
      date, label = null;
      changelist = IChangelist.UNKNOWN.
      PathAnnotations​(int startRevision, int endRevision, java.util.Date date, int changelistId, java.lang.String label)
      Construct a PathAnnotations object from explicit candidate field values.
      PathAnnotations​(IFileSpec fileSpec)
      Construct a PathAnnotations object for a specific file spec.
      PathAnnotations​(java.lang.String pathStr)
      Construct a PathAnnotations object from the passed-in string, which is assumed to contain a path string with optional Perforce annotations.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      static boolean extractNonRevisionData​(java.lang.String pathStr, PathAnnotations pathAnnotations)
      Extract any non-revision info from the passed-in pathStr and put it into the passed-in pathAnnotations object.
      static boolean extractRevisionData​(java.lang.String pathStr, PathAnnotations pathAnnotations)
      Extract any start / end revision info from the passed-in pathStr and put it into the passed-in pathAnnotations object.
      static PathAnnotations getAnnotations​(java.lang.String pathStr)
      Get all Perforce metadata annotations from the passed-in string.
      int getChangelistId()  
      java.util.Date getDate()  
      int getEndRevision()  
      java.lang.String getLabel()  
      int getStartRevision()  
      static int hasNonRevisionAnnotations​(java.lang.String pathStr)
      Return non-negative index of first non-revision Perforce annotations match in the string if the passed-in string is not null and has label, changelist, date, etc., specs appended.
      static boolean hasPerforceAnnotations​(java.lang.String pathStr)
      Return true if the passed-in path is not null and has Perforce file metadata appended to it.
      static int hasRevisionAnnotations​(java.lang.String pathStr)
      Return non-negative index of first non-revision Perforce annotations match in the string if the passed-in string is not null has Perforce revision annotations appended to it.
      void setChangelistId​(int changelistId)  
      void setDate​(java.util.Date date)  
      void setEndRevision​(int endRev)  
      void setLabel​(java.lang.String label)  
      void setStartRevision​(int startRev)  
      static java.lang.String stripAnnotations​(java.lang.String pathStr)
      Strip any Perforce file metadata annotations from the passed-in string.
      java.lang.String toString()
      Return a Perforce-standard string representation of this annotation.
      • Methods inherited from class java.lang.Object

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

      • REV_PFX

        public static final java.lang.String REV_PFX
        The string used to start Perforce file revision metadata annotations.
        See Also:
        Constant Field Values
      • REV_SEP

        public static final java.lang.String REV_SEP
        The string used to separate Perforce file revision metadata annotations.
        See Also:
        Constant Field Values
      • NONREV_PFX

        public static final java.lang.String NONREV_PFX
        The string used to start Perforce file label / changelist / date metadata annotations.
        See Also:
        Constant Field Values
      • startRevision

        protected int startRevision
      • endRevision

        protected int endRevision
      • date

        protected java.util.Date date
      • changelistId

        protected int changelistId
      • label

        protected java.lang.String label
    • Constructor Detail

      • PathAnnotations

        public PathAnnotations()
        Construct a PathAnnotations object with default field values:
        startRev, endRev = IFileSpec.NO_FILE_REVISION;
        date, label = null;
        changelist = IChangelist.UNKNOWN.
      • PathAnnotations

        public PathAnnotations​(int startRevision,
                               int endRevision,
                               java.util.Date date,
                               int changelistId,
                               java.lang.String label)
        Construct a PathAnnotations object from explicit candidate field values.
        Parameters:
        startRevision - startRevision
        endRevision - endRevision
        date - date
        changelistId - changelistId
        label - label
      • PathAnnotations

        public PathAnnotations​(IFileSpec fileSpec)
        Construct a PathAnnotations object for a specific file spec. If fileSpec is null, this is equivalent to calling the default constructor.
        Parameters:
        fileSpec - fileSpec
      • PathAnnotations

        public PathAnnotations​(java.lang.String pathStr)
        Construct a PathAnnotations object from the passed-in string, which is assumed to contain a path string with optional Perforce annotations. If pathStr is null, or contains no parseable annotations, this is equivalent to calling the default constructor.
        Parameters:
        pathStr - pathStr
    • Method Detail

      • stripAnnotations

        public static java.lang.String stripAnnotations​(java.lang.String pathStr)
        Strip any Perforce file metadata annotations from the passed-in string. Returns the string as-is if there were no annotations or if the string was null. Will return the empty (not null) string if there was no actual path part of the string and pathStr wasn't null.
        Parameters:
        pathStr - pathStr
        Returns:
        stripped path
      • getAnnotations

        public static PathAnnotations getAnnotations​(java.lang.String pathStr)
        Get all Perforce metadata annotations from the passed-in string. If there are no annotations, or the passed-in pathStr argument is null, returns null.
        Parameters:
        pathStr - pathStr
        Returns:
        path annotations
      • hasRevisionAnnotations

        public static int hasRevisionAnnotations​(java.lang.String pathStr)
        Return non-negative index of first non-revision Perforce annotations match in the string if the passed-in string is not null has Perforce revision annotations appended to it. Otherwise returns -1.
        Parameters:
        pathStr - pathStr
        Returns:
        index
      • hasNonRevisionAnnotations

        public static int hasNonRevisionAnnotations​(java.lang.String pathStr)
        Return non-negative index of first non-revision Perforce annotations match in the string if the passed-in string is not null and has label, changelist, date, etc., specs appended. Otherwise returns -1.
        Parameters:
        pathStr - pathStr
        Returns:
        index
      • hasPerforceAnnotations

        public static boolean hasPerforceAnnotations​(java.lang.String pathStr)
        Return true if the passed-in path is not null and has Perforce file metadata appended to it.
        Parameters:
        pathStr - pathStr
        Returns:
        has matadata
      • extractRevisionData

        public static boolean extractRevisionData​(java.lang.String pathStr,
                                                  PathAnnotations pathAnnotations)
        Extract any start / end revision info from the passed-in pathStr and put it into the passed-in pathAnnotations object. Returns true if it found any parseable revision information, false otherwise.

        If either or both pathStr and pathAnnotations is null, returns false.

        Parameters:
        pathStr - pathStr
        pathAnnotations - pathAnnotations
        Returns:
        true if parseable revision data
      • extractNonRevisionData

        public static boolean extractNonRevisionData​(java.lang.String pathStr,
                                                     PathAnnotations pathAnnotations)
        Extract any non-revision info from the passed-in pathStr and put it into the passed-in pathAnnotations object. Returns true if it found any parseable label / changelist / date (etc.) information, false otherwise.

        Note that the candidate string "@2009/09/12" is ambiguous -- it could be either a date or a label by a generous reading of the Perforce specs -- but we take the "if it looks like a duck..." approach here and parse it as a date if at all possible. Similarly for the string "@12345" which could be a changelist ID or a label ID -- we parse it as a changelist ID if at all possible.

        If either or both pathStr and pathAnnotations is null, returns false.

        Parameters:
        pathStr - pathStr
        pathAnnotations - pathAnnotations
        Returns:
        false if null
      • toString

        public java.lang.String toString()
        Return a Perforce-standard string representation of this annotation. Will return an empty (not null) string if there's nothing to represent.
        Overrides:
        toString in class java.lang.Object
      • getStartRevision

        public int getStartRevision()
      • setStartRevision

        public void setStartRevision​(int startRev)
      • getEndRevision

        public int getEndRevision()
      • setEndRevision

        public void setEndRevision​(int endRev)
      • getDate

        public java.util.Date getDate()
      • setDate

        public void setDate​(java.util.Date date)
      • getChangelistId

        public int getChangelistId()
      • setChangelistId

        public void setChangelistId​(int changelistId)
      • getLabel

        public java.lang.String getLabel()
      • setLabel

        public void setLabel​(java.lang.String label)