view src/main/java/alice/jungle/persistent/PersistentJournal.java @ 116:895ab2907db3

Modified pom.xml
author one
date Fri, 20 Dec 2013 20:47:35 +0900
parents 3f9c6ab43461
children f64ff5bd66f5
line wrap: on
line source

package alice.jungle.persistent;

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

import org.msgpack.MessagePack;

import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListReader;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListWriter;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.Journal;

public class PersistentJournal implements Journal {
	
	private static ChangeListWriter WRITER;
	private static ChangeListReader READER;
	private static MessagePack msgpack;
	private static OutputStream out = null;
	private static InputStream in = null;
	
	static {
		msgpack = new MessagePack();
	}
	
	public PersistentJournal() {
	}
	
	public PersistentJournal(File file) throws FileNotFoundException {
		out = new FileOutputStream(file);
		in = new FileInputStream(file);
		WRITER = new PersistentChangeListWriter(out);
		READER = new PersistentChangeListReader(in);
	}
	
	@Override
	public ChangeListReader getReader() {
		return READER;
	}

	@Override
	public ChangeListWriter getWriter() {
		return WRITER;
	}
	
	public void setOutputFile(File file) throws FileNotFoundException {
		out = new FileOutputStream(file);
		WRITER = new PersistentChangeListWriter(out);
	}
	
	public void setInputFile(File file) throws FileNotFoundException {
		in = new FileInputStream(file);
		READER = new PersistentChangeListReader(in);
	}
	
	public void close() throws IOException {
		out.close();
		in.close();
	}
	
	public void setOutputStream(OutputStream _out) {
		out = _out;
	}
	
	public OutputStream getOutputStream() {
		return out;
	}
	
	public void setInputStream(InputStream _in) {
		in = _in;
	}
	
	public InputStream getInputStream() {
		return in;
	}
	
	public static MessagePack getMsgPackInstance() {
		return msgpack;
	}

}