@@ -17,28 +17,32 @@
package org.apache.tools.ant.types;
package org.apache.tools.ant.types;
/**
/**
* describes a File or a ZipEntry
* Describes a File or a ZipEntry.
*
*
* t his class is meant to be used by classes needing to record path
* T his class is meant to be used by classes needing to record path
* and date/time information about a file, a zip entry or some similar
* and date/time information about a file, a zip entry or some similar
* resource (URL, archive in a version control repository, ...)
* resource (URL, archive in a version control repository, ...).
*
*
* @since Ant 1.5.2
* @since Ant 1.5.2
*/
*/
public class Resource implements Cloneable, Comparable {
public class Resource implements Cloneable, Comparable {
/** Constant unknown size */
public static final long UNKNOWN_SIZE = -1;
private String name = null;
private String name = null;
private boolean exists = true;
private boolean exists = true;
private long lastmodified = 0;
private long lastmodified = 0;
private boolean directory = false;
private boolean directory = false;
private long size = UNKNOWN_SIZE;
/**
/**
* default constructor
* Default constructor.
*/
*/
public Resource() {
public Resource() {
}
}
/**
/**
* o nly sets the name.
* O nly sets the name.
*
*
* <p>This is a dummy, used for not existing resources.</p>
* <p>This is a dummy, used for not existing resources.</p>
*
*
@@ -50,18 +54,20 @@ public class Resource implements Cloneable, Comparable {
}
}
/**
/**
* sets the name, lastmodified flag, and exists flag
* Sets the name, lastmodified flag, and exists flag.
*
*
* @param name relative path of the resource. Expects
* @param name relative path of the resource. Expects
* "/" to be used as the directory separator.
* "/" to be used as the directory separator.
* @param exists if true, this resource exists
* @param lastmodified the last modification time of this resource
* @param exists if true, this resource exists.
* @param lastmodified the last modification time of this resource.
*/
*/
public Resource(String name, boolean exists, long lastmodified) {
public Resource(String name, boolean exists, long lastmodified) {
this(name, exists, lastmodified, false);
this(name, exists, lastmodified, false);
}
}
/**
/**
* Sets the name, lastmodified flag, exists flag, and directory flag.
*
* @param name relative path of the resource. Expects
* @param name relative path of the resource. Expects
* "/" to be used as the directory separator.
* "/" to be used as the directory separator.
* @param exists if true the resource exists
* @param exists if true the resource exists
@@ -70,14 +76,31 @@ public class Resource implements Cloneable, Comparable {
*/
*/
public Resource(String name, boolean exists, long lastmodified,
public Resource(String name, boolean exists, long lastmodified,
boolean directory) {
boolean directory) {
this(name, exists, lastmodified, directory, UNKNOWN_SIZE);
}
/**
* Sets the name, lastmodified flag, exists flag, directory flag, and size.
*
* @param name relative path of the resource. Expects
* "/" to be used as the directory separator.
* @param exists if true the resource exists
* @param lastmodified the last modification time of the resource
* @param directory if true, this resource is a directory
* @param size the size of this resource.
*/
public Resource(String name, boolean exists, long lastmodified,
boolean directory, long size) {
this.name = name;
this.name = name;
this.exists = exists;
this.lastmodified = lastmodified;
this.directory = directory;
setName(name);
setExists(exists);
setLastModified(lastmodified);
setDirectory(directory);
setSize(size);
}
}
/**
/**
* name attribute will contain the path of a file relative to the
* N ame attribute will contain the path of a file relative to the
* root directory of its fileset or the recorded path of a zip
* root directory of its fileset or the recorded path of a zip
* entry.
* entry.
*
*
@@ -86,13 +109,14 @@ public class Resource implements Cloneable, Comparable {
* adm/resource.txt.</p>
* adm/resource.txt.</p>
*
*
* <p>"/" will be used as the directory separator.</p>
* <p>"/" will be used as the directory separator.</p>
* @return the name of this resource
* @return the name of this resource.
*/
*/
public String getName() {
public String getName() {
return name;
return name;
}
}
/**
/**
* Set the name of this Resource.
* @param name relative path of the resource. Expects
* @param name relative path of the resource. Expects
* "/" to be used as the directory separator.
* "/" to be used as the directory separator.
*/
*/
@@ -101,8 +125,8 @@ public class Resource implements Cloneable, Comparable {
}
}
/**
/**
* The exists attribute tells whether a file exists
* @return true if this resource exists
* The exists attribute tells whether a file exists.
* @return true if this resource exists.
*/
*/
public boolean isExists() {
public boolean isExists() {
return exists;
return exists;
@@ -110,33 +134,33 @@ public class Resource implements Cloneable, Comparable {
/**
/**
* Set the exists attribute.
* Set the exists attribute.
* @param exists if true, this resource exists
* @param exists if true, this resource exists.
*/
*/
public void setExists(boolean exists) {
public void setExists(boolean exists) {
this.exists = exists;
this.exists = exists;
}
}
/**
/**
* tells the modification time in milliseconds since 01.01.1970 of
* Tells the modification time in milliseconds since 01.01.1970 .
*
*
* @return 0 if the resource does not exist to mirror the behavior
* @return 0 if the resource does not exist to mirror the behavior
* of {@link java.io.File File}.
* of {@link java.io.File File}.
*/
*/
public long getLastModified() {
public long getLastModified() {
return !exists || lastmodified < 0 ? 0 : lastmodified;
return !exists || lastmodified < 0 ? 0L : lastmodified;
}
}
/**
/**
* Set the last modification attribute.
* Set the last modification attribute.
* @param lastmodified the modification time in milliseconds since 01.01.1970
* @param lastmodified the modification time in milliseconds since 01.01.1970.
*/
*/
public void setLastModified(long lastmodified) {
public void setLastModified(long lastmodified) {
this.lastmodified = lastmodified;
this.lastmodified = lastmodified;
}
}
/**
/**
* tells if the resource is a directory
* @return boolean flag indicating if the resource is a directory
* Tells if the resource is a directory.
* @return boolean flag indicating if the resource is a directory.
*/
*/
public boolean isDirectory() {
public boolean isDirectory() {
return directory;
return directory;
@@ -144,14 +168,34 @@ public class Resource implements Cloneable, Comparable {
/**
/**
* Set the directory attribute.
* Set the directory attribute.
* @param directory if true, this resource is a directory
* @param directory if true, this resource is a directory.
*/
*/
public void setDirectory(boolean directory) {
public void setDirectory(boolean directory) {
this.directory = directory;
this.directory = directory;
}
}
/**
/**
* @return copy of this
* Set the size of this Resource.
* @param size the size, as a long.
* @since Ant 1.7
*/
public void setSize(long size) {
this.size = (size > UNKNOWN_SIZE) ? size : UNKNOWN_SIZE;
}
/**
* Get the size of this Resource.
* @return the size, as a long, 0 if the Resource does not exist (for
* compatibility with java.io.File), or UNKNOWN_SIZE if not known.
* @since Ant 1.7
*/
public long getSize() {
return (exists) ? size : 0L;
}
/**
* Clone this Resource.
* @return copy of this.
*/
*/
public Object clone() {
public Object clone() {
try {
try {
@@ -163,9 +207,10 @@ public class Resource implements Cloneable, Comparable {
}
}
/**
/**
* delegates to a comparison of names.
* @param other the object to compare to
* @return true if this object's name is the same as the other object's name
* Delegates to a comparison of names.
* @param other the object to compare to.
* @return a negative integer, zero, or a positive integer as this Resource
* is less than, equal to, or greater than the specified Resource.
* @since Ant 1.6
* @since Ant 1.6
*/
*/
public int compareTo(Object other) {
public int compareTo(Object other) {
@@ -176,4 +221,5 @@ public class Resource implements Cloneable, Comparable {
Resource r = (Resource) other;
Resource r = (Resource) other;
return getName().compareTo(r.getName());
return getName().compareTo(r.getName());
}
}
}
}