package mil.nga.giat.geowave.adapter.raster.adapter;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import org.apache.hadoop.io.Writable;
/**
* This class is used by GridCoverageDataAdapter to persist GridCoverages. The
* adapter has information regarding the sample model and color model so all
* that is necessary to persist is the buffer and the envelope.
*/
public class GridCoverageWritable implements
Writable
{
private RasterTile rasterTile;
private double minX;
private double maxX;
private double minY;
private double maxY;
protected GridCoverageWritable() {}
public GridCoverageWritable(
final RasterTile rasterTile,
final double minX,
final double maxX,
final double minY,
final double maxY ) {
this.rasterTile = rasterTile;
this.minX = minX;
this.maxX = maxX;
this.minY = minY;
this.maxY = maxY;
}
public void set(
final RasterTile rasterTile,
final double minX,
final double maxX,
final double minY,
final double maxY ) {
this.rasterTile = rasterTile;
this.minX = minX;
this.maxX = maxX;
this.minY = minY;
this.maxY = maxY;
}
public RasterTile getRasterTile() {
return rasterTile;
}
public double getMinX() {
return minX;
}
public double getMaxX() {
return maxX;
}
public double getMinY() {
return minY;
}
public double getMaxY() {
return maxY;
}
@Override
public void readFields(
final DataInput input )
throws IOException {
final int rasterTileSize = input.readInt();
final byte[] rasterTileBinary = new byte[rasterTileSize];
input.readFully(rasterTileBinary);
rasterTile = new RasterTile();
rasterTile.fromBinary(rasterTileBinary);
minX = input.readDouble();
maxX = input.readDouble();
minY = input.readDouble();
maxY = input.readDouble();
}
@Override
public void write(
final DataOutput output )
throws IOException {
final byte[] rasterTileBinary = rasterTile.toBinary();
output.writeInt(rasterTileBinary.length);
output.write(rasterTileBinary);
output.writeDouble(minX);
output.writeDouble(maxX);
output.writeDouble(minY);
output.writeDouble(maxY);
}
}