Class FilesystemContainer

    • Field Detail

      • PROPERTY_NAME

        public static String PROPERTY_NAME
        String identifier of a file's "name" property.
      • PROPERTY_SIZE

        public static String PROPERTY_SIZE
        String identifier of a file's "size" property.
      • PROPERTY_ICON

        public static String PROPERTY_ICON
        String identifier of a file's "icon" property.
      • PROPERTY_LASTMODIFIED

        public static String PROPERTY_LASTMODIFIED
        String identifier of a file's "last modified" property.
      • FILE_PROPERTIES

        public static Collection<String> FILE_PROPERTIES
        List of the string identifiers for the available properties.
    • Constructor Detail

      • FilesystemContainer

        public FilesystemContainer​(File root)
        Constructs a new FileSystemContainer with the specified file as the root of the filesystem. The files are included recursively.
        Parameters:
        root - the root file for the new file-system container. Null values are ignored.
      • FilesystemContainer

        public FilesystemContainer​(File root,
                                   boolean recursive)
        Constructs a new FileSystemContainer with the specified file as the root of the filesystem. The files are included recursively.
        Parameters:
        root - the root file for the new file-system container.
        recursive - should the container recursively contain subdirectories.
      • FilesystemContainer

        public FilesystemContainer​(File root,
                                   String extension,
                                   boolean recursive)
        Constructs a new FileSystemContainer with the specified file as the root of the filesystem.
        Parameters:
        root - the root file for the new file-system container.
        extension - the Filename extension (w/o separator) to limit the files in container.
        recursive - should the container recursively contain subdirectories.
      • FilesystemContainer

        public FilesystemContainer​(File root,
                                   FilenameFilter filter,
                                   boolean recursive)
        Constructs a new FileSystemContainer with the specified root and recursivity status.
        Parameters:
        root - the root file for the new file-system container.
        filter - the Filename filter to limit the files in container.
        recursive - should the container recursively contain subdirectories.
    • Method Detail

      • addRoot

        public void addRoot​(File root)
        Adds new root file directory. Adds a file to be included as root file directory in the FilesystemContainer.
        Parameters:
        root - the File to be added as root directory. Null values are ignored.
      • areChildrenAllowed

        public boolean areChildrenAllowed​(Object itemId)
        Tests if the specified Item in the container may have children. Since a FileSystemContainer contains files and directories, this method returns true for directory Items only.
        Specified by:
        areChildrenAllowed in interface Container.Hierarchical
        Parameters:
        itemId - the id of the item.
        Returns:
        true if the specified Item is a directory, false otherwise.
      • getChildren

        public Collection<File> getChildren​(Object itemId)
        Description copied from interface: Container.Hierarchical
        Gets the IDs of all Items that are children of the specified Item. The returned collection is unmodifiable.
        Specified by:
        getChildren in interface Container.Hierarchical
        Parameters:
        itemId - ID of the Item whose children the caller is interested in
        Returns:
        An unmodifiable collection containing the IDs of all other Items that are children in the container hierarchy; null if item does not have any children.
      • getParent

        public Object getParent​(Object itemId)
        Description copied from interface: Container.Hierarchical
        Gets the ID of the parent Item of the specified Item.
        Specified by:
        getParent in interface Container.Hierarchical
        Parameters:
        itemId - ID of the Item whose parent the caller wishes to find out.
        Returns:
        the ID of the parent Item. Will be null if the specified Item is a root element.
      • hasChildren

        public boolean hasChildren​(Object itemId)
        Description copied from interface: Container.Hierarchical

        Tests if the Item specified with itemId has child Items or if it is a leaf. The Container.Hierarchical.getChildren(Object itemId) method always returns null for leaf Items.

        Note that being a leaf does not imply whether or not an Item is allowed to have children.

        Specified by:
        hasChildren in interface Container.Hierarchical
        Parameters:
        itemId - ID of the Item to be tested
        Returns:
        true if the specified Item has children, false if not (is a leaf)
      • isRoot

        public boolean isRoot​(Object itemId)
        Description copied from interface: Container.Hierarchical
        Tests if the Item specified with itemId is a root Item. The hierarchical container can have more than one root and must have at least one unless it is empty. The Container.Hierarchical.getParent(Object itemId) method always returns null for root Items.
        Specified by:
        isRoot in interface Container.Hierarchical
        Parameters:
        itemId - ID of the Item whose root status is to be tested
        Returns:
        true if the specified Item is a root, false if not
      • rootItemIds

        public Collection<File> rootItemIds()
        Description copied from interface: Container.Hierarchical
        Gets the IDs of all Items in the container that don't have a parent. Such items are called root Items. The returned collection is unmodifiable.
        Specified by:
        rootItemIds in interface Container.Hierarchical
        Returns:
        An unmodifiable collection containing IDs of all root elements of the container
      • setChildrenAllowed

        public boolean setChildrenAllowed​(Object itemId,
                                          boolean areChildrenAllowed)
                                   throws UnsupportedOperationException
        Returns false when conversion from files to directories is not supported.
        Specified by:
        setChildrenAllowed in interface Container.Hierarchical
        Parameters:
        itemId - the ID of the item.
        areChildrenAllowed - the boolean value specifying if the Item can have children or not.
        Returns:
        true if the operaton is successful otherwise false.
        Throws:
        UnsupportedOperationException - if the setChildrenAllowed is not supported.
      • setParent

        public boolean setParent​(Object itemId,
                                 Object newParentId)
                          throws UnsupportedOperationException
        Returns false when moving files around in the filesystem is not supported.
        Specified by:
        setParent in interface Container.Hierarchical
        Parameters:
        itemId - the ID of the item.
        newParentId - the ID of the Item that's to be the new parent of the Item identified with itemId.
        Returns:
        true if the operation is successful otherwise false.
        Throws:
        UnsupportedOperationException - if the setParent is not supported.
      • containsId

        public boolean containsId​(Object itemId)
        Description copied from interface: Container
        Tests if the Container contains the specified Item.

        Filtering can hide items so that they will not be visible through the container API, and this method should respect visibility of items (i.e. only indicate visible items as being in the container) if feasible for the container.

        Specified by:
        containsId in interface Container
        Parameters:
        itemId - ID the of Item to be tested
        Returns:
        boolean indicating if the Container holds the specified Item
      • getItem

        public Item getItem​(Object itemId)
        Description copied from interface: Container
        Gets the Item with the given Item ID from the Container. If the Container does not contain the requested Item, null is returned.

        Containers should not return Items that are filtered out.

        Specified by:
        getItem in interface Container
        Parameters:
        itemId - ID of the Item to retrieve
        Returns:
        the Item with the given ID or null if the Item is not found in the Container
      • getItemIds

        public Collection<File> getItemIds()
        Description copied from interface: Container
        Gets the ID's of all visible (after filtering and sorting) Items stored in the Container. The ID's cannot be modified through the returned collection.

        If the container is Container.Ordered, the collection returned by this method should follow that order. If the container is Container.Sortable, the items should be in the sorted order.

        Calling this method for large lazy containers can be an expensive operation and should be avoided when practical.

        Specified by:
        getItemIds in interface Container
        Returns:
        unmodifiable collection of Item IDs
      • getContainerProperty

        public Property getContainerProperty​(Object itemId,
                                             Object propertyId)
        Gets the specified property of the specified file Item. The available file properties are "Name", "Size" and "Last Modified". If propertyId is not one of those, null is returned.
        Specified by:
        getContainerProperty in interface Container
        Parameters:
        itemId - the ID of the file whose property is requested.
        propertyId - the property's ID.
        Returns:
        the requested property's value, or null
      • getContainerPropertyIds

        public Collection<String> getContainerPropertyIds()
        Gets the collection of available file properties.
        Specified by:
        getContainerPropertyIds in interface Container
        Returns:
        Unmodifiable collection containing all available file properties.
      • getType

        public Class<?> getType​(Object propertyId)
        Gets the specified property's data type. "Name" is a String, "Size" is a Long, "Last Modified" is a Date. If propertyId is not one of those, null is returned.
        Specified by:
        getType in interface Container
        Parameters:
        propertyId - the ID of the property whose type is requested.
        Returns:
        data type of the requested property, or null
      • size

        public int size()
        Gets the number of Items in the container. In effect, this is the combined amount of files and directories.
        Specified by:
        size in interface Container
        Returns:
        Number of Items in the container.
      • getFilter

        public FilenameFilter getFilter()
        Returns the file filter used to limit the files in this container.
        Returns:
        Used filter instance or null if no filter is assigned.
      • setFilter

        public void setFilter​(FilenameFilter filter)
        Sets the file filter used to limit the files in this container.
        Parameters:
        filter - The filter to set. null disables filtering.
      • setFilter

        public void setFilter​(String extension)
        Sets the file filter used to limit the files in this container.
        Parameters:
        extension - the Filename extension (w/o separator) to limit the files in container.
      • isRecursive

        public boolean isRecursive()
        Is this container recursive filesystem.
        Returns:
        true if container is recursive, false otherwise.
      • setRecursive

        public void setRecursive​(boolean recursive)
        Sets the container recursive property. Set this to false to limit the files directly under the root file.

        Note : This is meaningful only if the root really is a directory.

        Parameters:
        recursive - the New value for recursive property.
      • addContainerProperty

        public boolean addContainerProperty​(Object propertyId,
                                            Class<?> type,
                                            Object defaultValue)
                                     throws UnsupportedOperationException
        Description copied from interface: Container
        Adds a new Property to all Items in the Container. The Property ID, data type and default value of the new Property are given as parameters.

        This functionality is optional.

        Specified by:
        addContainerProperty in interface Container
        Parameters:
        propertyId - ID of the Property
        type - Data type of the new Property
        defaultValue - The value all created Properties are initialized to
        Returns:
        true if the operation succeeded, false if not
        Throws:
        UnsupportedOperationException - if the container does not support explicitly adding container properties
      • addItem

        public Object addItem()
                       throws UnsupportedOperationException
        Description copied from interface: Container
        Creates a new Item into the Container, and assign it an automatic ID.

        The new ID is returned, or null if the operation fails. After a successful call you can use the getItemmethod to fetch the Item.

        This functionality is optional.

        Specified by:
        addItem in interface Container
        Returns:
        ID of the newly created Item, or null in case of a failure
        Throws:
        UnsupportedOperationException - if adding an item without an explicit item ID is not supported by the container
      • addItem

        public Item addItem​(Object itemId)
                     throws UnsupportedOperationException
        Description copied from interface: Container
        Creates a new Item with the given ID in the Container.

        The new Item is returned, and it is ready to have its Properties modified. Returns null if the operation fails or the Container already contains a Item with the given ID.

        This functionality is optional.

        Specified by:
        addItem in interface Container
        Parameters:
        itemId - ID of the Item to be created
        Returns:
        Created new Item, or null in case of a failure
        Throws:
        UnsupportedOperationException - if adding an item with an explicit item ID is not supported by the container
      • removeAllItems

        public boolean removeAllItems()
                               throws UnsupportedOperationException
        Description copied from interface: Container
        Removes all Items from the Container.

        Note that Property ID and type information is preserved. This functionality is optional.

        Specified by:
        removeAllItems in interface Container
        Returns:
        true if the operation succeeded, false if not
        Throws:
        UnsupportedOperationException - if the container does not support removing all items
      • removeContainerProperty

        public boolean removeContainerProperty​(Object propertyId)
                                        throws UnsupportedOperationException
        Description copied from interface: Container
        Removes a Property specified by the given Property ID from the Container. Note that the Property will be removed from all Items in the Container.

        This functionality is optional.

        Specified by:
        removeContainerProperty in interface Container
        Parameters:
        propertyId - ID of the Property to remove
        Returns:
        true if the operation succeeded, false if not
        Throws:
        UnsupportedOperationException - if the container does not support removing container properties