diff options
author | donald.g.dunne | 2017-03-20 15:36:25 +0000 |
---|---|---|
committer | donald.g.dunne | 2017-03-29 22:00:33 +0000 |
commit | f9492493f1ea9a9c0c76c32870c0f1badc7c71a5 (patch) | |
tree | d0129e889a7f31c1041593d79ec5c8466d99b222 | |
parent | 7c62e41a2c8cd06414073936fc07c93a4ce242e1 (diff) | |
download | org.eclipse.osee-f9492493f1ea9a9c0c76c32870c0f1badc7c71a5.tar.gz org.eclipse.osee-f9492493f1ea9a9c0c76c32870c0f1badc7c71a5.tar.xz org.eclipse.osee-f9492493f1ea9a9c0c76c32870c0f1badc7c71a5.zip |
refactor: Consolidate AtsReviewService
Change-Id: I5c55e8931cf4b1c3123e0751ef3852dced0ae7ef
29 files changed, 386 insertions, 620 deletions
diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/review/IAtsReviewService.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/review/IAtsReviewService.java index 7f1fcd42cea..4677af9867e 100644 --- a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/review/IAtsReviewService.java +++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/review/IAtsReviewService.java @@ -12,9 +12,11 @@ package org.eclipse.osee.ats.api.review; import java.util.Collection; import java.util.Date; +import java.util.List; import org.eclipse.osee.ats.api.IAtsWorkItem; import org.eclipse.osee.ats.api.user.IAtsUser; import org.eclipse.osee.ats.api.util.IAtsChangeSet; +import org.eclipse.osee.ats.api.workdef.IAtsDecisionReviewOption; import org.eclipse.osee.ats.api.workdef.ReviewBlockType; import org.eclipse.osee.ats.api.workflow.IAtsTeamWorkflow; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; @@ -43,4 +45,14 @@ public interface IAtsReviewService { IAtsPeerReviewRoleManager createPeerReviewRoleManager(IAtsPeerToPeerReview peerRev); + IAtsDecisionReview createNewDecisionReviewAndTransitionToDecision(IAtsTeamWorkflow teamWf, String reviewTitle, String description, String againstState, ReviewBlockType reviewBlockType, Collection<IAtsDecisionReviewOption> options, List<? extends IAtsUser> assignees, Date createdDate, IAtsUser createdBy, IAtsChangeSet changes) throws OseeCoreException; + + IAtsDecisionReview createNewDecisionReview(IAtsTeamWorkflow teamWf, ReviewBlockType reviewBlockType, boolean againstCurrentState, Date createdDate, IAtsUser createdBy, IAtsChangeSet changes) throws OseeCoreException; + + IAtsDecisionReview createNewDecisionReview(IAtsTeamWorkflow teamWf, ReviewBlockType reviewBlockType, String title, String relatedToState, String description, Collection<IAtsDecisionReviewOption> options, List<? extends IAtsUser> assignees, Date createdDate, IAtsUser createdBy, IAtsChangeSet changes) throws OseeCoreException; + + List<IAtsDecisionReviewOption> getDefaultDecisionReviewOptions(); + + String getDecisionReviewOptionsString(Collection<IAtsDecisionReviewOption> options); + } diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/util/IAtsChangeSet.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/util/IAtsChangeSet.java index 7514a3107de..423a5242508 100644 --- a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/util/IAtsChangeSet.java +++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/util/IAtsChangeSet.java @@ -140,4 +140,6 @@ public interface IAtsChangeSet { void setName(ArtifactToken artifact, String name); + void setName(IAtsObject atsObject, String name); + } diff --git a/plugins/org.eclipse.osee.ats.client.demo/src/org/eclipse/osee/ats/client/demo/PopulateSawBuild2Actions.java b/plugins/org.eclipse.osee.ats.client.demo/src/org/eclipse/osee/ats/client/demo/PopulateSawBuild2Actions.java index 6bb6be32a7c..ce1acc81197 100644 --- a/plugins/org.eclipse.osee.ats.client.demo/src/org/eclipse/osee/ats/client/demo/PopulateSawBuild2Actions.java +++ b/plugins/org.eclipse.osee.ats.client.demo/src/org/eclipse/osee/ats/client/demo/PopulateSawBuild2Actions.java @@ -484,7 +484,6 @@ public class PopulateSawBuild2Actions { } AtsBranchUtil.createWorkingBranch_Create(reqTeam, true); - for (Artifact art : DemoDbUtil.getSoftwareRequirements(DEBUG, SoftwareRequirementStrs.Functional, reqTeam.getWorkingBranch())) { if (DEBUG) { diff --git a/plugins/org.eclipse.osee.ats.client.demo/src/org/eclipse/osee/ats/client/demo/config/DemoDbReviews.java b/plugins/org.eclipse.osee.ats.client.demo/src/org/eclipse/osee/ats/client/demo/config/DemoDbReviews.java index 151a07bd4c7..13b770589c9 100644 --- a/plugins/org.eclipse.osee.ats.client.demo/src/org/eclipse/osee/ats/client/demo/config/DemoDbReviews.java +++ b/plugins/org.eclipse.osee.ats.client.demo/src/org/eclipse/osee/ats/client/demo/config/DemoDbReviews.java @@ -16,6 +16,7 @@ import java.util.Date; import java.util.List; import java.util.logging.Level; import org.eclipse.osee.ats.api.data.AtsAttributeTypes; +import org.eclipse.osee.ats.api.review.IAtsDecisionReview; import org.eclipse.osee.ats.api.review.Role; import org.eclipse.osee.ats.api.review.UserRole; import org.eclipse.osee.ats.api.user.IAtsUser; @@ -28,7 +29,6 @@ import org.eclipse.osee.ats.core.client.review.DecisionReviewState; import org.eclipse.osee.ats.core.client.review.PeerToPeerReviewArtifact; import org.eclipse.osee.ats.core.client.review.PeerToPeerReviewManager; import org.eclipse.osee.ats.core.client.review.PeerToPeerReviewState; -import org.eclipse.osee.ats.core.client.review.ValidateReviewManager; import org.eclipse.osee.ats.core.client.review.defect.ReviewDefectItem; import org.eclipse.osee.ats.core.client.review.defect.ReviewDefectItem.Disposition; import org.eclipse.osee.ats.core.client.review.defect.ReviewDefectItem.InjectionActivity; @@ -75,22 +75,24 @@ public class DemoDbReviews { TeamWorkFlowArtifact secondTestArt = getSampleReviewTestWorkflows().get(1); // Create a Decision review and transition to ReWork - DecisionReviewArtifact reviewArt = - ValidateReviewManager.createValidateReview(firstTestArt, true, createdDate, createdBy, changes); - Result result = - DecisionReviewManager.transitionTo(reviewArt, DecisionReviewState.Followup, createdBy, false, changes); + IAtsDecisionReview review = AtsClientService.get().getReviewService().createValidateReview(firstTestArt, true, + createdDate, createdBy, changes); + Result result = DecisionReviewManager.transitionTo((DecisionReviewArtifact) review.getStoreObject(), + DecisionReviewState.Followup, createdBy, false, changes); if (result.isFalse()) { throw new IllegalStateException("Failed transitioning review to Followup: " + result.getText()); } - changes.add(reviewArt); + changes.add(review); // Create a Decision review and transition to Completed - reviewArt = ValidateReviewManager.createValidateReview(secondTestArt, true, createdDate, createdBy, changes); - DecisionReviewManager.transitionTo(reviewArt, DecisionReviewState.Completed, createdBy, false, changes); + review = AtsClientService.get().getReviewService().createValidateReview(secondTestArt, true, createdDate, + createdBy, changes); + DecisionReviewManager.transitionTo((DecisionReviewArtifact) review.getStoreObject(), + DecisionReviewState.Completed, createdBy, false, changes); if (result.isFalse()) { throw new IllegalStateException("Failed transitioning review to Completed: " + result.getText()); } - changes.add(reviewArt); + changes.add(review); } diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/PopulateDemoActionsTest.java b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/PopulateDemoActionsTest.java index 47b251a12e9..d40afd4bc22 100644 --- a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/PopulateDemoActionsTest.java +++ b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/PopulateDemoActionsTest.java @@ -36,7 +36,6 @@ import org.eclipse.osee.ats.core.client.task.TaskArtifact; import org.eclipse.osee.ats.core.client.task.TaskStates; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; import org.eclipse.osee.ats.core.util.AtsObjects; -import org.eclipse.osee.ats.core.util.AtsUtilCore; import org.eclipse.osee.ats.core.workflow.state.TeamState; import org.eclipse.osee.ats.demo.api.DemoArtifactTypes; import org.eclipse.osee.ats.demo.api.DemoTeam; diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/AtsTestUtil.java b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/AtsTestUtil.java index b5930f956f7..bc443becb3f 100644 --- a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/AtsTestUtil.java +++ b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/AtsTestUtil.java @@ -51,7 +51,6 @@ import org.eclipse.osee.ats.core.client.branch.AtsBranchUtil; import org.eclipse.osee.ats.core.client.config.AtsBulkLoad; import org.eclipse.osee.ats.core.client.review.AbstractReviewArtifact; import org.eclipse.osee.ats.core.client.review.DecisionReviewArtifact; -import org.eclipse.osee.ats.core.client.review.DecisionReviewManager; import org.eclipse.osee.ats.core.client.review.DecisionReviewState; import org.eclipse.osee.ats.core.client.review.PeerToPeerReviewArtifact; import org.eclipse.osee.ats.core.client.review.PeerToPeerReviewManager; @@ -408,10 +407,10 @@ public class AtsTestUtil { options.add(new SimpleDecisionReviewOption(DecisionReviewState.Completed.getName(), false, null)); options.add(new SimpleDecisionReviewOption(DecisionReviewState.Followup.getName(), true, Arrays.asList(AtsClientService.get().getUserService().getCurrentUser().getUserId()))); - decRevArt = DecisionReviewManager.createNewDecisionReview(teamWf, reviewBlockType, - AtsTestUtil.class.getSimpleName() + " Test Decision Review", relatedToState.getName(), "Decision Review", - options, Arrays.asList(AtsClientService.get().getUserService().getCurrentUser()), new Date(), - AtsClientService.get().getUserService().getCurrentUser(), changes); + decRevArt = (DecisionReviewArtifact) AtsClientService.get().getReviewService().createNewDecisionReview(teamWf, + reviewBlockType, AtsTestUtil.class.getSimpleName() + " Test Decision Review", relatedToState.getName(), + "Decision Review", options, Arrays.asList(AtsClientService.get().getUserService().getCurrentUser()), + new Date(), AtsClientService.get().getUserService().getCurrentUser(), changes).getStoreObject(); } return decRevArt; } diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/review/DecisionReviewManagerTest.java b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/review/DecisionReviewManagerTest.java index f0a7cf126bf..2b1df81bbe9 100644 --- a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/review/DecisionReviewManagerTest.java +++ b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/core/client/review/DecisionReviewManagerTest.java @@ -15,12 +15,12 @@ import java.util.Arrays; import java.util.Date; import java.util.List; import org.eclipse.osee.ats.api.data.AtsAttributeTypes; +import org.eclipse.osee.ats.api.review.IAtsDecisionReview; import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.api.workdef.IAtsDecisionReviewOption; import org.eclipse.osee.ats.api.workdef.ReviewBlockType; import org.eclipse.osee.ats.client.integration.tests.AtsClientService; import org.eclipse.osee.ats.client.integration.tests.ats.core.client.AtsTestUtil; -import org.eclipse.osee.ats.core.client.review.DecisionReviewArtifact; import org.eclipse.osee.ats.core.client.review.DecisionReviewManager; import org.eclipse.osee.ats.core.client.review.DecisionReviewState; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; @@ -29,6 +29,7 @@ import org.eclipse.osee.ats.core.workflow.state.TeamState; import org.eclipse.osee.ats.demo.api.DemoUsers; import org.eclipse.osee.framework.core.enums.SystemUser; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; +import org.eclipse.osee.framework.skynet.core.artifact.Artifact; import org.eclipse.osee.framework.skynet.core.utility.Artifacts; import org.junit.AfterClass; import org.junit.Assert; @@ -50,7 +51,8 @@ public class DecisionReviewManagerTest extends DecisionReviewManager { @org.junit.Test public void testGetDecisionReviewOptionsStr() throws OseeCoreException { Assert.assertEquals("Yes;Followup;<3333>\nNo;Completed;\n", - DecisionReviewManager.getDecisionReviewOptionsString(DecisionReviewManager.getDefaultDecisionReviewOptions())); + AtsClientService.get().getReviewService().getDecisionReviewOptionsString( + AtsClientService.get().getReviewService().getDefaultDecisionReviewOptions())); } @org.junit.Test @@ -66,17 +68,19 @@ public class DecisionReviewManagerTest extends DecisionReviewManager { // create and transition decision review IAtsChangeSet changes = AtsClientService.get().createChangeSet(getClass().getSimpleName()); String reviewTitle = "Test Review - " + teamWf.getName(); - DecisionReviewArtifact decRev = DecisionReviewManager.createNewDecisionReviewAndTransitionToDecision(teamWf, - reviewTitle, "my description", AtsTestUtil.getAnalyzeStateDef().getName(), ReviewBlockType.Transition, options, - Arrays.asList(AtsClientService.get().getUserService().getCurrentUser()), new Date(), - AtsClientService.get().getUserService().getCurrentUser(), changes); + IAtsDecisionReview decRev = + AtsClientService.get().getReviewService().createNewDecisionReviewAndTransitionToDecision(teamWf, reviewTitle, + "my description", AtsTestUtil.getAnalyzeStateDef().getName(), ReviewBlockType.Transition, options, + Arrays.asList(AtsClientService.get().getUserService().getCurrentUser()), new Date(), + AtsClientService.get().getUserService().getCurrentUser(), changes); changes.execute(); Assert.assertNotNull(decRev); Assert.assertFalse( - String.format("Decision Review artifact should not be dirty [%s]", Artifacts.getDirtyReport(decRev)), - decRev.isDirty()); - Assert.assertEquals(DecisionReviewState.Decision.getName(), decRev.getCurrentStateName()); + String.format("Decision Review artifact should not be dirty [%s]", + Artifacts.getDirtyReport(((Artifact) decRev.getStoreObject()))), + ((Artifact) decRev.getStoreObject()).isDirty()); + Assert.assertEquals(DecisionReviewState.Decision.getName(), decRev.getStateMgr().getCurrentStateName()); Assert.assertEquals("Joe Smith", decRev.getStateMgr().getAssigneesStr()); } @@ -94,18 +98,20 @@ public class DecisionReviewManagerTest extends DecisionReviewManager { // create and transition decision review IAtsChangeSet changes = AtsClientService.get().createChangeSet(getClass().getSimpleName()); String reviewTitle = "Test Review - " + teamWf.getName(); - DecisionReviewArtifact decRev = DecisionReviewManager.createNewDecisionReviewAndTransitionToDecision(teamWf, - reviewTitle, "my description", AtsTestUtil.getAnalyzeStateDef().getName(), ReviewBlockType.Transition, options, - Arrays.asList(AtsClientService.get().getUserServiceClient().getUserFromToken(SystemUser.UnAssigned)), - new Date(), AtsClientService.get().getUserService().getCurrentUser(), changes); + IAtsDecisionReview decRev = + AtsClientService.get().getReviewService().createNewDecisionReviewAndTransitionToDecision(teamWf, reviewTitle, + "my description", AtsTestUtil.getAnalyzeStateDef().getName(), ReviewBlockType.Transition, options, + Arrays.asList(AtsClientService.get().getUserServiceClient().getUserFromToken(SystemUser.UnAssigned)), + new Date(), AtsClientService.get().getUserService().getCurrentUser(), changes); changes.execute(); Assert.assertNotNull(decRev); Assert.assertEquals(reviewTitle, decRev.getName()); Assert.assertFalse( - String.format("Decision Review artifact should not be dirty [%s]", Artifacts.getDirtyReport(decRev)), - decRev.isDirty()); - Assert.assertEquals(DecisionReviewState.Decision.getName(), decRev.getCurrentStateName()); + String.format("Decision Review artifact should not be dirty [%s]", + Artifacts.getDirtyReport(((Artifact) decRev.getStoreObject()))), + ((Artifact) decRev.getStoreObject()).isDirty()); + Assert.assertEquals(DecisionReviewState.Decision.getName(), decRev.getStateMgr().getCurrentStateName()); Assert.assertEquals("UnAssigned", decRev.getStateMgr().getAssigneesStr()); } @@ -117,20 +123,23 @@ public class DecisionReviewManagerTest extends DecisionReviewManager { String reviewTitle = "Test Review - " + teamWf.getName(); IAtsChangeSet changes = AtsClientService.get().createChangeSet(getClass().getSimpleName()); - DecisionReviewArtifact decRev = - DecisionReviewManager.createNewDecisionReview(teamWf, ReviewBlockType.Commit, reviewTitle, - TeamState.Implement.getName(), "description", DecisionReviewManager.getDefaultDecisionReviewOptions(), - Arrays.asList(AtsClientService.get().getUserServiceClient().getUserFromToken(DemoUsers.Alex_Kay)), - new Date(), AtsClientService.get().getUserService().getCurrentUser(), changes); + IAtsDecisionReview decRev = AtsClientService.get().getReviewService().createNewDecisionReview(teamWf, + ReviewBlockType.Commit, reviewTitle, TeamState.Implement.getName(), "description", + AtsClientService.get().getReviewService().getDefaultDecisionReviewOptions(), + Arrays.asList(AtsClientService.get().getUserServiceClient().getUserFromToken(DemoUsers.Alex_Kay)), new Date(), + AtsClientService.get().getUserService().getCurrentUser(), changes); changes.execute(); Assert.assertNotNull(decRev); Assert.assertEquals(reviewTitle, decRev.getName()); - Assert.assertEquals(DecisionReviewState.Prepare.getName(), decRev.getCurrentStateName()); + Assert.assertEquals(DecisionReviewState.Prepare.getName(), decRev.getStateMgr().getCurrentStateName()); Assert.assertEquals("Alex Kay", decRev.getStateMgr().getAssigneesStr()); Assert.assertEquals(TeamState.Implement.getName(), - decRev.getSoleAttributeValue(AtsAttributeTypes.RelatedToState)); - Assert.assertEquals(ReviewBlockType.Commit.name(), decRev.getSoleAttributeValue(AtsAttributeTypes.ReviewBlocks)); + AtsClientService.get().getAttributeResolver().getSoleAttributeValue(decRev, AtsAttributeTypes.RelatedToState, + "")); + Assert.assertEquals(ReviewBlockType.Commit.name(), + AtsClientService.get().getAttributeResolver().getSoleAttributeValue(decRev, AtsAttributeTypes.ReviewBlocks, + "")); } @org.junit.Test @@ -140,11 +149,11 @@ public class DecisionReviewManagerTest extends DecisionReviewManager { String reviewTitle = "Test Review - " + teamWf.getName(); IAtsChangeSet changes = AtsClientService.get().createChangeSet(getClass().getSimpleName()); - DecisionReviewArtifact decRev = - DecisionReviewManager.createNewDecisionReview(teamWf, ReviewBlockType.Commit, reviewTitle, - TeamState.Implement.getName(), "description", DecisionReviewManager.getDefaultDecisionReviewOptions(), - Arrays.asList(AtsClientService.get().getUserServiceClient().getUserFromToken(SystemUser.UnAssigned)), - new Date(), AtsClientService.get().getUserService().getCurrentUser(), changes); + IAtsDecisionReview decRev = AtsClientService.get().getReviewService().createNewDecisionReview(teamWf, + ReviewBlockType.Commit, reviewTitle, TeamState.Implement.getName(), "description", + AtsClientService.get().getReviewService().getDefaultDecisionReviewOptions(), + Arrays.asList(AtsClientService.get().getUserServiceClient().getUserFromToken(SystemUser.UnAssigned)), + new Date(), AtsClientService.get().getUserService().getCurrentUser(), changes); changes.execute(); Assert.assertNotNull(decRev); @@ -158,17 +167,20 @@ public class DecisionReviewManagerTest extends DecisionReviewManager { TeamWorkFlowArtifact teamWf = AtsTestUtil.getTeamWf(); IAtsChangeSet changes = AtsClientService.get().createChangeSet(getClass().getSimpleName()); - DecisionReviewArtifact decRev = DecisionReviewManager.createNewDecisionReview(teamWf, ReviewBlockType.Commit, - true, new Date(), AtsClientService.get().getUserService().getCurrentUser(), changes); + IAtsDecisionReview decRev = AtsClientService.get().getReviewService().createNewDecisionReview(teamWf, + ReviewBlockType.Commit, true, new Date(), AtsClientService.get().getUserService().getCurrentUser(), changes); changes.execute(); Assert.assertNotNull(decRev); Assert.assertEquals("Should we do this? Yes will require followup, No will not", decRev.getName()); - Assert.assertEquals(DecisionReviewState.Prepare.getName(), decRev.getCurrentStateName()); + Assert.assertEquals(DecisionReviewState.Prepare.getName(), decRev.getStateMgr().getCurrentStateName()); Assert.assertEquals("Joe Smith", decRev.getStateMgr().getAssigneesStr()); - Assert.assertEquals(TeamState.Analyze.getName(), decRev.getSoleAttributeValue(AtsAttributeTypes.RelatedToState)); + Assert.assertEquals(TeamState.Analyze.getName(), + AtsClientService.get().getAttributeResolver().getSoleAttributeValue(decRev, AtsAttributeTypes.RelatedToState, + "")); Assert.assertEquals(ReviewBlockType.Commit.name(), - decRev.getSoleAttributeValue(AtsAttributeTypes.ReviewBlocks, "")); + AtsClientService.get().getAttributeResolver().getSoleAttributeValue(decRev, AtsAttributeTypes.ReviewBlocks, + "")); } } diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/editor/stateItem/AtsDecisionReviewDecisionStateItemTest.java b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/editor/stateItem/AtsDecisionReviewDecisionStateItemTest.java index bd1e088d0dc..4b4527faeec 100644 --- a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/editor/stateItem/AtsDecisionReviewDecisionStateItemTest.java +++ b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/editor/stateItem/AtsDecisionReviewDecisionStateItemTest.java @@ -19,9 +19,7 @@ import org.eclipse.osee.ats.api.workdef.IAtsStateDefinition; import org.eclipse.osee.ats.client.integration.tests.AtsClientService; import org.eclipse.osee.ats.client.integration.tests.ats.core.client.AtsTestUtil; import org.eclipse.osee.ats.core.client.review.DecisionReviewArtifact; -import org.eclipse.osee.ats.core.client.review.DecisionReviewManager; import org.eclipse.osee.ats.core.client.review.DecisionReviewState; -import org.eclipse.osee.ats.core.util.AtsUtilCore; import org.eclipse.osee.ats.editor.stateItem.AtsDecisionReviewDecisionStateItem; import org.eclipse.osee.ats.mocks.MockStateDefinition; import org.eclipse.osee.ats.util.AtsUtil; @@ -37,7 +35,7 @@ import org.junit.Test; /** * Test Case for {@link AtsDecisionReviewDecisionStateItem} - * + * * @author Donald G. Dunne */ public class AtsDecisionReviewDecisionStateItemTest { @@ -55,8 +53,8 @@ public class AtsDecisionReviewDecisionStateItemTest { AtsClientService.get().getAtsBranch()); decRevArt.setName(getClass().getSimpleName()); decRevArt.setSoleAttributeValue(AtsAttributeTypes.DecisionReviewOptions, - DecisionReviewManager.getDecisionReviewOptionsString( - DecisionReviewManager.getDefaultDecisionReviewOptions())); + AtsClientService.get().getReviewService().getDecisionReviewOptionsString( + AtsClientService.get().getReviewService().getDefaultDecisionReviewOptions())); decRevArt.persist(getClass().getSimpleName()); } } diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/editor/stateItem/AtsDecisionReviewPrepareStateItemTest.java b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/editor/stateItem/AtsDecisionReviewPrepareStateItemTest.java index 074bf1ea086..1bec6a68926 100644 --- a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/editor/stateItem/AtsDecisionReviewPrepareStateItemTest.java +++ b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/editor/stateItem/AtsDecisionReviewPrepareStateItemTest.java @@ -19,9 +19,7 @@ import org.eclipse.osee.ats.api.workflow.transition.TransitionResults; import org.eclipse.osee.ats.client.integration.tests.AtsClientService; import org.eclipse.osee.ats.client.integration.tests.ats.core.client.AtsTestUtil; import org.eclipse.osee.ats.core.client.review.DecisionReviewArtifact; -import org.eclipse.osee.ats.core.client.review.DecisionReviewManager; import org.eclipse.osee.ats.core.client.review.DecisionReviewState; -import org.eclipse.osee.ats.core.util.AtsUtilCore; import org.eclipse.osee.ats.editor.stateItem.AtsDecisionReviewPrepareStateItem; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; @@ -34,7 +32,7 @@ import org.junit.Test; /** * Test Case for {@link AtsDecisionReviewPrepareStateItem} - * + * * @author Donald G. Dunne */ public class AtsDecisionReviewPrepareStateItemTest { @@ -66,8 +64,8 @@ public class AtsDecisionReviewPrepareStateItemTest { Assert.assertNotNull(decRevArt); // set valid options - String decisionOptionStr = - DecisionReviewManager.getDecisionReviewOptionsString(DecisionReviewManager.getDefaultDecisionReviewOptions()); + String decisionOptionStr = AtsClientService.get().getReviewService().getDecisionReviewOptionsString( + AtsClientService.get().getReviewService().getDefaultDecisionReviewOptions()); decRevArt.setSoleAttributeValue(AtsAttributeTypes.DecisionReviewOptions, decisionOptionStr); decRevArt.persist(getClass().getSimpleName()); diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/util/AtsDeleteManagerTest.java b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/util/AtsDeleteManagerTest.java index 5bf1e2a9e9e..52f64eab3a9 100644 --- a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/util/AtsDeleteManagerTest.java +++ b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/util/AtsDeleteManagerTest.java @@ -27,10 +27,8 @@ import org.eclipse.osee.ats.client.integration.tests.ats.core.client.AtsTestUtil import org.eclipse.osee.ats.client.integration.tests.util.DemoTestUtil; import org.eclipse.osee.ats.core.client.action.ActionManager; import org.eclipse.osee.ats.core.client.review.DecisionReviewArtifact; -import org.eclipse.osee.ats.core.client.review.DecisionReviewManager; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; import org.eclipse.osee.ats.core.config.ActionableItems; -import org.eclipse.osee.ats.core.util.AtsUtilCore; import org.eclipse.osee.ats.core.workflow.state.TeamState; import org.eclipse.osee.ats.demo.api.DemoActionableItems; import org.eclipse.osee.ats.demo.api.DemoArtifactTypes; @@ -162,8 +160,8 @@ public class AtsDeleteManagerTest { } private void verifyExists(TestNames testName, int expectedNumActions, int expectedNumCodeWorkflows, int expectedNumReqWorkflows, int expectedNumTasks, int expectedNumReviews) throws OseeCoreException { - List<Artifact> artifacts = ArtifactQuery.getArtifactListFromName(testName.toString(), AtsClientService.get().getAtsBranch(), - EXCLUDE_DELETED, QueryOption.CONTAINS_MATCH_OPTIONS); + List<Artifact> artifacts = ArtifactQuery.getArtifactListFromName(testName.toString(), + AtsClientService.get().getAtsBranch(), EXCLUDE_DELETED, QueryOption.CONTAINS_MATCH_OPTIONS); CountingMap<IArtifactType> countMap = new CountingMap<>(); for (Artifact artifact : artifacts) { countMap.put(artifact.getArtifactType()); @@ -197,9 +195,11 @@ public class AtsDeleteManagerTest { } DecisionReviewArtifact decRev = - DecisionReviewManager.createNewDecisionReview(teamArt, ReviewBlockType.None, testName.name(), - TeamState.Endorse.getName(), "Description", DecisionReviewManager.getDefaultDecisionReviewOptions(), - Arrays.asList(AtsClientService.get().getUserService().getCurrentUser()), createdDate, createdBy, changes); + (DecisionReviewArtifact) AtsClientService.get().getReviewService().createNewDecisionReview(teamArt, + ReviewBlockType.None, testName.name(), TeamState.Endorse.getName(), "Description", + AtsClientService.get().getReviewService().getDefaultDecisionReviewOptions(), + Arrays.asList(AtsClientService.get().getUserService().getCurrentUser()), createdDate, createdBy, + changes).getStoreObject(); changes.add(decRev); changes.execute(); diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsCacheManagerUpdateListener.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsCacheManagerUpdateListener.java index 54a770f96da..b5ca71b3b17 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsCacheManagerUpdateListener.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsCacheManagerUpdateListener.java @@ -18,8 +18,6 @@ import org.eclipse.osee.ats.api.data.AtsArtifactTypes; import org.eclipse.osee.ats.api.data.AtsRelationTypes; import org.eclipse.osee.ats.core.client.IAtsClient; import org.eclipse.osee.ats.core.client.config.AtsBulkLoad; -import org.eclipse.osee.ats.core.client.review.AbstractReviewArtifact; -import org.eclipse.osee.ats.core.client.review.AtsReviewCache; import org.eclipse.osee.ats.core.client.task.TaskArtifact; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; import org.eclipse.osee.ats.core.client.util.AtsTaskCache; @@ -105,18 +103,6 @@ public class AtsCacheManagerUpdateListener implements IArtifactEventListener { } } } - if (guidRel.is(AtsRelationTypes.TeamWorkflowToReview_Review)) { - for (AbstractReviewArtifact review : ArtifactCache.getActive(guidRel, AbstractReviewArtifact.class)) { - if (!review.isDeleted()) { - AtsReviewCache.decache(review.getParentAWA()); - } - } - for (Artifact artifact : ArtifactCache.getActive(guidRel)) { - if (artifact instanceof AbstractReviewArtifact) { - AtsReviewCache.decache(artifact); - } - } - } } catch (OseeCoreException ex) { OseeLog.log(Activator.class, Level.SEVERE, ex); @@ -166,12 +152,6 @@ public class AtsCacheManagerUpdateListener implements IArtifactEventListener { if (artifact instanceof TeamWorkFlowArtifact) { AtsTaskCache.decache(artifact); } - if (artifact.isOfType(AtsArtifactTypes.ReviewArtifact) && !artifact.isDeleted()) { - AtsReviewCache.decache(((AbstractReviewArtifact) artifact).getParentAWA()); - } - if (artifact instanceof AbstractReviewArtifact) { - AtsReviewCache.decache(artifact); - } } if (artifact instanceof AbstractWorkflowArtifact) { AbstractWorkflowArtifact awa = (AbstractWorkflowArtifact) artifact; @@ -189,19 +169,10 @@ public class AtsCacheManagerUpdateListener implements IArtifactEventListener { AtsTaskCache.decache(((TaskArtifact) artifact).getParentAWA()); } } - if (guidArt.is(AtsArtifactTypes.ReviewArtifact) && guidArt.is(EventModType.Deleted, EventModType.Purged)) { - Artifact artifact = ArtifactCache.getActive(guidArt); - if (artifact != null && !artifact.isDeleted()) { - AtsReviewCache.decache(((AbstractReviewArtifact) artifact).getParentAWA()); - } - } Artifact artifact = ArtifactCache.getActive(guidArt); if (artifact instanceof TeamWorkFlowArtifact) { AtsTaskCache.decache(artifact); } - if (artifact instanceof AbstractReviewArtifact) { - AtsReviewCache.decache(artifact); - } } } diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsClientImpl.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsClientImpl.java index dd2496940fe..7fc7819ef81 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsClientImpl.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsClientImpl.java @@ -52,7 +52,6 @@ import org.eclipse.osee.ats.core.client.internal.config.TeamDefinitionFactory; import org.eclipse.osee.ats.core.client.internal.config.VersionFactory; import org.eclipse.osee.ats.core.client.internal.ev.AtsEarnedValueImpl; import org.eclipse.osee.ats.core.client.internal.query.AtsQueryServiceImpl; -import org.eclipse.osee.ats.core.client.internal.review.AtsReviewServiceImpl; import org.eclipse.osee.ats.core.client.internal.workdef.ArtifactResolverImpl; import org.eclipse.osee.ats.core.client.internal.workflow.AtsAttributeResolverServiceImpl; import org.eclipse.osee.ats.core.client.internal.workflow.AtsRelationResolverServiceImpl; @@ -126,7 +125,6 @@ public class AtsClientImpl extends AtsCoreServiceImpl implements IAtsClient { relationResolver = new AtsRelationResolverServiceImpl(this); branchService = new AtsBranchServiceImpl(this, teamWorkflowProvidersLazy); - reviewService = new AtsReviewServiceImpl(this); logFactory = AtsCoreFactory.newLogFactory(); stateFactory = AtsCoreFactory.newStateFactory(getServices(), logFactory); diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/review/AtsReviewServiceImpl.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/review/AtsReviewServiceImpl.java deleted file mode 100644 index 1c505e62648..00000000000 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/review/AtsReviewServiceImpl.java +++ /dev/null @@ -1,92 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2013 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.core.client.internal.review; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Date; -import java.util.List; -import org.eclipse.osee.ats.api.IAtsWorkItem; -import org.eclipse.osee.ats.api.data.AtsAttributeTypes; -import org.eclipse.osee.ats.api.review.IAtsAbstractReview; -import org.eclipse.osee.ats.api.review.IAtsDecisionReview; -import org.eclipse.osee.ats.api.review.IAtsPeerReviewRoleManager; -import org.eclipse.osee.ats.api.review.IAtsPeerToPeerReview; -import org.eclipse.osee.ats.api.review.IAtsReviewService; -import org.eclipse.osee.ats.api.user.IAtsUser; -import org.eclipse.osee.ats.api.util.IAtsChangeSet; -import org.eclipse.osee.ats.api.workdef.ReviewBlockType; -import org.eclipse.osee.ats.api.workflow.IAtsTeamWorkflow; -import org.eclipse.osee.ats.core.client.IAtsClient; -import org.eclipse.osee.ats.core.client.review.AbstractReviewArtifact; -import org.eclipse.osee.ats.core.client.review.ReviewManager; -import org.eclipse.osee.ats.core.client.review.ValidateReviewManager; -import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; -import org.eclipse.osee.ats.core.review.UserRoleManager; -import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; - -/** - * @author Donald G Dunne - */ -public class AtsReviewServiceImpl implements IAtsReviewService { - - private final IAtsClient atsClient; - - public AtsReviewServiceImpl(IAtsClient atsClient) { - this.atsClient = atsClient; - } - - @Override - public boolean isValidationReviewRequired(IAtsWorkItem workItem) throws OseeCoreException { - boolean required = false; - if (workItem.isTeamWorkflow()) { - required = atsClient.getArtifact(workItem).getSoleAttributeValue(AtsAttributeTypes.ValidationRequired, false); - } - return required; - } - - @Override - public IAtsDecisionReview createValidateReview(IAtsTeamWorkflow teamWf, boolean force, Date transitionDate, IAtsUser transitionUser, IAtsChangeSet changes) throws OseeCoreException { - return ValidateReviewManager.createValidateReview((TeamWorkFlowArtifact) teamWf, false, transitionDate, - transitionUser, changes); - } - - @Override - public Collection<IAtsAbstractReview> getReviewsFromCurrentState(IAtsTeamWorkflow teamWf) throws OseeCoreException { - return ReviewManager.getReviewsFromCurrentState((TeamWorkFlowArtifact) teamWf); - } - - @Override - public ReviewBlockType getReviewBlockType(IAtsAbstractReview review) throws OseeCoreException { - return ((AbstractReviewArtifact) review).getReviewBlockType(); - } - - @Override - public boolean isStandAloneReview(IAtsAbstractReview review) { - return ((AbstractReviewArtifact) review).isStandAloneReview(); - } - - @Override - public Collection<IAtsAbstractReview> getReviews(IAtsTeamWorkflow teamWf) { - List<IAtsAbstractReview> reviews = new ArrayList<>(); - for (AbstractReviewArtifact reviewArt : ReviewManager.getReviews( - (TeamWorkFlowArtifact) teamWf.getStoreObject())) { - reviews.add(atsClient.getWorkItemFactory().getReview(reviewArt)); - } - return reviews; - } - - @Override - public IAtsPeerReviewRoleManager createPeerReviewRoleManager(IAtsPeerToPeerReview peerRev) { - return new UserRoleManager(peerRev, atsClient); - } - -} diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/store/AtsChangeSet.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/store/AtsChangeSet.java index d7eac30c099..69d345d91d4 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/store/AtsChangeSet.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/store/AtsChangeSet.java @@ -416,10 +416,4 @@ public class AtsChangeSet extends AbstractAtsChangeSet { art.deleteRelations(relationSide); } - @Override - public void setName(ArtifactToken artifact, String name) { - Artifact art = getArtifact(artifact); - art.setName(name); - } - } diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/AtsReviewCache.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/AtsReviewCache.java deleted file mode 100644 index 5618467ee78..00000000000 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/AtsReviewCache.java +++ /dev/null @@ -1,71 +0,0 @@ -/******************************************************************************* - * 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.core.client.review; - -import java.util.Collection; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import org.eclipse.osee.ats.api.data.AtsRelationTypes; -import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; -import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; -import org.eclipse.osee.framework.skynet.core.artifact.Artifact; - -/** - * Review cache for reviewable workflows - * - * @author Donald G. Dunne - */ -public class AtsReviewCache { - - // GUID to Reivew Artifacts - private static Map<String, Collection<AbstractReviewArtifact>> teamReviewCache = - new ConcurrentHashMap<String, Collection<AbstractReviewArtifact>>(); - - private AtsReviewCache() { - // Utility class - } - - public static void decache(Artifact sma) { - if (sma != null) { - teamReviewCache.remove(sma.getGuid()); - } - } - - public static void decache(TeamWorkFlowArtifact sma) { - if (sma != null) { - teamReviewCache.remove(sma.getGuid()); - } - } - - public static Collection<AbstractReviewArtifact> getReviewArtifacts(TeamWorkFlowArtifact teamArt) throws OseeCoreException { - Collection<AbstractReviewArtifact> reviews = teamReviewCache.get(teamArt.getGuid()); - if (reviews == null || containsDeleted(reviews)) { - // System.out.println("caching reviews for " + teamArt.toStringWithId()); - // Get and cache tasks - reviews = - teamArt.getRelatedArtifacts(AtsRelationTypes.TeamWorkflowToReview_Review, AbstractReviewArtifact.class); - teamReviewCache.put(teamArt.getGuid(), reviews); - } - return reviews; - } - - private static boolean containsDeleted(Collection<AbstractReviewArtifact> reviews) { - boolean result = false; - for (AbstractReviewArtifact review : reviews) { - if (review.isDeleted()) { - result = true; - break; - } - } - return result; - } - -} diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/DecisionReviewDefinitionManager.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/DecisionReviewDefinitionManager.java index 127dc460d35..a249f66ca92 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/DecisionReviewDefinitionManager.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/DecisionReviewDefinitionManager.java @@ -33,7 +33,7 @@ import org.eclipse.osee.framework.skynet.core.utility.Artifacts; /** * Create DecisionReview from transition if defined by StateDefinition. - * + * * @author Donald G. Dunne */ public class DecisionReviewDefinitionManager extends TransitionAdapter { @@ -58,13 +58,14 @@ public class DecisionReviewDefinitionManager extends TransitionAdapter { } DecisionReviewArtifact decArt = null; if (revDef.isAutoTransitionToDecision()) { - decArt = DecisionReviewManager.createNewDecisionReviewAndTransitionToDecision(teamArt, revDef.getReviewTitle(), - revDef.getDescription(), revDef.getRelatedToState(), revDef.getBlockingType(), revDef.getOptions(), users, - createdDate, createdBy, changes); + decArt = + (DecisionReviewArtifact) AtsClientService.get().getReviewService().createNewDecisionReviewAndTransitionToDecision( + teamArt, revDef.getReviewTitle(), revDef.getDescription(), revDef.getRelatedToState(), + revDef.getBlockingType(), revDef.getOptions(), users, createdDate, createdBy, changes).getStoreObject(); } else { - decArt = DecisionReviewManager.createNewDecisionReview(teamArt, revDef.getBlockingType(), - revDef.getReviewTitle(), revDef.getRelatedToState(), revDef.getDescription(), revDef.getOptions(), users, - createdDate, createdBy, changes); + decArt = (DecisionReviewArtifact) AtsClientService.get().getReviewService().createNewDecisionReview(teamArt, + revDef.getBlockingType(), revDef.getReviewTitle(), revDef.getRelatedToState(), revDef.getDescription(), + revDef.getOptions(), users, createdDate, createdBy, changes); } decArt.getLog().addLog(LogType.Note, null, String.format("Review [%s] auto-generated", revDef.getName()), AtsClientService.get().getUserService().getCurrentUser().getUserId()); diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/DecisionReviewManager.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/DecisionReviewManager.java index 10604ab8595..e1bb3b0c32b 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/DecisionReviewManager.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/DecisionReviewManager.java @@ -11,34 +11,20 @@ package org.eclipse.osee.ats.core.client.review; -import java.util.ArrayList; import java.util.Arrays; -import java.util.Collection; -import java.util.Date; -import java.util.List; -import org.eclipse.osee.ats.api.data.AtsArtifactTypes; import org.eclipse.osee.ats.api.data.AtsAttributeTypes; -import org.eclipse.osee.ats.api.data.AtsRelationTypes; import org.eclipse.osee.ats.api.user.IAtsUser; import org.eclipse.osee.ats.api.util.IAtsChangeSet; -import org.eclipse.osee.ats.api.workdef.IAtsDecisionReviewOption; import org.eclipse.osee.ats.api.workdef.IStateToken; -import org.eclipse.osee.ats.api.workdef.ReviewBlockType; import org.eclipse.osee.ats.api.workdef.StateType; import org.eclipse.osee.ats.api.workflow.transition.IAtsTransitionManager; import org.eclipse.osee.ats.api.workflow.transition.TransitionOption; import org.eclipse.osee.ats.api.workflow.transition.TransitionResults; import org.eclipse.osee.ats.core.client.internal.AtsClientService; -import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; -import org.eclipse.osee.ats.core.util.AtsUtilCore; -import org.eclipse.osee.ats.core.workdef.SimpleDecisionReviewOption; import org.eclipse.osee.ats.core.workflow.transition.TransitionFactory; import org.eclipse.osee.ats.core.workflow.transition.TransitionHelper; import org.eclipse.osee.framework.core.util.Result; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; -import org.eclipse.osee.framework.jdk.core.type.OseeStateException; -import org.eclipse.osee.framework.jdk.core.util.Strings; -import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager; /** * Methods in support of Decision Reviews @@ -130,84 +116,4 @@ public class DecisionReviewManager { return Result.TrueResult; } - public static DecisionReviewArtifact createNewDecisionReviewAndTransitionToDecision(TeamWorkFlowArtifact teamArt, String reviewTitle, String description, String againstState, ReviewBlockType reviewBlockType, Collection<IAtsDecisionReviewOption> options, List<? extends IAtsUser> assignees, Date createdDate, IAtsUser createdBy, IAtsChangeSet changes) throws OseeCoreException { - DecisionReviewArtifact decRev = createNewDecisionReview(teamArt, reviewBlockType, reviewTitle, againstState, - description, options, assignees, createdDate, createdBy, changes); - changes.add(decRev); - - // transition to decision - TransitionHelper helper = - new TransitionHelper("Transition to Decision", Arrays.asList(decRev), DecisionReviewState.Decision.getName(), - assignees, null, changes, AtsClientService.get().getServices(), TransitionOption.OverrideAssigneeCheck); - IAtsTransitionManager transitionMgr = TransitionFactory.getTransitionManager(helper); - TransitionResults results = transitionMgr.handleAll(); - - if (!results.isEmpty()) { - throw new OseeStateException("Error auto-transitioning review %s to Decision state. Results [%s]", - decRev.toStringWithId(), results.toString()); - } - // ensure assignees are as requested - decRev.getStateMgr().setAssignees(assignees); - changes.add(decRev); - return decRev; - } - - public static DecisionReviewArtifact createNewDecisionReview(TeamWorkFlowArtifact teamArt, ReviewBlockType reviewBlockType, boolean againstCurrentState, Date createdDate, IAtsUser createdBy, IAtsChangeSet changes) throws OseeCoreException { - return createNewDecisionReview(teamArt, reviewBlockType, - "Should we do this? Yes will require followup, No will not", - againstCurrentState ? teamArt.getStateMgr().getCurrentStateName() : null, - "Enter description of the decision, if any", getDefaultDecisionReviewOptions(), null, createdDate, createdBy, - changes); - } - - public static List<IAtsDecisionReviewOption> getDefaultDecisionReviewOptions() throws OseeCoreException { - List<IAtsDecisionReviewOption> options = new ArrayList<>(); - options.add(new SimpleDecisionReviewOption("Yes", true, - Arrays.asList(AtsClientService.get().getUserService().getCurrentUser().getUserId()))); - options.add(new SimpleDecisionReviewOption("No", false, null)); - return options; - } - - public static String getDecisionReviewOptionsString(Collection<IAtsDecisionReviewOption> options) { - StringBuffer sb = new StringBuffer(); - for (IAtsDecisionReviewOption opt : options) { - sb.append(opt.getName()); - sb.append(";"); - sb.append(opt.isFollowupRequired() ? "Followup" : "Completed"); - sb.append(";"); - for (String userId : opt.getUserIds()) { - sb.append("<" + userId + ">"); - } - sb.append("\n"); - } - return sb.toString(); - } - - public static DecisionReviewArtifact createNewDecisionReview(TeamWorkFlowArtifact teamArt, ReviewBlockType reviewBlockType, String title, String relatedToState, String description, Collection<IAtsDecisionReviewOption> options, List<? extends IAtsUser> assignees, Date createdDate, IAtsUser createdBy, IAtsChangeSet changes) throws OseeCoreException { - DecisionReviewArtifact decRev = - (DecisionReviewArtifact) ArtifactTypeManager.addArtifact(AtsArtifactTypes.DecisionReview, - AtsClientService.get().getAtsBranch(), title); - - teamArt.addRelation(AtsRelationTypes.TeamWorkflowToReview_Review, decRev); - AtsClientService.get().getUtilService().setAtsId(AtsClientService.get().getSequenceProvider(), decRev, - decRev.getParentTeamWorkflow().getTeamDefinition(), changes); - - // Initialize state machine - decRev.initializeNewStateMachine(assignees, createdDate, createdBy, changes); - - if (Strings.isValid(relatedToState)) { - decRev.setSoleAttributeValue(AtsAttributeTypes.RelatedToState, relatedToState); - } - if (Strings.isValid(description)) { - decRev.setSoleAttributeValue(AtsAttributeTypes.Description, description); - } - decRev.setSoleAttributeValue(AtsAttributeTypes.DecisionReviewOptions, getDecisionReviewOptionsString(options)); - if (reviewBlockType != null) { - decRev.setSoleAttributeFromString(AtsAttributeTypes.ReviewBlocks, reviewBlockType.name()); - } - AtsReviewCache.decache(teamArt); - changes.add(decRev); - return decRev; - } - } diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/PeerToPeerReviewManager.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/PeerToPeerReviewManager.java index 71f9179e331..0ab990075ac 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/PeerToPeerReviewManager.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/PeerToPeerReviewManager.java @@ -195,7 +195,6 @@ public class PeerToPeerReviewManager { peerToPeerRev.setSoleAttributeValue(AtsAttributeTypes.ReviewBlocks, ReviewBlockType.None.name()); changes.add(peerToPeerRev); - AtsReviewCache.decache(teamArt); return peerToPeerRev; } diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/ReviewManager.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/ReviewManager.java index 3f141dc5024..45f577611c9 100644 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/ReviewManager.java +++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/ReviewManager.java @@ -76,7 +76,7 @@ public class ReviewManager { } public static Collection<AbstractReviewArtifact> getReviews(TeamWorkFlowArtifact teamArt) throws OseeCoreException { - return AtsReviewCache.getReviewArtifacts(teamArt); + return teamArt.getRelatedArtifacts(AtsRelationTypes.TeamWorkflowToReview_Review, AbstractReviewArtifact.class); } public static Collection<IAtsAbstractReview> getReviewsFromCurrentState(TeamWorkFlowArtifact teamArt) throws OseeCoreException { diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/ValidateReviewManager.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/ValidateReviewManager.java deleted file mode 100644 index 13dc5705bc2..00000000000 --- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/review/ValidateReviewManager.java +++ /dev/null @@ -1,131 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011 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.core.client.review; - -import java.util.Arrays; -import java.util.Collection; -import java.util.Date; -import java.util.HashSet; -import java.util.logging.Level; -import org.eclipse.osee.ats.api.data.AtsAttributeTypes; -import org.eclipse.osee.ats.api.review.IAtsAbstractReview; -import org.eclipse.osee.ats.api.user.IAtsUser; -import org.eclipse.osee.ats.api.util.IAtsChangeSet; -import org.eclipse.osee.ats.api.workdef.IAtsStateDefinition; -import org.eclipse.osee.ats.api.workdef.ReviewBlockType; -import org.eclipse.osee.ats.api.workdef.RuleDefinitionOption; -import org.eclipse.osee.ats.api.workflow.transition.IAtsTransitionManager; -import org.eclipse.osee.ats.api.workflow.transition.TransitionOption; -import org.eclipse.osee.ats.api.workflow.transition.TransitionResults; -import org.eclipse.osee.ats.core.client.internal.Activator; -import org.eclipse.osee.ats.core.client.internal.AtsClientService; -import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; -import org.eclipse.osee.ats.core.workflow.state.TeamState; -import org.eclipse.osee.ats.core.workflow.transition.TransitionFactory; -import org.eclipse.osee.ats.core.workflow.transition.TransitionHelper; -import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; -import org.eclipse.osee.framework.logging.OseeLevel; -import org.eclipse.osee.framework.logging.OseeLog; - -/** - * Convenience methods used to create a validation decision review if so selected on the new action wizard - * - * @author Donald G. Dunne - */ -public class ValidateReviewManager { - - private final static String VALIDATE_REVIEW_TITLE = "Is the resolution of this Action valid?"; - - public static boolean isValidatePage(IAtsStateDefinition stateDefinition) { - if (stateDefinition.hasRule(RuleDefinitionOption.AddDecisionValidateBlockingReview.name())) { - return true; - } - if (stateDefinition.hasRule(RuleDefinitionOption.AddDecisionValidateNonBlockingReview.name())) { - return true; - } - return false; - } - - /** - * Create a new decision review configured and transitioned to handle action validation - * - * @param force will force the creation of the review without checking that a review should be created - */ - public static DecisionReviewArtifact createValidateReview(TeamWorkFlowArtifact teamArt, boolean force, Date createdDate, IAtsUser createdBy, IAtsChangeSet changes) throws OseeCoreException { - // If not validate page, don't do anything - if (!force && !isValidatePage(teamArt.getStateDefinition())) { - return null; - } - // If validate review already created for this state, return - if (!force && ReviewManager.getReviewsFromCurrentState(teamArt).size() > 0) { - for (IAtsAbstractReview review : ReviewManager.getReviewsFromCurrentState(teamArt)) { - if (review.getName().equals(VALIDATE_REVIEW_TITLE)) { - return null; - } - } - } - // Create validate review - try { - - DecisionReviewArtifact decRev = - DecisionReviewManager.createNewDecisionReview(teamArt, - isValidateReviewBlocking( - teamArt.getStateDefinition()) ? ReviewBlockType.Transition : ReviewBlockType.None, - true, createdDate, createdBy, changes); - decRev.setName(VALIDATE_REVIEW_TITLE); - decRev.setSoleAttributeValue(AtsAttributeTypes.DecisionReviewOptions, - "No;Followup;" + getValidateReviewFollowupUsersStr(teamArt) + "\n" + "Yes;Completed;"); - - TransitionHelper helper = new TransitionHelper("Transition to Decision", Arrays.asList(decRev), - DecisionReviewState.Decision.getName(), Arrays.asList(teamArt.getCreatedBy()), null, changes, - AtsClientService.get().getServices(), TransitionOption.None); - IAtsTransitionManager transitionMgr = TransitionFactory.getTransitionManager(helper); - TransitionResults results = transitionMgr.handleAll(); - if (!results.isEmpty()) { - OseeLog.logf(Activator.class, OseeLevel.SEVERE_POPUP, - "Error transitioning Decision review [%s] to Decision %s", decRev.toStringWithId(), results); - } - - return decRev; - - } catch (Exception ex) { - OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex); - } - return null; - } - - public static boolean isValidateReviewBlocking(IAtsStateDefinition stateDefinition) { - return stateDefinition.hasRule(RuleDefinitionOption.AddDecisionValidateBlockingReview.name()); - } - - public static String getValidateReviewFollowupUsersStr(TeamWorkFlowArtifact teamArt) { - try { - Collection<IAtsUser> users = getValidateReviewFollowupUsers(teamArt); - return AtsClientService.get().getWorkStateFactory().getStorageString(users); - } catch (Exception ex) { - OseeLog.log(Activator.class, Level.SEVERE, ex); - return ex.getLocalizedMessage(); - } - } - - public static Collection<IAtsUser> getValidateReviewFollowupUsers(TeamWorkFlowArtifact teamArt) throws OseeCoreException { - Collection<IAtsUser> users = new HashSet<>(); - users.addAll(teamArt.getStateMgr().getAssignees(TeamState.Implement)); - if (users.size() > 0) { - return users; - } - - // Else if Team Workflow , return it to the leads of this team - users.addAll(teamArt.getTeamDefinition().getLeads()); - return users; - } - -} diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/review/AtsReviewServiceImpl.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/review/AtsReviewServiceImpl.java new file mode 100644 index 00000000000..8edba2ca607 --- /dev/null +++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/review/AtsReviewServiceImpl.java @@ -0,0 +1,268 @@ +/******************************************************************************* + * Copyright (c) 2013 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.core.review; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.logging.Level; +import org.eclipse.osee.ats.api.IAtsServices; +import org.eclipse.osee.ats.api.IAtsWorkItem; +import org.eclipse.osee.ats.api.data.AtsArtifactTypes; +import org.eclipse.osee.ats.api.data.AtsAttributeTypes; +import org.eclipse.osee.ats.api.data.AtsRelationTypes; +import org.eclipse.osee.ats.api.review.IAtsAbstractReview; +import org.eclipse.osee.ats.api.review.IAtsDecisionReview; +import org.eclipse.osee.ats.api.review.IAtsPeerReviewRoleManager; +import org.eclipse.osee.ats.api.review.IAtsPeerToPeerReview; +import org.eclipse.osee.ats.api.review.IAtsReviewService; +import org.eclipse.osee.ats.api.user.IAtsUser; +import org.eclipse.osee.ats.api.util.IAtsChangeSet; +import org.eclipse.osee.ats.api.workdef.IAtsDecisionReviewOption; +import org.eclipse.osee.ats.api.workdef.IAtsStateDefinition; +import org.eclipse.osee.ats.api.workdef.ReviewBlockType; +import org.eclipse.osee.ats.api.workdef.RuleDefinitionOption; +import org.eclipse.osee.ats.api.workflow.IAtsTeamWorkflow; +import org.eclipse.osee.ats.api.workflow.transition.IAtsTransitionManager; +import org.eclipse.osee.ats.api.workflow.transition.TransitionOption; +import org.eclipse.osee.ats.api.workflow.transition.TransitionResults; +import org.eclipse.osee.ats.core.workdef.SimpleDecisionReviewOption; +import org.eclipse.osee.ats.core.workflow.state.TeamState; +import org.eclipse.osee.ats.core.workflow.transition.TransitionFactory; +import org.eclipse.osee.ats.core.workflow.transition.TransitionHelper; +import org.eclipse.osee.framework.core.data.ArtifactId; +import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; +import org.eclipse.osee.framework.jdk.core.type.OseeStateException; +import org.eclipse.osee.framework.jdk.core.util.Strings; +import org.eclipse.osee.framework.logging.OseeLevel; +import org.eclipse.osee.framework.logging.OseeLog; + +/** + * @author Donald G. Dunne + */ +public class AtsReviewServiceImpl implements IAtsReviewService { + + private final IAtsServices services; + private final static String VALIDATE_REVIEW_TITLE = "Is the resolution of this Action valid?"; + + public AtsReviewServiceImpl(IAtsServices services) { + this.services = services; + } + + @Override + public boolean isValidationReviewRequired(IAtsWorkItem workItem) throws OseeCoreException { + boolean required = false; + if (workItem.isTeamWorkflow()) { + required = services.getAttributeResolver().getSoleAttributeValue(workItem, + AtsAttributeTypes.ValidationRequired, false); + } + return required; + } + + @Override + public IAtsDecisionReview createValidateReview(IAtsTeamWorkflow teamWf, boolean force, Date transitionDate, IAtsUser transitionUser, IAtsChangeSet changes) throws OseeCoreException { + // If not validate page, don't do anything + if (!force && !isValidatePage(teamWf.getStateDefinition())) { + return null; + } + // If validate review already created for this state, return + if (!force && getReviewsFromCurrentState(teamWf).size() > 0) { + for (IAtsAbstractReview review : getReviewsFromCurrentState(teamWf)) { + if (review.getName().equals(VALIDATE_REVIEW_TITLE)) { + return null; + } + } + } + // Create validate review + try { + + IAtsDecisionReview decRev = createNewDecisionReview(teamWf, + isValidateReviewBlocking(teamWf.getStateDefinition()) ? ReviewBlockType.Transition : ReviewBlockType.None, + true, new Date(), services.getUserService().getCurrentUser(), changes); + changes.setName(decRev, VALIDATE_REVIEW_TITLE); + changes.setSoleAttributeValue(decRev, AtsAttributeTypes.DecisionReviewOptions, + "No;Followup;" + getValidateReviewFollowupUsersStr(teamWf) + "\n" + "Yes;Completed;"); + + TransitionHelper helper = new TransitionHelper("Transition to Decision", Arrays.asList(decRev), + DecisionReviewState.Decision.getName(), Arrays.asList(teamWf.getCreatedBy()), null, changes, services, + TransitionOption.None); + IAtsTransitionManager transitionMgr = TransitionFactory.getTransitionManager(helper); + TransitionResults results = transitionMgr.handleAll(); + if (!results.isEmpty()) { + OseeLog.logf(AtsReviewServiceImpl.class, OseeLevel.SEVERE_POPUP, + "Error transitioning Decision review [%s] to Decision %s", decRev.toStringWithId(), results); + } + + return decRev; + + } catch (Exception ex) { + OseeLog.log(AtsReviewServiceImpl.class, OseeLevel.SEVERE_POPUP, ex); + } + return null; + } + + public String getValidateReviewFollowupUsersStr(IAtsTeamWorkflow teamWf) { + try { + Collection<IAtsUser> users = getValidateReviewFollowupUsers(teamWf); + return services.getWorkStateFactory().getStorageString(users); + } catch (Exception ex) { + OseeLog.log(AtsReviewServiceImpl.class, Level.SEVERE, ex); + return ex.getLocalizedMessage(); + } + } + + public boolean isValidateReviewBlocking(IAtsStateDefinition stateDefinition) { + return stateDefinition.hasRule(RuleDefinitionOption.AddDecisionValidateBlockingReview.name()); + } + + public Collection<IAtsUser> getValidateReviewFollowupUsers(IAtsTeamWorkflow teamWf) throws OseeCoreException { + Collection<IAtsUser> users = new HashSet<>(); + users.addAll(teamWf.getStateMgr().getAssignees(TeamState.Implement)); + if (users.size() > 0) { + return users; + } + + // Else if Team Workflow , return it to the leads of this team + users.addAll(teamWf.getTeamDefinition().getLeads()); + return users; + } + + @Override + public IAtsDecisionReview createNewDecisionReviewAndTransitionToDecision(IAtsTeamWorkflow teamWf, String reviewTitle, String description, String againstState, ReviewBlockType reviewBlockType, Collection<IAtsDecisionReviewOption> options, List<? extends IAtsUser> assignees, Date createdDate, IAtsUser createdBy, IAtsChangeSet changes) throws OseeCoreException { + IAtsDecisionReview decRev = createNewDecisionReview(teamWf, reviewBlockType, reviewTitle, againstState, + description, options, assignees, createdDate, createdBy, changes); + changes.add(decRev); + + // transition to decision + TransitionHelper helper = + new TransitionHelper("Transition to Decision", Arrays.asList(decRev), DecisionReviewState.Decision.getName(), + assignees, null, changes, services, TransitionOption.OverrideAssigneeCheck); + IAtsTransitionManager transitionMgr = TransitionFactory.getTransitionManager(helper); + TransitionResults results = transitionMgr.handleAll(); + + if (!results.isEmpty()) { + throw new OseeStateException("Error auto-transitioning review %s to Decision state. Results [%s]", + decRev.toStringWithId(), results.toString()); + } + // ensure assignees are as requested + decRev.getStateMgr().setAssignees(assignees); + changes.add(decRev); + return decRev; + } + + @Override + public IAtsDecisionReview createNewDecisionReview(IAtsTeamWorkflow teamWf, ReviewBlockType reviewBlockType, boolean againstCurrentState, Date createdDate, IAtsUser createdBy, IAtsChangeSet changes) throws OseeCoreException { + return createNewDecisionReview(teamWf, reviewBlockType, + "Should we do this? Yes will require followup, No will not", + againstCurrentState ? teamWf.getStateMgr().getCurrentStateName() : null, + "Enter description of the decision, if any", getDefaultDecisionReviewOptions(), null, createdDate, createdBy, + changes); + } + + @Override + public IAtsDecisionReview createNewDecisionReview(IAtsTeamWorkflow teamWf, ReviewBlockType reviewBlockType, String title, String relatedToState, String description, Collection<IAtsDecisionReviewOption> options, List<? extends IAtsUser> assignees, Date createdDate, IAtsUser createdBy, IAtsChangeSet changes) throws OseeCoreException { + ArtifactId decRevArt = changes.createArtifact(AtsArtifactTypes.DecisionReview, title); + IAtsDecisionReview decRev = (IAtsDecisionReview) services.getWorkItemFactory().getReview(decRevArt); + + changes.relate(teamWf, AtsRelationTypes.TeamWorkflowToReview_Review, decRev); + services.getUtilService().setAtsId(services.getSequenceProvider(), decRev, + decRev.getParentTeamWorkflow().getTeamDefinition(), changes); + + // Initialize state machine + services.getActionFactory().initializeNewStateMachine(decRev, assignees, createdDate, createdBy, changes); + + if (Strings.isValid(relatedToState)) { + changes.setSoleAttributeValue(decRev, AtsAttributeTypes.RelatedToState, relatedToState); + } + if (Strings.isValid(description)) { + changes.setSoleAttributeValue(decRev, AtsAttributeTypes.Description, description); + } + changes.setSoleAttributeValue(decRev, AtsAttributeTypes.DecisionReviewOptions, + getDecisionReviewOptionsString(options)); + if (reviewBlockType != null) { + changes.setSoleAttributeFromString(decRev, AtsAttributeTypes.ReviewBlocks, reviewBlockType.name()); + } + changes.add(decRev); + return decRev; + } + + @Override + public String getDecisionReviewOptionsString(Collection<IAtsDecisionReviewOption> options) { + StringBuffer sb = new StringBuffer(); + for (IAtsDecisionReviewOption opt : options) { + sb.append(opt.getName()); + sb.append(";"); + sb.append(opt.isFollowupRequired() ? "Followup" : "Completed"); + sb.append(";"); + for (String userId : opt.getUserIds()) { + sb.append("<" + userId + ">"); + } + sb.append("\n"); + } + return sb.toString(); + } + + public static boolean isValidatePage(IAtsStateDefinition stateDefinition) { + if (stateDefinition.hasRule(RuleDefinitionOption.AddDecisionValidateBlockingReview.name())) { + return true; + } + if (stateDefinition.hasRule(RuleDefinitionOption.AddDecisionValidateNonBlockingReview.name())) { + return true; + } + return false; + } + + @Override + public List<IAtsDecisionReviewOption> getDefaultDecisionReviewOptions() { + List<IAtsDecisionReviewOption> options = new ArrayList<>(); + options.add(new SimpleDecisionReviewOption("Yes", true, + Arrays.asList(services.getUserService().getCurrentUser().getUserId()))); + options.add(new SimpleDecisionReviewOption("No", false, null)); + return options; + } + + @Override + public Collection<IAtsAbstractReview> getReviewsFromCurrentState(IAtsTeamWorkflow teamWf) throws OseeCoreException { + return services.getWorkItemService().getReviews(teamWf, teamWf.getStateMgr().getCurrentState()); + } + + @Override + public ReviewBlockType getReviewBlockType(IAtsAbstractReview review) throws OseeCoreException { + String blockStr = services.getAttributeResolver().getSoleAttributeValueAsString(review, + AtsAttributeTypes.ReviewBlocks, ReviewBlockType.None.name()); + return ReviewBlockType.valueOf(blockStr); + } + + @Override + public boolean isStandAloneReview(IAtsAbstractReview review) { + return services.getAttributeResolver().getAttributeCount(review, AtsAttributeTypes.ActionableItem) > 0; + } + + @Override + public Collection<IAtsAbstractReview> getReviews(IAtsTeamWorkflow teamWf) { + List<IAtsAbstractReview> reviews = new ArrayList<>(); + + for (ArtifactId reviewArt : services.getRelationResolver().getRelated(teamWf, + AtsRelationTypes.TeamWorkflowToReview_Review)) { + reviews.add(services.getWorkItemFactory().getReview(reviewArt)); + } + return reviews; + } + + @Override + public IAtsPeerReviewRoleManager createPeerReviewRoleManager(IAtsPeerToPeerReview peerRev) { + return new UserRoleManager(peerRev, services); + } + +} diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/util/AbstractAtsChangeSet.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/util/AbstractAtsChangeSet.java index 91790d3731d..f2d74f65cd7 100644 --- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/util/AbstractAtsChangeSet.java +++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/util/AbstractAtsChangeSet.java @@ -27,6 +27,7 @@ import org.eclipse.osee.framework.core.data.ArtifactId; import org.eclipse.osee.framework.core.data.ArtifactToken; import org.eclipse.osee.framework.core.data.AttributeTypeId; import org.eclipse.osee.framework.core.data.RelationTypeSide; +import org.eclipse.osee.framework.core.enums.CoreAttributeTypes; import org.eclipse.osee.framework.core.enums.CoreRelationTypes; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; import org.eclipse.osee.framework.jdk.core.util.Conditions; @@ -174,4 +175,14 @@ public abstract class AbstractAtsChangeSet implements IAtsChangeSet { relate(parent, CoreRelationTypes.Default_Hierarchical__Child, child); } + @Override + public void setName(ArtifactToken artifact, String name) { + setSoleAttributeValue(artifact, CoreAttributeTypes.Name, name); + } + + @Override + public void setName(IAtsObject atsObject, String name) { + setSoleAttributeValue(atsObject, CoreAttributeTypes.Name, name); + } + } diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/util/AtsCoreServiceImpl.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/util/AtsCoreServiceImpl.java index 8a98ef0e719..2d7e4ce03e2 100644 --- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/util/AtsCoreServiceImpl.java +++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/util/AtsCoreServiceImpl.java @@ -60,6 +60,7 @@ import org.eclipse.osee.ats.api.workflow.state.IAtsWorkStateFactory; import org.eclipse.osee.ats.core.config.AtsCache; import org.eclipse.osee.ats.core.config.TeamDefinitionService; import org.eclipse.osee.ats.core.program.AtsProgramService; +import org.eclipse.osee.ats.core.review.AtsReviewServiceImpl; import org.eclipse.osee.ats.core.version.AtsVersionServiceImpl; import org.eclipse.osee.ats.core.workdef.AtsWorkDefinitionAdminImpl; import org.eclipse.osee.ats.core.workdef.AtsWorkDefinitionCache; @@ -180,6 +181,7 @@ public abstract class AtsCoreServiceImpl implements IAtsServices { programService = new AtsProgramService(this); teamDefinitionService = new TeamDefinitionService(this); versionService = new AtsVersionServiceImpl(this, eventAdmin); + reviewService = new AtsReviewServiceImpl(this); } diff --git a/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/AtsServerImpl.java b/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/AtsServerImpl.java index 292bf0ea6f8..e7698b3b294 100644 --- a/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/AtsServerImpl.java +++ b/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/AtsServerImpl.java @@ -53,7 +53,6 @@ import org.eclipse.osee.ats.rest.internal.util.AtsAttributeResolverServiceImpl; import org.eclipse.osee.ats.rest.internal.util.AtsBranchServiceImpl; import org.eclipse.osee.ats.rest.internal.util.AtsEarnedValueImpl; import org.eclipse.osee.ats.rest.internal.util.AtsRelationResolverServiceImpl; -import org.eclipse.osee.ats.rest.internal.util.AtsReviewServiceImpl; import org.eclipse.osee.ats.rest.internal.util.AtsStoreServiceImpl; import org.eclipse.osee.ats.rest.internal.workitem.AtsTaskService; import org.eclipse.osee.ats.rest.internal.workitem.ConfigItemFactory; @@ -131,7 +130,6 @@ public class AtsServerImpl extends AtsCoreServiceImpl implements IAtsServer { artifactResolver = new ArtifactResolverImpl(this, orcsApi); branchService = new AtsBranchServiceImpl(getServices(), orcsApi, teamWorkflowProvidersLazy); - reviewService = new AtsReviewServiceImpl(this, this, workItemService); relationResolver = new AtsRelationResolverServiceImpl(this); ((AtsAttributeResolverServiceImpl) attributeResolverService).setOrcsApi(orcsApi); diff --git a/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/util/AtsChangeSet.java b/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/util/AtsChangeSet.java index 1f62a1847ea..2c082f3727a 100644 --- a/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/util/AtsChangeSet.java +++ b/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/util/AtsChangeSet.java @@ -373,11 +373,4 @@ public class AtsChangeSet extends AbstractAtsChangeSet { add(art); } - @Override - public void setName(ArtifactToken artifact, String name) { - ArtifactReadable art = getArtifact(artifact); - getTransaction().setName(artifact, name); - add(art); - } - } diff --git a/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/util/AtsReviewServiceImpl.java b/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/util/AtsReviewServiceImpl.java deleted file mode 100644 index 098dd00aa19..00000000000 --- a/plugins/org.eclipse.osee.ats.rest/src/org/eclipse/osee/ats/rest/internal/util/AtsReviewServiceImpl.java +++ /dev/null @@ -1,101 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2013 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.rest.internal.util; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Date; -import java.util.List; -import org.eclipse.osee.ats.api.IAtsWorkItem; -import org.eclipse.osee.ats.api.data.AtsAttributeTypes; -import org.eclipse.osee.ats.api.data.AtsRelationTypes; -import org.eclipse.osee.ats.api.review.IAtsAbstractReview; -import org.eclipse.osee.ats.api.review.IAtsDecisionReview; -import org.eclipse.osee.ats.api.review.IAtsPeerReviewRoleManager; -import org.eclipse.osee.ats.api.review.IAtsPeerToPeerReview; -import org.eclipse.osee.ats.api.review.IAtsReviewService; -import org.eclipse.osee.ats.api.user.IAtsUser; -import org.eclipse.osee.ats.api.util.IAtsChangeSet; -import org.eclipse.osee.ats.api.workdef.ReviewBlockType; -import org.eclipse.osee.ats.api.workflow.IAtsTeamWorkflow; -import org.eclipse.osee.ats.api.workflow.IAtsWorkItemService; -import org.eclipse.osee.ats.core.review.UserRoleManager; -import org.eclipse.osee.ats.rest.IAtsServer; -import org.eclipse.osee.ats.rest.util.IArtifactProvider; -import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; -import org.eclipse.osee.framework.jdk.core.type.OseeStateException; -import org.eclipse.osee.orcs.data.ArtifactReadable; - -/** - * @author Donald G. Dunne - */ -public class AtsReviewServiceImpl implements IAtsReviewService { - - private final IArtifactProvider artifactProvider; - private final IAtsWorkItemService workItemService; - private final IAtsServer atsServer; - - public AtsReviewServiceImpl(IAtsServer atsServer, IArtifactProvider artifactProvider, IAtsWorkItemService workItemService) { - this.atsServer = atsServer; - this.artifactProvider = artifactProvider; - this.workItemService = workItemService; - } - - @Override - public boolean isValidationReviewRequired(IAtsWorkItem workItem) throws OseeCoreException { - boolean required = false; - if (workItem.isTeamWorkflow()) { - required = - artifactProvider.getArtifact(workItem).getSoleAttributeValue(AtsAttributeTypes.ValidationRequired, false); - } - return required; - } - - @Override - public IAtsDecisionReview createValidateReview(IAtsTeamWorkflow teamWf, boolean force, Date transitionDate, IAtsUser transitionUser, IAtsChangeSet changes) throws OseeCoreException { - // TODO Implement this - throw new OseeStateException("Not Implemented Yet"); - } - - @Override - public Collection<IAtsAbstractReview> getReviewsFromCurrentState(IAtsTeamWorkflow teamWf) throws OseeCoreException { - return workItemService.getReviews(teamWf, teamWf.getStateMgr().getCurrentState()); - } - - @Override - public ReviewBlockType getReviewBlockType(IAtsAbstractReview review) throws OseeCoreException { - String blockStr = artifactProvider.getArtifact(review).getSoleAttributeAsString(AtsAttributeTypes.ReviewBlocks, - ReviewBlockType.None.name()); - return ReviewBlockType.valueOf(blockStr); - } - - @Override - public boolean isStandAloneReview(IAtsAbstractReview review) { - return artifactProvider.getArtifact(review).getAttributeCount(AtsAttributeTypes.ActionableItem) > 0; - } - - @Override - public Collection<IAtsAbstractReview> getReviews(IAtsTeamWorkflow teamWf) { - List<IAtsAbstractReview> reviews = new ArrayList<>(); - - for (ArtifactReadable reviewArt : ((ArtifactReadable) teamWf.getStoreObject()).getRelated( - AtsRelationTypes.TeamWorkflowToReview_Review)) { - reviews.add(atsServer.getWorkItemFactory().getReview(reviewArt)); - } - return reviews; - } - - @Override - public IAtsPeerReviewRoleManager createPeerReviewRoleManager(IAtsPeerToPeerReview peerRev) { - return new UserRoleManager(peerRev, atsServer); - } - -} diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/ReviewInfoXWidget.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/ReviewInfoXWidget.java index f17f3396b76..d3317d12f90 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/ReviewInfoXWidget.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/ReviewInfoXWidget.java @@ -27,7 +27,6 @@ import org.eclipse.osee.ats.api.workflow.transition.IAtsTransitionManager; import org.eclipse.osee.ats.api.workflow.transition.TransitionOption; import org.eclipse.osee.ats.api.workflow.transition.TransitionResults; import org.eclipse.osee.ats.core.client.review.AbstractReviewArtifact; -import org.eclipse.osee.ats.core.client.review.DecisionReviewManager; import org.eclipse.osee.ats.core.client.review.PeerToPeerReviewManager; import org.eclipse.osee.ats.core.client.review.ReviewManager; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; @@ -143,9 +142,10 @@ public class ReviewInfoXWidget extends XLabelValueBase { AWorkbench.popup("ERROR", "Must enter review title"); return; } - NewDecisionReviewJob job = new NewDecisionReviewJob(teamArt, null, dialog.getReviewTitle(), - dialog.getSelectedState(), null, DecisionReviewManager.getDefaultDecisionReviewOptions(), null, - new Date(), AtsClientService.get().getUserService().getCurrentUser()); + NewDecisionReviewJob job = + new NewDecisionReviewJob(teamArt, null, dialog.getReviewTitle(), dialog.getSelectedState(), + null, AtsClientService.get().getReviewService().getDefaultDecisionReviewOptions(), null, + new Date(), AtsClientService.get().getUserService().getCurrentUser()); job.setUser(true); job.setPriority(Job.LONG); job.schedule(); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ValidateAtsDatabase.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ValidateAtsDatabase.java index 79b7a5c4658..a1bb59cf6a4 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ValidateAtsDatabase.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/health/ValidateAtsDatabase.java @@ -40,7 +40,6 @@ import org.eclipse.osee.ats.api.workdef.StateType; import org.eclipse.osee.ats.api.workflow.log.IAtsLogItem; import org.eclipse.osee.ats.api.workflow.log.LogType; import org.eclipse.osee.ats.core.client.review.AbstractReviewArtifact; -import org.eclipse.osee.ats.core.client.review.AtsReviewCache; import org.eclipse.osee.ats.core.client.task.TaskArtifact; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; import org.eclipse.osee.ats.core.client.util.AtsTaskCache; @@ -227,7 +226,6 @@ public class ValidateAtsDatabase extends WorldXNavigateItemAction { for (Artifact artifact : artifacts) { if (artifact instanceof TeamWorkFlowArtifact) { AtsTaskCache.decache((TeamWorkFlowArtifact) artifact); - AtsReviewCache.decache((TeamWorkFlowArtifact) artifact); } if (!(artifact instanceof User)) { ArtifactCache.deCache(artifact); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/review/NewDecisionReviewJob.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/review/NewDecisionReviewJob.java index c09ef37256a..54b026402ff 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/review/NewDecisionReviewJob.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/review/NewDecisionReviewJob.java @@ -23,7 +23,6 @@ import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.api.workdef.IAtsDecisionReviewOption; import org.eclipse.osee.ats.api.workdef.ReviewBlockType; import org.eclipse.osee.ats.core.client.review.DecisionReviewArtifact; -import org.eclipse.osee.ats.core.client.review.DecisionReviewManager; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; import org.eclipse.osee.ats.internal.Activator; import org.eclipse.osee.ats.internal.AtsClientService; @@ -60,8 +59,10 @@ public class NewDecisionReviewJob extends Job { public IStatus run(final IProgressMonitor monitor) { try { IAtsChangeSet changes = AtsClientService.get().createChangeSet(getClass().getSimpleName()); - DecisionReviewArtifact decArt = DecisionReviewManager.createNewDecisionReview(teamParent, reviewBlockType, - reviewTitle, againstState, description, options, assignees, createdDate, createdBy, changes); + DecisionReviewArtifact decArt = + (DecisionReviewArtifact) AtsClientService.get().getReviewService().createNewDecisionReview(teamParent, + reviewBlockType, reviewTitle, againstState, description, options, assignees, createdDate, createdBy, + changes).getStoreObject(); changes.execute(); AtsUtil.openATSAction(decArt, AtsOpenOption.OpenOneOrPopupSelect); } catch (Exception ex) { |