| /*** |
| * $Id: FTPFile.java,v 1.1 2002/04/03 01:04:33 brekke Exp $ |
| * |
| * NetComponents Internet Protocol Library |
| * Copyright (C) 1997-2002 Daniel F. Savarese |
| * |
| * 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 in the LICENSE file; if not, write |
| * to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, |
| * Boston, MA 02111-1307 USA |
| ***/ |
| |
| package com.oroinc.net.ftp; |
| |
| import java.util.*; |
| |
| /*** |
| * The FTPFile class is used to represent information about files stored |
| * on an FTP server. Because there is no standard representation for |
| * file information on FTP servers, it may not always be possible to |
| * extract all the information that can be represented by FTPFile, or |
| * it may even be possible to extract more information. In cases where |
| * more information can be extracted, you will want to subclass FTPFile |
| * and implement your own <a href="com.oroinc.net.ftp.FTPFileListParser.html"> |
| * FTPFileListParser </a> to extract the information. |
| * However, most FTP servers return file information in a format that |
| * can be completely parsed by |
| * <a href="com.oroinc.net.ftp.DefaultFTPFileListParser.html"> |
| * DefaultFTPFileListParser </a> and stored in FTPFile. |
| * <p> |
| * <p> |
| * @author Daniel F. Savarese |
| * @see FTPFileListParser |
| * @see DefaultFTPFileListParser |
| * @see FTPClient#listFiles |
| ***/ |
| |
| public class FTPFile implements java.io.Serializable { |
| /** A constant indicating an FTPFile is a file. ***/ |
| public static final int FILE_TYPE = 0; |
| /** A constant indicating an FTPFile is a directory. ***/ |
| public static final int DIRECTORY_TYPE = 1; |
| /** A constant indicating an FTPFile is a symbolic link. ***/ |
| public static final int SYMBOLIC_LINK_TYPE = 2; |
| /** A constant indicating an FTPFile is of unknown type. ***/ |
| public static final int UNKNOWN_TYPE = 3; |
| |
| /** A constant indicating user access permissions. ***/ |
| public static final int USER_ACCESS = 0; |
| /** A constant indicating group access permissions. ***/ |
| public static final int GROUP_ACCESS = 1; |
| /** A constant indicating world access permissions. ***/ |
| public static final int WORLD_ACCESS = 2; |
| |
| /** A constant indicating file/directory read permission. ***/ |
| public static final int READ_PERMISSION = 0; |
| /** A constant indicating file/directory write permission. ***/ |
| public static final int WRITE_PERMISSION = 1; |
| /** |
| * A constant indicating file execute permission or directory listing |
| * permission. |
| ***/ |
| public static final int EXECUTE_PERMISSION = 2; |
| |
| int _type, _hardLinkCount; |
| long _size; |
| String _rawListing, _user, _group, _name, _link; |
| Calendar _date; |
| boolean[] _permissions[]; |
| |
| /*** Creates an empty FTPFile. ***/ |
| public FTPFile() { |
| _permissions = new boolean[3][3]; |
| _rawListing = null; |
| _type = UNKNOWN_TYPE; |
| _hardLinkCount = 0; |
| _size = 0; |
| _user = null; |
| _group = null; |
| _date = null; |
| _name = null; |
| } |
| |
| |
| /*** |
| * Set the original FTP server raw listing from which the FTPFile was |
| * created. |
| * <p> |
| * @param rawListing The raw FTP server listing. |
| ***/ |
| public void setRawListing(String rawListing) { |
| _rawListing = rawListing; |
| } |
| |
| /*** |
| * Get the original FTP server raw listing used to initialize the FTPFile. |
| * <p> |
| * @return The original FTP server raw listing used to initialize the |
| * FTPFile. |
| ***/ |
| public String getRawListing() { |
| return _rawListing; |
| } |
| |
| |
| /*** |
| * Determine if the file is a directory. |
| * <p> |
| * @return True if the file is of type <code>DIRECTORY_TYPE</code>, false if |
| * not. |
| ***/ |
| public boolean isDirectory() { return (_type == DIRECTORY_TYPE); } |
| |
| /*** |
| * Determine if the file is a regular file. |
| * <p> |
| * @return True if the file is of type <code>FILE_TYPE</code>, false if |
| * not. |
| ***/ |
| public boolean isFile() { return (_type == FILE_TYPE); } |
| |
| /*** |
| * Determine if the file is a symbolic link. |
| * <p> |
| * @return True if the file is of type <code>UNKNOWN_TYPE</code>, false if |
| * not. |
| ***/ |
| public boolean isSymbolicLink() { return (_type == SYMBOLIC_LINK_TYPE); } |
| |
| /*** |
| * Determine if the type of the file is unknown. |
| * <p> |
| * @return True if the file is of type <code>UNKNOWN_TYPE</code>, false if |
| * not. |
| ***/ |
| public boolean isUnknown() { return (_type == UNKNOWN_TYPE); } |
| |
| |
| /*** |
| * Set the type of the file (<code>DIRECTORY_TYPE</code>, |
| * <code>FILE_TYPE</code>, etc.). |
| * <p> |
| * @param type The integer code representing the type of the file. |
| ***/ |
| public void setType(int type) { _type = type; } |
| |
| |
| /*** |
| * Return the type of the file (one of the <code>_TYPE</code> constants), |
| * e.g., if it is a directory, a regular file, or a symbolic link. |
| * <p> |
| * @return The type of the file. |
| ***/ |
| public int getType() { return _type; } |
| |
| |
| /*** |
| * Set the name of the file. |
| * <p> |
| * @param name The name of the file. |
| ***/ |
| public void setName(String name) { _name = name; } |
| |
| /*** |
| * Return the name of the file. |
| * <p> |
| * @return The name of the file. |
| ***/ |
| public String getName() { return _name; } |
| |
| |
| /*** |
| * Set the file size in bytes. |
| * <p> |
| * @param The file size in bytes. |
| ***/ |
| public void setSize(long size) { _size = size; } |
| |
| |
| /*** |
| * Return the file size in bytes. |
| * <p> |
| * @return The file size in bytes. |
| ***/ |
| public long getSize() { return _size; } |
| |
| |
| /*** |
| * Set the number of hard links to this file. This is not to be |
| * confused with symbolic links. |
| * <p> |
| * @param links The number of hard links to this file. |
| ***/ |
| public void setHardLinkCount(int links) { _hardLinkCount = links; } |
| |
| |
| /*** |
| * Return the number of hard links to this file. This is not to be |
| * confused with symbolic links. |
| * <p> |
| * @return The number of hard links to this file. |
| ***/ |
| public int getHardLinkCount() { return _hardLinkCount; } |
| |
| |
| /*** |
| * Set the name of the group owning the file. This may be |
| * a string representation of the group number. |
| * <p> |
| * @param group The name of the group owning the file. |
| ***/ |
| public void setGroup(String group) { _group = group; } |
| |
| |
| /*** |
| * Returns the name of the group owning the file. Sometimes this will be |
| * a string representation of the group number. |
| * <p> |
| * @return The name of the group owning the file. |
| ***/ |
| public String getGroup() { return _group; } |
| |
| |
| /*** |
| * Set the name of the user owning the file. This may be |
| * a string representation of the user number; |
| * <p> |
| * @param user The name of the user owning the file. |
| ***/ |
| public void setUser(String user) { _user = user; } |
| |
| /*** |
| * Returns the name of the user owning the file. Sometimes this will be |
| * a string representation of the user number. |
| * <p> |
| * @return The name of the user owning the file. |
| ***/ |
| public String getUser() { return _user; } |
| |
| |
| /*** |
| * If the FTPFile is a symbolic link, use this method to set the name of the |
| * file being pointed to by the symbolic link. |
| * <p> |
| * @param link The file pointed to by the symbolic link. |
| ***/ |
| public void setLink(String link) { _link = link; } |
| |
| |
| /*** |
| * If the FTPFile is a symbolic link, this method returns the name of the |
| * file being pointed to by the symbolic link. Otherwise it returns null. |
| * <p> |
| * @return The file pointed to by the symbolic link (null if the FTPFile |
| * is not a symbolic link). |
| ***/ |
| public String getLink() { return _link; } |
| |
| |
| /*** |
| * Set the file timestamp. This usually the last modification time. |
| * The parameter is not cloned, so do not alter its value after calling |
| * this method. |
| * <p> |
| * @param date A Calendar instance representing the file timestamp. |
| ***/ |
| public void setTimestamp(Calendar date) { _date = date; } |
| |
| |
| /*** |
| * Returns the file timestamp. This usually the last modification time. |
| * <p> |
| * @return A Calendar instance representing the file timestamp. |
| ***/ |
| public Calendar getTimestamp() { return _date; } |
| |
| |
| /*** |
| * Set if the given access group (one of the <code> _ACCESS </code> |
| * constants) has the given access permission (one of the |
| * <code> _PERMISSION </code> constants) to the file. |
| * <p> |
| * @param access The access group (one of the <code> _ACCESS </code> |
| * constants) |
| * @param permission The access permission (one of the |
| * <code> _PERMISSION </code> constants) |
| * @param value True if permission is allowed, false if not. |
| ***/ |
| public void setPermission(int access, int permission, boolean value) { |
| _permissions[access][permission] = value; |
| } |
| |
| |
| /*** |
| * Determines if the given access group (one of the <code> _ACCESS </code> |
| * constants) has the given access permission (one of the |
| * <code> _PERMISSION </code> constants) to the file. |
| * <p> |
| * @param access The access group (one of the <code> _ACCESS </code> |
| * constants) |
| * @param permission The access permission (one of the |
| * <code> _PERMISSION </code> constants) |
| ***/ |
| public boolean hasPermission(int access, int permission) { |
| return _permissions[access][permission]; |
| } |
| |
| |
| /*** |
| * Returns a string representation of the FTPFile information. This |
| * will be the raw FTP server listing that was used to initialize the |
| * FTPFile instance. |
| * <p> |
| * @return A string representation of the FTPFile information. |
| ***/ |
| public String toString() { return _rawListing; } |
| |
| } |