001 /* 002 @license.text@ 003 */ 004 package biz.hammurapi.legacy.persistence; 005 006 import java.io.File; 007 import java.io.FileInputStream; 008 import java.io.FileOutputStream; 009 import java.io.IOException; 010 import java.io.ObjectInputStream; 011 import java.io.ObjectOutputStream; 012 import java.io.Serializable; 013 014 /** 015 * @author Pavel Vlasov 016 * @version $Revision: 1.1 $ 017 */ 018 public class FileStorage implements Storage { 019 020 private File storageDir; 021 022 public FileStorage(File storageDir) { 023 this.storageDir=storageDir; 024 } 025 026 public String put(Object o) throws PersistenceException { 027 if (o instanceof Serializable) { 028 try { 029 File file=File.createTempFile("storage", ".dat", storageDir); 030 ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(file)); 031 try { 032 oos.writeObject(o); 033 } finally { 034 oos.close(); 035 } 036 return file.getName(); 037 } catch (IOException e) { 038 throw new PersistenceException(e); 039 } 040 } else { 041 return null; 042 } 043 } 044 045 public Object get(String key) throws PersistenceException { 046 File file=new File(storageDir, key); 047 try { 048 ObjectInputStream ois=new ObjectInputStream(new FileInputStream(file)); 049 try { 050 return ois.readObject(); 051 } finally { 052 ois.close(); 053 } 054 } catch (IOException e) { 055 throw new PersistenceException(e); 056 } catch (ClassNotFoundException e) { 057 throw new PersistenceException(e); 058 } 059 } 060 061 public void remove(String key) throws PersistenceException { 062 new File(storageDir, key).delete(); 063 } 064 065 }