fr.putnami.gwt.gradle.util.ResourceUtils.java Source code

Java tutorial

Introduction

Here is the source code for fr.putnami.gwt.gradle.util.ResourceUtils.java

Source

/**
 * This file is part of pwt.
 *
 * pwt is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser
 * General Public License as published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * pwt is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
 * General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License along with pwt. If not,
 * see <http://www.gnu.org/licenses/>.
 */
package fr.putnami.gwt.gradle.util;

import com.google.common.io.ByteStreams;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Map;

public final class ResourceUtils {
    private ResourceUtils() {
    }

    public static File ensureDir(File parent, String path) {
        return ensureDir(new File(parent, path));
    }

    public static File ensureDir(File dir) {
        if (dir != null) {
            dir.mkdirs();
        }
        return dir;
    }

    public static File copy(String resourcePath, File targetDir, String targetName) throws IOException {
        return copy(resourcePath, targetDir, targetName, null);
    }

    public static File copy(String resourcePath, File targetDir, String targetName, Map<String, String> model)
            throws IOException {
        return copy(resourcePath, new File(targetDir, targetName), model);
    }

    public static File copy(String resourcePath, File target, Map<String, String> model) throws IOException {

        InputStream input = ResourceUtils.class.getResource(resourcePath).openStream();
        ByteArrayOutputStream out = new ByteArrayOutputStream();

        ByteStreams.copy(input, out);

        String template = new String(out.toByteArray());
        // Resources.toString(url, Charsets.UTF_8);

        if (model != null) {
            for (Map.Entry<String, String> entry : model.entrySet()) {
                template = template.replace(entry.getKey(), entry.getValue());
            }
        }

        target.getParentFile().mkdirs();
        FileWriter writer = new FileWriter(target);
        writer.write(template);
        writer.close();
        return target;
    }

    public static void copyDirectory(File source, File target) throws IOException {
        if (source == null) {
            return;
        }
        if (!target.exists()) {
            target.mkdirs();
        }

        String[] files = source.list();
        if (files != null) {
            for (String fileName : source.list()) {
                File s = new File(source, fileName);
                File t = new File(target, fileName);
                if (s.isDirectory()) {
                    copyDirectory(s, t);
                } else {
                    copy(s, t);
                }
            }
        }
    }

    public static void copy(File source, File target) throws IOException {
        try (InputStream in = new FileInputStream(source); OutputStream out = new FileOutputStream(target)) {
            byte[] buf = new byte[1024];
            int length;
            while ((length = in.read(buf)) > 0) {
                out.write(buf, 0, length);
            }
        }
    }
}