// This software is released into the Public Domain. See copying.txt for details.
package org.openstreetmap.osmosis.core.store;
import java.io.DataInput;
import java.io.EOFException;
import java.io.IOException;
import org.openstreetmap.osmosis.core.OsmosisRuntimeException;
/**
* Allows persisted input to be read from a DataInput implementation.
*
* @author Brett Henderson
*/
public class DataInputStoreReader implements StoreReader {
private DataInput input;
/**
* Creates a new instance.
*
* @param input
* The data input to read data from.
*/
public DataInputStoreReader(DataInput input) {
this.input = input;
}
/**
* {@inheritDoc}
*/
@Override
public boolean readBoolean() {
try {
return input.readBoolean();
} catch (EOFException e) {
throw new EndOfStoreException(
"End of stream was reached while attempting to read a boolean from the store.", e);
} catch (IOException e) {
throw new OsmosisRuntimeException("Unable to read a boolean from the store.", e);
}
}
/**
* {@inheritDoc}
*/
@Override
public byte readByte() {
try {
return input.readByte();
} catch (EOFException e) {
throw new EndOfStoreException(
"End of stream was reached while attempting to read a byte from the store.", e);
} catch (IOException e) {
throw new OsmosisRuntimeException(
"Unable to read a byte from the store.", e);
}
}
/**
* {@inheritDoc}
*/
@Override
public char readCharacter() {
try {
return input.readChar();
} catch (EOFException e) {
throw new EndOfStoreException(
"End of stream was reached while attempting to read a character from the store.", e);
} catch (IOException e) {
throw new OsmosisRuntimeException(
"Unable to read a character from the store.", e);
}
}
/**
* {@inheritDoc}
*/
@Override
public int readInteger() {
try {
return input.readInt();
} catch (EOFException e) {
throw new EndOfStoreException(
"End of stream was reached while attempting to read an integer from the store.", e);
} catch (IOException e) {
throw new OsmosisRuntimeException(
"Unable to read an integer from the store.", e);
}
}
/**
* {@inheritDoc}
*/
@Override
public long readLong() {
try {
return input.readLong();
} catch (EOFException e) {
throw new EndOfStoreException(
"End of stream was reached while attempting to read a long from the store.", e);
} catch (IOException e) {
throw new OsmosisRuntimeException(
"Unable to read a long from the store.", e);
}
}
/**
* {@inheritDoc}
*/
@Override
public double readDouble() {
try {
return input.readDouble();
} catch (EOFException e) {
throw new EndOfStoreException(
"End of stream was reached while attempting to read a double from the store.", e);
} catch (IOException e) {
throw new OsmosisRuntimeException(
"Unable to read a double from the store.", e);
}
}
/**
* {@inheritDoc}
*/
@Override
public String readString() {
try {
return input.readUTF();
} catch (EOFException e) {
throw new EndOfStoreException(
"End of stream was reached while attempting to read a String from the store.", e);
} catch (IOException e) {
throw new OsmosisRuntimeException(
"Unable to read a String from the store.", e);
}
}
}