diff options
Diffstat (limited to 'plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/MyReviewWorkflowItem.java')
-rw-r--r-- | plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/MyReviewWorkflowItem.java | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/MyReviewWorkflowItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/MyReviewWorkflowItem.java new file mode 100644 index 00000000000..c81877dc625 --- /dev/null +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/search/MyReviewWorkflowItem.java @@ -0,0 +1,86 @@ +/******************************************************************************* + * Copyright (c) 2004, 2007 Boeing. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Boeing - initial API and implementation + *******************************************************************************/ +package org.eclipse.osee.ats.world.search; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import org.eclipse.osee.ats.AtsImage; +import org.eclipse.osee.ats.artifact.ATSAttributes; +import org.eclipse.osee.ats.artifact.ReviewSMArtifact; +import org.eclipse.osee.ats.artifact.StateMachineArtifact; +import org.eclipse.osee.ats.util.AtsRelationTypes; +import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.framework.core.enums.CoreRelationTypes; +import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.skynet.core.User; +import org.eclipse.osee.framework.skynet.core.artifact.Artifact; +import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery; +import org.eclipse.osee.framework.skynet.core.relation.RelationManager; + +/** + * @author Donald G. Dunne + */ +public class MyReviewWorkflowItem extends UserSearchItem { + + private final ReviewState reviewState; + + public enum ReviewState { + InWork, All + }; + + public MyReviewWorkflowItem(String name, User user, ReviewState reviewState) { + super(name, user, AtsImage.REVIEW); + this.reviewState = reviewState; + } + + public MyReviewWorkflowItem(MyReviewWorkflowItem myReviewWorkflowItem) { + super(myReviewWorkflowItem, AtsImage.REVIEW); + this.reviewState = myReviewWorkflowItem.reviewState; + } + + @Override + protected Collection<Artifact> searchIt(User user) throws OseeCoreException { + + Set<Artifact> assigned = + RelationManager.getRelatedArtifacts(Arrays.asList(user), 1, CoreRelationTypes.Users_Artifact); + Set<Artifact> artifacts = new HashSet<Artifact>(50); + // Because user can be assigned directly to review or through being assigned to task, add in + // all the original artifacts. + artifacts.addAll(assigned); + + if (reviewState == ReviewState.InWork) { + artifacts.addAll(RelationManager.getRelatedArtifacts(assigned, 1, AtsRelationTypes.SmaToTask_Sma)); + } else { + artifacts.addAll(ArtifactQuery.getArtifactListFromAttribute(ATSAttributes.STATE_ATTRIBUTE.getStoreName(), + "%<" + user.getUserId() + ">%", AtsUtil.getAtsBranch())); + } + + List<Artifact> artifactsToReturn = new ArrayList<Artifact>(artifacts.size()); + for (Artifact artifact : artifacts) { + if (artifact instanceof ReviewSMArtifact) { + if (reviewState == ReviewState.All || (reviewState == ReviewState.InWork && !((StateMachineArtifact) artifact).isCancelledOrCompleted())) { + artifactsToReturn.add(artifact); + } + } + } + return artifactsToReturn; + } + + @Override + public WorldUISearchItem copy() { + return new MyReviewWorkflowItem(this); + } + +} |