jtulach@268: package org.apidesign.infra.ant; jtulach@268: jtulach@268: import java.io.File; jtulach@268: import java.io.FileWriter; jtulach@268: import java.io.IOException; jtulach@274: import java.net.URL; jtulach@268: import java.util.Map.Entry; jtulach@268: import org.apache.tools.ant.BuildException; jtulach@268: import org.apache.tools.ant.Task; jtulach@268: import org.apache.tools.ant.types.FileSet; jtulach@268: import org.apache.tools.ant.types.FilterSet; jtulach@268: jtulach@268: public class GrepCopy extends Task { jtulach@268: private GrepFilter filter = new GrepFilter(); jtulach@268: private File dir; jtulach@274: private URL url; jtulach@268: jtulach@268: public GrepCopy() { jtulach@268: } jtulach@268: jtulach@268: public FileSet createFileSet() { jtulach@268: return filter.createFileSet(); jtulach@268: } jtulach@268: jtulach@268: public void setTarget(File dir) { jtulach@268: this.dir = dir; jtulach@268: } jtulach@274: jtulach@274: public void setBaseURL(URL url) { jtulach@274: this.url = url; jtulach@274: } jtulach@268: jtulach@268: @Override jtulach@268: public void execute() throws BuildException { jtulach@268: filter.setProject(getProject()); jtulach@268: jtulach@268: FilterSet set = filter.createFilterSet(); jtulach@268: jtulach@268: for (Object object : set.getFilterHash().entrySet()) { jtulach@268: jtulach@268: FileWriter w = null; jtulach@268: try { jtulach@268: Entry en = (Entry) object; jtulach@274: String key = (String)en.getKey(); jtulach@274: { jtulach@274: File to = new File(dir, key); jtulach@274: to.getParentFile().mkdirs(); jtulach@274: w = new FileWriter(to); jtulach@274: w.write((String) en.getValue()); jtulach@274: w.close(); jtulach@274: } jtulach@274: jtulach@274: if (url != null) { jtulach@274: URL u = filter.getPath(url, key); jtulach@274: File to = new File(dir, key + ".url"); jtulach@274: to.getParentFile().mkdirs(); jtulach@274: w = new FileWriter(to); jtulach@274: w.write(u.toExternalForm()); jtulach@274: w.close(); jtulach@274: } jtulach@274: jtulach@268: } catch (IOException ex) { jtulach@268: throw new BuildException(ex); jtulach@268: } jtulach@268: } jtulach@268: } jtulach@268: }