1 25 26 27 package org.nemesis.forum; 28 29 import org.nemesis.forum.config.Constants; 30 import org.nemesis.forum.util.cache.CacheSizes; 31 import org.nemesis.forum.util.cache.Cacheable; 32 33 38 public class ForumPermissions implements Cacheable { 39 40 41 private boolean[] values = new boolean[8]; 42 43 46 public static ForumPermissions full() { 47 return new ForumPermissions( 48 true, 49 true, 50 true, 51 true, 52 true, 53 true, 54 true, 55 true); 56 } 57 58 61 public static ForumPermissions none() { 62 return new ForumPermissions( 63 false, 64 false, 65 false, 66 false, 67 false, 68 false, 69 false, 70 false); 71 } 72 73 76 public static ForumPermissions readOnly() { 77 return new ForumPermissions( 78 true, 79 false, 80 false, 81 false, 82 false, 83 false, 84 false, 85 false); 86 } 87 88 91 public ForumPermissions( 92 boolean READ, 93 boolean SYSTEM_ADMIN, 94 boolean FORUM_ADMIN, 95 boolean USER_ADMIN, 96 boolean GROUP_ADMIN, 97 boolean MODERATOR, 98 boolean CREATE_THREAD, 99 boolean CREATE_MESSAGE) { 100 values[0] = READ; 101 values[1] = SYSTEM_ADMIN; 102 values[2] = FORUM_ADMIN; 103 values[3] = USER_ADMIN; 104 values[4] = GROUP_ADMIN; 105 values[5] = MODERATOR; 106 values[6] = CREATE_THREAD; 107 values[7] = CREATE_MESSAGE; 108 } 109 110 114 public ForumPermissions(ForumPermissions perm1, ForumPermissions perm2) { 115 values[0] = perm1.get(0) || perm2.get(0); 116 values[1] = perm1.get(1) || perm2.get(1); 117 values[2] = perm1.get(2) || perm2.get(2); 118 values[3] = perm1.get(3) || perm2.get(3); 119 values[4] = perm1.get(4) || perm2.get(4); 120 values[5] = perm1.get(5) || perm2.get(5); 121 values[6] = perm1.get(6) || perm2.get(6); 122 values[7] = perm1.get(7) || perm2.get(7); 123 } 124 125 public ForumPermissions(boolean[] permissions) { 126 this.values = permissions; 127 } 128 129 public String toString() { 130 StringBuffer buf = new StringBuffer (); 131 for (int i = 0; i < values.length - 1; i++) { 132 buf.append(values[i]).append(","); 133 } 134 buf.append(values[values.length - 1]); 135 return buf.toString(); 136 } 137 138 141 public boolean get(int type) { 142 if (type < 0 || type > 7) { 143 return false; 144 } 145 return values[type]; 146 } 147 148 152 public boolean isSystemOrForumAdmin() { 153 return (values[Constants.FORUM_ADMIN] || values[Constants.SYSTEM_ADMIN]); 154 } 155 156 158 public int getSize() { 159 int size = 0; 162 size += CacheSizes.sizeOfObject(); size += CacheSizes.sizeOfObject(); size += CacheSizes.sizeOfBoolean() * 8; return size; 166 } 167 } 168 | Popular Tags |