view src/main/java/alice/jungle/persistent/PersistentJournal.java @ 135:2e8034524259

Added NetworkJournal and SingletonMessageFromAlice class
author Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
date Sun, 12 Jan 2014 06:18:37 +0900
parents f64ff5bd66f5
children cd4d64249931
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 jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListReader;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListWriter;

public class PersistentJournal implements NetworkJournal {
	
	private ChangeListWriter WRITER;
	private ChangeListReader READER;
	private OutputStream out;
	private InputStream in;

	public PersistentJournal() {
	}
	
	public PersistentJournal(File file) throws FileNotFoundException {
		out = new FileOutputStream(file,true);
		in = new FileInputStream(file);
		WRITER = new PersistentChangeListWriter(out);
		READER = new PersistentChangeListReader(in);
	}
	
	@Override
	public ChangeListReader getReader() {
		return READER;
	}

	@Override
	public ChangeListWriter getWriter() {
		String timeStamp = Long.toString(System.currentTimeMillis());
		String logFileName = timeStamp + ".log";
		OutputStream outStream = null;
		try {
			outStream = new FileOutputStream(new File("./log/"+logFileName));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		ChangeListWriter writer = new PersistentChangeListWriter(outStream);
		return writer; 
	}
	
	public void setOutputFile(File file) throws FileNotFoundException {
		setOutputStream(new FileOutputStream(file, true));
	}
	
	public void setInputFile(File file) throws FileNotFoundException {
		setInputStream(new FileInputStream(file));
	}
	
	public void setOutputStream(OutputStream _out) {
		out = _out;
		WRITER = new PersistentChangeListWriter(out);		
	}
	
	public OutputStream getOutputStream() {
		return out;
	}
	
	public void setInputStream(InputStream _in) {
		in = _in;
		READER = new PersistentChangeListReader(in);
	}

	public InputStream getInputStream() {
		return in;
	}
	
	public void close() throws IOException {
		out.close();
		in.close();
	}
}