Interface ResourcePath
public sealed interface ResourcePath
Represents a module name and a URI used for loading a document's resources.
Page paths are made up of 3 elements: the module name, the path and the query.
Module Name
Name of a specific directory/zip archive in theDelphiResources.getModuleDirectory()
directory.
Path
The file path of a file/directory in the directory/zip archive the module name points to.Query
Optional search parameters that scripts can use.-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptionaddAllElements
(@NotNull ResourcePath path) Adds all elements from the specified path.addElement
(@NotNull String element) Adds an element to the path's filepath.Clears all of this path's file elements.static ResourcePath
Creates a page path with a specifiedmoduleName
int
Gets the amount of elements in the pathelements()
Gets the file path of this page path combined with the query parameters.@NotNull String
getElement
(int index) Gets an element at a specific indexGets an unmodifiable list of the path's elements@NotNull String
Gets the module name element of the path.@Nullable String
Gets the value of a queryGets an unmodifiable set of the query keys.@NotNull String
path()
Gets the file path part of this page path.@NotNull String
query()
Gets the query part of this path as a string.removeElement
(int index) Removes a path elementsetElement
(int index, @NotNull String element) Sets the element at a specific index.setElements
(ResourcePath path) Sets the elements of this pathsetModuleName
(@NotNull String moduleName) Sets the module name.Sets a query value.toString()
Combines the module name, elements and queries into a string that can be given toDelphi.parsePath(String)
to parse.static void
validateFilename
(String element) Validates a filename.static void
validateQuery
(String query) Validates a query key/value.
-
Field Details
-
VALID_ELEMENT
-
VALID_QUERY
-
-
Method Details
-
create
Creates a page path with a specifiedmoduleName
- Parameters:
moduleName
- Path Module name- Returns:
- Created path
-
validateFilename
Validates a filename.For a filename to be "valid" it must not be null and match the
VALID_ELEMENT
regex pattern.- Parameters:
element
- Element to validate- Throws:
NullPointerException
- If theelement
isnull
IllegalArgumentException
- If theelement
is an invalid filename.
-
validateQuery
Validates a query key/value.For a query key or value to be "valid" it must not be null and must match the
VALID_QUERY
regex pattern.- Parameters:
query
- Query element to validate.- Throws:
NullPointerException
- If thequery
is null.IllegalArgumentException
- If thequery
is invalid.
-
getModuleName
Gets the module name element of the path.- Returns:
- Module name
-
setModuleName
Sets the module name.- Parameters:
moduleName
- New module name- Returns:
- A copy of this path with the specified module name
- Throws:
NullPointerException
- If the module name is nullIllegalArgumentException
- If the module name failsvalidateQuery(String)
-
addElement
Adds an element to the path's filepath.- Parameters:
element
- Filename- Returns:
- A copy of this path with the specified element added
- Throws:
NullPointerException
- If theelement
isnull
IllegalArgumentException
- If the element failsvalidateFilename(String)
-
setElement
ResourcePath setElement(int index, @NotNull @NotNull String element) throws IndexOutOfBoundsException Sets the element at a specific index.- Parameters:
index
- Element indexelement
- New element- Returns:
- A copy of this path with the specified element changed
- Throws:
IndexOutOfBoundsException
- If the index is less than 0 or greater/equal toelementCount()
.NullPointerException
- If theelement
isnull
IllegalArgumentException
- If the element failsvalidateFilename(String)
-
setQuery
Sets a query value.- Parameters:
key
- Query keyvalue
- Query value- Returns:
- A copy of this path with the specified query changed
- Throws:
NullPointerException
- If thekey
is nullIllegalArgumentException
- If thekey
orvalue
(if not null) failsvalidateQuery(String)
.
-
addAllElements
Adds all elements from the specified path.- Parameters:
path
- Path to copy elements from- Returns:
- A copy of this path with all the elements of the specified path added
-
setElements
Sets the elements of this path- Parameters:
path
- Path elements- Returns:
- A copy of this path with the elements of the specified path
-
removeElement
Removes a path element- Parameters:
index
- Index of the element to remove- Returns:
- A copy of this path with the specified element removed
-
clearElements
ResourcePath clearElements()Clears all of this path's file elements.- Returns:
- A copy of this path with no elements
-
getQuery
-
getQueryKeys
-
getElements
-
elementCount
int elementCount()Gets the amount of elements in the path- Returns:
- Element count
-
getElement
Gets an element at a specific indexAssume we have the path
foobar/filepath/filename.ext
, these would be the indexes:Index Element 0 foobar
1 filepath
2 filename.ext
- Parameters:
index
- Element index- Returns:
- Element
- Throws:
IndexOutOfBoundsException
- Ifindex
is less than 0, or greater/equal toelementCount()
.
-
path
Gets the file path part of this page path.Example:
foo/bar/foobar.json
- Returns:
- File path string, or
""
, if no file elements were specified
-
query
Gets the query part of this path as a string.Example:
?foo=bar&bar=foo
- Returns:
- Query string, or
""
if there are no query elements.
-
elements
String elements()Gets the file path of this page path combined with the query parameters.Example:
dir/file.xml?foo=bar
- Returns:
- File path + query parameters.
- See Also:
-
toString
String toString()Combines the module name, elements and queries into a string that can be given toDelphi.parsePath(String)
to parse.Examples:
module
module:file.ext
module:'file with space.ext'
module:'dir with space'/file.xml
module:foobar/file.ext
module:foobar/file.ext?foo=bar&bar=foo
module:foobar/file.ext?foo&bar=false
module:?foo=bar&bar=foo
-