package eu.dnetlib.r2d2;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import me.prettyprint.cassandra.service.PoolExhaustedException;

public class SimpleFileStore implements FileStore {
	private static final Log log = LogFactory.getLog(SimpleFileStore.class); // NOPMD by marko on 11/24/08 5:02 PM

	private String base = "/tmp";

	private String prefix = "output-";
	private String suffix = ".dat";

	public void write(final String id, final InputStream input) throws IllegalStateException, PoolExhaustedException, Exception {
		new File(base).mkdirs();
		final String filename = base + "/" + prefix + id + suffix;

		final FileOutputStream fs = new FileOutputStream(filename);
		try {
			IOUtils.copy(input, fs);
			log.info("WRITTEN " + id + " to simple FS store: " + filename);
		} finally {
			fs.close();
		}
	}

	@Override
	public void read(final String id, final OutputStream output) throws Exception {
		final String filename = base + "/" + prefix + id + suffix;
		final FileInputStream fs = new FileInputStream(filename);
		try {
			IOUtils.copy(fs, output);
		} finally {
			fs.close();
		}
	}

	public String getBase() {
		return base;
	}

	public void setBase(final String base) {
		this.base = base;
	}

	public String getPrefix() {
		return prefix;
	}

	public void setPrefix(final String prefix) {
		this.prefix = prefix;
	}

	public String getSuffix() {
		return suffix;
	}

	public void setSuffix(final String suffix) {
		this.suffix = suffix;
	}

}
