diff options
Diffstat (limited to 'src/main/java/de/waldheinz/fs/FsDirectoryEntry.java')
-rw-r--r-- | src/main/java/de/waldheinz/fs/FsDirectoryEntry.java | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/src/main/java/de/waldheinz/fs/FsDirectoryEntry.java b/src/main/java/de/waldheinz/fs/FsDirectoryEntry.java new file mode 100644 index 0000000..c071bfe --- /dev/null +++ b/src/main/java/de/waldheinz/fs/FsDirectoryEntry.java @@ -0,0 +1,143 @@ +/* + * Copyright (C) 2003-2009 JNode.org + * 2009,2010 Matthias Treydte <mt@waldheinz.de> + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published + * by the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; If not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +package de.waldheinz.fs; + +import java.io.IOException; +import java.util.Comparator; + +/** + * Represents one entry in a {@link FsDirectory}. + * + * @author Ewout Prangsma <epr at jnode.org> + * @author Matthias Treydte <waldheinz at gmail.com> + */ +public interface FsDirectoryEntry extends FsObject { + + /** + * Compares directory entries alphabetically, with all directories coming + * before all files. + */ + public final static Comparator<FsDirectoryEntry> DIRECTORY_ENTRY_COMPARATOR = + new Comparator<FsDirectoryEntry>() { + + @Override + public int compare(FsDirectoryEntry e1, FsDirectoryEntry e2) { + if (e2.isDirectory() == e1.isDirectory()) { + /* compare names */ + return e1.getName().compareTo(e2.getName()); + } else { + if (e2.isDirectory()) return 1; + else return -1; + } + } + }; + + /** + * Gets the name of this entry. + * + * @return this entrys name + */ + public String getName(); + + /** + * Gets the last modification time of this entry. + * + * @return the last modification time of the entry as milliseconds + * since 1970, or {@code 0} if this filesystem does not support + * getting the last modification time + * @throws IOException if an error occurs retrieving the time stamp + */ + public long getLastModified() throws IOException; + + /** + * Returns the time when this entry was created as ms since 1970. + * + * @return the creation time, or 0 if this feature is not supported + * @throws IOException on error retrieving the time stamp + */ + public long getCreated() throws IOException; + + /** + * Returns the time when this entry was last accessed as ms since 1970. + * + * @return the last access time, or 0 if this feature is not supported + * @throws IOException on error retrieving the last access time + */ + public long getLastAccessed() throws IOException; + + /** + * Is this entry refering to a file? + * + * @return if this entry refers to a file + */ + public boolean isFile(); + + /** + * Is this entry refering to a (sub-)directory? + * + * @return if this entry refers to a directory + */ + public boolean isDirectory(); + + /** + * Sets the name of this entry. + * + * @param newName the new name of this entry + * @throws IOException on error setting the new name + */ + public void setName(String newName) throws IOException; + + /** + * Sets the last modification time of this entry. + * + * @param lastModified the new last modification time of this entry + * @throws IOException on write error + */ + public void setLastModified(long lastModified) throws IOException; + + /** + * Gets the file this entry refers to. This method can only be called if + * {@code isFile} returns {@code true}. + * + * @return the file described by this entry + * @throws IOException on error accessing the file + * @throws UnsupportedOperationException if this entry is a directory + */ + public FsFile getFile() + throws IOException, UnsupportedOperationException; + + /** + * Gets the directory this entry refers to. This method can only be called + * if <code>isDirectory</code> returns true. + * + * @return The directory described by this entry + * @throws IOException on read error + * @throws UnsupportedOperationException if this entry is a file + */ + public FsDirectory getDirectory() + throws IOException, UnsupportedOperationException; + + /** + * Indicate if the entry has been modified in memory (ie need to be saved) + * + * @return true if the entry needs to be saved + */ + public boolean isDirty(); +} |