package org.eclipse.buckminster.pde.ant;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.DirectoryScanner;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.types.FileSet;
import org.eclipse.buckminster.ant.types.FileSetGroup;
import org.eclipse.buckminster.pde.tasks.UpdateSiteGenerator;
import org.eclipse.equinox.p2.metadata.Version;
public class UpdateSiteGeneratorTask extends VersionConsolidatorTask {
private String versionProperty;
private ArrayList<FileSet> fileSets;
private ArrayList<FileSetGroup> fileSetGroups;
/**
* Adds a nested <code><filesetgroup></code> element.
*/
public void add(FileSetGroup fsGroup) throws BuildException {
if (fileSetGroups == null)
fileSetGroups = new ArrayList<FileSetGroup>();
fileSetGroups.add(fsGroup);
}
/**
* Adds a nested <code><fileset></code> element.
*/
public void addFileset(FileSet fs) throws BuildException {
if (fileSets == null)
fileSets = new ArrayList<FileSet>();
fileSets.add(fs);
}
@Override
public void execute() throws BuildException {
try {
if (fileSetGroups != null) {
for (FileSetGroup fsg : fileSetGroups)
for (FileSet fs : fsg.getFileSets())
addFileset(fs);
fileSetGroups = null;
}
Project proj = getProject();
List<File> features;
if (fileSets == null)
features = Collections.emptyList();
else {
features = new ArrayList<File>();
for (FileSet fs : fileSets) {
DirectoryScanner ds = fs.getDirectoryScanner(proj);
File dir = fs.getDir(proj);
for (String file : ds.getIncludedFiles())
features.add(new File(dir, file));
}
}
UpdateSiteGenerator generator = new UpdateSiteGenerator(features, getInput(), getOutput(), getPropertiesFile(), getQualifier());
if (versionProperty != null) {
Version version = generator.run(true);
if (version != null)
getProject().setUserProperty(versionProperty, version.toString());
} else
generator.run(false);
} catch (Exception e) {
throw new BuildException(e.toString(), e, this.getLocation());
}
}
public void setTemplate(String template) {
if (template != null && template.length() == 0)
template = null;
setInputFile(new File(template));
}
public void setVersionProperty(String versionProperty) {
this.versionProperty = versionProperty;
}
}