1 4 package com.tc.config.lock; 5 6 import java.util.ArrayList ; 7 import java.util.Iterator ; 8 9 public class LockLevel { 10 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 } 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 toString(int level) { 44 ArrayList levels = new ArrayList (); 45 StringBuffer rv = new StringBuffer (); 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 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 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 |