HiALL,
I have a problem to create a task with nested elements.
i don't have ideia whats happen.
archive attached.
thankz a lot!
--
===========================
Leonardo Andersen Lopes
Florianopolis - SC - Brasil
e-mail: [EMAIL PROTECTED]
[EMAIL PROTECTED]
===========================
package br.com.perfiltecnologia.codegen;
import org.apache.tools.ant.*;
import org.apache.tools.ant.types.*;
import org.apache.tools.ant.taskdefs.MatchingTask;
import java.io.*;
import java.util.*;
public class TaskXML2Java extends MatchingTask {
protected Elemento desc, templ;
public Elemento createDescriptors() {
if (desc == null)
desc = new Elemento();
return desc;
}
public void addDescriptors(Elemento de){
desc = de;
}
public Elemento getDescriptors(){
return desc;
}
public void execute() throws BuildException {
if (desc.usedMatchingTask) {
log("DEPRECATED - Use of the implicit FileSet is deprecated. Use a nested
fileset element instead.");
}
if (desc.file == null && desc.dir == null && desc.filesets.size() == 0) {
throw new BuildException("At least one of the file or dir attributes, or a
fileset element, must be set.");
}
if (desc.quiet && desc.failonerror) {
throw new BuildException("quiet and failonerror cannot both be set to
true",
location);
}
// delete the single file
if (desc.file != null) {
if (desc.file.exists()) {
if (desc.file.isDirectory()) {
log("Directory " + desc.file.getAbsolutePath() + " cannot be
removed using the file attribute. Use dir instead.");
} else {
log("Achado: " + desc.file.getAbsolutePath());
}
} else {
log("Could not find file " + desc.file.getAbsolutePath() + " to
delete.",
org.apache.tools.ant.Project.MSG_VERBOSE);
}
}
// delete the files in the filesets
for (int i=0; i<desc.filesets.size(); i++) {
FileSet fs = (FileSet) desc.filesets.elementAt(i);
try {
DirectoryScanner ds = fs.getDirectoryScanner(project);
String[] files = ds.getIncludedFiles();
String[] dirs = ds.getIncludedDirectories();
showFiles(fs.getDir(project), files, dirs);
} catch (BuildException be) {
// directory doesn't exist or is not readable
if (desc.failonerror) {
throw be;
} else {
log(be.getMessage(),
desc.quiet ? org.apache.tools.ant.Project.MSG_VERBOSE :
org.apache.tools.ant.Project.MSG_WARN);
}
}
}
// delete the files from the default fileset
if (desc.usedMatchingTask && desc.dir != null) {
try {
DirectoryScanner ds = super.getDirectoryScanner(desc.dir);
String[] files = ds.getIncludedFiles();
String[] dirs = ds.getIncludedDirectories();
showFiles(desc.dir, files, dirs);
} catch (BuildException be) {
// directory doesn't exist or is not readable
if (desc.failonerror) {
throw be;
} else {
log(be.getMessage(),
desc.quiet ? org.apache.tools.ant.Project.MSG_VERBOSE :
org.apache.tools.ant.Project.MSG_WARN);
}
}
}
}
//************************************************************************
// protected and private methods
//************************************************************************
/**
* remove an array of files in a directory, and a list of subdirectories
* which will only be deleted if 'includeEmpty' is true
* @param d directory to work from
* @param files array of files to delete; can be of zero length
* @param dirs array of directories to delete; can of zero length
*/
protected void showFiles(File d, String[] files, String[] dirs) {
if (files.length > 0) {
log("Mostrando " + files.length + " files from " + d.getAbsolutePath());
for (int j=0; j<files.length; j++) {
File f = new File(d, files[j]);
log("Mostrando " + f.getAbsolutePath());
}
}
if (dirs.length > 0 && desc.includeEmpty) {
int dirCount = 0;
for (int j=dirs.length-1; j>=0; j--) {
File dir = new File(d, dirs[j]);
String[] dirFiles = dir.list();
if (dirFiles == null || dirFiles.length == 0) {
log("Mostrando " + dir.getAbsolutePath(), desc.verbosity);
dirCount++;
}
}
if (dirCount > 0) {
log("Mostrado " + dirCount + " director" +
(dirCount==1 ? "y" : "ies") +
" from " + d.getAbsolutePath());
}
}
}
}
class Elemento extends MatchingTask{
protected File file = null;
protected File dir = null;
protected Vector filesets = new Vector();
protected boolean usedMatchingTask = false;
protected boolean includeEmpty = false; // by default, remove matching empty
dirs
protected int verbosity = org.apache.tools.ant.Project.MSG_VERBOSE;
protected boolean quiet = false;
protected boolean failonerror = true;
public Elemento(){
}
public void setFile(File file) {
this.file = file;
}
public void setDir(File dir) {
this.dir = dir;
}
public void setVerbose(boolean verbose) {
if (verbose) {
this.verbosity = org.apache.tools.ant.Project.MSG_INFO;
} else {
this.verbosity = org.apache.tools.ant.Project.MSG_VERBOSE;
}
}
public void setQuiet(boolean quiet) {
this.quiet = quiet;
if (quiet) {
this.failonerror = false;
}
}
public void setFailOnError(boolean failonerror) {
this.failonerror=failonerror;
}
public void setIncludeEmptyDirs(boolean includeEmpty) {
this.includeEmpty = includeEmpty;
}
public void addFileSet(FileSet set) {
filesets.addElement(set);
}
public PatternSet.NameEntry createInclude() {
usedMatchingTask = true;
return super.createInclude();
}
public PatternSet.NameEntry createExclude() {
usedMatchingTask = true;
return super.createExclude();
}
public PatternSet createPatternSet() {
usedMatchingTask = true;
return super.createPatternSet();
}
public void setIncludes(String includes) {
usedMatchingTask = true;
super.setIncludes(includes);
}
public void setExcludes(String excludes) {
usedMatchingTask = true;
super.setExcludes(excludes);
}
public void setDefaultexcludes(boolean useDefaultExcludes) {
usedMatchingTask = true;
super.setDefaultexcludes(useDefaultExcludes);
}
public void setIncludesfile(File includesfile) {
usedMatchingTask = true;
super.setIncludesfile(includesfile);
}
public void setExcludesfile(File excludesfile) {
usedMatchingTask = true;
super.setExcludesfile(excludesfile);
}
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>