Methods Summary |
---|
public void | add(org.apache.tools.ant.types.ResourceCollection rc)Add a collection of resources to touch.
resources.add(rc);
|
public void | add(org.apache.tools.ant.util.FileNameMapper fileNameMapper)Add a FileNameMapper .
if (this.fileNameMapper != null) {
throw new BuildException("Only one mapper may be added to the "
+ getTaskName() + " task.");
}
this.fileNameMapper = fileNameMapper;
|
public void | addConfiguredMapper(org.apache.tools.ant.types.Mapper mapper)Add a Mapper .
add(mapper.getImplementation());
|
public void | addFilelist(org.apache.tools.ant.types.FileList list)Add a filelist to touch.
add(list);
|
public void | addFileset(org.apache.tools.ant.types.FileSet set)Add a set of files to touch.
filesets.add(set);
add(set);
|
protected synchronized void | checkConfiguration()Check that this task has been configured properly.
if (file == null && resources.size() == 0) {
throw new BuildException("Specify at least one source"
+ "--a file or resource collection.");
}
if (file != null && file.exists() && file.isDirectory()) {
throw new BuildException("Use a resource collection to touch directories.");
}
if (dateTime != null && !dateTimeConfigured) {
long workmillis = millis;
DateFormat df = dfFactory.getPrimaryFormat();
ParseException pe = null;
try {
workmillis = df.parse(dateTime).getTime();
} catch (ParseException peOne) {
df = dfFactory.getFallbackFormat();
if (df == null) {
pe = peOne;
} else {
try {
workmillis = df.parse(dateTime).getTime();
} catch (ParseException peTwo) {
pe = peTwo;
}
}
}
if (pe != null) {
throw new BuildException(pe.getMessage(), pe, getLocation());
}
if (workmillis < 0) {
throw new BuildException("Date of " + dateTime
+ " results in negative "
+ "milliseconds value "
+ "relative to epoch "
+ "(January 1, 1970, "
+ "00:00:00 GMT).");
}
log("Setting millis to " + workmillis + " from datetime attribute",
((millis < 0) ? Project.MSG_DEBUG : Project.MSG_VERBOSE));
setMillis(workmillis);
//only set if successful to this point:
dateTimeConfigured = true;
}
|
public void | execute()Execute the touch operation.
checkConfiguration();
touch();
|
private long | getTimestamp()
return (millis < 0) ? System.currentTimeMillis() : millis;
|
public void | setDatetime(java.lang.String dateTime)Set the new modification time of file(s) touched
in the format "MM/DD/YYYY HH:MM AM or PM"
or "MM/DD/YYYY HH:MM:SS AM or PM".
Optional, default=now.
if (this.dateTime != null) {
log("Resetting datetime attribute to " + dateTime, Project.MSG_VERBOSE);
}
this.dateTime = dateTime;
dateTimeConfigured = false;
|
public void | setFile(java.io.File file)Sets a single source file to touch. If the file does not exist
an empty file will be created.
this.file = file;
|
public void | setMillis(long millis)Set the new modification time of file(s) touched
in milliseconds since midnight Jan 1 1970. Optional, default=now.
this.millis = millis;
|
public void | setMkdirs(boolean mkdirs)Set whether nonexistent parent directories should be created
when touching new files.
this.mkdirs = mkdirs;
|
public void | setPattern(java.lang.String pattern)Set the format of the datetime attribute.
dfFactory = new DateFormatFactory() {
public DateFormat getPrimaryFormat() {
return new SimpleDateFormat(pattern);
}
public DateFormat getFallbackFormat() {
return null;
}
};
|
public void | setVerbose(boolean verbose)Set whether the touch task will report every file it creates;
defaults to true .
this.verbose = verbose;
|
protected void | touch()Does the actual work; assumes everything has been checked by now.
long defaultTimestamp = getTimestamp();
if (file != null) {
touch(new FileResource(file.getParentFile(), file.getName()),
defaultTimestamp);
}
// deal with the resource collections
Iterator iter = resources.iterator();
while (iter.hasNext()) {
Resource r = (Resource) iter.next();
if (!(r instanceof Touchable)) {
throw new BuildException("Can't touch " + r);
}
touch(r, defaultTimestamp);
}
// deal with filesets in a special way since the task
// originally also used the directories and Union won't return
// them.
for (int i = 0; i < filesets.size(); i++) {
FileSet fs = (FileSet) filesets.elementAt(i);
DirectoryScanner ds = fs.getDirectoryScanner(getProject());
File fromDir = fs.getDir(getProject());
String[] srcDirs = ds.getIncludedDirectories();
for (int j = 0; j < srcDirs.length; j++) {
touch(new FileResource(fromDir, srcDirs[j]), defaultTimestamp);
}
}
|
protected void | touch(java.io.File file)Touch a single file with the current timestamp (this.millis). This method
does not interact with any nested mappers and remains for reasons of
backwards-compatibility only.
touch(file, getTimestamp());
|
private void | touch(org.apache.tools.ant.types.Resource r, long defaultTimestamp)
if (fileNameMapper == null) {
if (r instanceof FileResource) {
// use this to create file and deal with non-writable files
touch(((FileResource) r).getFile(), defaultTimestamp);
} else {
((Touchable) r).touch(defaultTimestamp);
}
} else {
String[] mapped = fileNameMapper.mapFileName(r.getName());
if (mapped != null && mapped.length > 0) {
long modTime = (r.isExists()) ? r.getLastModified()
: defaultTimestamp;
for (int i = 0; i < mapped.length; i++) {
touch(getProject().resolveFile(mapped[i]), modTime);
}
}
}
|
private void | touch(java.io.File file, long modTime)
if (!file.exists()) {
log("Creating " + file,
((verbose) ? Project.MSG_INFO : Project.MSG_VERBOSE));
try {
FILE_UTILS.createNewFile(file, mkdirs);
} catch (IOException ioe) {
throw new BuildException("Could not create " + file, ioe,
getLocation());
}
}
if (!file.canWrite()) {
throw new BuildException("Can not change modification date of "
+ "read-only file " + file);
}
FILE_UTILS.setFileLastModified(file, modTime);
|