Class FSRL
- Direct Known Subclasses:
- FSRLRoot
Used to locate a resource (by name) on a "filesystem", in a recursively nested fashion.
 The string format of FSRLs is fstype + "://" + path + optional_MD5
 [ + "|" pipe + FSRL ]*
 
 See fromPartString(FSRL, String) for more format info.
 
Read the string format from right-to-left for easiest understanding... ie. "file://z|y://x" reads as "file x inside a filesystem y inside a container file z".
FSRL instances are immutable and thread-safe.
Examples (pipes shown in red since they are hard to see):
- file://dir/subdir -- simplest example, locates a file on local computer filesystem.
- file://dir/subdir/example.zip|zip://readme.txt -- points to a file named "readme.txt" in a zip file.
- file://dir/subdir/example.zip|zip://dir/nested.tar|tar://file.txt -- points to a file inside a TAR archive, which is inside a ZIP archive, which is on the local filesystem.
- file://dir/subdir/example.zip?MD5=1234567|zip://readme.txt?MD5=987654 -- points to a file named "readme.txt" (with a MD5 hash) in a zip file (that has another MD5 hash).
 See FSRLRoot for examples of how FSRL and FSRLRoot's are related.
 
 FSRL's can be created either piecemeal, from the bottom up, starting with a root filesystem
 FSRL and calling appendPath(String) or FSRLRoot.nestedFS(FSRL, String) methods
 to create deeper and deeper nested FSRLs,
 
or
 FSRL's can be created from strings using fromString(String).
 
 FSRLs that have a MD5 value are "fully qualified".
- 
Field SummaryFields
- 
Constructor SummaryConstructorsModifierConstructorDescriptionprotectedProtected constructor called by static factory methods such asfromString(String)or methods that return a new instance such aswithPath(String).protectedProtected constructor called by static factory methods such asfromString(String)or methods that return a new instance such aswithPath(String).
- 
Method SummaryModifier and TypeMethodDescriptionappendPath(String relPath) protected voidappendToStringBuilder(StringBuilder sb, boolean recurse, boolean includeParams, boolean includeFSRoot) static FSRLconvertRootToContainer(FSRL fsrl) Ensures that a FSRL instance is a file type reference by converting any FSRLRoots into the container file that hosts the FSRLRoot.booleanstatic FSRLfromProgram(Program program) static FSRLfromString(FSRL parent, String fsrlStr) Creates aFSRLfrom a raw string.static FSRLfromString(String fsrlStr) Creates aFSRLfrom a raw string.getFS()Returns theFSRLRootobject that represents the entirefilesystemfor this FSRL.getMD5()Returns the MD5 string associated with this file.getName()Returns the name portion of this FSRL's path, everything after the last '/'getName(int nestedDepth) Returns the name portion of the FSRL part at parent depthnestedDepth, where 0 is ourself (equiv to just callinggetName(), 1 is the parent container's name, etc.intgetPath()Returns the full path/filename of this FSRL.inthashCode()booleanisDescendantOf(FSRL potentialParent) Returnstrueif this object is a child or descendant of the specifiedpotentialParentparameter.booleanisEquivalent(FSRL other) Returns true if the twoFSRLs are the same, excluding any MD5 values.booleanisEquivalent(String fsrlStr) Returns true if the two FSRLs are the same, excluding any MD5 values.booleanisMD5Equal(String otherMD5) Tests specified MD5 value against MD5 in this FSRL.makeNested(String fstype) Creates a newFSRLRootinstance that is a child of this FSRL.split()Returns a string containing the full FSRL, without FS "fstype://" portionsReturns a string containing the full FSRL, excluding MD5 portions.toString()Returns a string containing the full FSRL.Returns a string containing just the currentFSRLprotocol and path.Creates a newFSRLinstance using the same path and other metadata present in thecopyPathinstance.static voidwriteToProgramInfo(Program program, FSRL fsrl) Writes a FSRL value to aProgram's properties.
- 
Field Details- 
PARAM_MD5- See Also:
 
- 
FSRL_OPTION_NAME- See Also:
 
- 
parent
- 
path
 
- 
- 
Constructor Details- 
FSRLProtected constructor called by static factory methods such asfromString(String)or methods that return a new instance such aswithPath(String).- Parameters:
- parent- FSRL parent, null if this instance is root FSRLRoot
- path- String path, meaning dependent on context
 
- 
FSRLProtected constructor called by static factory methods such asfromString(String)or methods that return a new instance such aswithPath(String).- Parameters:
- parent- FSRL parent, null if this instance is root FSRLRoot
- path- String path, meaning dependent on context
- md5- hex string with the md5 hash of the file this FSRL points to, null ok.
 
 
- 
- 
Method Details- 
fromProgram
- 
writeToProgramInfoWrites a FSRL value to aProgram's properties.
- 
fromStringCreates aFSRLfrom a raw string. The parent portions of the FSRL are not intern()'d so will not be shared with other FSRL instances.See fromPartString(FSRL, String)for details of character encoding fixups.- Parameters:
- fsrlStr- something like "fstype://path/path|fs2type://path2/path2|etc://etc/etc"
- Returns:
- new FSRLinstance, never null
- Throws:
- MalformedURLException- if empty string or bad format
 
