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