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.
    NOTE:
    1. Even though the syntax allows patterns with trailing "/", they are treated as referring the same file or directory as the path without the trailing /
    2. 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)
    • 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 location
        totalLines - 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 format
        totalLines - 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 the KeyValue data at the specified memory location.
        Parameters:
        location - the root location of the data
        memoryKey - the memory key
        readerClass - the class of the parser that understands the memory format
        totalLines - 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 the KeyValue data at the specified memory location.
        Parameters:
        location - the root location of the data
        memoryKey - the memory key
        readerClass - 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.
      • toPath

        static String toPath​(String path)
        Parameters:
        path - non-null local file path
        Returns:
        non-null, not empty path in the Storage file system.