From beb3dfe0cf20b08d26f26c9ee759e76a73636854 Mon Sep 17 00:00:00 2001 From: jphillips Date: Tue, 20 Jul 2010 19:27:15 +0000 Subject: Added support for access control --- .../osee/framework/core/model/AccessData.java | 55 +++++++++------------- .../core/model/access/exp/AccessFilterChain.java | 17 +++++-- .../model/access/exp/ArtifactAccessFilter.java | 18 ++++--- .../access/exp/AttributeTypeAccessFilter.java | 22 ++++++--- .../core/model/access/exp/BranchAccessFilter.java | 16 +++++-- .../core/model/access/exp/IAccessFilter.java | 3 +- 6 files changed, 78 insertions(+), 53 deletions(-) (limited to 'plugins/org.eclipse.osee.framework.core.model') diff --git a/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/AccessData.java b/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/AccessData.java index 80afe5d7659..17c1d56cb87 100644 --- a/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/AccessData.java +++ b/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/AccessData.java @@ -10,46 +10,35 @@ *******************************************************************************/ package org.eclipse.osee.framework.core.model; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.eclipse.osee.framework.core.data.IArtifactType; -import org.eclipse.osee.framework.core.data.IAttributeType; -import org.eclipse.osee.framework.core.data.IRelationType; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import org.eclipse.osee.framework.core.data.IArtifactType; +import org.eclipse.osee.framework.core.data.IAttributeType; +import org.eclipse.osee.framework.core.data.IRelationType; import org.eclipse.osee.framework.core.enums.PermissionEnum; -import org.eclipse.osee.framework.core.model.access.ArtifactTypeFilter; -import org.eclipse.osee.framework.core.model.access.AttributeTypeFilter; -import org.eclipse.osee.framework.core.model.access.IAcceptFilter; -import org.eclipse.osee.framework.core.model.access.IAccessControllable; -import org.eclipse.osee.framework.jdk.core.type.DoubleKeyHashMap; -import org.eclipse.osee.framework.jdk.core.type.Pair; - +import org.eclipse.osee.framework.core.model.access.ArtifactTypeFilter; +import org.eclipse.osee.framework.core.model.access.AttributeTypeFilter; +import org.eclipse.osee.framework.core.model.access.IAcceptFilter; +import org.eclipse.osee.framework.jdk.core.type.DoubleKeyHashMap; +import org.eclipse.osee.framework.jdk.core.type.Pair; + /** * @author Jeff C. Phillips * @author Roberto E. Escobar */ -public class AccessData { - - private final DoubleKeyHashMap, Object, PermissionEnum> artifactPermissions; - private final Map objectPermissions; - - public AccessData() { - this.artifactPermissions = new DoubleKeyHashMap, Object, PermissionEnum>(); - this.objectPermissions = new HashMap(); - } - - public void add(IAccessControllable accessObject, PermissionEnum permission) { - objectPermissions.put(accessObject, permission); - } +public class AccessData { - //////-------------------------------------------------------------------- + private final DoubleKeyHashMap, Object, PermissionEnum> artifactPermissions; - public void add(Object object, PermissionEnum permission) { - artifactPermissions.put(null, object, permission); - } + public AccessData() { + this.artifactPermissions = new DoubleKeyHashMap, Object, PermissionEnum>(); + } + + public void add(Object object, PermissionEnum permission) { + artifactPermissions.put(null, object, permission); + } public void add(IBasicArtifact artifact, Object object, PermissionEnum permission) { artifactPermissions.put(artifact, object, permission); diff --git a/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/AccessFilterChain.java b/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/AccessFilterChain.java index 373d76d2a35..d67faf7e60d 100644 --- a/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/AccessFilterChain.java +++ b/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/AccessFilterChain.java @@ -5,10 +5,12 @@ */ package org.eclipse.osee.framework.core.model.access.exp; +import java.util.Collection; import java.util.Collections; import java.util.LinkedList; import java.util.List; import org.eclipse.osee.framework.core.enums.PermissionEnum; +import org.eclipse.osee.framework.core.model.IBasicArtifact; public class AccessFilterChain { private final List filters; @@ -27,16 +29,25 @@ public class AccessFilterChain { filters.add(filter); } - public boolean doFilter(Object object, PermissionEnum toPermission, PermissionEnum agrPermission) { + public boolean doFilter(IBasicArtifact artifact, Object object, PermissionEnum toPermission, PermissionEnum agrPermission) { + boolean toReturn = false; Collections.sort(filters); for (IAccessFilter filter : filters) { if (filter.acceptToObject(object)) { - agrPermission = filter.filter(object, toPermission, agrPermission, this); + agrPermission = filter.filter(artifact, object, toPermission, agrPermission, this); } else { break; } } - return agrPermission.matches(toPermission); + + if (agrPermission != null) { + toReturn = agrPermission.matches(toPermission); + } + return toReturn; + } + + public void addAll(Collection filtersToAdd) { + filters.addAll(filtersToAdd); } } diff --git a/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/ArtifactAccessFilter.java b/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/ArtifactAccessFilter.java index 6ba2dd99c76..f9d79c92081 100644 --- a/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/ArtifactAccessFilter.java +++ b/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/ArtifactAccessFilter.java @@ -11,10 +11,10 @@ import org.eclipse.osee.framework.core.model.IBasicArtifact; public class ArtifactAccessFilter extends AbstractAccessFilter { - private PermissionEnum artifactPermission; + private final PermissionEnum artifactPermission; private final IBasicArtifact artifact; - public ArtifactAccessFilter(PermissionEnum artifactPermission, IBasicArtifact artifact) { + public ArtifactAccessFilter(IBasicArtifact artifact, PermissionEnum artifactPermission) { super(); this.artifactPermission = artifactPermission; this.artifact = artifact; @@ -26,15 +26,21 @@ public class ArtifactAccessFilter extends AbstractAccessFilter { } @Override - public PermissionEnum filter(Object object, PermissionEnum toPermission, PermissionEnum agrPermission, AccessFilterChain filterChain) { - if (agrPermission == PermissionEnum.DENY || artifactPermission == null) { - artifactPermission = agrPermission; + public PermissionEnum filter(IBasicArtifact artifact, Object object, PermissionEnum toPermission, PermissionEnum agrPermission, AccessFilterChain filterChain) { + PermissionEnum toReturn = null; + + if (this.artifact.equals(artifact)) { + if (agrPermission != PermissionEnum.DENY && artifactPermission != null) { + agrPermission = artifactPermission; + } + toReturn = agrPermission; } - return artifactPermission; + return toReturn; } @Override public boolean acceptToObject(Object object) { + //Return false if the object to be checked is a branch. return !(object instanceof IOseeBranch); } } diff --git a/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/AttributeTypeAccessFilter.java b/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/AttributeTypeAccessFilter.java index 521b233d240..df523311858 100644 --- a/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/AttributeTypeAccessFilter.java +++ b/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/AttributeTypeAccessFilter.java @@ -7,18 +7,19 @@ package org.eclipse.osee.framework.core.model.access.exp; import org.eclipse.osee.framework.core.data.IAttributeType; import org.eclipse.osee.framework.core.enums.PermissionEnum; +import org.eclipse.osee.framework.core.model.Branch; import org.eclipse.osee.framework.core.model.IBasicArtifact; public class AttributeTypeAccessFilter extends AbstractAccessFilter { private final PermissionEnum permission; private final IBasicArtifact artifact; - private final IAttributeType attribute; + private final IAttributeType type; - public AttributeTypeAccessFilter(PermissionEnum permission, IBasicArtifact artifact, IAttributeType attribute) { + public AttributeTypeAccessFilter(PermissionEnum permission, IBasicArtifact artifact, IAttributeType type) { super(); this.permission = permission; this.artifact = artifact; - this.attribute = attribute; + this.type = type; } @Override @@ -28,12 +29,21 @@ public class AttributeTypeAccessFilter extends AbstractAccessFilter { @Override public boolean acceptToObject(Object object) { - return true; + //Return false if the object to be checked is a branch or artifact. + return (!(object instanceof Branch) && !(object instanceof IBasicArtifact)); } @Override - public PermissionEnum filter(Object object, PermissionEnum toPermission, PermissionEnum agrPermission, AccessFilterChain filterChain) { - return null; + public PermissionEnum filter(IBasicArtifact artifact, Object object, PermissionEnum toPermission, PermissionEnum agrPermission, AccessFilterChain filterChain) { + PermissionEnum toReturn = agrPermission; + + if (this.artifact.equals(artifact) && type.equals(object)) { + if (agrPermission != PermissionEnum.DENY && permission != null) { + agrPermission = permission; + toReturn = agrPermission; + } + } + return toReturn; } } diff --git a/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/BranchAccessFilter.java b/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/BranchAccessFilter.java index 578020da01c..239899dd71e 100644 --- a/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/BranchAccessFilter.java +++ b/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/BranchAccessFilter.java @@ -6,12 +6,14 @@ package org.eclipse.osee.framework.core.model.access.exp; import org.eclipse.osee.framework.core.enums.PermissionEnum; +import org.eclipse.osee.framework.core.model.IBasicArtifact; public class BranchAccessFilter extends AbstractAccessFilter { private final PermissionEnum branchPermission; + private final IBasicArtifact artifact; - public BranchAccessFilter(PermissionEnum branchPermission) { - super(); + public BranchAccessFilter(IBasicArtifact artifact, PermissionEnum branchPermission) { + this.artifact = artifact; this.branchPermission = branchPermission; } @@ -21,8 +23,14 @@ public class BranchAccessFilter extends AbstractAccessFilter { } @Override - public PermissionEnum filter(Object object, PermissionEnum toPermission, PermissionEnum agrPermission, AccessFilterChain filterChain) { - return branchPermission; + public PermissionEnum filter(IBasicArtifact artifact, Object object, PermissionEnum toPermission, PermissionEnum agrPermission, AccessFilterChain filterChain) { + PermissionEnum toReturn = agrPermission; + + if (this.artifact.equals(artifact)) { + agrPermission = branchPermission; + } + + return toReturn; } @Override diff --git a/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/IAccessFilter.java b/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/IAccessFilter.java index 29426bfa37e..b5a29d45042 100644 --- a/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/IAccessFilter.java +++ b/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/IAccessFilter.java @@ -6,11 +6,12 @@ package org.eclipse.osee.framework.core.model.access.exp; import org.eclipse.osee.framework.core.enums.PermissionEnum; +import org.eclipse.osee.framework.core.model.IBasicArtifact; public interface IAccessFilter extends Comparable { int getRank(); boolean acceptToObject(Object object); - PermissionEnum filter(Object object, PermissionEnum toPermission, PermissionEnum agrPermission, AccessFilterChain filterChain); + PermissionEnum filter(IBasicArtifact artifact, Object object, PermissionEnum toPermission, PermissionEnum agrPermission, AccessFilterChain filterChain); } -- cgit v1.2.3