001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, 013 * software distributed under the License is distributed on an 014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 015 * KIND, either express or implied. See the License for the 016 * specific language governing permissions and limitations 017 * under the License. 018 * 019 */ 020 package org.apache.directory.shared.ldap.aci; 021 022 023 /** 024 * An enumeration that represents grants or denials of {@link MicroOperation}s. 025 * 026 * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a> 027 * @version $Rev: 638218 $, $Date: 2008-03-18 06:07:20 +0100 (Tue, 18 Mar 2008) $ 028 */ 029 public class GrantAndDenial 030 { 031 // Permissions that may be used in conjunction with any component of 032 // <tt>ProtectedItem</tt>s. 033 /** Grant for {@link MicroOperation#ADD} */ 034 public static final GrantAndDenial GRANT_ADD = new GrantAndDenial( MicroOperation.ADD, 0, true ); 035 036 /** Denial for {@link MicroOperation#ADD} */ 037 public static final GrantAndDenial DENY_ADD = new GrantAndDenial( MicroOperation.ADD, 1, false ); 038 039 /** Grant for {@link MicroOperation#DISCLOSE_ON_ERROR} */ 040 public static final GrantAndDenial GRANT_DISCLOSE_ON_ERROR = new GrantAndDenial( MicroOperation.DISCLOSE_ON_ERROR, 041 2, true ); 042 043 /** Denial for {@link MicroOperation#DISCLOSE_ON_ERROR} */ 044 public static final GrantAndDenial DENY_DISCLOSE_ON_ERROR = new GrantAndDenial( MicroOperation.DISCLOSE_ON_ERROR, 045 3, false ); 046 047 /** Grant for {@link MicroOperation#READ} */ 048 public static final GrantAndDenial GRANT_READ = new GrantAndDenial( MicroOperation.READ, 4, true ); 049 050 /** Denial for {@link MicroOperation#READ} */ 051 public static final GrantAndDenial DENY_READ = new GrantAndDenial( MicroOperation.READ, 5, false ); 052 053 /** Grant for {@link MicroOperation#REMOVE} */ 054 public static final GrantAndDenial GRANT_REMOVE = new GrantAndDenial( MicroOperation.REMOVE, 6, true ); 055 056 /** Denial for {@link MicroOperation#REMOVE} */ 057 public static final GrantAndDenial DENY_REMOVE = new GrantAndDenial( MicroOperation.REMOVE, 7, false ); 058 059 // Permissions that may be used only in conjunction with the entry 060 // component. 061 /** Grant for {@link MicroOperation#BROWSE} */ 062 public static final GrantAndDenial GRANT_BROWSE = new GrantAndDenial( MicroOperation.BROWSE, 8, true ); 063 064 /** Denial for {@link MicroOperation#BROWSE} */ 065 public static final GrantAndDenial DENY_BROWSE = new GrantAndDenial( MicroOperation.BROWSE, 9, false ); 066 067 /** Grant for {@link MicroOperation#EXPORT} */ 068 public static final GrantAndDenial GRANT_EXPORT = new GrantAndDenial( MicroOperation.EXPORT, 10, true ); 069 070 /** Denial for {@link MicroOperation#EXPORT} */ 071 public static final GrantAndDenial DENY_EXPORT = new GrantAndDenial( MicroOperation.EXPORT, 11, false ); 072 073 /** Grant for {@link MicroOperation#IMPORT} */ 074 public static final GrantAndDenial GRANT_IMPORT = new GrantAndDenial( MicroOperation.IMPORT, 12, true ); 075 076 /** Denial for {@link MicroOperation#IMPORT} */ 077 public static final GrantAndDenial DENY_IMPORT = new GrantAndDenial( MicroOperation.IMPORT, 13, false ); 078 079 /** Grant for {@link MicroOperation#MODIFY} */ 080 public static final GrantAndDenial GRANT_MODIFY = new GrantAndDenial( MicroOperation.MODIFY, 14, true ); 081 082 /** Denial for {@link MicroOperation#MODIFY} */ 083 public static final GrantAndDenial DENY_MODIFY = new GrantAndDenial( MicroOperation.MODIFY, 15, false ); 084 085 /** Grant for {@link MicroOperation#RENAME} */ 086 public static final GrantAndDenial GRANT_RENAME = new GrantAndDenial( MicroOperation.RENAME, 16, true ); 087 088 /** Denial for {@link MicroOperation#RENAME} */ 089 public static final GrantAndDenial DENY_RENAME = new GrantAndDenial( MicroOperation.RENAME, 17, false ); 090 091 /** Grant for {@link MicroOperation#RETURN_DN} */ 092 public static final GrantAndDenial GRANT_RETURN_DN = new GrantAndDenial( MicroOperation.RETURN_DN, 18, true ); 093 094 /** Denial for {@link MicroOperation#RETURN_DN} */ 095 public static final GrantAndDenial DENY_RETURN_DN = new GrantAndDenial( MicroOperation.RETURN_DN, 19, false ); 096 097 // Permissions that may be used in conjunction with any component, 098 // except entry, of <tt>ProtectedItem</tt>s. 099 /** Grant for {@link MicroOperation#COMPARE} */ 100 public static final GrantAndDenial GRANT_COMPARE = new GrantAndDenial( MicroOperation.COMPARE, 20, true ); 101 102 /** Deny for {@link MicroOperation#COMPARE} */ 103 public static final GrantAndDenial DENY_COMPARE = new GrantAndDenial( MicroOperation.COMPARE, 21, false ); 104 105 /** Grant for {@link MicroOperation#FILTER_MATCH} */ 106 public static final GrantAndDenial GRANT_FILTER_MATCH = new GrantAndDenial( MicroOperation.FILTER_MATCH, 22, true ); 107 108 /** Denial for {@link MicroOperation#FILTER_MATCH} */ 109 public static final GrantAndDenial DENY_FILTER_MATCH = new GrantAndDenial( MicroOperation.FILTER_MATCH, 23, false ); 110 111 /** Grant for {@link MicroOperation#INVOKE} */ 112 public static final GrantAndDenial GRANT_INVOKE = new GrantAndDenial( MicroOperation.INVOKE, 24, true ); 113 114 /** Denial for {@link MicroOperation#INVOKE} */ 115 public static final GrantAndDenial DENY_INVOKE = new GrantAndDenial( MicroOperation.INVOKE, 25, false ); 116 117 private final MicroOperation microOperation; 118 119 private final int code; 120 121 private final String name; 122 123 private final boolean grant; 124 125 126 private GrantAndDenial(MicroOperation microOperation, int code, boolean grant) 127 { 128 this.microOperation = microOperation; 129 this.code = code; 130 this.name = ( grant ? "grant" : "deny" ) + microOperation.getName(); 131 this.grant = grant; 132 } 133 134 135 /** 136 * Returns the {@link MicroOperation} related with this grant or denial. 137 */ 138 public MicroOperation getMicroOperation() 139 { 140 return microOperation; 141 } 142 143 144 /** 145 * Return the code number of this grant or denial. 146 */ 147 public int getCode() 148 { 149 return code; 150 } 151 152 153 /** 154 * Returns the name of this grant or denial. 155 */ 156 public String getName() 157 { 158 return name; 159 } 160 161 162 /** 163 * Returns <tt>true</tt> if and only if this is grant. 164 */ 165 public boolean isGrant() 166 { 167 return grant; 168 } 169 170 171 public String toString() 172 { 173 return name; 174 } 175 }