Interface Storage
-
public interface Storage
Storage is a standard API that providers can implement to allow abstract UNIX-like file system for data sources. The methods provided by Storage are similar in form and behavior to standard Linux operating system commands.- A name pattern (file or directory) is a sequence of characters, not containing "/", leading spaces, trailing spaces.
- A name (file or directory name) is a name pattern, not containing "*" or "?".
- A pattern is a sequence of names separated with "/", optionally ending at a name pattern.
<pattern> ::= <absolute pattern> | <relative pattern> <absolute path> ::= / [<relative pattern>] <relative path> ::= <name> {/ <name>} [/ <name pattern>] [/] | <name pattern> [/]
- A path is a path is a pattern, not containing any name pattern.
- Even though the syntax allows patterns with trailing "/", they are treated as referring the same file or directory as the path without the trailing /
- This is an abstract file system abstracting the underlying physical file system if any. Thus, under Windows the directories separator is still /, no matter that Windows uses \
- Author:
- Marko A. Rodriguez (http://markorodriguez.com)
-
-
Field Summary
Fields Modifier and Type Field Description static String
FILE_SEPARATOR
The file and directory names separator in this uniform UNIX-like abstract file systemstatic String
ROOT_DIRECTORY
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description boolean
cp(String sourcePattern, String targetDirectory)
Recursively copy all the data sources from the source location to the target location.boolean
exists(String pattern)
Determine whether the specified location has a data source.default Iterator<String>
head(String location)
Get a string representation of the specified number of lines at the data source location.Iterator<String>
head(String location, int totalLines)
Get a string representation of the specified number of lines at the data source location.default Iterator<Vertex>
head(String location, Class readerClass)
Get the vertices at the specified graph location.Iterator<Vertex>
head(String location, Class readerClass, int totalLines)
Get the vertices at the specified graph location.default <K,V>
Iterator<KeyValue<K,V>>head(String location, String memoryKey, Class readerClass)
Get theKeyValue
data at the specified memory location.<K,V>
Iterator<KeyValue<K,V>>head(String location, String memoryKey, Class readerClass, int totalLines)
Get theKeyValue
data at the specified memory location.List<String>
ls()
List all the data sources in the root directory.List<String>
ls(String pattern)
List all the files (e.g.boolean
rm(String pattern)
Recursively remove the file (data source) at the specified location.static String
toPath(File path)
static String
toPath(String path)
-
-
-
Field Detail
-
FILE_SEPARATOR
static final String FILE_SEPARATOR
The file and directory names separator in this uniform UNIX-like abstract file system- See Also:
- Constant Field Values
-
ROOT_DIRECTORY
static final String ROOT_DIRECTORY
- See Also:
- Constant Field Values
-
-
Method Detail
-
ls
List<String> ls()
List all the data sources in the root directory.- Returns:
- non-null list of files (data sources) and directories in the root directory (/)
- See Also:
ls(String)
-
ls
List<String> ls(String pattern)
List all the files (e.g. data sources) and directories matching the location pattern.- Parameters:
pattern
- non-null pattern specifying a set of files and directories. Cases:- a path to a file - specifies a single file to list
- a path to a directory - specifies all files and directories immediately nested in that directory to list
- pattern - specifies a set of files and directories to list
- / - specifies the root directory to list its contents
- Returns:
- non-null list of files (data sources) and directories matching the pattern.
-
cp
boolean cp(String sourcePattern, String targetDirectory)
Recursively copy all the data sources from the source location to the target location.- Parameters:
sourcePattern
- non-null pattern specifying a set of files and directories. Cases:- a path to a file - specifies a single file
- a path to a directory - specifies all files and directories nested (recursively) in that directory
- pattern - specifies a set of files and directories
- / - specifies the contents of the root directory (recursively)
targetDirectory
- non-null directory where to copy to- Returns:
- whether data sources were copied
-
exists
boolean exists(String pattern)
Determine whether the specified location has a data source.- Parameters:
pattern
- non-null pattern specifying a set of files and directories. Examples:- a path to a file - specifies a single file
- a path to a directory - specifies the contents of that directory as all files and directories immediately nested in it
- pattern - specifies a set of files and directories
- / - specifies the immediate contents of the root directory
- Returns:
- true if the pattern specifies a non-empty set of files and directories
-
rm
boolean rm(String pattern)
Recursively remove the file (data source) at the specified location. NOTE: Some implementations derive the notion of the containing directory from the presence of the file, so removing all files from a directory in those implementations removes also their directory.- Parameters:
pattern
- non-null pattern specifying a set of files and directories. Examples:- a path to a file - specifies a single file
- a path to a directory - specifies that directory and all files and directories recursively nested in it
- pattern - specifies a set of files and directories
- / - specifies the root directory
- Returns:
- true if all specified files and directories were removed
-
head
default Iterator<String> head(String location)
Get a string representation of the specified number of lines at the data source location.- Parameters:
location
- the data source location- Returns:
- an iterator of lines
-
head
Iterator<String> head(String location, int totalLines)
Get a string representation of the specified number of lines at the data source location.- Parameters:
location
- the data source locationtotalLines
- the total number of lines to retrieve- Returns:
- an iterator of lines.
-
head
Iterator<Vertex> head(String location, Class readerClass, int totalLines)
Get the vertices at the specified graph location.- Parameters:
location
- the location of the graph (or the root location and search will be made)readerClass
- the class of the parser that understands the graph formattotalLines
- the total number of lines of the graph to return- Returns:
- an iterator of vertices.
-
head
default Iterator<Vertex> head(String location, Class readerClass)
Get the vertices at the specified graph location.- Parameters:
location
- the location of the graph (or the root location and search will be made)readerClass
- the class of the parser that understands the graph format- Returns:
- an iterator of vertices.
-
head
<K,V> Iterator<KeyValue<K,V>> head(String location, String memoryKey, Class readerClass, int totalLines)
Get theKeyValue
data at the specified memory location.- Parameters:
location
- the root location of the datamemoryKey
- the memory keyreaderClass
- the class of the parser that understands the memory formattotalLines
- the total number of key-values to return- Returns:
- an iterator of key-values.
-
head
default <K,V> Iterator<KeyValue<K,V>> head(String location, String memoryKey, Class readerClass)
Get theKeyValue
data at the specified memory location.- Parameters:
location
- the root location of the datamemoryKey
- the memory keyreaderClass
- the class of the parser that understands the memory format- Returns:
- an iterator of key-values.
-
toPath
static String toPath(File path)
- Parameters:
path
- non-null local file path- Returns:
- non-null, not empty path in the
Storage
file system.
-
-