package org.mapdb.volume;
import org.mapdb.DataInput2;
import java.io.File;
import java.nio.ByteBuffer;
/**
* Created by jan on 2/29/16.
*/
public final class ReadOnlyVolume extends Volume {
protected final Volume vol;
public ReadOnlyVolume(Volume vol) {
this.vol = vol;
}
@Override
public void ensureAvailable(long offset) {
//TODO some error handling here?
return;
}
@Override
public void truncate(long size) {
throw new IllegalAccessError("read-only");
}
@Override
public void putLong(long offset, long value) {
throw new IllegalAccessError("read-only");
}
@Override
public void putInt(long offset, int value) {
throw new IllegalAccessError("read-only");
}
@Override
public void putByte(long offset, byte value) {
throw new IllegalAccessError("read-only");
}
@Override
public void putData(long offset, byte[] src, int srcPos, int srcSize) {
throw new IllegalAccessError("read-only");
}
@Override
public void putData(long offset, ByteBuffer buf) {
throw new IllegalAccessError("read-only");
}
@Override
public void putDataOverlap(long offset, byte[] src, int srcPos, int srcSize) {
throw new IllegalAccessError("read-only");
}
@Override
public long getLong(long offset) {
return vol.getLong(offset);
}
@Override
public int getInt(long offset) {
return vol.getInt(offset);
}
@Override
public byte getByte(long offset) {
return vol.getByte(offset);
}
@Override
public DataInput2 getDataInput(long offset, int size) {
return vol.getDataInput(offset, size);
}
@Override
public DataInput2 getDataInputOverlap(long offset, int size) {
return vol.getDataInputOverlap(offset, size);
}
@Override
public void getData(long offset, byte[] bytes, int bytesPos, int size) {
vol.getData(offset, bytes, bytesPos, size);
}
@Override
public boolean isClosed() {
return vol.isClosed();
}
@Override
public void close() {
vol.close();
}
@Override
public void sync() {
vol.sync();
}
@Override
public int sliceSize() {
return vol.sliceSize();
}
@Override
public void deleteFile() {
throw new IllegalAccessError("read-only");
}
@Override
public boolean isSliced() {
return vol.isSliced();
}
@Override
public long length() {
return vol.length();
}
@Override
public void putUnsignedShort(long offset, int value) {
throw new IllegalAccessError("read-only");
}
@Override
public int getUnsignedShort(long offset) {
return vol.getUnsignedShort(offset);
}
@Override
public int getUnsignedByte(long offset) {
return vol.getUnsignedByte(offset);
}
@Override
public void putUnsignedByte(long offset, int b) {
throw new IllegalAccessError("read-only");
}
@Override
public long getSixLong(long pos) {
return vol.getSixLong(pos);
}
@Override
public void putSixLong(long pos, long value) {
throw new IllegalAccessError("read-only");
}
@Override
public boolean isReadOnly() {
return true;
}
@Override
public File getFile() {
return vol.getFile();
}
@Override
public boolean getFileLocked() {
return vol.getFileLocked();
}
@Override
public void copyTo(long inputOffset, Volume target, long targetOffset, long size) {
vol.copyTo(inputOffset, target, targetOffset, size);
}
@Override
public void clear(long startOffset, long endOffset) {
throw new IllegalAccessError("read-only");
}
}