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 Summary
Fields -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedProtected 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 Summary
Modifier 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
-
FSRL
Protected 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 FSRLRootpath- String path, meaning dependent on context
-
FSRL
Protected 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 FSRLRootpath- String path, meaning dependent on contextmd5- hex string with the md5 hash of the file this FSRL points to, null ok.
-
-
Method Details
-
fromProgram
-
writeToProgramInfo
Writes a FSRL value to aProgram's properties. -
fromString
Creates 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
-
fromString
Creates aFSRLfrom a raw string.See
fromPartString(FSRL, String)for details of character encoding fixups.- Parameters:
parent- ParentFSRLfsrlStr- something like "fstype://path/path|fs2type://path2/path2|etc://etc/etc"- Returns:
- new
FSRLinstance, never null - Throws:
MalformedURLException- if empty string or bad format
-
convertRootToContainer
Ensures 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
-
getFS
Returns theFSRLRootobject that represents the entirefilesystemfor this FSRL.Never returns NULL, and calling getFS() on a
FSRLRootobject returns itself. -
getNestingDepth
public 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.
-
getPath
Returns 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. -
getName
Returns 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.
-
getName
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.- 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.
-
getMD5
Returns 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.
-
isMD5Equal
Tests 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
-
withPath
Creates 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.
-
withPath
Creates 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
-
appendPath
Creates 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.
-
makeNested
Creates 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
-
toString
Returns a string containing the full FSRL.Example: "file://path|subfs://blah?MD5=1234567"
-
toPrettyString
Returns a string containing the full FSRL, excluding MD5 portions.- Returns:
- string with full FSRL, excluding MD5 portions.
-
toPrettyFullpathString
Returns 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"
-
appendToStringBuilder
protected void appendToStringBuilder(StringBuilder sb, boolean recurse, boolean includeParams, boolean includeFSRoot) -
toStringPart
Returns 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
-
isEquivalent
Returns true if the two FSRLs are the same, excluding any MD5 values.- Parameters:
fsrlStr- string-ifiedFSRL- Returns:
- boolean true if this instance is the same as the specified string-ified fsrl, ignoring any md5 values.
-
isEquivalent
Returns 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.
-
isDescendantOf
Returnstrueif this object is a child or descendant of the specifiedpotentialParentparameter. -
hashCode
public int hashCode() -
equals
-