org.eclipse.che.api.fs.server.impl.FsOperations.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.che.api.fs.server.impl.FsOperations.java

Source

/*
 * Copyright (c) 2012-2018 Red Hat, Inc.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *   Red Hat, Inc. - initial API and implementation
 */
package org.eclipse.che.api.fs.server.impl;

import static java.util.stream.Collectors.toSet;
import static org.apache.commons.io.FileUtils.copyInputStreamToFile;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.Collections;
import java.util.Set;
import javax.inject.Singleton;
import org.apache.commons.io.FileUtils;
import org.eclipse.che.api.core.ServerException;

@Singleton
class FsOperations {

    void createFile(Path fsPath) throws ServerException {
        try {
            Files.createFile(fsPath);
        } catch (IOException e) {
            throw new ServerException("Failed to create file: " + fsPath, e);
        }
    }

    void createFileWithParents(Path fsPath) throws ServerException {
        try {
            Files.createDirectories(fsPath.getParent());

            Files.createFile(fsPath);
        } catch (IOException e) {
            throw new ServerException("Failed to create file: " + fsPath, e);
        }
    }

    void createDir(Path fsPath) throws ServerException {
        try {
            Files.createDirectory(fsPath);
        } catch (IOException e) {
            throw new ServerException("Failed to create item: " + fsPath, e);
        }
    }

    void createDirWithParents(Path fsPath) throws ServerException {
        try {
            Files.createDirectories(fsPath.getParent());

            Files.createDirectory(fsPath);
        } catch (IOException e) {
            throw new ServerException("Failed to create item: " + fsPath, e);
        }
    }

    void copy(Path srcFsPath, Path dstFsPath) throws ServerException {
        try {
            if (Files.isDirectory(srcFsPath)) {
                FileUtils.copyDirectory(srcFsPath.toFile(), dstFsPath.toFile());
            } else {
                FileUtils.copyFile(srcFsPath.toFile(), dstFsPath.toFile());
            }
        } catch (IOException e) {
            throw new ServerException("Failed to copy item " + srcFsPath + " to " + dstFsPath, e);
        }
    }

    void copyWithParents(Path srcFsPath, Path dstFsPath) throws ServerException {
        try {
            Files.createDirectories(dstFsPath.getParent());

            if (Files.isDirectory(srcFsPath)) {
                FileUtils.copyDirectory(srcFsPath.toFile(), dstFsPath.toFile());
            } else {
                FileUtils.copyFile(srcFsPath.toFile(), dstFsPath.toFile());
            }
        } catch (IOException e) {
            throw new ServerException("Failed to copy item " + srcFsPath + " to " + dstFsPath, e);
        }
    }

    void move(Path srcFsPath, Path dstFsPath) throws ServerException {
        try {
            if (Files.isDirectory(srcFsPath)) {
                FileUtils.moveDirectory(srcFsPath.toFile(), dstFsPath.toFile());
            } else {
                FileUtils.moveFile(srcFsPath.toFile(), dstFsPath.toFile());
            }
        } catch (IOException e) {
            throw new ServerException("Failed to move item " + srcFsPath + " to " + dstFsPath, e);
        }
    }

    void moveWithParents(Path srcFsPath, Path dstFsPath) throws ServerException {
        try {
            Files.createDirectories(dstFsPath.getParent());

            if (Files.isDirectory(srcFsPath)) {
                FileUtils.moveDirectory(srcFsPath.toFile(), dstFsPath.toFile());
            } else {
                FileUtils.moveFile(srcFsPath.toFile(), dstFsPath.toFile());
            }
        } catch (IOException e) {
            throw new ServerException("Failed to move item " + srcFsPath + " to " + dstFsPath, e);
        }
    }

    void delete(Path fsPath) throws ServerException {
        try {
            if (Files.isDirectory(fsPath)) {
                FileUtils.deleteDirectory(fsPath.toFile());
            } else {
                Files.delete(fsPath);
            }
        } catch (IOException e) {
            throw new ServerException("Failed to delete item: " + fsPath, e);
        }
    }

    void deleteIfExists(Path fsPath) throws ServerException {
        if (!Files.exists(fsPath)) {
            return;
        }

        try {
            if (Files.isDirectory(fsPath)) {
                FileUtils.deleteDirectory(fsPath.toFile());
            } else {
                Files.deleteIfExists(fsPath);
            }
        } catch (IOException e) {
            throw new ServerException("Failed to delete item: " + fsPath, e);
        }
    }

    OutputStream write(Path fsPath) throws ServerException {
        try {
            File file = fsPath.toFile();
            return new BufferedOutputStream(new FileOutputStream(file));
        } catch (IOException e) {
            throw new ServerException("Failed to create file: " + fsPath, e);
        }
    }

    InputStream read(Path fsPath) throws ServerException {
        try {
            File file = fsPath.toFile();
            return new BufferedInputStream(new FileInputStream(file));
        } catch (IOException e) {
            throw new ServerException("Can't read content of file " + fsPath, e);
        }
    }

    void update(Path fsPath, InputStream content) throws ServerException {
        try {
            copyInputStreamToFile(content, fsPath.toFile());
        } catch (IOException e) {
            throw new ServerException("Failed to update file: " + fsPath, e);
        }
    }

    boolean exists(Path fsPath) {
        return fsPath.toFile().exists();
    }

    boolean isFile(Path fsPath) {
        return fsPath.toFile().isFile();
    }

    boolean isDir(Path fsPath) {
        return fsPath.toFile().isDirectory();
    }

    File toIoFile(Path fsPath) {
        return fsPath.toFile();
    }

    Set<String> getFileNames(Path fsPath) {
        File[] files = fsPath.toFile().listFiles();

        if (files == null) {
            return Collections.emptySet();
        }

        Set<String> fileNames = Arrays.stream(files).filter(File::isFile).map(File::getName).collect(toSet());

        return Collections.unmodifiableSet(fileNames);
    }

    Set<Path> getFilePaths(Path fsPath) {
        File[] files = fsPath.toFile().listFiles();

        if (files == null) {
            return Collections.emptySet();
        }

        Set<Path> fileNames = Arrays.stream(files).filter(File::isFile).map(File::toPath).collect(toSet());

        return Collections.unmodifiableSet(fileNames);
    }

    Set<String> getDirNames(Path fsPath) {
        File[] files = fsPath.toFile().listFiles();

        if (files == null) {
            return Collections.emptySet();
        }

        Set<String> dirNames = Arrays.stream(files).filter(File::isDirectory).map(File::getName).collect(toSet());

        return Collections.unmodifiableSet(dirNames);
    }

    Set<Path> getDirPaths(Path fsPath) {
        File[] files = fsPath.toFile().listFiles();

        if (files == null) {
            return Collections.emptySet();
        }

        Set<Path> dirNames = Arrays.stream(files).filter(File::isDirectory).map(File::toPath).collect(toSet());

        return Collections.unmodifiableSet(dirNames);
    }

    long length(Path fsPath) {
        return fsPath.toFile().length();
    }

    long lastModified(Path fsPath) {
        return fsPath.toFile().lastModified();
    }
}