import java.io.IOException;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class Buffer {
    private volatile boolean sadrzajUpisan;
    private String in;
    private String inout;
    
    private Buffer() {}

    public Buffer(String in, String inout) {
	sadrzajUpisan=false;
	this.in=in;
	this.inout=inout;
    }

    public boolean upisano() {
	return sadrzajUpisan;
    }

    public void pisanjeGotovo() {
	sadrzajUpisan=true;
    }

    public synchronized void ucitaj() {
	FileInputStream inFile=null;
	FileOutputStream outFile=null;
	int c;

	try {
	    inFile=new FileInputStream(in);
	    outFile=new FileOutputStream(inout);

	    while ((c=inFile.read())!=-1)
		outFile.write(c);

	    sadrzajUpisan=true;
	    notifyAll();
	}
	catch (IOException e) {
	    System.out.println("Greska prilikom otvaranja datoteka.");
	}
	finally {
	    if (inFile!=null) {
		try { inFile.close(); }
		catch (IOException f) {}
	    }
	    if (outFile!=null) {
		try { outFile.close(); }
		catch (IOException f) {}
	    }
	}
    }

    public synchronized void ispisi() {
	FileInputStream inFile=null;
	int c;

	try {
	    while (!sadrzajUpisan) {
		try { wait(); }
		catch (InterruptedException e) {}
	    }
	    inFile=new FileInputStream(inout);

	    while ((c=inFile.read())!=-1)
		System.out.write(c);
	}
	catch (IOException e) {
	    System.out.println("Greska prilikom otvaranja datoteka.");
	}
	finally {
	    if (inFile!=null) {
		try { inFile.close(); }
		catch (IOException e) {}
	    }
	}
    }
}
