SnippetManager.java

package org.vromero.gist.snippet;

import org.codehaus.plexus.util.FileUtils;

import java.io.File;
import java.io.IOException;
import java.net.URL;

import static org.codehaus.plexus.util.FileUtils.*;

public class SnippetManager {

    private static final String GIST_DIR_PREFIX = "gist-";

    private File outputDirectory;

    private String encoding;

    public SnippetManager(String encoding, File outputDirectory) {
        this.encoding = encoding;
        this.outputDirectory = outputDirectory;
    }

    public void createSnippet(File inputFile, String tempGistId, String snippetId) throws IOException {
        File gistOutputDirectory = openOrCreateOutputDirectory(tempGistId);
        URL url = toURLs(new File[]{inputFile})[0];
        SnippetExtractor snippetExtractor = new SnippetExtractor(url, encoding);
        File file = new File( gistOutputDirectory, snippetId);
        fileWrite(file, encoding, snippetExtractor.readSnippet(snippetId).toString());
    }

    public String readSnippet(String tempGistId, String snippetId) throws IOException {
        File gistOutputDirectory = openOrCreateOutputDirectory(tempGistId);
        File snippetFileDescriptor = new File(gistOutputDirectory, snippetId);
        return FileUtils.fileRead(snippetFileDescriptor, encoding);
    }

    private File openOrCreateOutputDirectory(String tempGistId) throws IOException {
        File gistOutputDirectory = new File(outputDirectory, GIST_DIR_PREFIX + tempGistId);
        forceMkdir(gistOutputDirectory);
        return gistOutputDirectory;
    }

}