KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > ozoneDB > core > storage > magicStore > MagicTransaction


1 // You can redistribute this software and/or modify it under the terms of
2
// the Ozone Core License version 1 published by ozone-db.org.
3
//
4
// The original code and portions created by SMB are
5
// Copyright (C) 1997-@year@ by SMB GmbH. All rights reserved.
6
//
7
// $Id: MagicTransaction.java,v 1.2 2004/01/09 23:43:05 per_nyfelt Exp $
8

9 package org.ozoneDB.core.storage.magicStore;
10
11 import org.ozoneDB.DxLib.DxDeque;
12 import org.ozoneDB.DxLib.DxHashMap;
13 import org.ozoneDB.DxLib.DxListDeque;
14 import org.ozoneDB.DxLib.DxMap;
15 import org.ozoneDB.DxLib.DxSet;
16 import org.ozoneDB.core.Env;
17 import org.ozoneDB.core.Transaction;
18 import org.ozoneDB.core.TransactionID;
19 import org.ozoneDB.core.User;
20 import org.ozoneDB.core.storage.ClusterID;
21
22 /**
23  * @author Leo Mekenkamp
24  * @version $Id: $
25  */

26 public class MagicTransaction extends Transaction {
27     
28     public final static int DEFAULT_TABLE_SIZE = 1024;
29
30     protected ClusterID lrucid;
31
32     protected DxMap idTable;
33
34     // initialized by MagicStore.nameContainer() if needed
35
protected DxMap nameTable;
36
37     protected DxSet commitClusterIDs;
38
39     private DxDeque idTableChanges;
40
41     private DxDeque nameTableChanges;
42
43     public MagicTransaction(Env env, User owner) {
44         super(env, owner);
45         idTable = new DxHashMap(DEFAULT_TABLE_SIZE);
46     }
47
48     /**
49      * Construct a new transaction. THIS TRANSACTION CAN BE USED FOR TESTING
50      * ONLY!
51      */

52     public MagicTransaction(TransactionID _taID) {
53         super(_taID);
54         idTable = new DxHashMap(DEFAULT_TABLE_SIZE);
55     }
56
57
58     public void nameTableChanges_push(NameTableChange change) {
59         if (nameTableChanges == null) {
60             nameTableChanges = new DxListDeque(/*DEFAULT_TABLE_SIZE*/);
61         }
62         nameTableChanges.pushTop(change);
63     }
64
65
66     public NameTableChange nameTableChanges_pop() {
67         return nameTableChanges != null ? (NameTableChange) nameTableChanges.popBottom() : null;
68     }
69
70
71     public void idTableChanges_push(IDTableChange change) {
72         if (idTableChanges == null) {
73             idTableChanges = new DxListDeque(/*DEFAULT_TABLE_SIZE*/);
74         }
75         idTableChanges.pushTop(change);
76     }
77
78
79     public IDTableChange idTableChanges_pop() {
80         return idTableChanges != null ? (IDTableChange) idTableChanges.popBottom() : null;
81     }
82
83 }
84
Popular Tags