001 package com.mockrunner.mock.jdbc; 002 003 import java.sql.RowId; 004 import java.util.Arrays; 005 006 import com.mockrunner.base.NestedApplicationException; 007 008 /** 009 * Mock implementation of <code>RowId</code>. 010 */ 011 public class MockRowId implements RowId, Cloneable 012 { 013 private byte[] rowIdData; 014 015 public MockRowId(byte[] data) 016 { 017 rowIdData = (byte[])data.clone(); 018 } 019 020 public byte[] getBytes() 021 { 022 return rowIdData; 023 } 024 025 public boolean equals(Object otherObject) 026 { 027 if(null == otherObject) return false; 028 if(!otherObject.getClass().equals(this.getClass())) return false; 029 MockRowId otherRowId = (MockRowId)otherObject; 030 return Arrays.equals(rowIdData, otherRowId.getBytes()); 031 } 032 033 public int hashCode() 034 { 035 int value = 17; 036 for(int ii = 0; ii < rowIdData.length; ii++) 037 { 038 value = (31 * value) + rowIdData[ii]; 039 } 040 return value; 041 } 042 043 public String toString() 044 { 045 StringBuffer buffer = new StringBuffer(); 046 buffer.append(this.getClass().getName() + ": ["); 047 for(int ii = 0; ii < rowIdData.length; ii++) 048 { 049 buffer.append(rowIdData[ii]); 050 if(ii < rowIdData.length - 1) 051 { 052 buffer.append(", "); 053 } 054 } 055 buffer.append("]"); 056 return buffer.toString(); 057 } 058 059 public Object clone() 060 { 061 try 062 { 063 MockRowId copy = (MockRowId)super.clone(); 064 copy.rowIdData = (byte[])rowIdData.clone(); 065 return copy; 066 } 067 catch(CloneNotSupportedException exc) 068 { 069 throw new NestedApplicationException(exc); 070 } 071 } 072 }