package com.sleepycat.je; import com.sleepycat.je.tree.TreeUtils; import de.ovgu.cide.jakutil.*; /** * Javadoc for this public class is generated * via the doc templates in the doc_src directory. */ public class DatabaseEntry { private byte[] data; private int dlen=0; private int doff=0; private int offset=0; private int size=0; private boolean partial=false; public String toString(){ StringBuffer sb=new StringBuffer("<DatabaseEntry"); sb.append(" dlen=").append(dlen); sb.append(" doff=").append(doff); sb.append(" doff=").append(doff); sb.append(" offset=").append(offset); sb.append(" size=").append(size); sb.append(">"); return sb.toString(); } /** * Javadoc for this public method is generated via * the doc templates in the doc_src directory. */ public DatabaseEntry(){ } /** * Javadoc for this public method is generated via * the doc templates in the doc_src directory. */ public DatabaseEntry( byte[] data){ this.data=data; if (data != null) { this.size=data.length; } } /** * Javadoc for this public method is generated via * the doc templates in the doc_src directory. */ public DatabaseEntry( byte[] data, int offset, int size){ this.data=data; this.offset=offset; this.size=size; } /** * Javadoc for this public method is generated via * the doc templates in the doc_src directory. */ public byte[] getData(){ return data; } /** * Javadoc for this public method is generated via * the doc templates in the doc_src directory. */ public void setData( byte[] data){ this.data=data; offset=0; size=(data == null) ? 0 : data.length; } /** * Javadoc for this public method is generated via * the doc templates in the doc_src directory. */ public void setData( byte[] data, int offset, int size){ this.data=data; this.offset=offset; this.size=size; } /** * Javadoc for this public method is generated via * the doc templates in the doc_src directory. */ public void setPartial( int doff, int dlen, boolean partial){ setPartialOffset(doff); setPartialLength(dlen); setPartial(partial); } /** * Javadoc for this public method is generated via * the doc templates in the doc_src directory. */ public int getPartialLength(){ return dlen; } /** * Javadoc for this public method is generated via * the doc templates in the doc_src directory. */ public void setPartialLength( int dlen){ this.dlen=dlen; } /** * Javadoc for this public method is generated via * the doc templates in the doc_src directory. */ public int getPartialOffset(){ return doff; } /** * Javadoc for this public method is generated via * the doc templates in the doc_src directory. */ public void setPartialOffset( int doff){ this.doff=doff; } /** * Javadoc for this public method is generated via * the doc templates in the doc_src directory. */ public boolean getPartial(){ return partial; } /** * Javadoc for this public method is generated via * the doc templates in the doc_src directory. */ public void setPartial( boolean partial){ this.partial=partial; } /** * Javadoc for this public method is generated via * the doc templates in the doc_src directory. */ public int getOffset(){ return offset; } /** * Javadoc for this public method is generated via * the doc templates in the doc_src directory. */ public void setOffset( int offset){ this.offset=offset; } /** * Javadoc for this public method is generated via * the doc templates in the doc_src directory. */ public int getSize(){ return size; } /** * Javadoc for this public method is generated via * the doc templates in the doc_src directory. */ public void setSize( int size){ this.size=size; } /** * Dumps the data as a byte array, for tracing purposes */ String dumpData(){ return TreeUtils.dumpByteArray(data); } /** * Compares the data of two entries for byte-by-byte equality. * <p>In either entry, if the offset is non-zero or the size is not equal * to the data array length, then only the data bounded by these values is * compared. The data array length and offset need not be the same in both * entries for them to be considered equal.</p> * <p>If the data array is null in one entry, then to be considered equal * both entries must have a null data array.</p> * <p>If the partial property is set in either entry, then to be considered * equal both entries must have the same partial properties: partial, * partialOffset and partialLength. */ public boolean equals( Object o){ if (!(o instanceof DatabaseEntry)) { return false; } DatabaseEntry e=(DatabaseEntry)o; if (partial || e.partial) { if (partial != e.partial || dlen != e.dlen || doff != e.doff) { return false; } } if (data == null && e.data == null) { return true; } if (data == null || e.data == null) { return false; } if (size != e.size) { return false; } for (int i=0; i < size; i+=1) { if (data[offset + i] != e.data[e.offset + i]) { return false; } } return true; } /** * Returns a hash code based on the data value. */ public int hashCode(){ int hash=0; if (data != null) { for (int i=0; i < size; i+=1) { hash+=data[offset + i]; } } return hash; } }