1/*-
2 * See the file LICENSE for redistribution information.
3 *
4 * Copyright (c) 2002,2008 Oracle.  All rights reserved.
5 *
6 * $Id: TestEntityBinding.java,v 12.6 2008/01/08 20:58:57 bostic Exp $
7 */
8
9package com.sleepycat.collections.test;
10
11import com.sleepycat.bind.EntityBinding;
12import com.sleepycat.bind.RecordNumberBinding;
13import com.sleepycat.db.DatabaseEntry;
14
15/**
16 * @author Mark Hayes
17 */
18class TestEntityBinding implements EntityBinding {
19
20    private boolean isRecNum;
21
22    TestEntityBinding(boolean isRecNum) {
23
24        this.isRecNum = isRecNum;
25    }
26
27    public Object entryToObject(DatabaseEntry key, DatabaseEntry value) {
28
29        byte keyByte;
30        if (isRecNum) {
31            if (key.getSize() != 4) {
32                throw new IllegalStateException();
33            }
34            keyByte = (byte) RecordNumberBinding.entryToRecordNumber(key);
35        } else {
36            if (key.getSize() != 1) {
37                throw new IllegalStateException();
38            }
39            keyByte = key.getData()[key.getOffset()];
40        }
41        if (value.getSize() != 1) {
42            throw new IllegalStateException();
43        }
44        byte valByte = value.getData()[value.getOffset()];
45        return new TestEntity(keyByte, valByte);
46    }
47
48    public void objectToKey(Object object, DatabaseEntry key) {
49
50        byte val = (byte) ((TestEntity) object).key;
51        if (isRecNum) {
52            RecordNumberBinding.recordNumberToEntry(val, key);
53        } else {
54            key.setData(new byte[] { val }, 0, 1);
55        }
56    }
57
58    public void objectToData(Object object, DatabaseEntry value) {
59
60        byte val = (byte) ((TestEntity) object).value;
61        value.setData(new byte[] { val }, 0, 1);
62    }
63}
64