Class PathAnnotations
- java.lang.Object
-
- com.perforce.p4java.impl.generic.core.file.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.
-
-
-
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
- startRevisionendRevision
- endRevisiondate
- datechangelistId
- changelistIdlabel
- 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
- pathStrpathAnnotations
- 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
- pathStrpathAnnotations
- 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 classjava.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)
-
-