001: /*************************************************************************
002: * *
003: * EJBCA: The OpenSource Certificate Authority *
004: * *
005: * This software is free software; you can redistribute it and/or *
006: * modify it under the terms of the GNU Lesser General Public *
007: * License as published by the Free Software Foundation; either *
008: * version 2.1 of the License, or any later version. *
009: * *
010: * See terms of license at gnu.org. *
011: * *
012: *************************************************************************/package org.ejbca.core.model.authorization;
013:
014: import java.io.Serializable;
015:
016: /**
017: * A class representing an accessrule.
018: * A class representing an accessrule in the Ejbca package. Sets rules to resources and tell if it
019: * also should apply for subresources.
020: *
021: * @author Philip Vendil
022: * @version $Id: AccessRule.java,v 1.1 2006/01/17 20:30:56 anatom Exp $
023: */
024: public class AccessRule implements Serializable, Comparable {
025: // Public rule constants.
026: public static final int RULE_ACCEPT = 1;
027: public static final int RULE_DECLINE = 2;
028:
029: /** Creates a new instance of AccessRule */
030: public AccessRule(String accessrule, int rule, boolean recursive) {
031: this .accessrule = accessrule.trim();
032: this .rule = rule;
033: this .recursive = recursive;
034:
035: setState();
036: }
037:
038: public int getRule() {
039: return rule;
040: }
041:
042: public boolean isRecursive() {
043: return recursive;
044: }
045:
046: public String getAccessRule() {
047: return accessrule;
048: }
049:
050: public void setRule(int rule) {
051: this .rule = rule;
052: setState();
053: }
054:
055: public void setRecursive(boolean recursive) {
056: this .recursive = recursive;
057: setState();
058: }
059:
060: public void setAccessRule(String accessrule) {
061: this .accessrule = accessrule.trim();
062: }
063:
064: /** Method used by the access tree to speed things up. */
065: public int getRuleState() {
066: return state;
067: }
068:
069: public int compareTo(Object obj) {
070: return accessrule.compareTo(((AccessRule) obj).getAccessRule());
071: }
072:
073: // Private methods.
074: private void setState() {
075: if (recursive) {
076: switch (rule) {
077: case RULE_ACCEPT:
078: state = AccessTreeNode.STATE_ACCEPT_RECURSIVE;
079: break;
080: case RULE_DECLINE:
081: state = AccessTreeNode.STATE_DECLINE_RECURSIVE;
082: break;
083: default:
084: }
085: } else {
086: switch (rule) {
087: case RULE_ACCEPT:
088: state = AccessTreeNode.STATE_ACCEPT;
089: break;
090: case RULE_DECLINE:
091: state = AccessTreeNode.STATE_DECLINE;
092: break;
093: default:
094: }
095: }
096: }
097:
098: // Private fields.
099: private boolean recursive;
100: private int rule;
101: private String accessrule;
102: private int state; // A more efficent way of reprecenting rule and recusive.
103: }
|