/*
 * Created on May 30, 2005
 */
package org.flexdock.perspective.persist;

import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;

import org.flexdock.docking.state.PersistenceException;

/**
 * @author Christopher Butler
 */
public class DefaultFilePersister implements Persister {
	
	public PerspectiveModel load(InputStream in) throws IOException, PersistenceException {
		if(in==null)
			return null;

		ObjectInputStream ois = null;
		try {
			ois = in instanceof ObjectInputStream? (ObjectInputStream)in:
					new ObjectInputStream(in);
			return (PerspectiveModel) ois.readObject();
		} catch(ClassNotFoundException ex) {
		    throw new PersistenceException("Unable to unmarshal data", ex);
        } finally {
			if(ois != null) {
                ois.close();
            }
		}
	}
	
	public boolean store(OutputStream out, PerspectiveModel info) throws IOException {
		if(info==null || out==null)
			return false;

		ObjectOutputStream oos = null;
		try {
			oos = out instanceof ObjectOutputStream? (ObjectOutputStream) out:new ObjectOutputStream(out);
			oos.writeObject(info);
			
            return true;
		} finally {
			if(oos != null) {
                oos.close();
            }
		}
	}

}
