KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tc > config > lock > LockLevel


1 /*
2  * All content copyright (c) 2003-2007 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

4 package com.tc.config.lock;
5
6 import java.util.ArrayList JavaDoc;
7 import java.util.Iterator JavaDoc;
8
9 public class LockLevel {
10   // NOTE: The NIL level isn't a valid lock level. It used to indicate the absence of a defined/valid lock level
11
public final static int NIL_LOCK_LEVEL = 0;
12
13   public final static int READ = 1;
14   public final static int WRITE = 2;
15   public final static int CONCURRENT = 4;
16
17   private final static int GREEDY = 0x80;
18
19   private LockLevel() {
20     // not to be instantiated
21
}
22
23   public static boolean isWrite(int level) {
24     if (level <= 0) return false;
25     return (level & WRITE) == WRITE;
26   }
27
28   public static boolean isRead(int level) {
29     if (level <= 0) return false;
30     return (level & READ) == READ;
31   }
32
33   public static boolean isConcurrent(int level) {
34     if (level <= 0) return false;
35     return (level & CONCURRENT) == CONCURRENT;
36   }
37
38   public static boolean isGreedy(int level) {
39     if (level <= 0) return false;
40     return (level & GREEDY) == GREEDY;
41   }
42   
43   public static String JavaDoc toString(int level) {
44     ArrayList JavaDoc levels = new ArrayList JavaDoc();
45     StringBuffer JavaDoc rv = new StringBuffer JavaDoc();
46
47     if (isRead(level)) {
48       levels.add("READ");
49     }
50
51     if (isWrite(level)) {
52       levels.add("WRITE");
53     }
54
55     if (isConcurrent(level)) {
56       levels.add("CONCURRENT");
57     }
58
59     if (levels.size() == 0) {
60       levels.add("UNKNOWN:" + level);
61     }
62
63     for (Iterator JavaDoc iter = levels.iterator(); iter.hasNext();) {
64       rv.append(iter.next()).append(' ');
65     }
66
67     rv.append('(').append(level).append(')');
68
69     return rv.toString();
70
71   }
72
73   /**
74    * Is this a discrete lock level? A lock level which is a combination (like READ+WRITE) is non-discreet
75    */

76   public static boolean isDiscrete(int lockLevel) {
77     switch (lockLevel) {
78       case WRITE:
79       case READ:
80       case CONCURRENT:
81         return true;
82       default:
83         return false;
84     }
85   }
86
87   public static int makeGreedy(int level) {
88     return level | GREEDY;
89   }
90
91   public static int makeNotGreedy(int level) {
92     return level ^ GREEDY ;
93   }
94 }
95
Popular Tags