Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/PriviledgedUserManager.java')
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/PriviledgedUserManager.java92
1 files changed, 92 insertions, 0 deletions
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/PriviledgedUserManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/PriviledgedUserManager.java
new file mode 100644
index 00000000000..1f2a1473c59
--- /dev/null
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/PriviledgedUserManager.java
@@ -0,0 +1,92 @@
+/*
+ * Created on Sep 28, 2010
+ *
+ * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE
+ */
+package org.eclipse.osee.ats.util;
+
+import java.util.HashSet;
+import java.util.Set;
+import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact;
+import org.eclipse.osee.ats.artifact.ActionableItemArtifact;
+import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact;
+import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions.RuleWorkItemId;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.logging.OseeLevel;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.skynet.core.User;
+import org.eclipse.osee.framework.skynet.core.UserManager;
+import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition;
+
+public class PriviledgedUserManager {
+
+ public static Set<User> getPrivilegedUsers(AbstractWorkflowArtifact workflow) throws OseeCoreException {
+ Set<User> users = new HashSet<User>();
+ if (workflow.getParentTeamWorkflow() != null) {
+ users.addAll(getPrivilegedUsers(workflow.getParentTeamWorkflow()));
+ } else {
+ for (ActionableItemArtifact aia : workflow.getParentTeamWorkflow().getActionableItemsDam().getActionableItems()) {
+ for (TeamDefinitionArtifact teamDef : aia.getImpactedTeamDefs()) {
+ addPriviledgedUsersUpTeamDefinitionTree(teamDef, users);
+ }
+ }
+ }
+ AbstractWorkflowArtifact parentSma = workflow.getParentSMA();
+ if (parentSma != null) {
+ users.addAll(parentSma.getStateMgr().getAssignees());
+ }
+ if (AtsUtil.isAtsAdmin()) {
+ users.add(UserManager.getUser());
+ }
+ return users;
+ }
+
+ public static Set<User> getPrivilegedUsers(TeamWorkFlowArtifact teamArt) {
+ Set<User> users = new HashSet<User>();
+ try {
+ addPriviledgedUsersUpTeamDefinitionTree(teamArt.getTeamDefinition(), users);
+
+ WorkPageDefinition workPageDefinition = teamArt.getWorkPageDefinition();
+
+ // Add user if allowing privileged edit to all users
+ if (!users.contains(UserManager.getUser()) && (workPageDefinition.hasWorkRule(RuleWorkItemId.atsAllowPriviledgedEditToAll.name()) || teamArt.getTeamDefinition().hasWorkRule(
+ RuleWorkItemId.atsAllowPriviledgedEditToAll.name()))) {
+ users.add(UserManager.getUser());
+ }
+
+ // Add user if user is team member and rule exists
+ if (!users.contains(UserManager.getUser()) && (workPageDefinition.hasWorkRule(RuleWorkItemId.atsAllowPriviledgedEditToTeamMember.name()) || teamArt.getTeamDefinition().hasWorkRule(
+ RuleWorkItemId.atsAllowPriviledgedEditToTeamMember.name()))) {
+ if (teamArt.getTeamDefinition().getMembers().contains(UserManager.getUser())) {
+ users.add(UserManager.getUser());
+ }
+ }
+
+ // Add user if team member is originator and rule exists
+ if (!users.contains(UserManager.getUser()) && (workPageDefinition.hasWorkRule(RuleWorkItemId.atsAllowPriviledgedEditToTeamMemberAndOriginator.name()) || teamArt.getTeamDefinition().hasWorkRule(
+ RuleWorkItemId.atsAllowPriviledgedEditToTeamMemberAndOriginator.name()))) {
+ if (teamArt.getOriginator().equals(UserManager.getUser()) && teamArt.getTeamDefinition().getMembers().contains(
+ UserManager.getUser())) {
+ users.add(UserManager.getUser());
+ }
+ }
+
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ return users;
+ }
+
+ protected static void addPriviledgedUsersUpTeamDefinitionTree(TeamDefinitionArtifact tda, Set<User> users) throws OseeCoreException {
+ users.addAll(tda.getLeads());
+ users.addAll(tda.getPrivilegedMembers());
+
+ // Walk up tree to get other editors
+ if (tda.getParent() instanceof TeamDefinitionArtifact) {
+ addPriviledgedUsersUpTeamDefinitionTree((TeamDefinitionArtifact) tda.getParent(), users);
+ }
+ }
+
+}

Back to the top