01: /* Copyright (C) 2004 - 2007 db4objects Inc. http://www.db4o.com
02:
03: This file is part of the db4o open source object database.
04:
05: db4o is free software; you can redistribute it and/or modify it under
06: the terms of version 2 of the GNU General Public License as published
07: by the Free Software Foundation and as clarified by db4objects' GPL
08: interpretation policy, available at
09: http://www.db4o.com/about/company/legalpolicies/gplinterpretation/
10: Alternatively you can write to db4objects, Inc., 1900 S Norfolk Street,
11: Suite 350, San Mateo, CA 94403, USA.
12:
13: db4o is distributed in the hope that it will be useful, but WITHOUT ANY
14: WARRANTY; without even the implied warranty of MERCHANTABILITY or
15: FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16: for more details.
17:
18: You should have received a copy of the GNU General Public License along
19: with this program; if not, write to the Free Software Foundation, Inc.,
20: 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
21: package com.db4o.internal.mapping;
22:
23: import com.db4o.foundation.*;
24: import com.db4o.internal.*;
25: import com.db4o.internal.handlers.*;
26:
27: /**
28: * @exclude
29: */
30: public class MappedIDPairHandler implements Indexable4 {
31:
32: private final IntHandler _origHandler;
33: private final IntHandler _mappedHandler;
34:
35: public MappedIDPairHandler(ObjectContainerBase stream) {
36: _origHandler = new IntHandler(stream);
37: _mappedHandler = new IntHandler(stream);
38: }
39:
40: public void defragIndexEntry(BufferPair readers) {
41: throw new NotImplementedException();
42: }
43:
44: public int linkLength() {
45: return _origHandler.linkLength() + _mappedHandler.linkLength();
46: }
47:
48: public Object readIndexEntry(Buffer reader) {
49: int origID = readID(reader);
50: int mappedID = readID(reader);
51: return new MappedIDPair(origID, mappedID);
52: }
53:
54: public void writeIndexEntry(Buffer reader, Object obj) {
55: MappedIDPair mappedIDs = (MappedIDPair) obj;
56: _origHandler.writeIndexEntry(reader, new Integer(mappedIDs
57: .orig()));
58: _mappedHandler.writeIndexEntry(reader, new Integer(mappedIDs
59: .mapped()));
60: }
61:
62: public int compareTo(Object obj) {
63: return _origHandler.compareTo(((MappedIDPair) obj).orig());
64: }
65:
66: public Comparable4 prepareComparison(Object obj) {
67: MappedIDPair mappedIDs = (MappedIDPair) obj;
68: _origHandler.prepareComparison(mappedIDs.orig());
69: _mappedHandler.prepareComparison(mappedIDs.mapped());
70: return this ;
71: }
72:
73: private int readID(Buffer a_reader) {
74: return ((Integer) _origHandler.readIndexEntry(a_reader))
75: .intValue();
76: }
77: }
|