java/ant/src/org/apidesign/infra/ant/GrepCopy.java
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Fri, 03 Apr 2020 16:32:36 +0200
changeset 416 9ed8788a1a4e
parent 271 a1c057f1f756
permissions -rw-r--r--
Using HTTPS to download the libraries
     1 package org.apidesign.infra.ant;
     2 
     3 import java.io.File;
     4 import java.io.FileWriter;
     5 import java.io.IOException;
     6 import java.net.URL;
     7 import java.util.Map.Entry;
     8 import org.apache.tools.ant.BuildException;
     9 import org.apache.tools.ant.Task;
    10 import org.apache.tools.ant.types.FileSet;
    11 import org.apache.tools.ant.types.FilterSet;
    12 
    13 public class GrepCopy extends Task {
    14     private GrepFilter filter = new GrepFilter();
    15     private File dir;
    16     private URL url;
    17     
    18     public GrepCopy() {
    19     }
    20 
    21     public FileSet createFileSet() {
    22         return filter.createFileSet();
    23     }
    24 
    25     public void setTarget(File dir) {
    26         this.dir = dir;
    27     }
    28     
    29     public void setBaseURL(URL url) {
    30         this.url = url;
    31     }
    32 
    33     @Override
    34     public void execute() throws BuildException {
    35         filter.setProject(getProject());
    36 
    37         FilterSet set = filter.createFilterSet();
    38 
    39         for (Object object : set.getFilterHash().entrySet()) {
    40 
    41             FileWriter w = null;
    42             try {
    43                 Entry en = (Entry) object;
    44                 String key = (String)en.getKey();
    45                 {
    46                     File to = new File(dir, key);
    47                     to.getParentFile().mkdirs();
    48                     w = new FileWriter(to);
    49                     w.write((String) en.getValue());
    50                     w.close();
    51                 }
    52                 
    53                 if (url != null) {
    54                     URL u = filter.getPath(url, key);
    55                     File to = new File(dir, key + ".url");
    56                     to.getParentFile().mkdirs();
    57                     w = new FileWriter(to);
    58                     w.write(u.toExternalForm());
    59                     w.close();
    60                 }
    61                 
    62             } catch (IOException ex) {
    63                 throw new BuildException(ex);
    64             }
    65         }
    66     }
    67 }