Source code: org/acegisecurity/acl/basic/SimpleAclEntry.java
1 /* Copyright 2004 Acegi Technology Pty Limited
2 *
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 package org.acegisecurity.acl.basic;
17
18 import org.apache.commons.logging.Log;
19 import org.apache.commons.logging.LogFactory;
20
21
22 /**
23 * Stores some privileges typical of a domain object.
24 *
25 * @author Ben Alex
26 * @version $Id: SimpleAclEntry.java,v 1.2 2005/11/17 00:55:47 benalex Exp $
27 */
28 public class SimpleAclEntry extends AbstractBasicAclEntry {
29 //~ Static fields/initializers =============================================
30
31 private static final Log logger = LogFactory.getLog(SimpleAclEntry.class);
32
33 // Base permissions we permit
34 public static final int NOTHING = 0;
35 public static final int ADMINISTRATION = (int) Math.pow(2, 0);
36 public static final int READ = (int) Math.pow(2, 1);
37 public static final int WRITE = (int) Math.pow(2, 2);
38 public static final int CREATE = (int) Math.pow(2, 3);
39 public static final int DELETE = (int) Math.pow(2, 4);
40
41 // Combinations of base permissions we permit
42 public static final int READ_WRITE_CREATE_DELETE = READ | WRITE | CREATE
43 | DELETE;
44 public static final int READ_WRITE_CREATE = READ | WRITE | CREATE;
45 public static final int READ_WRITE = READ | WRITE;
46 public static final int READ_WRITE_DELETE = READ | WRITE | DELETE;
47
48 // Array required by the abstract superclass via getValidPermissions()
49 private static final int[] validPermissions = {NOTHING, ADMINISTRATION, READ, WRITE, CREATE, DELETE, READ_WRITE_CREATE_DELETE, READ_WRITE_CREATE, READ_WRITE, READ_WRITE_DELETE};
50
51 //~ Constructors ===========================================================
52
53 /**
54 * Allows {@link BasicAclDao} implementations to construct this object
55 * using <code>newInstance()</code>.
56 *
57 * <P>
58 * Normal classes should <B>not</B> use this default constructor.
59 * </p>
60 */
61 public SimpleAclEntry() {
62 super();
63 }
64
65 public SimpleAclEntry(Object recipient,
66 AclObjectIdentity aclObjectIdentity,
67 AclObjectIdentity aclObjectParentIdentity, int mask) {
68 super(recipient, aclObjectIdentity, aclObjectParentIdentity, mask);
69 }
70
71 //~ Methods ================================================================
72
73 public int[] getValidPermissions() {
74 return validPermissions;
75 }
76
77 public String printPermissionsBlock(int i) {
78 StringBuffer sb = new StringBuffer();
79
80 if (isPermitted(i, ADMINISTRATION)) {
81 sb.append('A');
82 } else {
83 sb.append('-');
84 }
85
86 if (isPermitted(i, READ)) {
87 sb.append('R');
88 } else {
89 sb.append('-');
90 }
91
92 if (isPermitted(i, WRITE)) {
93 sb.append('W');
94 } else {
95 sb.append('-');
96 }
97
98 if (isPermitted(i, CREATE)) {
99 sb.append('C');
100 } else {
101 sb.append('-');
102 }
103
104 if (isPermitted(i, DELETE)) {
105 sb.append('D');
106 } else {
107 sb.append('-');
108 }
109
110 return sb.toString();
111 }
112 }