com.perforce.p4java.impl.generic.core.file
Class PathAnnotations

java.lang.Object
  extended by com.perforce.p4java.impl.generic.core.file.PathAnnotations

public class PathAnnotations
extends 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
protected  int changelistId
           
protected  Date date
           
protected  int endRevision
           
protected  String label
           
static String NONREV_PFX
          The string used to start Perforce file label / changelist / date metadata annotations.
static String REV_PFX
          The string used to start Perforce file revision metadata annotations.
static String REV_SEP
          The string used to separate Perforce file revision metadata annotations.
protected  int startRevision
           
 
Constructor Summary
PathAnnotations()
          Construct a PathAnnotations object with default field values:
startRev, endRev = IFileSpec.NO_FILE_REVISION;
date, label = null;
changelist = IChangelist.UNKNOWN.
PathAnnotations(IFileSpec fileSpec)
          Construct a PathAnnotations object for a specific file spec.
PathAnnotations(int startRevision, int endRevision, Date date, int changelistId, String label)
          Construct a PathAnnotations object from explicit candidate field values.
PathAnnotations(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
static boolean extractNonRevisionData(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(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(String pathStr)
          Get all Perforce metadata annotations from the passed-in string.
 int getChangelistId()
           
 Date getDate()
           
 int getEndRevision()
           
 String getLabel()
           
 int getStartRevision()
           
static int hasNonRevisionAnnotations(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(String pathStr)
          Return true if the passed-in path is not null and has Perforce file metadata appended to it.
static int hasRevisionAnnotations(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(Date date)
           
 void setEndRevision(int endRev)
           
 void setLabel(String label)
           
 void setStartRevision(int startRev)
           
static String stripAnnotations(String pathStr)
          Strip any Perforce file metadata annotations from the passed-in string.
 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 String REV_PFX
The string used to start Perforce file revision metadata annotations.

See Also:
Constant Field Values

REV_SEP

public static final String REV_SEP
The string used to separate Perforce file revision metadata annotations.

See Also:
Constant Field Values

NONREV_PFX

public static final 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 Date date

changelistId

protected int changelistId

label

protected 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,
                       Date date,
                       int changelistId,
                       String label)
Construct a PathAnnotations object from explicit candidate field values.


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.


PathAnnotations

public PathAnnotations(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.

Method Detail

stripAnnotations

public static String stripAnnotations(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.


getAnnotations

public static PathAnnotations getAnnotations(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.


hasRevisionAnnotations

public static int hasRevisionAnnotations(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.


hasNonRevisionAnnotations

public static int hasNonRevisionAnnotations(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.


hasPerforceAnnotations

public static boolean hasPerforceAnnotations(String pathStr)
Return true if the passed-in path is not null and has Perforce file metadata appended to it.


extractRevisionData

public static boolean extractRevisionData(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.


extractNonRevisionData

public static boolean extractNonRevisionData(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.


toString

public 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 Object

getStartRevision

public int getStartRevision()

setStartRevision

public void setStartRevision(int startRev)

getEndRevision

public int getEndRevision()

setEndRevision

public void setEndRevision(int endRev)

getDate

public Date getDate()

setDate

public void setDate(Date date)

getChangelistId

public int getChangelistId()

setChangelistId

public void setChangelistId(int changelistId)

getLabel

public String getLabel()

setLabel

public void setLabel(String label)


Copyright © 2015 Perforce Software. All Rights Reserved.