package com.sleepycat.je.dbi; import java.io.UnsupportedEncodingException; import java.nio.ByteBuffer; import com.sleepycat.je.DatabaseException; import com.sleepycat.je.log.LogReadable; import com.sleepycat.je.log.LogUtils; import com.sleepycat.je.log.LogWritable; import de.ovgu.cide.jakutil.*; /** * DatabaseImpl Ids are wrapped in a class so they can be logged. */ public class DatabaseId implements Comparable, LogWritable, LogReadable { /** * The unique id of this database. */ private int id; /** */ public DatabaseId( int id){ this.id=id; } /** * Uninitialized database id, for logging. */ public DatabaseId(){ } /** * @return id value */ public int getId(){ return id; } /** * @return id as bytes, for use as a key */ public byte[] getBytes() throws DatabaseException { try { return toString().getBytes("UTF-8"); } catch ( UnsupportedEncodingException UEE) { throw new DatabaseException(UEE); } } /** * Compare two DatabaseImpl Id's. */ public boolean equals( Object obj){ if (this == obj) { return true; } if (!(obj instanceof DatabaseId)) { return false; } return ((DatabaseId)obj).id == id; } public int hashCode(){ return id; } public String toString(){ return Integer.toString(id); } /** * see Comparable#compareTo */ public int compareTo( Object o){ if (o == null) { throw new NullPointerException(); } DatabaseId argId=(DatabaseId)o; if (id == argId.id) { return 0; } else if (id > argId.id) { return 1; } else { return -1; } } /** * @see LogWritable#getLogSize */ public int getLogSize(){ return LogUtils.getIntLogSize(); } /** * @see LogWritable#writeToLog */ public void writeToLog( ByteBuffer logBuffer){ LogUtils.writeInt(logBuffer,id); } /** * @see LogReadable#readFromLog */ public void readFromLog( ByteBuffer itemBuffer, byte entryTypeVersion){ id=LogUtils.readInt(itemBuffer); } /** * @see LogReadable#dumpLog */ public void dumpLog( StringBuffer sb, boolean verbose){ sb.append("<dbId id=\""); sb.append(id); sb.append("\"/>"); } /** * @see LogReadable#logEntryIsTransactional */ public boolean logEntryIsTransactional(){ return false; } /** * @see LogReadable#getTransactionId */ public long getTransactionId(){ return 0; } }