package com.onionnetworks.io; import com.onionnetworks.util.*; import java.io.*; import java.text.ParseException; public class Journal extends AsyncPersistentProps { public static final String FILE_PROP = "file"; public static final String BYTES_PROP = "bytes"; File f; RangeSet written; public Journal(File f) throws IOException { super(f); // Read in the byte ranges. String bytes = getProperty(BYTES_PROP); if (bytes != null) { // try and read existing journal. try { written = RangeSet.parse(bytes); } catch (ParseException e) { throw new IOException("Corrupt journal."); } } else { // new journal. this.written = new RangeSet(); } // Read in the target file name. String file = getProperty(FILE_PROP); if (file != null) { this.f = new File(file); } } public void setTargetFile(File f) { this.f = f; setProperty(FILE_PROP, f.getAbsolutePath()); } public File getTargetFile() { return f; } public void addByteRange(Range r) { written.add(r); setProperty(BYTES_PROP, written.toString()); } public RangeSet getByteRanges() { return written; } }