package net.sf.antcontrib.net;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.tools.ant.BuildException;
import fr.jayasoft.ivy.ant.IvyCacheFileset;
import fr.jayasoft.ivy.ant.IvyConfigure;
public class Ivy14Adapter
implements IvyAdapter {
public void configure(URLImportTask task) {
IvyConfigure configure = new IvyConfigure();
configure.setProject(task.getProject());
configure.setLocation(task.getLocation());
configure.setOwningTarget(task.getOwningTarget());
configure.setTaskName(task.getTaskName());
configure.init();
URL ivyConfUrl = task.getIvyConfUrl();
File ivyConfFile = task.getIvyConfFile();
String repositoryUrl = task.getRepositoryUrl();
File repositoryDir = task.getRepositoryDir();
String ivyPattern = task.getIvyPattern();
String artifactPattern = task.getArtifactPattern();
if (ivyConfUrl != null) {
if (ivyConfUrl.getProtocol().equalsIgnoreCase("file")) {
String path = ivyConfUrl.getPath();
File f = new File(path);
if (! f.isAbsolute()) {
f = new File(task.getProject().getBaseDir(), path);
}
configure.setFile(f);
}
else {
try {
configure.setUrl(ivyConfUrl.toExternalForm());
}
catch (MalformedURLException e) {
throw new BuildException(e);
}
}
}
else if (ivyConfFile != null) {
configure.setFile(ivyConfFile);
}
else if (repositoryDir != null ||
repositoryUrl != null) {
File temp = null;
FileWriter fw = null;
try {
temp = File.createTempFile("ivyconf", ".xml");
temp.deleteOnExit();
fw = new FileWriter(temp);
fw.write("<ivyconf>");
fw.write("<conf defaultResolver=\"default\" />");
fw.write("<resolvers>");
if (repositoryDir != null) {
fw.write("<filesystem name=\"default\">");
fw.write("<ivy pattern=\"" + repositoryDir + "/" + ivyPattern + "\" />");
fw.write("<artifact pattern=\"" + repositoryDir + "/" + artifactPattern + "\" />");
fw.write("</filesystem>");
}
else {
fw.write("<url name=\"default\">");
fw.write("<ivy pattern=\"" + repositoryUrl + "/" + ivyPattern + "\" />");
fw.write("<artifact pattern=\"" + repositoryUrl + "/" + artifactPattern + "\" />");
fw.write("</url>");
}
fw.write("</resolvers>");
fw.write("<latest-strategies>");
fw.write("<latest-revision name=\"latest\"/>");
fw.write("</latest-strategies>");
fw.write("</ivyconf>");
fw.close();
fw = null;
configure.setFile(temp);
}
catch (IOException e) {
throw new BuildException(e);
}
finally {
try {
if (fw != null) {
fw.close();
fw = null;
}
}
catch (IOException e) {
;
}
}
}
configure.execute();
}
public void fileset(URLImportTask task, String setId) {
String org = task.getOrg();
String module = task.getModule();
String rev = task.getRev();
String conf = task.getConf();
IvyCacheFileset cacheFileSet = new IvyCacheFileset();
cacheFileSet.setProject(task.getProject());
cacheFileSet.setLocation(task.getLocation());
cacheFileSet.setOwningTarget(task.getOwningTarget());
cacheFileSet.setTaskName(task.getTaskName());
cacheFileSet.setInline(true);
cacheFileSet.setOrganisation(org);
cacheFileSet.setModule(module);
cacheFileSet.setRevision(rev);
cacheFileSet.setConf(conf);
cacheFileSet.init();
cacheFileSet.setSetid(setId);
cacheFileSet.execute();
}
}