1 10 package org.mmbase.security; 11 12 import org.mmbase.util.HashCodeUtil; 13 import org.mmbase.util.logging.Logger; 14 import org.mmbase.util.logging.Logging; 15 import java.util.*; 16 17 31 public final class Rank implements Comparable , java.io.Serializable { 32 33 private static Logger log = Logging.getLoggerInstance(Rank.class); 34 35 private static final int serialVersionUID = 1; 37 38 public final static int ANONYMOUS_INT = 0; 39 40 41 public final static int BASICUSER_INT = 100; 42 43 44 public final static int ADMIN_INT = 73059; 45 46 47 public final static Rank ANONYMOUS = new Rank(ANONYMOUS_INT, "anonymous"); 48 49 50 public final static Rank BASICUSER = new Rank(BASICUSER_INT, "basic user"); 51 52 53 public final static Rank ADMIN = new Rank(ADMIN_INT, "administrator"); 54 55 private static Map ranks = new HashMap(); 56 57 58 static { 59 registerRank(ANONYMOUS); 60 registerRank(BASICUSER); 61 registerRank(ADMIN); 62 } 63 64 67 protected Rank(int rank, String description) { 68 this.rank = rank; 69 this.description = description; 70 } 71 72 77 public int getInt(){ 78 return rank; 79 } 80 81 84 public String toString() { 85 return description; 86 } 87 88 89 private int rank; 90 91 92 private String description; 93 94 public static Rank getRank(String rankDesc) { 95 return (Rank) ranks.get(rankDesc); 96 } 97 98 101 protected static Rank registerRank(Rank rank) { 102 Rank prev = (Rank) ranks.put(rank.toString(), rank); 103 if (prev == null) { 104 log.service("Registered rank " + rank); 105 } else { 106 log.service("Replaced rank " + rank); 107 } 108 return prev; 109 } 110 111 116 117 public static Rank createRank(int rank, String rankDesc) { 118 Rank rankObject = new Rank(rank, rankDesc); 119 registerRank(rankObject); 120 return rankObject; 121 } 122 123 127 128 public static Rank deleteRank(String rankDesc) { 129 return (Rank) ranks.remove(rankDesc); 130 } 131 132 138 public static SortedSet getRanks() { 139 return new TreeSet(ranks.values()); 140 } 141 142 145 public boolean equals(Object o) { 147 if (o instanceof Rank) { 148 Rank r = (Rank) o; 149 return r.rank == rank && r.description.equals(description); 150 } else { 151 return false; 152 } 153 } 154 155 156 159 public int hashCode() { 160 int result = 0; 161 result = HashCodeUtil.hashCode(result, rank); 162 result = HashCodeUtil.hashCode(result, description); 163 return result; 164 } 165 166 169 public int compareTo (Object o) { 171 Rank r = (Rank) o; 172 return rank - r.rank; 173 } 174 } 175 | Popular Tags |