diff options
author | jphillips | 2010-07-20 19:27:15 +0000 |
---|---|---|
committer | jphillips | 2010-07-20 19:27:15 +0000 |
commit | beb3dfe0cf20b08d26f26c9ee759e76a73636854 (patch) | |
tree | fc7e8d291163b7e2a620350b89debae79d822ef6 /plugins/org.eclipse.osee.framework.core.model | |
parent | 3adc5fa026233019214bf8ec5f153da04fa84224 (diff) | |
download | org.eclipse.osee-beb3dfe0cf20b08d26f26c9ee759e76a73636854.tar.gz org.eclipse.osee-beb3dfe0cf20b08d26f26c9ee759e76a73636854.tar.xz org.eclipse.osee-beb3dfe0cf20b08d26f26c9ee759e76a73636854.zip |
Added support for access control
Diffstat (limited to 'plugins/org.eclipse.osee.framework.core.model')
6 files changed, 78 insertions, 53 deletions
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<IBasicArtifact<?>, Object, PermissionEnum> artifactPermissions;
- private final Map<IAccessControllable, PermissionEnum> objectPermissions; -
- public AccessData() {
- this.artifactPermissions = new DoubleKeyHashMap<IBasicArtifact<?>, Object, PermissionEnum>();
- this.objectPermissions = new HashMap<IAccessControllable, PermissionEnum>(); - }
-
- public void add(IAccessControllable accessObject, PermissionEnum permission) { - objectPermissions.put(accessObject, permission); - } +public class AccessData { - //////-------------------------------------------------------------------- + private final DoubleKeyHashMap<IBasicArtifact<?>, Object, PermissionEnum> artifactPermissions; - public void add(Object object, PermissionEnum permission) {
- artifactPermissions.put(null, object, permission);
- }
+ public AccessData() { + this.artifactPermissions = new DoubleKeyHashMap<IBasicArtifact<?>, 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<IAccessFilter> 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<IAccessFilter> 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<IAccessFilter> { 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); } |