View Javadoc

    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 }