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 */ 020package 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 */ 028public enum GrantAndDenial 029{ 030 // Permissions that may be used in conjunction with any component of 031 // <tt>ProtectedItem</tt>s. 032 /** Grant for {@link MicroOperation#ADD} */ 033 GRANT_ADD ( MicroOperation.ADD, 0, true ), 034 035 /** Denial for {@link MicroOperation#ADD} */ 036 DENY_ADD ( MicroOperation.ADD, 1, false ), 037 038 /** Grant for {@link MicroOperation#DISCLOSE_ON_ERROR} */ 039 GRANT_DISCLOSE_ON_ERROR ( MicroOperation.DISCLOSE_ON_ERROR, 2, true ), 040 041 /** Denial for {@link MicroOperation#DISCLOSE_ON_ERROR} */ 042 DENY_DISCLOSE_ON_ERROR ( MicroOperation.DISCLOSE_ON_ERROR, 3, false ), 043 044 /** Grant for {@link MicroOperation#READ} */ 045 GRANT_READ ( MicroOperation.READ, 4, true ), 046 047 /** Denial for {@link MicroOperation#READ} */ 048 DENY_READ ( MicroOperation.READ, 5, false ), 049 050 /** Grant for {@link MicroOperation#REMOVE} */ 051 GRANT_REMOVE ( MicroOperation.REMOVE, 6, true ), 052 053 /** Denial for {@link MicroOperation#REMOVE} */ 054 DENY_REMOVE ( MicroOperation.REMOVE, 7, false ), 055 056 // Permissions that may be used only in conjunction with the entry 057 // component. 058 /** Grant for {@link MicroOperation#BROWSE} */ 059 GRANT_BROWSE ( MicroOperation.BROWSE, 8, true ), 060 061 /** Denial for {@link MicroOperation#BROWSE} */ 062 DENY_BROWSE ( MicroOperation.BROWSE, 9, false ), 063 064 /** Grant for {@link MicroOperation#EXPORT} */ 065 GRANT_EXPORT ( MicroOperation.EXPORT, 10, true ), 066 067 /** Denial for {@link MicroOperation#EXPORT} */ 068 DENY_EXPORT ( MicroOperation.EXPORT, 11, false ), 069 070 /** Grant for {@link MicroOperation#IMPORT} */ 071 GRANT_IMPORT ( MicroOperation.IMPORT, 12, true ), 072 073 /** Denial for {@link MicroOperation#IMPORT} */ 074 DENY_IMPORT ( MicroOperation.IMPORT, 13, false ), 075 076 /** Grant for {@link MicroOperation#MODIFY} */ 077 GRANT_MODIFY ( MicroOperation.MODIFY, 14, true ), 078 079 /** Denial for {@link MicroOperation#MODIFY} */ 080 DENY_MODIFY ( MicroOperation.MODIFY, 15, false ), 081 082 /** Grant for {@link MicroOperation#RENAME} */ 083 GRANT_RENAME ( MicroOperation.RENAME, 16, true ), 084 085 /** Denial for {@link MicroOperation#RENAME} */ 086 DENY_RENAME ( MicroOperation.RENAME, 17, false ), 087 088 /** Grant for {@link MicroOperation#RETURN_DN} */ 089 GRANT_RETURN_DN ( MicroOperation.RETURN_DN, 18, true ), 090 091 /** Denial for {@link MicroOperation#RETURN_DN} */ 092 DENY_RETURN_DN ( MicroOperation.RETURN_DN, 19, false ), 093 094 // Permissions that may be used in conjunction with any component, 095 // except entry, of <tt>ProtectedItem</tt>s. 096 /** Grant for {@link MicroOperation#COMPARE} */ 097 GRANT_COMPARE ( MicroOperation.COMPARE, 20, true ), 098 099 /** Deny for {@link MicroOperation#COMPARE} */ 100 DENY_COMPARE ( MicroOperation.COMPARE, 21, false ), 101 102 /** Grant for {@link MicroOperation#FILTER_MATCH} */ 103 GRANT_FILTER_MATCH ( MicroOperation.FILTER_MATCH, 22, true ), 104 105 /** Denial for {@link MicroOperation#FILTER_MATCH} */ 106 DENY_FILTER_MATCH ( MicroOperation.FILTER_MATCH, 23, false ), 107 108 /** Grant for {@link MicroOperation#INVOKE} */ 109 GRANT_INVOKE ( MicroOperation.INVOKE, 24, true ), 110 111 /** Denial for {@link MicroOperation#INVOKE} */ 112 DENY_INVOKE ( MicroOperation.INVOKE, 25, false ); 113 114 /** The micro operation. */ 115 private final MicroOperation microOperation; 116 117 /** The code number. */ 118 private final int code; 119 120 /** The name. */ 121 private final String name; 122 123 /** The grant flag. */ 124 private final boolean grant; 125 126 127 private GrantAndDenial( MicroOperation microOperation, int code, boolean grant ) 128 { 129 this.microOperation = microOperation; 130 this.code = code; 131 this.name = ( grant ? "grant" : "deny" ) + microOperation.getName(); 132 this.grant = grant; 133 } 134 135 136 /** 137 * Gets the {@link MicroOperation} related with this grant or denial. 138 * 139 * @return the micro operation 140 */ 141 public MicroOperation getMicroOperation() 142 { 143 return microOperation; 144 } 145 146 147 /** 148 * Gets the code number of this grant or denial. 149 * 150 * @return the code number 151 */ 152 public int getCode() 153 { 154 return code; 155 } 156 157 158 /** 159 * Gets the name of this grant or denial. 160 * 161 * @return the name 162 */ 163 public String getName() 164 { 165 return name; 166 } 167 168 169 /** 170 * Returns <tt>true</tt> if and only if this is grant. 171 * 172 * @return <tt>true</tt> if and only if this is grant 173 */ 174 public boolean isGrant() 175 { 176 return grant; 177 } 178 179 180 /** 181 * {@inheritDoc} 182 */ 183 @Override 184 public String toString() 185 { 186 return name; 187 } 188}