Methods Summary |
---|
public void | add(org.apache.tools.ant.util.FileNameMapper fileNameMapper)A nested filenamemapper
createMapper().add(fileNameMapper);
|
public void | addSrcfiles(org.apache.tools.ant.types.FileSet fs)Nested <srcfiles> element.
sourceFileSets.addElement(fs);
|
public org.apache.tools.ant.types.Mapper | createMapper()Defines the FileNameMapper to use (nested mapper element).
if (mapperElement != null) {
throw new BuildException("Cannot define more than one mapper",
getLocation());
}
mapperElement = new Mapper(getProject());
return mapperElement;
|
public org.apache.tools.ant.types.resources.Union | createSrcResources()Nested resource collections as sources.
return sourceResources;
|
public boolean | eval()Evaluate (all) target and source file(s) to
see if the target(s) is/are up-to-date.
if (sourceFileSets.size() == 0 && sourceResources.size() == 0
&& sourceFile == null) {
throw new BuildException("At least one srcfile or a nested "
+ "<srcfiles> or <srcresources> element "
+ "must be set.");
}
if ((sourceFileSets.size() > 0 || sourceResources.size() > 0)
&& sourceFile != null) {
throw new BuildException("Cannot specify both the srcfile "
+ "attribute and a nested <srcfiles> "
+ "or <srcresources> element.");
}
if (targetFile == null && mapperElement == null) {
throw new BuildException("The targetfile attribute or a nested "
+ "mapper element must be set.");
}
// if the target file is not there, then it can't be up-to-date
if (targetFile != null && !targetFile.exists()) {
log("The targetfile \"" + targetFile.getAbsolutePath()
+ "\" does not exist.", Project.MSG_VERBOSE);
return false;
}
// if the source file isn't there, throw an exception
if (sourceFile != null && !sourceFile.exists()) {
throw new BuildException(sourceFile.getAbsolutePath()
+ " not found.");
}
boolean upToDate = true;
if (sourceFile != null) {
if (mapperElement == null) {
upToDate = upToDate
&& (targetFile.lastModified() >= sourceFile.lastModified());
} else {
SourceFileScanner sfs = new SourceFileScanner(this);
upToDate = upToDate
&& (sfs.restrict(new String[] {sourceFile.getAbsolutePath()},
null, null,
mapperElement.getImplementation()).length == 0);
}
}
// filesets are separate from the rest for performance
// reasons. If we use the code for union below, we'll always
// scan all filesets, even if we know the target is out of
// date after the first test.
Enumeration e = sourceFileSets.elements();
while (upToDate && e.hasMoreElements()) {
FileSet fs = (FileSet) e.nextElement();
DirectoryScanner ds = fs.getDirectoryScanner(getProject());
upToDate = upToDate && scanDir(fs.getDir(getProject()),
ds.getIncludedFiles());
}
if (upToDate) {
Resource[] r = sourceResources.listResources();
upToDate = upToDate
&& (ResourceUtils.selectOutOfDateSources(
this, r, getMapper(), getProject()).length == 0);
}
return upToDate;
|
public void | execute()Sets property to true if target file(s) have a more recent timestamp
than (each of) the corresponding source file(s).
if (property == null) {
throw new BuildException("property attribute is required.",
getLocation());
}
boolean upToDate = eval();
if (upToDate) {
getProject().setNewProperty(property, getValue());
if (mapperElement == null) {
log("File \"" + targetFile.getAbsolutePath()
+ "\" is up-to-date.", Project.MSG_VERBOSE);
} else {
log("All target files are up-to-date.",
Project.MSG_VERBOSE);
}
}
|
private org.apache.tools.ant.util.FileNameMapper | getMapper()
FileNameMapper mapper = null;
if (mapperElement == null) {
MergingMapper mm = new MergingMapper();
mm.setTo(targetFile.getAbsolutePath());
mapper = mm;
} else {
mapper = mapperElement.getImplementation();
}
return mapper;
|
private java.lang.String | getValue()Returns the value, or "true" if a specific value wasn't provided.
return (value != null) ? value : "true";
|
protected boolean | scanDir(java.io.File srcDir, java.lang.String[] files)Scan a directory for files to check for "up to date"ness
SourceFileScanner sfs = new SourceFileScanner(this);
FileNameMapper mapper = getMapper();
File dir = srcDir;
if (mapperElement == null) {
dir = null;
}
return sfs.restrict(files, srcDir, dir, mapper).length == 0;
|
public void | setProperty(java.lang.String property)The property to set if the target file is more up-to-date than
(each of) the source file(s).
// CheckStyle:VisibilityModifier ON
this.property = property;
|
public void | setSrcfile(java.io.File file)The file that must be older than the target file
if the property is to be set.
this.sourceFile = file;
|
public void | setTargetFile(java.io.File file)The file which must be more up-to-date than (each of) the source file(s)
if the property is to be set.
this.targetFile = file;
|
public void | setValue(java.lang.String value)The value to set the named property to if the target file is more
up-to-date than (each of) the source file(s). Defaults to 'true'.
this.value = value;
|