All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.euler.file.FileStorageStrategy Maven / Gradle / Ivy

package com.github.euler.file;

import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.util.UUID;

import org.apache.commons.io.FilenameUtils;

import com.github.euler.common.StorageStrategy;

public class FileStorageStrategy implements StorageStrategy {

    private final File root;
    private final String suffix;

    public FileStorageStrategy(File root, String suffix) {
        this.root = root;
        this.suffix = suffix;
    }

    @Override
    public URI createFile(URI uri) {
        String baseName = FilenameUtils.getBaseName(FileUtils.toFile(uri).getAbsolutePath());
        return createFile(baseName, this.suffix);
    }

    @Override
    public URI createFile(URI uri, String suffix) {
        String baseName = FilenameUtils.getBaseName(FileUtils.toFile(uri).getAbsolutePath());
        return createFile(baseName, suffix);
    }

    public URI createFile(String baseName, String suffix) {
        if (baseName.length() < 2) {
            String uuid = UUID.randomUUID().toString();
            baseName = uuid + baseName;
        }
        File dir = new File(root, baseName.substring(0, 1) + "/" + baseName.substring(1, 2));
        dir.mkdirs();
        String name = baseName + suffix;
        File file = new File(dir, name);
        try {
            file.createNewFile();
            return file.toURI();
        } catch (IOException e) {
            throw new RuntimeException("Could not create file " + file.getAbsolutePath(), e);
        }
    }

    @Override
    public URI createFile(String suffix) {
        return createFile("", suffix);
    }

    @Override
    public URI createFile() {
        return createFile(this.suffix);
    }

    @Override
    public URI createFileWithName(String name) {
        File dir;
        String baseName = FilenameUtils.getBaseName(name);
        if (baseName.length() < 2) {
            baseName = UUID.randomUUID().toString();
        }
        dir = new File(root, baseName.substring(0, 1) + "/" + baseName.substring(1, 2));
        dir.mkdirs();
        File file = new File(dir, name);
        try {
            file.createNewFile();
            return file.toURI();
        } catch (IOException e) {
            throw new RuntimeException("Could not create file " + file.getAbsolutePath(), e);
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy