KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sleepycat > je > dbi > DbEnvState


1 /*-
2  * See the file LICENSE for redistribution information.
3  *
4  * Copyright (c) 2002,2006 Oracle. All rights reserved.
5  *
6  * $Id: DbEnvState.java,v 1.17 2006/10/30 21:14:15 bostic Exp $
7  */

8
9 package com.sleepycat.je.dbi;
10
11 import com.sleepycat.je.DatabaseException;
12
13 /**
14  * DbEnvState implements a typesafe enumeration of environment states
15  * and does state change validation.
16  */

17 class DbEnvState {
18     private static final boolean DEBUG = false;
19
20     private String JavaDoc name;
21
22     /* Valid environment states. */
23     public static final DbEnvState INIT = new DbEnvState("initialized");
24     public static final DbEnvState OPEN = new DbEnvState("open");
25     public static final DbEnvState CLOSED = new DbEnvState("closed");
26     public static final DbEnvState INVALID = new DbEnvState("invalid");
27
28     /* Valid previous states, for state transition checking. */
29     public static final DbEnvState[] VALID_FOR_OPEN = {INIT, CLOSED};
30     public static final DbEnvState[] VALID_FOR_CLOSE = {INIT, OPEN, INVALID};
31     public static final DbEnvState[] VALID_FOR_REMOVE = {INIT, CLOSED};
32     
33     DbEnvState(String JavaDoc name) {
34         this.name = name;
35     }
36     
37     public String JavaDoc toString() {
38         return name;
39     }
40     
41     /* Check for valid state transitions. */
42     void checkState(DbEnvState [] validPrevStates,
43                     DbEnvState newState)
44         throws DatabaseException {
45
46         if (DEBUG) {
47             System.out.println("newState = " + newState +
48                                " currentState = " + name);
49         }
50         boolean transitionOk = false;
51         for (int i = 0; i < validPrevStates.length; i++) {
52             if (this == validPrevStates[i]) {
53                 transitionOk = true;
54                 break;
55             }
56         }
57         if (!transitionOk) {
58             throw new DatabaseException("Can't go from environment state " +
59                     toString() +
60                     " to " +
61                     newState.toString());
62         }
63     }
64 }
65
Popular Tags