Methods Summary |
---|
public void | add(org.apache.tools.ant.types.ResourceCollection rc)Add a resource collection.
resourcesSpecified = true;
resources.add(rc);
|
public void | add(org.apache.tools.ant.util.FileNameMapper fileNameMapper)A nested filenamemapper
createMapper().add(fileNameMapper);
|
public void | addFileset(org.apache.tools.ant.types.FileSet set)Add a fileset
add(set);
|
public void | addPatternset(org.apache.tools.ant.types.PatternSet set)Add a patternset.
patternsets.addElement(set);
|
public org.apache.tools.ant.types.Mapper | createMapper()Defines the mapper to map source entries to destination files.
if (mapperElement != null) {
throw new BuildException(ERROR_MULTIPLE_MAPPERS,
getLocation());
}
mapperElement = new Mapper(getProject());
return mapperElement;
|
public void | execute()Do the work.
if ("expand".equals(getTaskType())) {
log("!! expand is deprecated. Use unzip instead. !!");
}
if (source == null && !resourcesSpecified) {
throw new BuildException("src attribute and/or resources must be "
+ "specified");
}
if (dest == null) {
throw new BuildException(
"Dest attribute must be specified");
}
if (dest.exists() && !dest.isDirectory()) {
throw new BuildException("Dest must be a directory.", getLocation());
}
if (source != null) {
if (source.isDirectory()) {
throw new BuildException("Src must not be a directory."
+ " Use nested filesets instead.", getLocation());
} else {
expandFile(FILE_UTILS, source, dest);
}
}
Iterator iter = resources.iterator();
while (iter.hasNext()) {
Resource r = (Resource) iter.next();
if (!r.isExists()) {
continue;
}
if (r instanceof FileResource) {
expandFile(FILE_UTILS, ((FileResource) r).getFile(), dest);
} else {
expandResource(r, dest);
}
}
|
protected void | expandFile(org.apache.tools.ant.util.FileUtils fileUtils, java.io.File srcF, java.io.File dir)This method is to be overridden by extending unarchival tasks.
log("Expanding: " + srcF + " into " + dir, Project.MSG_INFO);
ZipFile zf = null;
FileNameMapper mapper = getMapper();
try {
zf = new ZipFile(srcF, encoding);
Enumeration e = zf.getEntries();
while (e.hasMoreElements()) {
ZipEntry ze = (ZipEntry) e.nextElement();
extractFile(fileUtils, srcF, dir, zf.getInputStream(ze),
ze.getName(), new Date(ze.getTime()),
ze.isDirectory(), mapper);
}
log("expand complete", Project.MSG_VERBOSE);
} catch (IOException ioe) {
throw new BuildException("Error while expanding " + srcF.getPath(),
ioe);
} finally {
ZipFile.closeQuietly(zf);
}
|
protected void | expandResource(org.apache.tools.ant.types.Resource srcR, java.io.File dir)This method is to be overridden by extending unarchival tasks.
throw new BuildException("only filesystem based resources are"
+ " supported by this task.");
|
protected void | extractFile(org.apache.tools.ant.util.FileUtils fileUtils, java.io.File srcF, java.io.File dir, java.io.InputStream compressedInputStream, java.lang.String entryName, java.util.Date entryDate, boolean isDirectory, org.apache.tools.ant.util.FileNameMapper mapper)extract a file to a directory
if (patternsets != null && patternsets.size() > 0) {
String name = entryName.replace('/", File.separatorChar)
.replace('\\", File.separatorChar);
boolean included = false;
Set includePatterns = new HashSet();
Set excludePatterns = new HashSet();
for (int v = 0, size = patternsets.size(); v < size; v++) {
PatternSet p = (PatternSet) patternsets.elementAt(v);
String[] incls = p.getIncludePatterns(getProject());
if (incls == null || incls.length == 0) {
// no include pattern implicitly means includes="**"
incls = new String[] {"**"};
}
for (int w = 0; w < incls.length; w++) {
String pattern = incls[w].replace('/", File.separatorChar)
.replace('\\", File.separatorChar);
if (pattern.endsWith(File.separator)) {
pattern += "**";
}
includePatterns.add(pattern);
}
String[] excls = p.getExcludePatterns(getProject());
if (excls != null) {
for (int w = 0; w < excls.length; w++) {
String pattern = excls[w]
.replace('/", File.separatorChar)
.replace('\\", File.separatorChar);
if (pattern.endsWith(File.separator)) {
pattern += "**";
}
excludePatterns.add(pattern);
}
}
}
for (Iterator iter = includePatterns.iterator();
!included && iter.hasNext();) {
String pattern = (String) iter.next();
included = SelectorUtils.matchPath(pattern, name);
}
for (Iterator iter = excludePatterns.iterator();
included && iter.hasNext();) {
String pattern = (String) iter.next();
included = !SelectorUtils.matchPath(pattern, name);
}
if (!included) {
//Do not process this file
return;
}
}
String[] mappedNames = mapper.mapFileName(entryName);
if (mappedNames == null || mappedNames.length == 0) {
mappedNames = new String[] {entryName};
}
File f = fileUtils.resolveFile(dir, mappedNames[0]);
try {
if (!overwrite && f.exists()
&& f.lastModified() >= entryDate.getTime()) {
log("Skipping " + f + " as it is up-to-date",
Project.MSG_DEBUG);
return;
}
log("expanding " + entryName + " to " + f,
Project.MSG_VERBOSE);
// create intermediary directories - sometimes zip don't add them
File dirF = f.getParentFile();
if (dirF != null) {
dirF.mkdirs();
}
if (isDirectory) {
f.mkdirs();
} else {
byte[] buffer = new byte[1024];
int length = 0;
FileOutputStream fos = null;
try {
fos = new FileOutputStream(f);
while ((length =
compressedInputStream.read(buffer)) >= 0) {
fos.write(buffer, 0, length);
}
fos.close();
fos = null;
} finally {
FileUtils.close(fos);
}
}
fileUtils.setFileLastModified(f, entryDate.getTime());
} catch (FileNotFoundException ex) {
log("Unable to expand to file " + f.getPath(), Project.MSG_WARN);
}
|
protected org.apache.tools.ant.util.FileNameMapper | getMapper()get a mapper for a file
FileNameMapper mapper = null;
if (mapperElement != null) {
mapper = mapperElement.getImplementation();
} else {
mapper = new IdentityMapper();
}
return mapper;
|
public void | setDest(java.io.File d)Set the destination directory. File will be unzipped into the
destination directory.
this.dest = d;
|
public void | setEncoding(java.lang.String encoding)Sets the encoding to assume for file names and comments.
Set to native-encoding if you want your
platform's native encoding, defaults to UTF8.
if (NATIVE_ENCODING.equals(encoding)) {
encoding = null;
}
this.encoding = encoding;
|
public void | setOverwrite(boolean b)Should we overwrite files in dest, even if they are newer than
the corresponding entries in the archive?
overwrite = b;
|
public void | setSrc(java.io.File s)Set the path to zip-file.
this.source = s;
|