- 
fromStringCreates aFSRLfrom a raw string.See fromPartString(FSRL, String)for details of character encoding fixups.- Parameters:
- parent- Parent- FSRL
- fsrlStr- something like "fstype://path/path|fs2type://path2/path2|etc://etc/etc"
- Returns:
- new FSRLinstance, never null
- Throws:
- MalformedURLException- if empty string or bad format
 
- 
convertRootToContainerEnsures that a FSRL instance is a file type reference by converting any FSRLRoots into the container file that hosts the FSRLRoot.- Parameters:
- fsrl- FSRL or FSRLRoot instance to possibly convert
- Returns:
- original FSRL if already a normal FSRL, or the container if it was a FSRLRoot
 
- 
getFSReturns theFSRLRootobject that represents the entirefilesystemfor this FSRL.Never returns NULL, and calling getFS() on a FSRLRootobject returns itself.
- 
getNestingDepthpublic int getNestingDepth()Returns the number ofFSRLRoots there are in thisFSRL.A single level FSRL such as "file://path" will return 1. 
 A two level FSRL such as "file://path|subfs://path2" will return 2.
 etc.- Returns:
- number of levels in this FSRL, min value returned is 1.
 
- 
getPathReturns the full path/filename of this FSRL. Does not include parent filesystem path or info."file://path|subfs://subpath/blah" returns "/subpath/blah" May return null if this instance is a FSRLRoot.
- 
getNameReturns the name portion of this FSRL's path, everything after the last '/'"file://path/name.ext" returns "name.ext" - Returns:
- name portion of this FSRL path, or null if path is null also.
 
- 
getNameReturns the name portion of the FSRL part at parent depthnestedDepth, where 0 is ourself (equiv to just callinggetName(), 1 is the parent container's name, etc.- Parameters:
- nestedDepth- relative parent index of FSRL part to query, 0 == this instance.
- Returns:
- name portion of the path of the specified FSRL part.
- Throws:
- IOException- if nestedDepth is larger than number of FSRL parent parts.
 
- 
getMD5Returns the MD5 string associated with this file.NULL if no MD5 value present. - Returns:
- md5 string associated with this file object, or null if not present.
 
- 
isMD5EqualTests specified MD5 value against MD5 in this FSRL.- Parameters:
- otherMD5- md5 in a hex string
- Returns:
- boolean true if equal, or that both are null, false otherwise
 
- 
withMD5- Parameters:
- newMD5- string md5
- Returns:
- new FSRLinstance with the same path and the specified md5 value, or if newMD5 is same as existing, returns this
 
- 
withPathCreates a newFSRLinstance, using the sameFSRLRootas this instance, but with a new path.See also appendPath(String).- Parameters:
- newpath- string path
- Returns:
- new FSRLinstance with the specified path.
 
- 
withPathCreates a newFSRLinstance using the same path and other metadata present in thecopyPathinstance.Used when re-root'ing a FSRL path onto another parent object (usually during intern()'ing) - Parameters:
- copyPath- another FSRL to copy path and md5 from
- Returns:
- new FSRL instance
 
- 
appendPathCreates a newFSRLinstance, using the sameFSRLRootas this instance, combining the currentpathwith therelPathvalue.- Parameters:
- relPath- relative path string to append, '/'s will be automatically added
- Returns:
- new FSRLinstance with additional path appended.
 
- 
makeNestedCreates a newFSRLRootinstance that is a child of this FSRL.See FSRLRoot.nestedFS(FSRL, FSRLRoot)andFSRLRoot.nestedFS(FSRL, String).- Parameters:
- fstype- file system type string.
- Returns:
- new FSRLRootinstance
 
- 
toStringReturns a string containing the full FSRL.Example: "file://path|subfs://blah?MD5=1234567" 
- 
toPrettyStringReturns a string containing the full FSRL, excluding MD5 portions.- Returns:
- string with full FSRL, excluding MD5 portions.
 
- 
toPrettyFullpathStringReturns a string containing the full FSRL, without FS "fstype://" portionsExample: "fsrl://path/filename?MD5=1234|subfsrl://subpath/subfile"will result in "path/filename|subpath/subfile".- Returns:
- formatted string such as: "path/filename|subpath/subfile"
 
- 
appendToStringBuilderprotected void appendToStringBuilder(StringBuilder sb, boolean recurse, boolean includeParams, boolean includeFSRoot) 
- 
toStringPartReturns a string containing just the currentFSRLprotocol and path.Example: "file://path|subfs://blah?MD5=123456" returns "subfs://blah?MD5=123456" - Returns:
- string containing just the current FSRLprotocol and path.
 
- 
split
- 
isEquivalentReturns true if the two FSRLs are the same, excluding any MD5 values.- Parameters:
- fsrlStr- string-ified- FSRL
- Returns:
- boolean true if this instance is the same as the specified string-ified fsrl, ignoring any md5 values.
 
- 
isEquivalentReturns true if the twoFSRLs are the same, excluding any MD5 values.- Parameters:
- other-- FSRLto compare with
- Returns:
- boolean true if this instance is the same as the specified FSRL, ignoring any md5 values.
 
- 
isDescendantOfReturnstrueif this object is a child or descendant of the specifiedpotentialParentparameter.
- 
hashCodepublic int hashCode()
- 
equals
 
-