package com.esri;
import com.esri.arcgis.geodatabase.IFeature;
import com.esri.arcgis.geometry.IEnvelope;
import com.esri.arcgis.interop.Cleaner;
import java.io.ByteArrayOutputStream;
import java.io.DataOutput;
import java.io.DataOutputStream;
import java.io.IOException;
/**
*/
public class RowKeyGeneratorQuadPoint implements RowKeyGeneratorInterface
{
private ByteArrayOutputStream m_byteArrayOutputStream = new ByteArrayOutputStream(128);
private DataOutput m_dataOutput = new DataOutputStream(m_byteArrayOutputStream);
@Override
public byte[] generateRowKey(final IFeature feature) throws IOException
{
final double x, y;
final IEnvelope extent = feature.getExtent();
try
{
x = extent.getXMin();
y = extent.getYMin();
}
finally
{
Cleaner.release(extent);
}
m_byteArrayOutputStream.reset();
m_dataOutput.writeLong(Quad.encode(x, y));
m_dataOutput.writeDouble(x);
m_dataOutput.writeDouble(y);
m_dataOutput.writeInt(feature.getOID()); // to "really" make it unique !!
return m_byteArrayOutputStream.toByteArray();
}
}