From 5f8e90759fe3b042211a3aa3e7f1e08deb881620 Mon Sep 17 00:00:00 2001 From: ddunne Date: Thu, 20 Jan 2011 17:28:05 -0700 Subject: feature: Convert ATS to XText for Work Definitions and Config --- .../org.eclipse.osee.ats.config.demo/plugin.xml | 14 +- .../osee/ats/config/demo/PopulateDemoActions.java | 9 - .../ats/config/demo/config/DemoDatabaseConfig.java | 82 +- .../config/DemoWorkDefinitionSheetProvider.java | 38 + .../support/Osee ATS Config Demo.vue | 1531 -------------------- .../WorkDef_Demo_AIs_And_Team_Definitions.ats | 297 ++++ .../support/WorkDef_Team_Demo_Code.ats | 127 ++ .../support/WorkDef_Team_Demo_Req.ats | 137 ++ .../support/WorkDef_Team_Demo_SwDesign.ats | 180 +++ .../support/WorkDef_Team_Demo_Test.ats | 127 ++ .../ats/test/AtsTest_Demo_StateItem_Suite.java | 37 + .../ats/test/column/ActionableItemsColumnTest.java | 9 + .../osee/ats/test/column/AssigneeColumnTest.java | 9 + .../ats/test/column/BranchStatusColumnTest.java | 5 + .../ats/test/column/CancelledDateColumnTest.java | 5 + .../osee/ats/test/column/CategoryColumnTest.java | 5 + .../osee/ats/test/column/ChangeTypeColumnTest.java | 6 + .../ats/test/column/CompletedDateColumnTest.java | 5 + .../ats/test/column/CreatedDateColumnTest.java | 6 + .../osee/ats/test/column/DeadlineColumnTest.java | 5 + .../ats/test/column/DescriptionColumnTest.java | 5 + .../ats/test/column/EstimatedHoursColumnTest.java | 5 + .../osee/ats/test/column/GroupsColumnTest.java | 5 + .../NumberOfTasksAndInWorkTasksColumnsTest.java | 5 + .../osee/ats/test/column/OriginatorColumnTest.java | 5 + .../test/column/ParentStateAndIdColumnTest.java | 5 + .../test/column/PeerToPeerReviewColumnsTest.java | 6 + .../osee/ats/test/column/PriorityColumnTest.java | 5 + .../ats/test/column/RelatedToStateColumnTest.java | 4 + .../osee/ats/test/column/StateColumnTest.java | 5 + .../ats/test/column/TargetedVersionColumnTest.java | 5 + .../osee/ats/test/column/TeamColumnTest.java | 5 + .../osee/ats/test/column/TypeColumnTest.java | 5 + .../AtsDecisionReviewDecisionStateItemTest.java | 131 ++ .../AtsDecisionReviewPrepareStateItemTest.java | 88 ++ .../AtsForceAssigneesToTeamLeadsStateItemTest.java | 100 ++ .../AtsHandleAddReviewRuleStateItemTest.java | 27 + .../AtsPeerToPeerReviewPrepareStateItemTest.java | 92 ++ .../AtsPeerToPeerReviewReviewStateItemTest.java | 102 ++ .../eclipse/osee/ats/test/util/DemoTestUtil.java | 12 +- plugins/org.eclipse.osee.ats/META-INF/MANIFEST.MF | 3 +- plugins/org.eclipse.osee.ats/images/stateItem.gif | Bin 0 -> 196 bytes plugins/org.eclipse.osee.ats/plugin.xml | 1 - .../schema/AtsAIandTeamConfig.exsd | 105 -- .../src/org/eclipse/osee/ats/AtsImage.java | 1 + .../ats/artifact/AbstractWorkflowArtifact.java | 119 +- .../osee/ats/artifact/ActionableItemArtifact.java | 4 +- .../osee/ats/artifact/AtsArtifactToken.java | 56 + .../osee/ats/artifact/AtsAttributeTypes.java | 3 + .../eclipse/osee/ats/artifact/TaskArtifact.java | 4 + .../osee/ats/artifact/TeamDefinitionArtifact.java | 44 +- .../eclipse/osee/ats/config/AtsConfigManager.java | 7 +- .../eclipse/osee/ats/config/AtsDatabaseConfig.java | 35 +- .../config/AtsLoadConfigArtifactsOperation.java | 5 +- .../osee/ats/editor/SMAEditorOutlinePage.java | 222 ++- .../osee/ats/editor/SMAEstimatedHoursHeader.java | 112 ++ .../osee/ats/editor/SMAPercentCompleteHeader.java | 111 ++ .../osee/ats/editor/SMAPromptChangeStatus.java | 8 +- .../ats/editor/SMATargetVersionInfoComposite.java | 6 +- .../osee/ats/editor/SMAWorkFlowSection.java | 42 +- .../eclipse/osee/ats/editor/SMAWorkFlowTab.java | 9 +- .../osee/ats/editor/SMAWorkflowMetricsHeader.java | 56 +- .../AtsDecisionReviewDecisionStateItem.java | 87 +- .../AtsDecisionReviewPrepareStateItem.java | 17 +- .../AtsForceAssigneesToTeamLeadsStateItem.java | 24 +- .../stateItem/AtsHandleAddReviewRuleStateItem.java | 27 +- .../AtsPeerToPeerReviewPrepareStateItem.java | 26 +- .../AtsPeerToPeerReviewReviewStateItem.java | 41 +- .../osee/ats/editor/stateItem/AtsStateItem.java | 44 +- .../ats/editor/stateItem/AtsStateItemManager.java | 21 +- .../osee/ats/editor/stateItem/IAtsStateItem.java | 18 +- .../osee/ats/navigate/AtsNavigateViewItems.java | 2 + .../osee/ats/navigate/ConfigureDBForAts.java | 2 - .../ats/navigate/ConvertAIsAndTeamDefinitions.java | 33 + .../ats/navigate/ConvertWorkFlowDefinitions.java | 1 + .../ats/navigate/ImportAIsAndTeamDefinitions.java | 30 + .../eclipse/osee/ats/util/AtsBranchCommitJob.java | 2 +- .../org/eclipse/osee/ats/util/AtsFolderUtil.java | 107 -- .../src/org/eclipse/osee/ats/util/AtsUtil.java | 9 +- .../osee/ats/util/PriviledgedUserManager.java | 16 +- .../org/eclipse/osee/ats/util/StateManager.java | 12 + .../osee/ats/util/widgets/ReviewManager.java | 9 +- .../ats/workdef/AtsWorkDefinitionProviders.java | 19 +- .../workdef/AtsWorkDefinitionSheetProviders.java | 74 +- .../ats/workdef/IAtsWorkDefinitionProvider.java | 7 +- .../eclipse/osee/ats/workdef/RuleDefinition.java | 4 + .../osee/ats/workdef/RuleDefinitionOption.java | 31 + .../eclipse/osee/ats/workdef/StateDefinition.java | 19 + .../eclipse/osee/ats/workdef/StateXWidgetPage.java | 16 +- .../eclipse/osee/ats/workdef/WorkDefinition.java | 24 + .../osee/ats/workdef/WorkDefinitionFactory.java | 86 +- .../osee/ats/workflow/TransitionManager.java | 13 +- .../item/AtsStatePercentCompleteWeightRule.java | 28 - .../osee/ats/workflow/item/AtsWorkDefinitions.java | 24 +- .../eclipse/osee/ats/workflow/vue/AtsDbConfig.java | 23 - .../ats/workflow/vue/LoadAIsAndTeamsAction.java | 373 ----- .../org.eclipse.osee.ats/support/WorkDef_Goal.ats | 42 + .../support/WorkDef_Review_Decision.ats | 110 ++ .../support/WorkDef_Review_PeerToPeer.ats | 107 ++ .../support/WorkDef_Task_Default.ats | 8 +- .../support/WorkDef_Team_Default.ats | 7 +- .../support/WorkDef_Team_Simple.ats | 83 ++ .../MasterTestSuite_DemoDbInit.launch | 7 +- .../MasterTestSuite_DemoDbTests.launch | 6 +- .../tests/suite/MasterTestSuite_DemoDbTests.java | 2 + .../osee/framework/core/data/ArtifactToken.java | 29 + .../osee/framework/core/data/IArtifactToken.java | 21 + .../framework/skynet/core/OseeSystemArtifacts.java | 21 +- .../skynet/core/artifact/ArtifactTypeManager.java | 6 + .../skynet/core/artifact/search/ArtifactQuery.java | 5 + .../ui/skynet/widgets/XComboBooleanDam.java | 5 +- .../widgets/XHyperlinkLabelValueSelection.java | 2 +- .../OSEE Demo product [localhost].launch | 6 +- .../eclipse/osee/support/test/util/DemoUsers.java | 43 +- .../eclipse/osee/support/test/util/TestUtil.java | 16 +- 115 files changed, 3221 insertions(+), 2778 deletions(-) create mode 100644 plugins/org.eclipse.osee.ats.config.demo/src/org/eclipse/osee/ats/config/demo/config/DemoWorkDefinitionSheetProvider.java delete mode 100644 plugins/org.eclipse.osee.ats.config.demo/support/Osee ATS Config Demo.vue create mode 100644 plugins/org.eclipse.osee.ats.config.demo/support/WorkDef_Demo_AIs_And_Team_Definitions.ats create mode 100644 plugins/org.eclipse.osee.ats.config.demo/support/WorkDef_Team_Demo_Code.ats create mode 100644 plugins/org.eclipse.osee.ats.config.demo/support/WorkDef_Team_Demo_Req.ats create mode 100644 plugins/org.eclipse.osee.ats.config.demo/support/WorkDef_Team_Demo_SwDesign.ats create mode 100644 plugins/org.eclipse.osee.ats.config.demo/support/WorkDef_Team_Demo_Test.ats create mode 100644 plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/AtsTest_Demo_StateItem_Suite.java create mode 100644 plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/editor/stateItem/AtsDecisionReviewDecisionStateItemTest.java create mode 100644 plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/editor/stateItem/AtsDecisionReviewPrepareStateItemTest.java create mode 100644 plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/editor/stateItem/AtsForceAssigneesToTeamLeadsStateItemTest.java create mode 100644 plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/editor/stateItem/AtsHandleAddReviewRuleStateItemTest.java create mode 100644 plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/editor/stateItem/AtsPeerToPeerReviewPrepareStateItemTest.java create mode 100644 plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/editor/stateItem/AtsPeerToPeerReviewReviewStateItemTest.java create mode 100644 plugins/org.eclipse.osee.ats/images/stateItem.gif delete mode 100644 plugins/org.eclipse.osee.ats/schema/AtsAIandTeamConfig.exsd create mode 100644 plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AtsArtifactToken.java create mode 100644 plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEstimatedHoursHeader.java create mode 100644 plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAPercentCompleteHeader.java create mode 100644 plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ConvertAIsAndTeamDefinitions.java create mode 100644 plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ImportAIsAndTeamDefinitions.java delete mode 100644 plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsFolderUtil.java create mode 100644 plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/RuleDefinitionOption.java delete mode 100644 plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/vue/AtsDbConfig.java delete mode 100644 plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/vue/LoadAIsAndTeamsAction.java create mode 100644 plugins/org.eclipse.osee.ats/support/WorkDef_Goal.ats create mode 100644 plugins/org.eclipse.osee.ats/support/WorkDef_Review_Decision.ats create mode 100644 plugins/org.eclipse.osee.ats/support/WorkDef_Review_PeerToPeer.ats create mode 100644 plugins/org.eclipse.osee.ats/support/WorkDef_Team_Simple.ats create mode 100644 plugins/org.eclipse.osee.framework.core/src/org/eclipse/osee/framework/core/data/ArtifactToken.java create mode 100644 plugins/org.eclipse.osee.framework.core/src/org/eclipse/osee/framework/core/data/IArtifactToken.java diff --git a/plugins/org.eclipse.osee.ats.config.demo/plugin.xml b/plugins/org.eclipse.osee.ats.config.demo/plugin.xml index daaba297a74..ff239e9c328 100644 --- a/plugins/org.eclipse.osee.ats.config.demo/plugin.xml +++ b/plugins/org.eclipse.osee.ats.config.demo/plugin.xml @@ -15,12 +15,6 @@ classname="org.eclipse.osee.ats.config.demo.config.DemoDatabaseConfig"> - - - - + + + + getWorkDefinitionSheets() { + List sheets = new ArrayList(); + sheets.add(new WorkDefinitionSheet("WorkDef_Demo_AIs_And_Team_Definitions", "", + AtsWorkDefinitionSheetProviders.getSupportFile(OseeAtsConfigDemoActivator.PLUGIN_ID, + "support/WorkDef_Demo_AIs_And_Team_Definitions.ats"))); + sheets.add(new WorkDefinitionSheet("WorkDef_Team_Demo_Code", "demo.code", + AtsWorkDefinitionSheetProviders.getSupportFile(OseeAtsConfigDemoActivator.PLUGIN_ID, + "support/WorkDef_Team_Demo_Code.ats"))); + sheets.add(new WorkDefinitionSheet("WorkDef_Team_Demo_Req", "demo.req", + AtsWorkDefinitionSheetProviders.getSupportFile(OseeAtsConfigDemoActivator.PLUGIN_ID, + "support/WorkDef_Team_Demo_Req.ats"))); + sheets.add(new WorkDefinitionSheet("WorkDef_Team_Demo_Test", "demo.test", + AtsWorkDefinitionSheetProviders.getSupportFile(OseeAtsConfigDemoActivator.PLUGIN_ID, + "support/WorkDef_Team_Demo_Test.ats"))); + sheets.add(new WorkDefinitionSheet("WorkDef_Team_Demo_SwDesign", "demo.swdesign", + AtsWorkDefinitionSheetProviders.getSupportFile(OseeAtsConfigDemoActivator.PLUGIN_ID, + "support/WorkDef_Team_Demo_SwDesign.ats"))); + return sheets; + } +} diff --git a/plugins/org.eclipse.osee.ats.config.demo/support/Osee ATS Config Demo.vue b/plugins/org.eclipse.osee.ats.config.demo/support/Osee ATS Config Demo.vue deleted file mode 100644 index dbffad58577..00000000000 --- a/plugins/org.eclipse.osee.ats.config.demo/support/Osee ATS Config Demo.vue +++ /dev/null @@ -1,1531 +0,0 @@ - - - - - - #ffffff - #404040 - SansSerif-plain-14 - - - NotActionable - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #404040 - #404040 - Arial-plain-12 - - - - 411 - 413 - - - #404040 - #404040 - Arial-plain-12 - - - - 411 - 414 - - - #404040 - #404040 - Arial-plain-12 - - - - 411 - 412 - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #404040 - #404040 - Arial-plain-12 - - - - 414 - 426 - - - #404040 - #404040 - Arial-plain-12 - - - - 414 - 425 - - - #404040 - #404040 - Arial-plain-12 - - - - 414 - 424 - - - #404040 - #404040 - Arial-plain-12 - - - - 412 - 423 - - - #404040 - #404040 - Arial-plain-12 - - - - 412 - 422 - - - #404040 - #404040 - Arial-plain-12 - - - - 412 - 421 - - - #404040 - #404040 - Arial-plain-12 - - - - 413 - 420 - - - #404040 - #404040 - Arial-plain-12 - - - - 413 - 419 - - - #404040 - #404040 - Arial-plain-12 - - - - 413 - 418 - - - Lead:Joe Smith%nl;AtsTeamUsesVersions%nl;StaticId:saw.code%nl;WorkflowId:demo.code - #a7c2e9 - #776d6d - Arial-plain-14 - - - - - - Lead:Joe Smith%nl;AtsTeamUsesVersions%nl;StaticId:saw.requirements%nl;WorkflowId:demo.req - #a7c2e9 - #776d6d - Arial-plain-14 - - - - - - Lead:Kay Jones%nl;AtsTeamUsesVersions%nl;StaticId:saw.test%nl;WorkflowId:demo.test - #a7c2e9 - #776d6d - Arial-plain-14 - - - - - - #404040 - #404040 - Arial-plain-12 - - - - 447 - 438 - - - #404040 - #404040 - Arial-plain-12 - - - - 438 - 414 - - - #404040 - #404040 - Arial-plain-12 - - - - 436 - 413 - - - #404040 - #404040 - Arial-plain-12 - - - - 447 - 437 - - - #404040 - #404040 - Arial-plain-12 - - - - 447 - 436 - - - Full Name:SAW Software%nl;Lead:Kay Jason%nl;Member:Maichael Johnson%nl;%nl;Member:Steven Kohn%nl;WorkflowId:osee.ats.teamWorkflow%nl;AtsTeamUsesVersions%nl;StaticId:saw.teamDefHoldingVersions%nl;NotActionable - #a7c2e9 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #404040 - #404040 - Arial-plain-12 - - - - 414 - 448 - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #404040 - #404040 - Arial-plain-12 - - - - 413 - 450 - - - #404040 - #404040 - Arial-plain-12 - - - - 455 - 411 - - - #404040 - #404040 - Arial-plain-12 - - - - 437 - 412 - - - #404040 - #404040 - Arial-plain-12 - - - - 456 - 447 - - - NotActionable - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - NotActionable - #a7c2e9 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #404040 - #404040 - Arial-plain-12 - - - - 414 - 457 - - - NotActionable - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #404040 - #404040 - Arial-plain-12 - - - - 459 - 461 - - - #404040 - #404040 - Arial-plain-12 - - - - 459 - 462 - - - #404040 - #404040 - Arial-plain-12 - - - - 459 - 460 - - - #404040 - #404040 - Arial-plain-12 - - - - 499 - 462 - - - #404040 - #404040 - Arial-plain-12 - - - - 497 - 461 - - - #404040 - #404040 - Arial-plain-12 - - - - 455 - 459 - - - #404040 - #404040 - Arial-plain-12 - - - - 498 - 460 - - - Lead:Jason Michael%nl;Member:Jason Michael%nl;AtsTeamUsesVersions%nl;StaticId:cis.code%nl;WorkflowId:demo.code - #a7c2e9 - #776d6d - Arial-plain-14 - - - - - - Lead:Joe Smith%nl;Lead:Joe Smith%nl;WorkflowId:demo.req%nl;AtsTeamUsesVersions%nl;StaticId:cis.requirements - #a7c2e9 - #776d6d - Arial-plain-14 - - - - - - Lead:Kay Jones%nl;AtsTeamUsesVersions%nl;StaticId:cis.test%nl;WorkflowId:demo.test - #a7c2e9 - #776d6d - Arial-plain-14 - - - - - - #404040 - #404040 - Arial-plain-12 - - - - 503 - 498 - - - #404040 - #404040 - Arial-plain-12 - - - - 503 - 497 - - - #404040 - #404040 - Arial-plain-12 - - - - 503 - 499 - - - Full Name:CIS Software%nl;Lead:Kay Jason%nl;Member:Maichael Johnson%nl;%nl;Member:Steven Kohn%nl;WorkflowId:osee.ats.teamWorkflow%nl;AtsTeamUsesVersions%nl;StaticId:cis.teamDefHoldingVersions%nl;NotActionable - #a7c2e9 - #776d6d - Arial-plain-14 - - - - - - #404040 - #404040 - Arial-plain-12 - - - - 456 - 503 - - - Full Name:Tools Team%nl;Lead:Jeffery Kay%nl;Member:Jeffery Kay%nl;Member:Roland Stevens%nl;WorkflowId:osee.ats.teamWorkflow - #a7c2e9 - #776d6d - Arial-plain-14 - - - - - - #404040 - #404040 - Arial-plain-12 - - - - 456 - 505 - - - NotActionable - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #404040 - #404040 - Arial-plain-12 - - - - 455 - 507 - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #404040 - #404040 - Arial-plain-12 - - - - 507 - 511 - - - #404040 - #404040 - Arial-plain-12 - - - - 507 - 510 - - - #404040 - #404040 - Arial-plain-12 - - - - 507 - 509 - - - #404040 - #404040 - Arial-plain-12 - - - - 505 - 507 - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #404040 - #404040 - Arial-plain-12 - - - - 507 - 517 - - - Full Name:Company Website Team%nl;Lead:Karmen John%nl;Member:Jeffery Kay%nl;Member:Roland Stevens%nl;WorkflowId:osee.ats.simpleTeamWorkflow - #a7c2e9 - #776d6d - Arial-plain-14 - - - - - - #404040 - #404040 - Arial-plain-12 - - - - 519 - 511 - - - #404040 - #404040 - Arial-plain-12 - - - - 505 - 519 - - - Full Name:SAW Hardware%nl;Lead:Jason Michael%nl;Member:Jason Michael%nl;AtsTeamUsesVersions%nl;WorkflowId:osee.ats.teamWorkflow - #a7c2e9 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #404040 - #404040 - Arial-plain-12 - - - - 524 - 527 - - - #404040 - #404040 - Arial-plain-12 - - - - 524 - 526 - - - #404040 - #404040 - Arial-plain-12 - - - - 524 - 525 - - - #404040 - #404040 - Arial-plain-12 - - - - 523 - 524 - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #404040 - #404040 - Arial-plain-12 - - - - 524 - 532 - - - #404040 - #404040 - Arial-plain-12 - - - - 447 - 523 - - - #404040 - #404040 - Arial-plain-12 - - - - 411 - 524 - - - Full Name:Processes Team%nl;Lead:Alex Kay%nl;Member:Michael Alex%nl;Member:Janice Michael%nl;Member:Keith Johnson%nl;WorkflowId:osee.ats.teamWorkflow - #a7c2e9 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #404040 - #404040 - Arial-plain-12 - - - - 455 - 537 - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #404040 - #404040 - Arial-plain-12 - - - - 537 - 541 - - - #404040 - #404040 - Arial-plain-12 - - - - 537 - 540 - - - #404040 - #404040 - Arial-plain-12 - - - - 537 - 539 - - - #404040 - #404040 - Arial-plain-12 - - - - 536 - 537 - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #404040 - #404040 - Arial-plain-12 - - - - 537 - 546 - - - #404040 - #404040 - Arial-plain-12 - - - - 456 - 536 - - - Full Name:Facilities Team%nl;Lead:John Stevens%nl;Member:Jason Stevens%nl;Member:Michael John%nl;Member:Steven Michael%nl;WorkflowId:osee.ats.simpleTeamWorkflow%nl;Member:John Stevens%nl; - #a7c2e9 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #404040 - #404040 - Arial-plain-12 - - - - 455 - 553 - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #404040 - #404040 - Arial-plain-12 - - - - 553 - 557 - - - #404040 - #404040 - Arial-plain-12 - - - - 553 - 556 - - - #404040 - #404040 - Arial-plain-12 - - - - 553 - 555 - - - #404040 - #404040 - Arial-plain-12 - - - - 552 - 553 - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #404040 - #404040 - Arial-plain-12 - - - - 553 - 562 - - - #404040 - #404040 - Arial-plain-12 - - - - 456 - 552 - - - Full Name:IT Team%nl;Lead:Kay Wheeler%nl;Member:Jason Stevens%nl;Member:Michael John%nl;Member:Steven Michael - #a7c2e9 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #404040 - #404040 - Arial-plain-12 - - - - 553 - 566 - - - #404040 - #404040 - Arial-plain-12 - - - - 565 - 555 - - - #404040 - #404040 - Arial-plain-12 - - - - 565 - 566 - - - #404040 - #404040 - Arial-plain-12 - - - - 565 - 557 - - - #404040 - #404040 - Arial-plain-12 - - - - 552 - 565 - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #f2ae45 - #776d6d - Arial-plain-14 - - - - - - #404040 - #404040 - Arial-plain-12 - - - - 459 - 572 - - - Lead:Kay Jones%nl;AtsTeamUsesVersions%nl;StaticId:cis.sw_design%nl;WorkflowId:demo.swdesign - #a7c2e9 - #776d6d - Arial-plain-14 - - - - - - Lead:Kay Jones%nl;AtsTeamUsesVersions%nl;StaticId:saw.sw_design%nl;WorkflowId:demo.swdesign - #a7c2e9 - #776d6d - Arial-plain-14 - - - - - - #404040 - #404040 - Arial-plain-12 - - - - 578 - 573 - - - #404040 - #404040 - Arial-plain-12 - - - - 411 - 573 - - - #404040 - #404040 - Arial-plain-12 - - - - 503 - 577 - - - #404040 - #404040 - Arial-plain-12 - - - - 577 - 572 - - - #404040 - #404040 - Arial-plain-12 - - - - 447 - 578 - - 1.0 - - - - - 2006-12-19 - - diff --git a/plugins/org.eclipse.osee.ats.config.demo/support/WorkDef_Demo_AIs_And_Team_Definitions.ats b/plugins/org.eclipse.osee.ats.config.demo/support/WorkDef_Demo_AIs_And_Team_Definitions.ats new file mode 100644 index 00000000000..4cd8576933d --- /dev/null +++ b/plugins/org.eclipse.osee.ats.config.demo/support/WorkDef_Demo_AIs_And_Team_Definitions.ats @@ -0,0 +1,297 @@ + +userDefinition "Joe Smith" GetOrCreate +userDefinition "Kay Jones" GetOrCreate +userDefinition "Jason Michael" GetOrCreate +userDefinition "Alex Kay" GetOrCreate +userDefinition "Kay Jason" GetOrCreate +userDefinition "Steven Kohn" GetOrCreate +userDefinition "John Stevens" GetOrCreate +userDefinition "Keith Johnson" GetOrCreate +userDefinition "Michael Alex" GetOrCreate +userDefinition "Janice Michael" GetOrCreate +userDefinition "Maichael Johnson" GetOrCreate +userDefinition "Roland Stevens" GetOrCreate +userDefinition "Jeffery Kay" GetOrCreate +userDefinition "Karmen John" GetOrCreate +userDefinition "Steven Michael" GetOrCreate +userDefinition "Jason Stevens" GetOrCreate +userDefinition "Michael John" GetOrCreate +userDefinition "Kay Wheeler" GetOrCreate +userDefinition "Inactive Steve" GetOrCreate { + active False userId "Inactive Steve" + email "Inactive Steve" + isAdmin False +} + +teamDefinition "Teams" GetOrCreate { + staticId "osee.ats.TopTeamDefinition" + children { + + teamDefinition "CIS SW" { + staticId "cis.teamDefHoldingVersions" + lead named "Kay Jason" + member named "Steven Kohn" + member named "Maichael Johnson" + member named "Kay Jason" + workDefinition "osee.ats.teamWorkflow" + version "CIS_Bld_1" { + staticId "cis.teamDefHoldingVersions" + released True + baslineBranchGuid "AyH_f2sSKy3l07fIvDDD" + } + version "CIS_Bld_2" { + staticId "cis.teamDefHoldingVersions" + next True + } + version "CIS_Bld_3" { + staticId "cis.teamDefHoldingVersions" + } + children { + + teamDefinition "CIS Code" { + usesVersions True + staticId "cis.code" + lead named "Jason Michael" + member named "Jason Michael" + workDefinition "demo.code" + } + + teamDefinition "CIS Requirements" { + usesVersions True + staticId "cis.requirements" + lead named "Joe Smith" + member named "Joe Smith" + workDefinition "demo.req" + } + + teamDefinition "CIS SW Design" { + usesVersions True + staticId "cis.sw_design" + lead named "Kay Jones" + member named "Kay Jones" + workDefinition "demo.swdesign" + } + + teamDefinition "CIS Test" { + usesVersions True + staticId "cis.test" + lead named "Kay Jones" + member named "Kay Jones" + workDefinition "demo.test" + } + } + } + + teamDefinition "Facilities Team" { + lead named "John Stevens" + member named "John Stevens" + member named "Steven Michael" + member named "Michael John" + member named "Jason Stevens" + workDefinition "osee.ats.simpleTeamWorkflow" + children { + + teamDefinition "IT Team" { + lead named "Kay Wheeler" + member named "Steven Michael" + member named "Michael John" + member named "Jason Stevens" + member named "Kay Wheeler" + workDefinition "osee.ats.simpleTeamWorkflow" + } + } + } + + teamDefinition "Process Team" { + lead named "Alex Kay" + member named "Keith Johnson" + member named "Michael Alex" + member named "Janice Michael" + member named "Alex Kay" + workDefinition "osee.ats.teamWorkflow" + } + + teamDefinition "SAW SW" { + staticId "saw.teamDefHoldingVersions" + lead named "Kay Jason" + member named "Maichael Johnson" + member named "Steven Kohn" + member named "Kay Jason" + workDefinition "osee.ats.teamWorkflow" + version "SAW_Bld_1" { + staticId "saw.teamDefHoldingVersions" + released True + baslineBranchGuid "AyH_f2sSKy3l07fIvAAA" + } + version "SAW_Bld_2" { + staticId "saw.teamDefHoldingVersions" + next True allowCreateBranch True allowCommitBranch True + baslineBranchGuid "AyH_f2sSKy3l07fIvBBB" + } + version "SAW_Bld_3" { + staticId "saw.teamDefHoldingVersions" + } + children { + + teamDefinition "SAW Code" { + usesVersions True + staticId "saw.code" + lead named "Joe Smith" + member named "Joe Smith" + workDefinition "demo.code" + } + + teamDefinition "SAW HW" { + usesVersions True + lead named "Jason Michael" + member named "Jason Michael" + workDefinition "osee.ats.teamWorkflow" + } + + teamDefinition "SAW Requirements" { + usesVersions True + staticId "saw.requirements" + lead named "Joe Smith" + member named "Joe Smith" + workDefinition "demo.req" + } + + teamDefinition "SAW SW Design" { + usesVersions True + staticId "saw.sw_design" + lead named "Kay Jones" + member named "Kay Jones" + workDefinition "demo.swdesign" + } + + teamDefinition "SAW Test" { + usesVersions True + staticId "saw.test" + lead named "Kay Jones" + member named "Kay Jones" priviledged named "Joe Smith" + workDefinition "demo.test" + } + } + } + + teamDefinition "Tools Team" { + lead named "Jeffery Kay" + member named "Jeffery Kay" + member named "Roland Stevens" + workDefinition "osee.ats.teamWorkflow" + children { + + teamDefinition "Web Team" { + lead named "Karmen John" + member named "Jeffery Kay" + member named "Karmen John" + member named "Roland Stevens" + workDefinition "osee.ats.simpleTeamWorkflow" + } + } + } + } +} +actionableItem "Actionable Items" GetOrCreate { + staticId "osee.ats.TopActionableItem" + children { + actionableItem "CIS CSCI" { + actionable False + children { + actionableItem "CIS Code" { + team "CIS Code" + } + actionableItem "CIS Requirements" { + team "CIS Requirements" + } + actionableItem "CIS SW Design" { + team "CIS SW Design" + } + actionableItem "CIS Test" { + team "CIS Test" + } + } + } + actionableItem "Facilities" { + team "Facilities Team" + children { + actionableItem "Backups" { + team "IT Team" + } + actionableItem "Break Room" + actionableItem "Computers" { + team "IT Team" + } + actionableItem "Network" { + team "IT Team" + } + actionableItem "Vending Machines" + } + } + actionableItem "Processes" { + team "Process Team" + children { + actionableItem "Coding Standards" + actionableItem "Config Mgmt" + actionableItem "New Employee Manual" + actionableItem "Reviews" + } + } + actionableItem "SAW CSCI" { + actionable False + children { + actionableItem "SAW Code" { + team "SAW Code" + children { + actionableItem "COMM" + actionableItem "MSM" + actionableItem "NAV" + actionableItem "Test Page" + } + } + actionableItem "SAW HW" { + team "SAW HW" + children { + actionableItem "Adapter" + actionableItem "Case" + actionableItem "Manual" + actionableItem "Screen" + } + } + actionableItem "SAW Requirements" { + team "SAW Requirements" + children { + actionableItem "COMM" + actionableItem "MSM" + actionableItem "NAV" + } + } + actionableItem "SAW SW Design" { + team "SAW SW Design" + } + actionableItem "SAW Test" { + team "SAW Test" + children { + actionableItem "ADT" + actionableItem "COMM" + actionableItem "MSM" + actionableItem "NAV" + actionableItem "RunLists" + } + } + } + } + actionableItem "Tools" { + team "Tools Team" + children { + actionableItem "Reader" + actionableItem "Results Reporter" + actionableItem "Timesheet" + actionableItem "Website" { + team "Web Team" + } + } + } + } +} + diff --git a/plugins/org.eclipse.osee.ats.config.demo/support/WorkDef_Team_Demo_Code.ats b/plugins/org.eclipse.osee.ats.config.demo/support/WorkDef_Team_Demo_Code.ats new file mode 100644 index 00000000000..20a7b49ff51 --- /dev/null +++ b/plugins/org.eclipse.osee.ats.config.demo/support/WorkDef_Team_Demo_Code.ats @@ -0,0 +1,127 @@ +workDefinition "WorkDef_Team_Demo_Code" { + id "WorkDef_Team_Demo_Code" + startState "Endorse" + + widgetDefinition "Resolution" { + attributeName "ats.Resolution" + xWidgetName "XTextDam" + option FILL_VERTICALLY + } + + widgetDefinition "Problem" { + attributeName "ats.Problem" + xWidgetName "XTextDam" + option FILL_VERTICALLY + } + + widgetDefinition "Proposed Resolution" { + attributeName "ats.Proposed Resolution" + xWidgetName "XTextDam" + option FILL_VERTICALLY + } + + widgetDefinition "Title" { + attributeName "Name" + xWidgetName "XTextDam" + option REQUIRED_FOR_TRANSITION + } + + widgetDefinition "Description" { + attributeName "ats.Description" + xWidgetName "XTextDam" + option FILL_VERTICALLY + option REQUIRED_FOR_TRANSITION + } + + widgetDefinition "User Community" { + attributeName "ats.User Community" + xWidgetName "XListDam(OPTIONS_FROM_ATTRIBUTE_VALIDITY)" + option HORIZONTAL_LABEL + } + + state "Completed" { + type Completed + ordinal 5 + to "Implement" OverrideAttributeValidation + rule AddDecisionValidateBlockingReview + } + + state "Implement" { + type Working + ordinal 4 + to "Cancelled" + to "Completed" AsDefault + to "Authorize" OverrideAttributeValidation + to "Analyze" OverrideAttributeValidation + rule RequireStateHourSpentPrompt + layout { + attributeWidget "ats.Work Package" + attributeWidget "ats.Estimated Completion Date" + widget "Resolution" + } + } + + state "Authorize" { + type Working + ordinal 3 + to "Cancelled" + to "Implement" AsDefault + to "Analyze" OverrideAttributeValidation + layout { + attributeWidget "ats.Work Package" + attributeWidget "ats.Estimated Completion Date" + } + } + + state "Analyze" { + type Working + ordinal 2 + to "Cancelled" + to "Authorize" AsDefault + to "Endorse" OverrideAttributeValidation + rule RequireStateHourSpentPrompt + layout { + attributeWidget "ats.Work Package" + widget "Problem" + widget "Proposed Resolution" + composite { + numColumns 6 + attributeWidget "ats.Change Type" + attributeWidget "ats.Priority" + attributeWidget "ats.Need By" + } + attributeWidget "ats.Estimated Hours" + } + } + + state "Cancelled" { + type Cancelled + ordinal 6 + to "Authorize" OverrideAttributeValidation + to "Analyze" OverrideAttributeValidation + to "Implement" OverrideAttributeValidation + to "Endorse" OverrideAttributeValidation + } + + state "Endorse" { + type Working + ordinal 1 + to "Cancelled" + to "Analyze" AsDefault + rule RequireStateHourSpentPrompt + layout { + widget "Title" + widget "Description" + widget "Proposed Resolution" + composite { + numColumns 6 + attributeWidget "ats.Change Type" + attributeWidget "ats.Priority" + attributeWidget "ats.Need By" + } + attributeWidget "ats.Validation Required" + attributeWidget "ats.Work Package" + widget "User Community" + } + } +} diff --git a/plugins/org.eclipse.osee.ats.config.demo/support/WorkDef_Team_Demo_Req.ats b/plugins/org.eclipse.osee.ats.config.demo/support/WorkDef_Team_Demo_Req.ats new file mode 100644 index 00000000000..3daacb22bd0 --- /dev/null +++ b/plugins/org.eclipse.osee.ats.config.demo/support/WorkDef_Team_Demo_Req.ats @@ -0,0 +1,137 @@ +workDefinition "WorkDef_Team_Demo_Req" { + id "WorkDef_Team_Demo_Req" + startState "Endorse" + + widgetDefinition "Problem" { + attributeName "ats.Problem" + xWidgetName "XTextDam" + option FILL_VERTICALLY + } + + widgetDefinition "Proposed Resolution" { + attributeName "ats.Proposed Resolution" + xWidgetName "XTextDam" + option FILL_VERTICALLY + } + + widgetDefinition "Title" { + attributeName "Name" + xWidgetName "XTextDam" + option REQUIRED_FOR_TRANSITION + } + + widgetDefinition "Description" { + attributeName "ats.Description" + xWidgetName "XTextDam" + option FILL_VERTICALLY + option REQUIRED_FOR_TRANSITION + } + + widgetDefinition "User Community" { + attributeName "ats.User Community" + xWidgetName "XListDam(OPTIONS_FROM_ATTRIBUTE_VALIDITY)" + option HORIZONTAL_LABEL + } + + widgetDefinition "Working Branch" { + xWidgetName "XWorkingBranch" + } + + widgetDefinition "Commit Manager" { + xWidgetName "XCommitManager" + } + + widgetDefinition "Resolution" { + attributeName "ats.Resolution" + xWidgetName "XTextDam" + option FILL_VERTICALLY + } + + state "Analyze" { + type Working + ordinal 2 + to "Cancelled" + to "Authorize" AsDefault + to "Endorse" OverrideAttributeValidation + rule RequireStateHourSpentPrompt + layout { + attributeWidget "ats.Work Package" + widget "Problem" + widget "Proposed Resolution" + composite { + numColumns 6 + attributeWidget "ats.Change Type" + attributeWidget "ats.Priority" + attributeWidget "ats.Need By" + } + attributeWidget "ats.Estimated Hours" + } + } + + state "Endorse" { + type Working + ordinal 1 + to "Cancelled" + to "Analyze" AsDefault + rule RequireStateHourSpentPrompt + layout { + widget "Title" + widget "Description" + widget "Proposed Resolution" + composite { + numColumns 6 + attributeWidget "ats.Change Type" + attributeWidget "ats.Priority" + attributeWidget "ats.Need By" + } + attributeWidget "ats.Validation Required" + attributeWidget "ats.Work Package" + widget "User Community" + } + } + + state "Cancelled" { + type Cancelled + ordinal 6 + to "Analyze" OverrideAttributeValidation + to "Implement" OverrideAttributeValidation + to "Endorse" OverrideAttributeValidation + to "Authorize" OverrideAttributeValidation + } + + state "Authorize" { + type Working + ordinal 3 + to "Cancelled" + to "Implement" AsDefault + to "Analyze" OverrideAttributeValidation + layout { + attributeWidget "ats.Work Package" + attributeWidget "ats.Estimated Completion Date" + } + } + + state "Implement" { + type Working + ordinal 4 + to "Cancelled" + to "Completed" AsDefault + to "Analyze" OverrideAttributeValidation + to "Authorize" OverrideAttributeValidation + rule RequireStateHourSpentPrompt + layout { + widget "Working Branch" + widget "Commit Manager" + attributeWidget "ats.Work Package" + attributeWidget "ats.Estimated Completion Date" + widget "Resolution" + } + } + + state "Completed" { + type Completed + ordinal 5 + to "Implement" OverrideAttributeValidation + rule AddDecisionValidateBlockingReview + } +} \ No newline at end of file diff --git a/plugins/org.eclipse.osee.ats.config.demo/support/WorkDef_Team_Demo_SwDesign.ats b/plugins/org.eclipse.osee.ats.config.demo/support/WorkDef_Team_Demo_SwDesign.ats new file mode 100644 index 00000000000..4cb0f2cad2c --- /dev/null +++ b/plugins/org.eclipse.osee.ats.config.demo/support/WorkDef_Team_Demo_SwDesign.ats @@ -0,0 +1,180 @@ +workDefinition "WorkDef_Team_Demo_SwDesign" { + id "WorkDef_Team_Demo_SwDesign" + startState "Endorse" + + widgetDefinition "Problem" { + attributeName "ats.Problem" + xWidgetName "XTextDam" + option FILL_VERTICALLY + } + + widgetDefinition "Proposed Resolution" { + attributeName "ats.Proposed Resolution" + xWidgetName "XTextDam" + option FILL_VERTICALLY + } + + widgetDefinition "Title" { + attributeName "Name" + xWidgetName "XTextDam" + option REQUIRED_FOR_TRANSITION + } + + widgetDefinition "Description" { + attributeName "ats.Description" + xWidgetName "XTextDam" + option REQUIRED_FOR_TRANSITION + option FILL_VERTICALLY + } + + widgetDefinition "User Community" { + attributeName "ats.User Community" + xWidgetName "XListDam(OPTIONS_FROM_ATTRIBUTE_VALIDITY)" + option HORIZONTAL_LABEL + } + + widgetDefinition "Working Branch" { + xWidgetName "XWorkingBranch" + } + + widgetDefinition "Commit Manager" { + xWidgetName "XCommitManager" + } + + widgetDefinition "Resolution" { + attributeName "ats.Resolution" + xWidgetName "XTextDam" + option FILL_VERTICALLY + } + decisionReviewDefinition "Analyze.None.TransitionTo" { + title + "Auto-created Decision Review from ruleId: atsAddDecisionReview.test.addDecisionReview.Analyze.None.TransitionTo" + description "This is a rule created to test the Review rules." + relatedToState "Analyze" + blockingType Transition + onEvent TransitionTo + assignee named "UnAssigned" + autoTransitionToDecision True + option "Completed" + } + decisionReviewDefinition "Implement.None.CreateBranch" { + title + "Auto-created Decision Review from ruleId: atsAddDecisionReview.test.addDecisionReview.Implement.None.CreateBranch" + description "This is a rule created to test the Review rules." + relatedToState "Implement" + blockingType Transition + onEvent CreateBranch + assignee named "UnAssigned" + option "Completed" + } + peerReviewDefinition "Authorize.None.TransitionTo" { + title + "Auto-created Decision Review from ruleId atsAddPeerToPeerReview.test.addPeerToPeerReview.Authorize.None.TransitionTo" + description "This is a rule created to test the Review rules." + relatedToState "Authorize" + blockingType Transition + onEvent TransitionTo + assignee named "UnAssigned" + } + peerReviewDefinition "Implement.None.CommitBranch" { + title + "Auto-created Decision Review from ruleId atsAddPeerToPeerReview.test.addPeerToPeerReview.Implement.None.CommitBranch" + description "This is a rule created to test the Review rules." + relatedToState "Implement" + blockingType Transition + onEvent CommitBranch + assignee named "UnAssigned" + } + + state "Analyze" { + type Working + ordinal 2 + to "Cancelled" + to "Authorize" AsDefault + to "Endorse" OverrideAttributeValidation + rule RequireStateHourSpentPrompt + decisionReview "Analyze.None.TransitionTo" + layout { + attributeWidget "ats.Work Package" + widget "Problem" + widget "Proposed Resolution" + composite { + numColumns 6 + attributeWidget "ats.Change Type" + attributeWidget "ats.Priority" + attributeWidget "ats.Need By" + } + attributeWidget "ats.Estimated Hours" + } + } + + state "Endorse" { + type Working + ordinal 1 + to "Cancelled" + to "Analyze" AsDefault + rule RequireStateHourSpentPrompt + layout { + widget "Title" + widget "Description" + widget "Proposed Resolution" + composite { + numColumns 6 + attributeWidget "ats.Change Type" + attributeWidget "ats.Priority" + attributeWidget "ats.Need By" + } + attributeWidget "ats.Validation Required" + attributeWidget "ats.Work Package" + widget "User Community" + } + } + + state "Cancelled" { + type Cancelled + ordinal 6 + to "Analyze" OverrideAttributeValidation + to "Endorse" OverrideAttributeValidation + to "Authorize" OverrideAttributeValidation + to "Implement" OverrideAttributeValidation + } + + state "Authorize" { + type Working + ordinal 3 + to "Cancelled" + to "Implement" AsDefault + to "Analyze" OverrideAttributeValidation + peerReview "Authorize.None.TransitionTo" + layout { + attributeWidget "ats.Work Package" + attributeWidget "ats.Estimated Completion Date" + } + } + + state "Completed" { + type Completed + ordinal 5 + to "Implement" OverrideAttributeValidation + rule AddDecisionValidateBlockingReview + } + + state "Implement" { + type Working + ordinal 4 + to "Cancelled" + to "Completed" AsDefault + to "Analyze" OverrideAttributeValidation + to "Authorize" OverrideAttributeValidation + rule RequireStateHourSpentPrompt + decisionReview "Implement.None.CreateBranch" + peerReview "Implement.None.CommitBranch" + layout { + widget "Working Branch" + widget "Commit Manager" + attributeWidget "ats.Work Package" + attributeWidget "ats.Estimated Completion Date" + widget "Resolution" + } + } +} \ No newline at end of file diff --git a/plugins/org.eclipse.osee.ats.config.demo/support/WorkDef_Team_Demo_Test.ats b/plugins/org.eclipse.osee.ats.config.demo/support/WorkDef_Team_Demo_Test.ats new file mode 100644 index 00000000000..a8197c4eb06 --- /dev/null +++ b/plugins/org.eclipse.osee.ats.config.demo/support/WorkDef_Team_Demo_Test.ats @@ -0,0 +1,127 @@ +workDefinition "WorkDef_Team_Demo_Test" { + id "WorkDef_Team_Demo_Test" + startState "Endorse" + + widgetDefinition "Resolution" { + attributeName "ats.Resolution" + xWidgetName "XTextDam" + option FILL_VERTICALLY + } + + widgetDefinition "Problem" { + attributeName "ats.Problem" + xWidgetName "XTextDam" + option FILL_VERTICALLY + } + + widgetDefinition "Proposed Resolution" { + attributeName "ats.Proposed Resolution" + xWidgetName "XTextDam" + option FILL_VERTICALLY + } + + widgetDefinition "Title" { + attributeName "Name" + xWidgetName "XTextDam" + option REQUIRED_FOR_TRANSITION + } + + widgetDefinition "Description" { + attributeName "ats.Description" + xWidgetName "XTextDam" + option FILL_VERTICALLY + option REQUIRED_FOR_TRANSITION + } + + widgetDefinition "User Community" { + attributeName "ats.User Community" + xWidgetName "XListDam(OPTIONS_FROM_ATTRIBUTE_VALIDITY)" + option HORIZONTAL_LABEL + } + + state "Implement" { + type Working + ordinal 4 + to "Cancelled" + to "Completed" AsDefault + to "Analyze" OverrideAttributeValidation + to "Authorize" OverrideAttributeValidation + rule RequireStateHourSpentPrompt + layout { + attributeWidget "ats.Work Package" + attributeWidget "ats.Estimated Completion Date" + widget "Resolution" + } + } + + state "Analyze" { + type Working + ordinal 2 + to "Cancelled" + to "Authorize" AsDefault + to "Endorse" OverrideAttributeValidation + rule RequireStateHourSpentPrompt + layout { + attributeWidget "ats.Work Package" + widget "Problem" + widget "Proposed Resolution" + composite { + numColumns 6 + attributeWidget "ats.Change Type" + attributeWidget "ats.Priority" + attributeWidget "ats.Need By" + } + attributeWidget "ats.Estimated Hours" + } + } + + state "Authorize" { + type Working + ordinal 3 + to "Cancelled" + to "Implement" AsDefault + to "Analyze" OverrideAttributeValidation + layout { + attributeWidget "ats.Work Package" + attributeWidget "ats.Estimated Completion Date" + } + } + + state "Cancelled" { + type Cancelled + ordinal 6 + to "Implement" OverrideAttributeValidation + to "Analyze" OverrideAttributeValidation + to "Authorize" OverrideAttributeValidation + to "Endorse" OverrideAttributeValidation + } + + state "Completed" { + type Completed + ordinal 5 + to "Implement" OverrideAttributeValidation + rule AddDecisionValidateBlockingReview + } + + state "Endorse" { + type Working + ordinal 1 + to "Cancelled" + to "Analyze" AsDefault + rule RequireStateHourSpentPrompt + layout { + widget "Title" + widget "Description" + widget "Proposed Resolution" + composite { + numColumns 6 + attributeWidget "ats.Change Type" + attributeWidget "ats.Priority" + attributeWidget "ats.Need By" + } + attributeWidget "ats.Validation Required" + attributeWidget "ats.Work Package" + widget "User Community" + } + } +} \ No newline at end of file diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/AtsTest_Demo_StateItem_Suite.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/AtsTest_Demo_StateItem_Suite.java new file mode 100644 index 00000000000..4bde92138ad --- /dev/null +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/AtsTest_Demo_StateItem_Suite.java @@ -0,0 +1,37 @@ +/******************************************************************************* + * 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.test; + +import org.eclipse.osee.ats.test.editor.stateItem.AtsDecisionReviewDecisionStateItemTest; +import org.eclipse.osee.ats.test.editor.stateItem.AtsDecisionReviewPrepareStateItemTest; +import org.eclipse.osee.ats.test.editor.stateItem.AtsForceAssigneesToTeamLeadsStateItemTest; +import org.eclipse.osee.ats.test.editor.stateItem.AtsHandleAddReviewRuleStateItemTest; +import org.eclipse.osee.ats.test.editor.stateItem.AtsPeerToPeerReviewPrepareStateItemTest; +import org.eclipse.osee.ats.test.editor.stateItem.AtsPeerToPeerReviewReviewStateItemTest; +import org.junit.runner.RunWith; +import org.junit.runners.Suite; + +@RunWith(Suite.class) +@Suite.SuiteClasses({ + AtsForceAssigneesToTeamLeadsStateItemTest.class, + AtsPeerToPeerReviewReviewStateItemTest.class, + AtsPeerToPeerReviewPrepareStateItemTest.class, + AtsDecisionReviewDecisionStateItemTest.class, + AtsDecisionReviewPrepareStateItemTest.class, + AtsHandleAddReviewRuleStateItemTest.class}) +/** + * This test suite contains tests that must be run against demo database + * + * @author Donald G. Dunne + */ +public class AtsTest_Demo_StateItem_Suite { + // test provided above +} diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/ActionableItemsColumnTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/ActionableItemsColumnTest.java index 18104b8ceff..7fc44daff73 100644 --- a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/ActionableItemsColumnTest.java +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/ActionableItemsColumnTest.java @@ -12,7 +12,9 @@ import org.eclipse.osee.ats.artifact.ActionableItemArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.column.ActionableItemsColumn; import org.eclipse.osee.ats.test.util.DemoTestUtil; +import org.eclipse.osee.framework.logging.SevereLoggingMonitor; import org.eclipse.osee.support.test.util.DemoWorkType; +import org.eclipse.osee.support.test.util.TestUtil; /** * @tests ActionableItemsColumn @@ -22,6 +24,8 @@ public class ActionableItemsColumnTest { @org.junit.Test public void testGetActionableItems() throws Exception { + SevereLoggingMonitor loggingMonitor = TestUtil.severeLoggingStart(); + TeamWorkFlowArtifact codeArt = (TeamWorkFlowArtifact) DemoTestUtil.getUncommittedActionWorkflow(DemoWorkType.Code); Collection aias = ActionableItemsColumn.getActionableItems(codeArt); @@ -32,10 +36,13 @@ public class ActionableItemsColumnTest { aias = ActionableItemsColumn.getActionableItems(actionArt); Assert.assertEquals(4, aias.size()); + TestUtil.severeLoggingEnd(loggingMonitor); } @org.junit.Test public void testGetActionableItemsStr() throws Exception { + SevereLoggingMonitor loggingMonitor = TestUtil.severeLoggingStart(); + TeamWorkFlowArtifact codeArt = (TeamWorkFlowArtifact) DemoTestUtil.getUncommittedActionWorkflow(DemoWorkType.Code); Assert.assertEquals("SAW Code", ActionableItemsColumn.getActionableItemsStr(codeArt)); @@ -48,6 +55,8 @@ public class ActionableItemsColumnTest { Assert.assertTrue(results.contains("SAW Test")); Assert.assertTrue(results.contains("SAW Requirements")); Assert.assertEquals(4, results.split(", ").length); + + TestUtil.severeLoggingEnd(loggingMonitor); } } diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/AssigneeColumnTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/AssigneeColumnTest.java index 4bc2d4c29c1..379bd9bf673 100644 --- a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/AssigneeColumnTest.java +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/AssigneeColumnTest.java @@ -13,7 +13,9 @@ import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.column.ActionableItemsColumn; import org.eclipse.osee.ats.column.AssigneeColumn; import org.eclipse.osee.ats.test.util.DemoTestUtil; +import org.eclipse.osee.framework.logging.SevereLoggingMonitor; import org.eclipse.osee.support.test.util.DemoWorkType; +import org.eclipse.osee.support.test.util.TestUtil; /** * @tests AssigneeColumn @@ -23,6 +25,8 @@ public class AssigneeColumnTest { @org.junit.Test public void testGetColumnText() throws Exception { + SevereLoggingMonitor loggingMonitor = TestUtil.severeLoggingStart(); + TeamWorkFlowArtifact codeArt = (TeamWorkFlowArtifact) DemoTestUtil.getUncommittedActionWorkflow(DemoWorkType.Code); Assert.assertEquals("Joe Smith", @@ -33,9 +37,12 @@ public class AssigneeColumnTest { Assert.assertTrue(results.contains(AssigneeColumn.getInstance().getColumnText(actionArt, AssigneeColumn.getInstance(), 0))); + TestUtil.severeLoggingEnd(loggingMonitor); } public void testGetColumnImage() throws Exception { + SevereLoggingMonitor loggingMonitor = TestUtil.severeLoggingStart(); + TeamWorkFlowArtifact codeArt = (TeamWorkFlowArtifact) DemoTestUtil.getUncommittedActionWorkflow(DemoWorkType.Code); Assert.assertNotNull(ActionableItemsColumn.getInstance().getColumnImage(codeArt, AssigneeColumn.getInstance(), 0)); @@ -45,5 +52,7 @@ public class AssigneeColumnTest { 0)); Assert.assertNull(ActionableItemsColumn.getInstance().getColumnImage("String", AssigneeColumn.getInstance(), 0)); + + TestUtil.severeLoggingEnd(loggingMonitor); } } diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/BranchStatusColumnTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/BranchStatusColumnTest.java index 347fff01e10..7035979fda4 100644 --- a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/BranchStatusColumnTest.java +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/BranchStatusColumnTest.java @@ -11,7 +11,9 @@ import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.column.AssigneeColumn; import org.eclipse.osee.ats.column.BranchStatusColumn; import org.eclipse.osee.ats.test.util.DemoTestUtil; +import org.eclipse.osee.framework.logging.SevereLoggingMonitor; import org.eclipse.osee.support.test.util.DemoWorkType; +import org.eclipse.osee.support.test.util.TestUtil; /** * @tests BranchStatusColumn @@ -21,6 +23,8 @@ public class BranchStatusColumnTest { @org.junit.Test public void testGetColumnText() throws Exception { + SevereLoggingMonitor loggingMonitor = TestUtil.severeLoggingStart(); + TeamWorkFlowArtifact reqArt = (TeamWorkFlowArtifact) DemoTestUtil.getUncommittedActionWorkflow(DemoWorkType.Requirements); Assert.assertEquals("Working", @@ -39,6 +43,7 @@ public class BranchStatusColumnTest { Assert.assertEquals("Committed", BranchStatusColumn.getInstance().getColumnText(reqArt2, AssigneeColumn.getInstance(), 0)); + TestUtil.severeLoggingEnd(loggingMonitor); } } diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/CancelledDateColumnTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/CancelledDateColumnTest.java index 2fc8013577d..0f3c21bf864 100644 --- a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/CancelledDateColumnTest.java +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/CancelledDateColumnTest.java @@ -16,8 +16,10 @@ import org.eclipse.osee.ats.util.TeamState; import org.eclipse.osee.ats.util.TransitionOption; import org.eclipse.osee.ats.workflow.TransitionManager; import org.eclipse.osee.framework.jdk.core.util.DateUtil; +import org.eclipse.osee.framework.logging.SevereLoggingMonitor; import org.eclipse.osee.framework.skynet.core.UserManager; import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; +import org.eclipse.osee.support.test.util.TestUtil; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -35,6 +37,8 @@ public class CancelledDateColumnTest { @org.junit.Test public void testGetDateAndStrAndColumnText() throws Exception { + SevereLoggingMonitor loggingMonitor = TestUtil.severeLoggingStart(); + SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), CancelledDateColumnTest.class.getSimpleName()); TeamWorkFlowArtifact teamArt = @@ -67,5 +71,6 @@ public class CancelledDateColumnTest { date = CancelledDateColumn.getDate(teamArt); Assert.assertNull(date); + TestUtil.severeLoggingEnd(loggingMonitor); } } diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/CategoryColumnTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/CategoryColumnTest.java index 58dd3df2f35..5acb8694647 100644 --- a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/CategoryColumnTest.java +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/CategoryColumnTest.java @@ -13,8 +13,10 @@ import org.eclipse.osee.ats.column.CategoryColumn; import org.eclipse.osee.ats.test.util.DemoTestUtil; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.logging.SevereLoggingMonitor; import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; import org.eclipse.osee.support.test.util.DemoWorkType; +import org.eclipse.osee.support.test.util.TestUtil; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -46,6 +48,8 @@ public class CategoryColumnTest { @org.junit.Test public void testGetDateAndStrAndColumnText() throws Exception { + SevereLoggingMonitor loggingMonitor = TestUtil.severeLoggingStart(); + TeamWorkFlowArtifact codeArt = (TeamWorkFlowArtifact) DemoTestUtil.getUncommittedActionWorkflow(DemoWorkType.Code); TeamWorkFlowArtifact reqArt = @@ -105,5 +109,6 @@ public class CategoryColumnTest { Assert.assertEquals("", CategoryColumn.getCategory1Instance().getColumnText(actionArt, CategoryColumn.getCategory1Instance(), 0)); + TestUtil.severeLoggingEnd(loggingMonitor); } } diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/ChangeTypeColumnTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/ChangeTypeColumnTest.java index 728afc12590..3a3a10fc1a9 100644 --- a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/ChangeTypeColumnTest.java +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/ChangeTypeColumnTest.java @@ -13,9 +13,11 @@ import org.eclipse.osee.ats.column.ChangeTypeColumn; import org.eclipse.osee.ats.test.util.DemoTestUtil; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.logging.SevereLoggingMonitor; import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; import org.eclipse.osee.framework.ui.skynet.util.ChangeType; import org.eclipse.osee.support.test.util.DemoWorkType; +import org.eclipse.osee.support.test.util.TestUtil; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -39,6 +41,8 @@ public class ChangeTypeColumnTest { @org.junit.Test public void getChangeTypeStrAndImage() throws Exception { + SevereLoggingMonitor loggingMonitor = TestUtil.severeLoggingStart(); + TeamWorkFlowArtifact codeArt = (TeamWorkFlowArtifact) DemoTestUtil.getUncommittedActionWorkflow(DemoWorkType.Code); Assert.assertEquals(ChangeType.Problem, ChangeTypeColumn.getChangeType(codeArt)); @@ -75,6 +79,8 @@ public class ChangeTypeColumnTest { Assert.assertEquals(ChangeType.Problem, ChangeTypeColumn.getChangeType(actionArt)); Assert.assertEquals("Problem; Improvement", ChangeTypeColumn.getInstance().getColumnText(actionArt, ChangeTypeColumn.getInstance(), 0)); + + TestUtil.severeLoggingEnd(loggingMonitor); } } diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/CompletedDateColumnTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/CompletedDateColumnTest.java index 29a8faabbd3..85341a5f31e 100644 --- a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/CompletedDateColumnTest.java +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/CompletedDateColumnTest.java @@ -16,8 +16,10 @@ import org.eclipse.osee.ats.util.TeamState; import org.eclipse.osee.ats.util.TransitionOption; import org.eclipse.osee.ats.workflow.TransitionManager; import org.eclipse.osee.framework.jdk.core.util.DateUtil; +import org.eclipse.osee.framework.logging.SevereLoggingMonitor; import org.eclipse.osee.framework.skynet.core.UserManager; import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; +import org.eclipse.osee.support.test.util.TestUtil; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -35,6 +37,8 @@ public class CompletedDateColumnTest { @org.junit.Test public void testGetDateAndStrAndColumnText() throws Exception { + SevereLoggingMonitor loggingMonitor = TestUtil.severeLoggingStart(); + SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), CompletedDateColumnTest.class.getSimpleName()); TeamWorkFlowArtifact teamArt = @@ -67,5 +71,6 @@ public class CompletedDateColumnTest { date = CompletedDateColumn.getDate(teamArt); Assert.assertNull(date); + TestUtil.severeLoggingEnd(loggingMonitor); } } diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/CreatedDateColumnTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/CreatedDateColumnTest.java index 4ef3b6ee3dc..81469ee332b 100644 --- a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/CreatedDateColumnTest.java +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/CreatedDateColumnTest.java @@ -13,7 +13,9 @@ import org.eclipse.osee.ats.column.AssigneeColumn; import org.eclipse.osee.ats.column.CreatedDateColumn; import org.eclipse.osee.ats.test.util.DemoTestUtil; import org.eclipse.osee.framework.jdk.core.util.DateUtil; +import org.eclipse.osee.framework.logging.SevereLoggingMonitor; import org.eclipse.osee.support.test.util.DemoWorkType; +import org.eclipse.osee.support.test.util.TestUtil; /** * @tests CreatedDateColumn @@ -23,6 +25,8 @@ public class CreatedDateColumnTest { @org.junit.Test public void testGetColumnText() throws Exception { + SevereLoggingMonitor loggingMonitor = TestUtil.severeLoggingStart(); + TeamWorkFlowArtifact codeArt = (TeamWorkFlowArtifact) DemoTestUtil.getUncommittedActionWorkflow(DemoWorkType.Code); Assert.assertNotNull(CreatedDateColumn.getInstance().getColumnText(codeArt, AssigneeColumn.getInstance(), 0)); @@ -32,6 +36,8 @@ public class CreatedDateColumnTest { ActionArtifact actionArt = codeArt.getParentActionArtifact(); Assert.assertEquals(DateUtil.getMMDDYYHHMM(date), CreatedDateColumn.getDateStr(actionArt)); + + TestUtil.severeLoggingEnd(loggingMonitor); } } diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/DeadlineColumnTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/DeadlineColumnTest.java index 90d3d59edb0..e623c59f8bf 100644 --- a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/DeadlineColumnTest.java +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/DeadlineColumnTest.java @@ -14,7 +14,9 @@ import org.eclipse.osee.ats.column.DeadlineColumn; import org.eclipse.osee.ats.test.util.DemoTestUtil; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.framework.jdk.core.util.DateUtil; +import org.eclipse.osee.framework.logging.SevereLoggingMonitor; import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; +import org.eclipse.osee.support.test.util.TestUtil; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -32,6 +34,8 @@ public class DeadlineColumnTest { @org.junit.Test public void testGetColumnText() throws Exception { + SevereLoggingMonitor loggingMonitor = TestUtil.severeLoggingStart(); + SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), CancelledDateColumnTest.class.getSimpleName()); TeamWorkFlowArtifact teamArt = @@ -63,5 +67,6 @@ public class DeadlineColumnTest { Assert.assertTrue(DeadlineColumn.isDeadlineAlerting(teamArt).isFalse()); Assert.assertNull(DeadlineColumn.getInstance().getColumnImage(teamArt, DeadlineColumn.getInstance(), 0)); + TestUtil.severeLoggingEnd(loggingMonitor); } } diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/DescriptionColumnTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/DescriptionColumnTest.java index fca32192cdc..343132b950a 100644 --- a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/DescriptionColumnTest.java +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/DescriptionColumnTest.java @@ -11,7 +11,9 @@ import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.column.AssigneeColumn; import org.eclipse.osee.ats.column.DescriptionColumn; import org.eclipse.osee.ats.test.util.DemoTestUtil; +import org.eclipse.osee.framework.logging.SevereLoggingMonitor; import org.eclipse.osee.support.test.util.DemoWorkType; +import org.eclipse.osee.support.test.util.TestUtil; /** * @tests DescriptionColumn @@ -21,6 +23,8 @@ public class DescriptionColumnTest { @org.junit.Test public void testGetColumnText() throws Exception { + SevereLoggingMonitor loggingMonitor = TestUtil.severeLoggingStart(); + TeamWorkFlowArtifact reqArt = (TeamWorkFlowArtifact) DemoTestUtil.getUncommittedActionWorkflow(DemoWorkType.Requirements); Assert.assertEquals("Problem with the Diagram View", @@ -30,6 +34,7 @@ public class DescriptionColumnTest { Assert.assertEquals("Problem with the Diagram View", DescriptionColumn.getInstance().getColumnText(actionArt, AssigneeColumn.getInstance(), 0)); + TestUtil.severeLoggingEnd(loggingMonitor); } } diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/EstimatedHoursColumnTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/EstimatedHoursColumnTest.java index 7fc789c674d..38184f3e845 100644 --- a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/EstimatedHoursColumnTest.java +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/EstimatedHoursColumnTest.java @@ -16,8 +16,10 @@ import org.eclipse.osee.ats.column.EstimatedHoursColumn; import org.eclipse.osee.ats.test.util.DemoTestUtil; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.ats.util.widgets.ReviewManager; +import org.eclipse.osee.framework.logging.SevereLoggingMonitor; import org.eclipse.osee.framework.skynet.core.UserManager; import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; +import org.eclipse.osee.support.test.util.TestUtil; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -35,6 +37,8 @@ public class EstimatedHoursColumnTest { @org.junit.Test public void testGetDateAndStrAndColumnText() throws Exception { + SevereLoggingMonitor loggingMonitor = TestUtil.severeLoggingStart(); + SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), EstimatedHoursColumnTest.class.getSimpleName()); TeamWorkFlowArtifact teamArt1 = @@ -107,5 +111,6 @@ public class EstimatedHoursColumnTest { Assert.assertEquals(0.1, EstimatedHoursColumn.getEstimatedHours(taskArt2)); Assert.assertEquals(4.0, EstimatedHoursColumn.getEstimatedHours(peerArt)); + TestUtil.severeLoggingEnd(loggingMonitor); } } diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/GroupsColumnTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/GroupsColumnTest.java index ddefcc7c410..c41b8dfec28 100644 --- a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/GroupsColumnTest.java +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/GroupsColumnTest.java @@ -11,7 +11,9 @@ import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.column.AssigneeColumn; import org.eclipse.osee.ats.column.GroupsColumn; import org.eclipse.osee.ats.test.util.DemoTestUtil; +import org.eclipse.osee.framework.logging.SevereLoggingMonitor; import org.eclipse.osee.support.test.util.DemoWorkType; +import org.eclipse.osee.support.test.util.TestUtil; /** * @tests GroupsColumn @@ -21,6 +23,8 @@ public class GroupsColumnTest { @org.junit.Test public void testGetColumnText() throws Exception { + SevereLoggingMonitor loggingMonitor = TestUtil.severeLoggingStart(); + TeamWorkFlowArtifact reqArt = (TeamWorkFlowArtifact) DemoTestUtil.getUncommittedActionWorkflow(DemoWorkType.Requirements); Assert.assertEquals("Test Group", @@ -30,6 +34,7 @@ public class GroupsColumnTest { Assert.assertEquals("Test Group", GroupsColumn.getInstance().getColumnText(actionArt, AssigneeColumn.getInstance(), 0)); + TestUtil.severeLoggingEnd(loggingMonitor); } } diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/NumberOfTasksAndInWorkTasksColumnsTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/NumberOfTasksAndInWorkTasksColumnsTest.java index f9e06950ec8..d259f902bc5 100644 --- a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/NumberOfTasksAndInWorkTasksColumnsTest.java +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/NumberOfTasksAndInWorkTasksColumnsTest.java @@ -15,9 +15,11 @@ import org.eclipse.osee.ats.column.NumberOfTasksRemainingColumn; import org.eclipse.osee.ats.test.util.DemoTestUtil; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.ats.util.TransitionOption; +import org.eclipse.osee.framework.logging.SevereLoggingMonitor; import org.eclipse.osee.framework.skynet.core.User; import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; import org.eclipse.osee.support.test.util.DemoWorkType; +import org.eclipse.osee.support.test.util.TestUtil; /** * @tests NumberOfTasksColumn @@ -28,6 +30,8 @@ public class NumberOfTasksAndInWorkTasksColumnsTest { @org.junit.Test public void getColumnText() throws Exception { + SevereLoggingMonitor loggingMonitor = TestUtil.severeLoggingStart(); + TeamWorkFlowArtifact codeArt = (TeamWorkFlowArtifact) DemoTestUtil.getUncommittedActionWorkflow(DemoWorkType.Code); Assert.assertEquals("6", NumberOfTasksColumn.getInstance().getColumnText(codeArt, null, 0)); @@ -60,5 +64,6 @@ public class NumberOfTasksAndInWorkTasksColumnsTest { ActionArtifact actionArt = codeArt.getParentActionArtifact(); Assert.assertEquals("6", NumberOfTasksColumn.getInstance().getColumnText(actionArt, null, 0)); + TestUtil.severeLoggingEnd(loggingMonitor); } } diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/OriginatorColumnTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/OriginatorColumnTest.java index e0be002bf91..585d9c4541e 100644 --- a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/OriginatorColumnTest.java +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/OriginatorColumnTest.java @@ -11,9 +11,11 @@ import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.column.AssigneeColumn; import org.eclipse.osee.ats.column.OriginatorColumn; import org.eclipse.osee.ats.test.util.DemoTestUtil; +import org.eclipse.osee.framework.logging.SevereLoggingMonitor; import org.eclipse.osee.framework.skynet.core.UserManager; import org.eclipse.osee.support.test.util.DemoUsers; import org.eclipse.osee.support.test.util.DemoWorkType; +import org.eclipse.osee.support.test.util.TestUtil; /** * @tests OriginatorColumn @@ -23,6 +25,8 @@ public class OriginatorColumnTest { @org.junit.Test public void testGetColumnText() throws Exception { + SevereLoggingMonitor loggingMonitor = TestUtil.severeLoggingStart(); + TeamWorkFlowArtifact reqArt = (TeamWorkFlowArtifact) DemoTestUtil.getUncommittedActionWorkflow(DemoWorkType.Requirements); Assert.assertEquals(UserManager.getUser(DemoUsers.Joe_Smith).getName(), @@ -32,6 +36,7 @@ public class OriginatorColumnTest { Assert.assertEquals(UserManager.getUser(DemoUsers.Joe_Smith).getName(), OriginatorColumn.getInstance().getColumnText(actionArt, AssigneeColumn.getInstance(), 0)); + TestUtil.severeLoggingEnd(loggingMonitor); } } diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/ParentStateAndIdColumnTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/ParentStateAndIdColumnTest.java index bec4601d4d9..0cdf813b924 100644 --- a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/ParentStateAndIdColumnTest.java +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/ParentStateAndIdColumnTest.java @@ -15,7 +15,9 @@ import org.eclipse.osee.ats.column.ParentStateColumn; import org.eclipse.osee.ats.test.util.DemoTestUtil; import org.eclipse.osee.ats.util.AtsRelationTypes; import org.eclipse.osee.ats.util.TeamState; +import org.eclipse.osee.framework.logging.SevereLoggingMonitor; import org.eclipse.osee.support.test.util.DemoWorkType; +import org.eclipse.osee.support.test.util.TestUtil; /** * @tests ParentStateColumn @@ -26,6 +28,8 @@ public class ParentStateAndIdColumnTest { @org.junit.Test public void testGetColumnText() throws Exception { + SevereLoggingMonitor loggingMonitor = TestUtil.severeLoggingStart(); + TeamWorkFlowArtifact codeArt = (TeamWorkFlowArtifact) DemoTestUtil.getUncommittedActionWorkflow(DemoWorkType.Code); ActionArtifact actionArt = codeArt.getParentActionArtifact(); @@ -43,6 +47,7 @@ public class ParentStateAndIdColumnTest { Assert.assertEquals("", ParentStateColumn.getInstance().getColumnText(actionArt, AssigneeColumn.getInstance(), 0)); + TestUtil.severeLoggingEnd(loggingMonitor); } } diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/PeerToPeerReviewColumnsTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/PeerToPeerReviewColumnsTest.java index 81cc068cfbc..adb2967bb22 100644 --- a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/PeerToPeerReviewColumnsTest.java +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/PeerToPeerReviewColumnsTest.java @@ -26,9 +26,11 @@ import org.eclipse.osee.ats.util.widgets.defect.DefectItem.InjectionActivity; import org.eclipse.osee.ats.util.widgets.defect.DefectItem.Severity; import org.eclipse.osee.ats.util.widgets.role.UserRole; import org.eclipse.osee.ats.util.widgets.role.UserRole.Role; +import org.eclipse.osee.framework.logging.SevereLoggingMonitor; import org.eclipse.osee.framework.skynet.core.UserManager; import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; import org.eclipse.osee.support.test.util.DemoUsers; +import org.eclipse.osee.support.test.util.TestUtil; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -46,6 +48,8 @@ public class PeerToPeerReviewColumnsTest { @org.junit.Test public void testGetColumnText() throws Exception { + SevereLoggingMonitor loggingMonitor = TestUtil.severeLoggingStart(); + SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), PeerToPeerReviewColumnsTest.class.getSimpleName()); TeamWorkFlowArtifact teamArt = @@ -122,5 +126,7 @@ public class PeerToPeerReviewColumnsTest { Arrays.asList(DemoUsers.Kay_Jones.getName() + "; " + DemoUsers.Joe_Smith.getName(), DemoUsers.Joe_Smith.getName() + "; " + DemoUsers.Kay_Jones.getName()); Assert.assertTrue(results.contains(ReviewReviewerColumn.getInstance().getColumnText(peerArt, null, 0))); + + TestUtil.severeLoggingEnd(loggingMonitor); } } diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/PriorityColumnTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/PriorityColumnTest.java index c770c85f5d0..9241cff8b76 100644 --- a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/PriorityColumnTest.java +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/PriorityColumnTest.java @@ -14,7 +14,9 @@ import org.eclipse.osee.ats.column.AssigneeColumn; import org.eclipse.osee.ats.column.PriorityColumn; import org.eclipse.osee.ats.test.util.DemoTestUtil; import org.eclipse.osee.ats.util.AtsRelationTypes; +import org.eclipse.osee.framework.logging.SevereLoggingMonitor; import org.eclipse.osee.support.test.util.DemoWorkType; +import org.eclipse.osee.support.test.util.TestUtil; /** * @tests PriorityColumn @@ -24,6 +26,8 @@ public class PriorityColumnTest { @org.junit.Test public void testGetColumnText() throws Exception { + SevereLoggingMonitor loggingMonitor = TestUtil.severeLoggingStart(); + TeamWorkFlowArtifact reqArt = (TeamWorkFlowArtifact) DemoTestUtil.getUncommittedActionWorkflow(DemoWorkType.Requirements); Assert.assertEquals("1", PriorityColumn.getInstance().getColumnText(reqArt, AssigneeColumn.getInstance(), 0)); @@ -43,6 +47,7 @@ public class PriorityColumnTest { ActionArtifact actionArt = reqArt.getParentActionArtifact(); Assert.assertEquals("1", PriorityColumn.getInstance().getColumnText(actionArt, AssigneeColumn.getInstance(), 0)); + TestUtil.severeLoggingEnd(loggingMonitor); } } diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/RelatedToStateColumnTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/RelatedToStateColumnTest.java index eb087c71451..ecb65e7267b 100644 --- a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/RelatedToStateColumnTest.java +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/RelatedToStateColumnTest.java @@ -14,7 +14,9 @@ import org.eclipse.osee.ats.column.AssigneeColumn; import org.eclipse.osee.ats.column.RelatedToStateColumn; import org.eclipse.osee.ats.test.util.DemoTestUtil; import org.eclipse.osee.ats.util.AtsRelationTypes; +import org.eclipse.osee.framework.logging.SevereLoggingMonitor; import org.eclipse.osee.support.test.util.DemoWorkType; +import org.eclipse.osee.support.test.util.TestUtil; /** * @tests RelatedToStateColumn @@ -24,6 +26,7 @@ public class RelatedToStateColumnTest { @org.junit.Test public void testGetColumnText() throws Exception { + SevereLoggingMonitor loggingMonitor = TestUtil.severeLoggingStart(); TeamWorkFlowArtifact codeArt = (TeamWorkFlowArtifact) DemoTestUtil.getUncommittedActionWorkflow(DemoWorkType.Code); @@ -47,6 +50,7 @@ public class RelatedToStateColumnTest { Assert.assertEquals("", RelatedToStateColumn.getInstance().getColumnText(actionArt, AssigneeColumn.getInstance(), 0)); + TestUtil.severeLoggingEnd(loggingMonitor); } } diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/StateColumnTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/StateColumnTest.java index 5646c6c4d27..a980012e2f3 100644 --- a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/StateColumnTest.java +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/StateColumnTest.java @@ -12,7 +12,9 @@ import org.eclipse.osee.ats.column.AssigneeColumn; import org.eclipse.osee.ats.column.StateColumn; import org.eclipse.osee.ats.test.util.DemoTestUtil; import org.eclipse.osee.ats.util.TeamState; +import org.eclipse.osee.framework.logging.SevereLoggingMonitor; import org.eclipse.osee.support.test.util.DemoWorkType; +import org.eclipse.osee.support.test.util.TestUtil; /** * @tests StateColumn @@ -22,6 +24,8 @@ public class StateColumnTest { @org.junit.Test public void testGetColumnText() throws Exception { + SevereLoggingMonitor loggingMonitor = TestUtil.severeLoggingStart(); + TeamWorkFlowArtifact reqArt = (TeamWorkFlowArtifact) DemoTestUtil.getUncommittedActionWorkflow(DemoWorkType.Requirements); Assert.assertEquals(TeamState.Implement.getPageName(), @@ -31,6 +35,7 @@ public class StateColumnTest { Assert.assertEquals(TeamState.Implement.getPageName(), StateColumn.getInstance().getColumnText(actionArt, AssigneeColumn.getInstance(), 0)); + TestUtil.severeLoggingEnd(loggingMonitor); } } diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/TargetedVersionColumnTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/TargetedVersionColumnTest.java index 8aa98e1d7d7..84ca4be09f9 100644 --- a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/TargetedVersionColumnTest.java +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/TargetedVersionColumnTest.java @@ -11,8 +11,10 @@ import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.column.AssigneeColumn; import org.eclipse.osee.ats.column.TargetedVersionColumn; import org.eclipse.osee.ats.test.util.DemoTestUtil; +import org.eclipse.osee.framework.logging.SevereLoggingMonitor; import org.eclipse.osee.support.test.util.DemoSawBuilds; import org.eclipse.osee.support.test.util.DemoWorkType; +import org.eclipse.osee.support.test.util.TestUtil; /** * @tests TargetedVersionColumn @@ -22,6 +24,8 @@ public class TargetedVersionColumnTest { @org.junit.Test public void testGetColumnText() throws Exception { + SevereLoggingMonitor loggingMonitor = TestUtil.severeLoggingStart(); + TeamWorkFlowArtifact reqArt = (TeamWorkFlowArtifact) DemoTestUtil.getUncommittedActionWorkflow(DemoWorkType.Requirements); Assert.assertEquals(DemoSawBuilds.SAW_Bld_2.getName(), @@ -44,6 +48,7 @@ public class TargetedVersionColumnTest { Assert.assertEquals("", TargetedVersionColumn.getInstance().getColumnText(actionArt, AssigneeColumn.getInstance(), 0)); + TestUtil.severeLoggingEnd(loggingMonitor); } } diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/TeamColumnTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/TeamColumnTest.java index 99356d5c6c6..6495769196b 100644 --- a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/TeamColumnTest.java +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/TeamColumnTest.java @@ -11,7 +11,9 @@ import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.column.AssigneeColumn; import org.eclipse.osee.ats.column.TeamColumn; import org.eclipse.osee.ats.test.util.DemoTestUtil; +import org.eclipse.osee.framework.logging.SevereLoggingMonitor; import org.eclipse.osee.support.test.util.DemoWorkType; +import org.eclipse.osee.support.test.util.TestUtil; /** * @tests TeamColumn @@ -21,6 +23,8 @@ public class TeamColumnTest { @org.junit.Test public void testGetColumnText() throws Exception { + SevereLoggingMonitor loggingMonitor = TestUtil.severeLoggingStart(); + TeamWorkFlowArtifact reqArt = (TeamWorkFlowArtifact) DemoTestUtil.getUncommittedActionWorkflow(DemoWorkType.Requirements); Assert.assertEquals("SAW Requirements", @@ -33,6 +37,7 @@ public class TeamColumnTest { ActionArtifact actionArt = reqArt.getParentActionArtifact(); Assert.assertEquals("", TeamColumn.getInstance().getColumnText(actionArt, AssigneeColumn.getInstance(), 0)); + TestUtil.severeLoggingEnd(loggingMonitor); } } diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/TypeColumnTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/TypeColumnTest.java index 01940d1d32d..c1ab62b3e59 100644 --- a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/TypeColumnTest.java +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/column/TypeColumnTest.java @@ -11,7 +11,9 @@ import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; import org.eclipse.osee.ats.column.AssigneeColumn; import org.eclipse.osee.ats.column.TypeColumn; import org.eclipse.osee.ats.test.util.DemoTestUtil; +import org.eclipse.osee.framework.logging.SevereLoggingMonitor; import org.eclipse.osee.support.test.util.DemoWorkType; +import org.eclipse.osee.support.test.util.TestUtil; /** * @tests TypeColumn @@ -21,6 +23,8 @@ public class TypeColumnTest { @org.junit.Test public void testGetColumnText() throws Exception { + SevereLoggingMonitor loggingMonitor = TestUtil.severeLoggingStart(); + TeamWorkFlowArtifact reqArt = (TeamWorkFlowArtifact) DemoTestUtil.getUncommittedActionWorkflow(DemoWorkType.Requirements); Assert.assertEquals("SAW Requirements Workflow", @@ -34,6 +38,7 @@ public class TypeColumnTest { ActionArtifact actionArt = reqArt.getParentActionArtifact(); Assert.assertEquals("Action", TypeColumn.getInstance().getColumnText(actionArt, AssigneeColumn.getInstance(), 0)); + TestUtil.severeLoggingEnd(loggingMonitor); } } diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/editor/stateItem/AtsDecisionReviewDecisionStateItemTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/editor/stateItem/AtsDecisionReviewDecisionStateItemTest.java new file mode 100644 index 00000000000..c201e237664 --- /dev/null +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/editor/stateItem/AtsDecisionReviewDecisionStateItemTest.java @@ -0,0 +1,131 @@ +/* + * Created on Jan 24, 2011 + * + * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE + */ +package org.eclipse.osee.ats.test.editor.stateItem; + +import static org.junit.Assert.assertFalse; +import java.util.Collection; +import junit.framework.Assert; +import org.eclipse.osee.ats.artifact.AtsAttributeTypes; +import org.eclipse.osee.ats.artifact.DecisionReviewArtifact; +import org.eclipse.osee.ats.artifact.DecisionReviewState; +import org.eclipse.osee.ats.editor.stateItem.AtsDecisionReviewDecisionStateItem; +import org.eclipse.osee.ats.test.util.DemoTestUtil; +import org.eclipse.osee.ats.util.AtsArtifactTypes; +import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.util.widgets.ReviewManager; +import org.eclipse.osee.ats.workdef.StateDefinition; +import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.skynet.core.User; +import org.eclipse.osee.framework.skynet.core.UserManager; +import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager; +import org.eclipse.osee.framework.ui.plugin.util.Result; +import org.eclipse.osee.framework.ui.skynet.widgets.XComboDam; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * Test Case for {@link AtsDecisionReviewDecisionStateItem} + * + * @author Donald G. Dunne + */ +public class AtsDecisionReviewDecisionStateItemTest { + + public static DecisionReviewArtifact decRevArt; + + @Before + public void setUp() throws Exception { + // This test should only be run on test db + assertFalse("Test should not be run in production db", AtsUtil.isProductionDb()); + + if (decRevArt == null) { + // setup fake review artifact with decision options set + decRevArt = + (DecisionReviewArtifact) ArtifactTypeManager.addArtifact(AtsArtifactTypes.DecisionReview, + AtsUtil.getAtsBranch()); + decRevArt.setName(getClass().getSimpleName()); + decRevArt.setSoleAttributeValue(AtsAttributeTypes.DecisionReviewOptions, + ReviewManager.getDecisionReviewOptionsString(ReviewManager.getDefaultDecisionReviewOptions())); + decRevArt.persist(); + } + } + + @BeforeClass + @AfterClass + public static void testCleanup() throws Exception { + DemoTestUtil.cleanupSimpleTest(AtsDecisionReviewDecisionStateItemTest.class.getSimpleName()); + } + + @Test + public void testXWidgetCreating() throws OseeCoreException { + Assert.assertNotNull(decRevArt); + + // setup fake combo that will hold values + XComboDam decisionComboDam = new XComboDam("Decision"); + // set combo values an verify they got set + decisionComboDam.setDataStrings(new String[] {"One", "Two", "Three"}); + StateDefinition stateDef = new StateDefinition("Decision"); + Assert.assertEquals("Two", decisionComboDam.getDisplayArray()[2]); + + // make call to state item that should set options based on artifact's attribute value + AtsDecisionReviewDecisionStateItem stateItem = new AtsDecisionReviewDecisionStateItem(); + Result result = stateItem.xWidgetCreating(decisionComboDam, null, stateDef, decRevArt, null, true); + + // verify no errors and options are as specified in artifact's attribute + Assert.assertTrue(result.getText(), result.isTrue()); + Assert.assertEquals("Yes", decisionComboDam.getDisplayArray()[1]); + Assert.assertEquals("No", decisionComboDam.getDisplayArray()[2]); + } + + @Test + public void testGetOverrideTransitionToAssignees() throws OseeCoreException { + Assert.assertNotNull(decRevArt); + + // setup fake combo that will hold values + XComboDam decisionComboDam = new XComboDam("Decision"); + // set combo values an verify they got set + decisionComboDam.setDataStrings(new String[] {"Yes", "No"}); + + // Set Yes + decisionComboDam.set(1); + + AtsDecisionReviewDecisionStateItem stateItem = new AtsDecisionReviewDecisionStateItem(); + Collection users = stateItem.getOverrideTransitionToAssignees(decRevArt, decisionComboDam); + Assert.assertEquals(1, users.size()); + Assert.assertEquals(UserManager.getUser(), users.iterator().next()); + + // Set No + decisionComboDam.set(2); + + users = stateItem.getOverrideTransitionToAssignees(decRevArt, decisionComboDam); + Assert.assertTrue(users.isEmpty()); + } + + @Test + public void testGetOverrideTransitionToStateName() throws OseeCoreException { + Assert.assertNotNull(decRevArt); + + // setup fake combo that will hold values + XComboDam decisionComboDam = new XComboDam("Decision"); + // set combo values an verify they got set + decisionComboDam.setDataStrings(new String[] {"Yes", "No"}); + + // Set Yes + decisionComboDam.set(1); + + AtsDecisionReviewDecisionStateItem stateItem = new AtsDecisionReviewDecisionStateItem(); + String toStateName = stateItem.getOverrideTransitionToStateName(decRevArt, decisionComboDam); + Assert.assertEquals(DecisionReviewState.Followup.getPageName(), toStateName); + + // Set No + decisionComboDam.set(2); + + toStateName = stateItem.getOverrideTransitionToStateName(decRevArt, decisionComboDam); + Assert.assertEquals(DecisionReviewState.Completed.getPageName(), toStateName); + } + +} diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/editor/stateItem/AtsDecisionReviewPrepareStateItemTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/editor/stateItem/AtsDecisionReviewPrepareStateItemTest.java new file mode 100644 index 00000000000..754baec6fcc --- /dev/null +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/editor/stateItem/AtsDecisionReviewPrepareStateItemTest.java @@ -0,0 +1,88 @@ +/* + * Created on Jan 24, 2011 + * + * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE + */ +package org.eclipse.osee.ats.test.editor.stateItem; + +import static org.junit.Assert.assertFalse; +import java.util.Arrays; +import junit.framework.Assert; +import org.eclipse.osee.ats.artifact.AtsAttributeTypes; +import org.eclipse.osee.ats.artifact.DecisionReviewArtifact; +import org.eclipse.osee.ats.artifact.DecisionReviewState; +import org.eclipse.osee.ats.editor.stateItem.AtsDecisionReviewPrepareStateItem; +import org.eclipse.osee.ats.test.util.DemoTestUtil; +import org.eclipse.osee.ats.util.AtsArtifactTypes; +import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.util.widgets.ReviewManager; +import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.skynet.core.UserManager; +import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager; +import org.eclipse.osee.framework.ui.plugin.util.Result; +import org.eclipse.osee.framework.ui.skynet.widgets.workflow.IWorkPage; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * Test Case for {@link AtsDecisionReviewPrepareStateItem} + * + * @author Donald G. Dunne + */ +public class AtsDecisionReviewPrepareStateItemTest { + + public static DecisionReviewArtifact decRevArt; + + @Before + public void setUp() throws Exception { + // This test should only be run on test db + assertFalse("Test should not be run in production db", AtsUtil.isProductionDb()); + + if (decRevArt == null) { + // setup fake review artifact with decision options set + decRevArt = + (DecisionReviewArtifact) ArtifactTypeManager.addArtifact(AtsArtifactTypes.DecisionReview, + AtsUtil.getAtsBranch()); + decRevArt.setName(getClass().getSimpleName()); + decRevArt.persist(); + } + } + + @BeforeClass + @AfterClass + public static void testCleanup() throws Exception { + DemoTestUtil.cleanupSimpleTest(AtsDecisionReviewPrepareStateItemTest.class.getSimpleName()); + } + + @Test + public void testTransitioning() throws OseeCoreException { + Assert.assertNotNull(decRevArt); + + // set valid options + String decisionOptionStr = + ReviewManager.getDecisionReviewOptionsString(ReviewManager.getDefaultDecisionReviewOptions()); + decRevArt.setSoleAttributeValue(AtsAttributeTypes.DecisionReviewOptions, decisionOptionStr); + decRevArt.persist(); + + IWorkPage fromState = decRevArt.getWorkDefinition().getStateByName(DecisionReviewState.Prepare.getPageName()); + IWorkPage toState = decRevArt.getWorkDefinition().getStateByName(DecisionReviewState.Decision.getPageName()); + + // make call to state item that should set options based on artifact's attribute value + AtsDecisionReviewPrepareStateItem stateItem = new AtsDecisionReviewPrepareStateItem(); + Result result = stateItem.transitioning(decRevArt, fromState, toState, Arrays.asList(UserManager.getUser())); + + // verify no errors + Assert.assertTrue(result.getText(), result.isTrue()); + + // set invalid options; NoState is invalid, should only be Completed or FollowUp + decisionOptionStr = decisionOptionStr.replaceFirst("Completed", "NoState"); + decRevArt.setSoleAttributeValue(AtsAttributeTypes.DecisionReviewOptions, decisionOptionStr); + decRevArt.persist(); + result = stateItem.transitioning(decRevArt, fromState, toState, Arrays.asList(UserManager.getUser())); + Assert.assertFalse(result.getText(), result.isTrue()); + + } + +} diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/editor/stateItem/AtsForceAssigneesToTeamLeadsStateItemTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/editor/stateItem/AtsForceAssigneesToTeamLeadsStateItemTest.java new file mode 100644 index 00000000000..ce9fea744a6 --- /dev/null +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/editor/stateItem/AtsForceAssigneesToTeamLeadsStateItemTest.java @@ -0,0 +1,100 @@ +/* + * Created on Jan 24, 2011 + * + * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE + */ +package org.eclipse.osee.ats.test.editor.stateItem; + +import static org.junit.Assert.assertFalse; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import junit.framework.Assert; +import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; +import org.eclipse.osee.ats.editor.stateItem.AtsForceAssigneesToTeamLeadsStateItem; +import org.eclipse.osee.ats.test.util.DemoTestUtil; +import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.util.TeamState; +import org.eclipse.osee.ats.workdef.RuleDefinition; +import org.eclipse.osee.ats.workdef.RuleDefinitionOption; +import org.eclipse.osee.ats.workdef.StateDefinition; +import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.skynet.core.UserManager; +import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; +import org.eclipse.osee.framework.ui.skynet.widgets.workflow.IWorkPage; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * Test Case for {@link AtsForceAssigneesToTeamLeadsStateItem} + * + * @author Donald G. Dunne + */ +public class AtsForceAssigneesToTeamLeadsStateItemTest { + + public static TeamWorkFlowArtifact teamArt; + + @Before + public void setUp() throws Exception { + // This test should only be run on test db + assertFalse("Test should not be run in production db", AtsUtil.isProductionDb()); + + if (teamArt == null) { + SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), getClass().getSimpleName()); + teamArt = DemoTestUtil.createSimpleAction(getClass().getSimpleName(), transaction); + transaction.execute(); + } + } + + @BeforeClass + @AfterClass + public static void testCleanup() throws Exception { + // Test adds the atsForceAssigneesToTeamLeads; remove it before and after test + if (teamArt != null) { + StateDefinition authStateDef = teamArt.getWorkDefinition().getStateByName(TeamState.Authorize.getPageName()); + List rules = authStateDef.getRules(); + List toRemove = new ArrayList(); + for (RuleDefinition ruleDef : rules) { + if (ruleDef.getName().equals(RuleDefinitionOption.ForceAssigneesToTeamLeads.name())) { + toRemove.add(ruleDef); + } + } + authStateDef.getRules().removeAll(toRemove); + } + + DemoTestUtil.cleanupSimpleTest(AtsForceAssigneesToTeamLeadsStateItemTest.class.getSimpleName()); + } + + @Test + public void testTransitioned() throws OseeCoreException { + Assert.assertNotNull(teamArt); + + // assignee should be Joe Smith + Assert.assertEquals(1, teamArt.getStateMgr().getAssignees().size()); + Assert.assertEquals(UserManager.getUserByName("Joe Smith"), + teamArt.getStateMgr().getAssignees().iterator().next()); + + // set assignee to Alex Kay + teamArt.getStateMgr().setAssignee(UserManager.getUserByName("Alex Kay")); + teamArt.persist(); + Assert.assertEquals(1, teamArt.getStateMgr().getAssignees().size()); + Assert.assertEquals(UserManager.getUserByName("Alex Kay"), teamArt.getStateMgr().getAssignees().iterator().next()); + + IWorkPage fromState = teamArt.getWorkDefinition().getStateByName(TeamState.Analyze.getPageName()); + IWorkPage toState = teamArt.getWorkDefinition().getStateByName(TeamState.Authorize.getPageName()); + + StateDefinition authStateDef = teamArt.getWorkDefinition().getStateByName(TeamState.Authorize.getPageName()); + authStateDef.getRules().add(new RuleDefinition(RuleDefinitionOption.ForceAssigneesToTeamLeads)); + + // make call to state item that should set options based on artifact's attribute value + AtsForceAssigneesToTeamLeadsStateItem stateItem = new AtsForceAssigneesToTeamLeadsStateItem(); + stateItem.transitioned(teamArt, fromState, toState, Arrays.asList(UserManager.getUser()), null); + + // assignee should be Joe Smith + Assert.assertEquals(1, teamArt.getStateMgr().getAssignees().size()); + Assert.assertEquals(UserManager.getUserByName("Joe Smith"), + teamArt.getStateMgr().getAssignees().iterator().next()); + } +} diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/editor/stateItem/AtsHandleAddReviewRuleStateItemTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/editor/stateItem/AtsHandleAddReviewRuleStateItemTest.java new file mode 100644 index 00000000000..bb1a4bbab2b --- /dev/null +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/editor/stateItem/AtsHandleAddReviewRuleStateItemTest.java @@ -0,0 +1,27 @@ +/* + * Created on Jan 25, 2011 + * + * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE + */ +package org.eclipse.osee.ats.test.editor.stateItem; + +import junit.framework.Assert; +import org.eclipse.osee.ats.editor.stateItem.AtsHandleAddReviewRuleStateItem; +import org.eclipse.osee.ats.test.AtsTest_Demo_Suite; +import org.junit.Test; + +/** + * Test Case for {@link AtsHandleAddReviewRuleStateItem}
+ *
+ * Test for LbaReqCompletedStateItem provided through {@link AtsTest_Demo_Suite} + * + * @author Donald G. Dunne + */ +public class AtsHandleAddReviewRuleStateItemTest { + + @Test + public void test() { + Assert.assertTrue(true); + } + +} diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/editor/stateItem/AtsPeerToPeerReviewPrepareStateItemTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/editor/stateItem/AtsPeerToPeerReviewPrepareStateItemTest.java new file mode 100644 index 00000000000..d49da93ec44 --- /dev/null +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/editor/stateItem/AtsPeerToPeerReviewPrepareStateItemTest.java @@ -0,0 +1,92 @@ +/* + * Created on Jan 24, 2011 + * + * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE + */ +package org.eclipse.osee.ats.test.editor.stateItem; + +import static org.junit.Assert.assertFalse; +import junit.framework.Assert; +import org.eclipse.osee.ats.artifact.AtsAttributeTypes; +import org.eclipse.osee.ats.artifact.PeerToPeerReviewArtifact; +import org.eclipse.osee.ats.artifact.PeerToPeerReviewState; +import org.eclipse.osee.ats.editor.stateItem.AtsPeerToPeerReviewPrepareStateItem; +import org.eclipse.osee.ats.test.util.DemoTestUtil; +import org.eclipse.osee.ats.util.AtsArtifactTypes; +import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.workdef.StateDefinition; +import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager; +import org.eclipse.osee.framework.ui.skynet.widgets.XComboDam; +import org.eclipse.osee.framework.ui.swt.Displays; +import org.eclipse.osee.support.test.util.DemoActionableItems; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Composite; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * Test Case for {@link AtsPeerToPeerReviewPrepareStateItem} + * + * @author Donald G. Dunne + */ +public class AtsPeerToPeerReviewPrepareStateItemTest { + + public static PeerToPeerReviewArtifact peerRevArt; + + @Before + public void setUp() throws Exception { + // This test should only be run on test db + assertFalse("Test should not be run in production db", AtsUtil.isProductionDb()); + + if (peerRevArt == null) { + // setup fake review artifact with decision options set + peerRevArt = + (PeerToPeerReviewArtifact) ArtifactTypeManager.addArtifact(AtsArtifactTypes.PeerToPeerReview, + AtsUtil.getAtsBranch()); + peerRevArt.setName(getClass().getSimpleName()); + // Setup actionable item so don't get error that there is no parent team workflow + peerRevArt.getActionableItemsDam().addActionableItem( + DemoTestUtil.getActionableItem(DemoActionableItems.CIS_Code)); + peerRevArt.persist(); + } + } + + @BeforeClass + @AfterClass + public static void testCleanup() throws Exception { + DemoTestUtil.cleanupSimpleTest(AtsPeerToPeerReviewPrepareStateItemTest.class.getSimpleName()); + } + + @Test + public void testTransitioning() throws OseeCoreException { + Assert.assertNotNull(peerRevArt); + + // setup fake combo that will hold values + XComboDam decisionComboDam = new XComboDam(AtsAttributeTypes.ReviewBlocks.getUnqualifiedName()); + decisionComboDam.setDataStrings(new String[] {"None", "Transition", "Commit"}); + Composite comp = new Composite(Displays.getActiveShell(), SWT.None); + decisionComboDam.createWidgets(comp, SWT.NONE); + decisionComboDam.setEnabled(true); + decisionComboDam.setRequiredEntry(true); + + // verify enabled and required (Default) + Assert.assertNull(peerRevArt.getParentSMA()); // condition that causes combo to disable + Assert.assertTrue(decisionComboDam.getComboBox().isEnabled()); + Assert.assertTrue(decisionComboDam.isRequiredEntry()); + + StateDefinition reviewStateDef = + peerRevArt.getWorkDefinition().getStateByName(PeerToPeerReviewState.Prepare.getPageName()); + + // make call to state item that should + AtsPeerToPeerReviewPrepareStateItem stateItem = new AtsPeerToPeerReviewPrepareStateItem(); + stateItem.xWidgetCreated(decisionComboDam, null, reviewStateDef, peerRevArt, null, true); + + // verify the decision combo has been disabled + Assert.assertFalse(decisionComboDam.getComboBox().isEnabled()); + Assert.assertFalse(decisionComboDam.isRequiredEntry()); + + } +} diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/editor/stateItem/AtsPeerToPeerReviewReviewStateItemTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/editor/stateItem/AtsPeerToPeerReviewReviewStateItemTest.java new file mode 100644 index 00000000000..8b1389eafc1 --- /dev/null +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/editor/stateItem/AtsPeerToPeerReviewReviewStateItemTest.java @@ -0,0 +1,102 @@ +/* + * Created on Jan 24, 2011 + * + * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE + */ +package org.eclipse.osee.ats.test.editor.stateItem; + +import static org.junit.Assert.assertFalse; +import java.util.Arrays; +import junit.framework.Assert; +import org.eclipse.osee.ats.artifact.PeerToPeerReviewArtifact; +import org.eclipse.osee.ats.artifact.PeerToPeerReviewState; +import org.eclipse.osee.ats.editor.stateItem.AtsPeerToPeerReviewReviewStateItem; +import org.eclipse.osee.ats.test.util.DemoTestUtil; +import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.util.widgets.ReviewManager; +import org.eclipse.osee.ats.util.widgets.role.UserRole; +import org.eclipse.osee.ats.util.widgets.role.UserRole.Role; +import org.eclipse.osee.framework.core.exception.OseeCoreException; +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.IWorkPage; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * Test Case for {@link AtsPeerToPeerReviewReviewStateItem} + * + * @author Donald G. Dunne + */ +public class AtsPeerToPeerReviewReviewStateItemTest { + + public static PeerToPeerReviewArtifact peerRevArt; + + @Before + public void setUp() throws Exception { + // This test should only be run on test db + assertFalse("Test should not be run in production db", AtsUtil.isProductionDb()); + + if (peerRevArt == null) { + // setup fake review artifact with decision options set + peerRevArt = ReviewManager.createNewPeerToPeerReview(null, getClass().getName(), "", null); + peerRevArt.setName(getClass().getSimpleName()); + peerRevArt.persist(); + } + } + + @BeforeClass + @AfterClass + public static void testCleanup() throws Exception { + DemoTestUtil.cleanupSimpleTest(AtsPeerToPeerReviewReviewStateItemTest.class.getSimpleName()); + } + + @Test + public void testTransitioned() throws OseeCoreException { + Assert.assertNotNull(peerRevArt); + + // assignee should be user creating review + Assert.assertEquals(1, peerRevArt.getStateMgr().getAssignees().size()); + Assert.assertEquals(UserManager.getUser(), peerRevArt.getStateMgr().getAssignees().iterator().next()); + + // set roles + UserRole userRole = new UserRole(Role.Author, UserManager.getUserByName("Joe Smith")); + peerRevArt.getUserRoleManager().addOrUpdateUserRole(userRole, false, null); + userRole = new UserRole(Role.Reviewer, UserManager.getUserByName("Alex Kay")); + peerRevArt.getUserRoleManager().addOrUpdateUserRole(userRole, false, null); + peerRevArt.persist(); + + // assignee should be user roles + Assert.assertEquals(2, peerRevArt.getStateMgr().getAssignees().size()); + + // change assignees back to single user so can test transition + peerRevArt.getStateMgr().setAssignee(UserManager.getUser()); + peerRevArt.persist(); + Assert.assertEquals(1, peerRevArt.getStateMgr().getAssignees().size()); + Assert.assertEquals(UserManager.getUser(), peerRevArt.getStateMgr().getAssignees().iterator().next()); + + IWorkPage fromState = peerRevArt.getWorkDefinition().getStateByName(PeerToPeerReviewState.Prepare.getPageName()); + IWorkPage toState = peerRevArt.getWorkDefinition().getStateByName(PeerToPeerReviewState.Review.getPageName()); + + // make call to state item that should set options based on artifact's attribute value + AtsPeerToPeerReviewReviewStateItem stateItem = new AtsPeerToPeerReviewReviewStateItem(); + stateItem.transitioned(peerRevArt, fromState, toState, Arrays.asList(UserManager.getUser()), null); + + // Joe and Alex should have been added to assignees + Assert.assertEquals(2, peerRevArt.getStateMgr().getAssignees().size()); + boolean joeFound = false, alexFound = false; + for (User user : peerRevArt.getStateMgr().getAssignees()) { + if (user.getName().equals("Joe Smith")) { + joeFound = true; + } + if (user.getName().equals("Alex Kay")) { + alexFound = true; + } + } + Assert.assertTrue("Joe should have been added as assignee", joeFound); + Assert.assertTrue("Alex should have been added as assignee", alexFound); + } + +} diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/util/DemoTestUtil.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/util/DemoTestUtil.java index 6ca19276c3e..3857f2c6993 100644 --- a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/util/DemoTestUtil.java +++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/test/util/DemoTestUtil.java @@ -111,9 +111,17 @@ public class DemoTestUtil { return teamArt; } + public static Set getActionableItems(DemoActionableItems demoAI) throws OseeCoreException { + return ActionableItemArtifact.getActionableItems(Arrays.asList(demoAI.getName())); + } + + public static ActionableItemArtifact getActionableItem(DemoActionableItems demoAI) throws OseeCoreException { + return getActionableItems(demoAI).iterator().next(); + } + public static TeamWorkFlowArtifact addTeamWorkflow(ActionArtifact actionArt, String title, SkynetTransaction transaction) throws OseeCoreException { - Set actionableItems = - ActionableItemArtifact.getActionableItems(Arrays.asList(DemoActionableItems.SAW_Test.getName())); + Set actionableItems = getActionableItems(DemoActionableItems.SAW_Test); + ; Collection teamDefs = TeamDefinitionArtifact.getImpactedTeamDefs(actionableItems); ActionManager.createTeamWorkflow(actionArt, teamDefs.iterator().next(), actionableItems, diff --git a/plugins/org.eclipse.osee.ats/META-INF/MANIFEST.MF b/plugins/org.eclipse.osee.ats/META-INF/MANIFEST.MF index 5828010d478..ca9c271f4ec 100644 --- a/plugins/org.eclipse.osee.ats/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.osee.ats/META-INF/MANIFEST.MF @@ -92,5 +92,6 @@ Import-Package: javax.mail, org.eclipse.osee.framework.database.init, org.eclipse.osee.framework.logging, org.eclipse.osee.framework.ui.swt, - org.eclipse.osee.framework.ui.ws + org.eclipse.osee.framework.ui.ws, + org.eclipse.osee.support.test.util Bundle-RequiredExecutionEnvironment: JavaSE-1.6 diff --git a/plugins/org.eclipse.osee.ats/images/stateItem.gif b/plugins/org.eclipse.osee.ats/images/stateItem.gif new file mode 100644 index 00000000000..b83c170fa4e Binary files /dev/null and b/plugins/org.eclipse.osee.ats/images/stateItem.gif differ diff --git a/plugins/org.eclipse.osee.ats/plugin.xml b/plugins/org.eclipse.osee.ats/plugin.xml index e7859d75af1..28190d5ddd6 100644 --- a/plugins/org.eclipse.osee.ats/plugin.xml +++ b/plugins/org.eclipse.osee.ats/plugin.xml @@ -3,7 +3,6 @@ - diff --git a/plugins/org.eclipse.osee.ats/schema/AtsAIandTeamConfig.exsd b/plugins/org.eclipse.osee.ats/schema/AtsAIandTeamConfig.exsd deleted file mode 100644 index b24ec76b5cf..00000000000 --- a/plugins/org.eclipse.osee.ats/schema/AtsAIandTeamConfig.exsd +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - Allows graphical configuration of teams and actionable items that will be imported into the DB upon database initialization. This is a one-time shot import and does NOT provide for the capability to update and re-import. All configuration after the first database wipe should be done through OSEE's artifact editors and explorers. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [Enter the first release in which this extension point appears.] - - - - - - - - - [Enter extension point usage example here.] - - - - - - - - - [Enter API information here.] - - - - - - - - - [Enter information about supplied implementation of this extension point.] - - - - - - - - - - - - - diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/AtsImage.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/AtsImage.java index fa3e3e36322..075442782f2 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/AtsImage.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/AtsImage.java @@ -58,6 +58,7 @@ public enum AtsImage implements KeyedImage { ROLE("role.gif"), STATE("state.gif"), STATE_DEFINITION("stateDefinition.gif"), + STATE_ITEM("stateItem.gif"), SUBSCRIBED("subscribedEmail.gif"), SUBSCRIBED_OVERLAY("subscribed.gif"), TASK("task.gif"), diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AbstractWorkflowArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AbstractWorkflowArtifact.java index c40cbc5602e..887b461617a 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AbstractWorkflowArtifact.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AbstractWorkflowArtifact.java @@ -14,7 +14,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Date; -import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -39,7 +38,7 @@ import org.eclipse.osee.ats.util.SimpleTeamState; import org.eclipse.osee.ats.util.StateManager; import org.eclipse.osee.ats.util.TeamState; import org.eclipse.osee.ats.util.widgets.ReviewManager; -import org.eclipse.osee.ats.workdef.RuleDefinition; +import org.eclipse.osee.ats.workdef.RuleDefinitionOption; import org.eclipse.osee.ats.workdef.StateDefinition; import org.eclipse.osee.ats.workdef.StateXWidgetPage; import org.eclipse.osee.ats.workdef.WorkDefinition; @@ -47,8 +46,6 @@ import org.eclipse.osee.ats.workdef.WorkDefinitionFactory; import org.eclipse.osee.ats.workdef.WorkDefinitionMatch; import org.eclipse.osee.ats.workflow.ATSXWidgetOptionResolver; import org.eclipse.osee.ats.workflow.TransitionManager; -import org.eclipse.osee.ats.workflow.item.AtsStatePercentCompleteWeightRule; -import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions; import org.eclipse.osee.ats.world.IWorldViewArtifact; import org.eclipse.osee.framework.access.AccessControlManager; import org.eclipse.osee.framework.core.data.IArtifactType; @@ -237,7 +234,6 @@ public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact imple public void clearCaches() { implementersStr = null; - stateToWeight = null; } public WorkDefinition getWorkDefinition() { @@ -555,61 +551,75 @@ public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact imple /** * Return Percent Complete on all things (including children SMAs) for this SMA
*
- * percent = all state's percents / number of states (minus completed/cancelled) + * percent = all state's percents / number of states (minus completed/canceled) */ public int getPercentCompleteSMATotal() throws OseeCoreException { if (isCompletedOrCancelled()) { return 100; } - Map stateToWeightMap = getStatePercentCompleteWeight(); - if (!stateToWeightMap.isEmpty()) { + if (getWorkDefinition().isStateWeightingEnabled()) { // Calculate total percent using configured weighting int percent = 0; - for (StateDefinition state : getWorkDefinition().getStates()) { - if (!state.isCompletedPage() && !state.isCancelledPage()) { - Double weight = stateToWeightMap.get(state.getPageName()); - if (weight == null) { - weight = 0.0; - } - percent += weight * getPercentCompleteSMAStateTotal(state); + for (StateDefinition stateDef : getWorkDefinition().getStates()) { + if (!stateDef.isCompletedPage() && !stateDef.isCancelledPage()) { + double stateWeightInt = stateDef.getStateWeight(); + double weight = stateWeightInt / 100; + int percentCompleteForState = getPercentCompleteSMAStateTotal(stateDef); + percent += weight * percentCompleteForState; } } return percent; } else { - int percent = 0; - int numStates = 0; - for (StateDefinition state : getWorkDefinition().getStates()) { - if (!state.isCompletedPage() && !state.isCancelledPage()) { - percent += getPercentCompleteSMAStateTotal(state); - numStates++; - } + int percent = getPercentCompleteSMASinglePercent(); + if (percent > 0) { + return percent; } - if (numStates == 0) { - return 0; + if (isCompletedOrCancelled()) { + return 100; + } + if (getStateMgr().isAnyStateHavePercentEntered()) { + int numStates = 0; + for (StateDefinition state : getWorkDefinition().getStates()) { + if (!state.isCompletedPage() && !state.isCancelledPage()) { + percent += getPercentCompleteSMAStateTotal(state); + numStates++; + } + } + if (numStates == 0) { + return 0; + } + return percent / numStates; } - return percent / numStates; + } + return 0; } - // Cache stateToWeight mapping - private Map stateToWeight = null; - - public Map getStatePercentCompleteWeight() throws OseeCoreException { - if (stateToWeight == null) { - stateToWeight = new HashMap(); - Collection workRuleDefs = getRulesStartsWith(AtsStatePercentCompleteWeightRule.ID); - // Log error if multiple of same rule found, but keep going - if (workRuleDefs.size() > 1) { - OseeLog.log( - AtsPlugin.class, - Level.SEVERE, - "Team Definition has multiple rules of type " + AtsStatePercentCompleteWeightRule.ID + ". Only 1 allowed. Defaulting to first found."); + /** + * Add percent represented by percent attribute, percent for reviews and tasks divided by number of objects. + */ + private int getPercentCompleteSMASinglePercent() throws OseeCoreException { + int numObjects = 1; + int percent = getSoleAttributeValue(AtsAttributeTypes.PercentComplete, 0); + if (this instanceof TeamWorkFlowArtifact) { + for (AbstractReviewArtifact revArt : ReviewManager.getReviews((TeamWorkFlowArtifact) this)) { + percent += revArt.getPercentCompleteSMATotal(); + numObjects++; + } + } + if (this instanceof AbstractTaskableArtifact) { + for (TaskArtifact taskArt : ((AbstractTaskableArtifact) this).getTaskArtifacts()) { + percent += taskArt.getPercentCompleteSMATotal(); + numObjects++; } - if (workRuleDefs.size() == 1) { - stateToWeight = AtsStatePercentCompleteWeightRule.getStateWeightMap(workRuleDefs.iterator().next()); + } + if (percent > 0) { + if (numObjects == 0) { + return 0; } + return percent / numObjects; } - return stateToWeight; + return percent; } private StateMetricsData getStateMetricsData(IWorkPage teamState) throws OseeCoreException { @@ -773,7 +783,7 @@ public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact imple * Return true if sma is TeamWorkflowArtifact or review of a team workflow and it's TeamDefinitionArtifact has rule * set */ - public boolean teamDefHasWorkRule(String ruleId) throws OseeCoreException { + public boolean teamDefHasRule(RuleDefinitionOption option) throws OseeCoreException { TeamWorkFlowArtifact teamArt = null; if (isTeamWorkflow()) { teamArt = (TeamWorkFlowArtifact) this; @@ -785,36 +795,13 @@ public abstract class AbstractWorkflowArtifact extends AbstractAtsArtifact imple return false; } try { - return teamArt.getTeamDefinition().hasWorkRule(ruleId); + return teamArt.getTeamDefinition().hasRule(option); } catch (Exception ex) { OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); return false; } } - public boolean workPageHasWorkRule(String ruleId) { - return getStateDefinition().hasRule(AtsWorkDefinitions.RuleWorkItemId.atsRequireTargetedVersion.name()); - } - - public Collection getRulesStartsWith(String ruleName) throws OseeCoreException { - Set workRules = new HashSet(); - if (!Strings.isValid(ruleName)) { - return workRules; - } - if (isTeamWorkflow()) { - // Get rules from team definition - workRules.addAll(((TeamWorkFlowArtifact) this).getTeamDefinition().getRulesStartsWith(ruleName)); - } - // Get work rules from workflow - if (getWorkDefinition() != null) { - // Get rules from workflow definitions - workRules.addAll(getWorkDefinition().getRulesStartsWith(ruleName)); - } - // Add work rules from page - workRules.addAll(getStateDefinition().getRulesStartsWith(ruleName)); - return workRules; - } - /** * @return true if this is a TeamWorkflow and the version it's been targeted for has been released */ diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ActionableItemArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ActionableItemArtifact.java index eee06f3765a..1bcab6346e8 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ActionableItemArtifact.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/ActionableItemArtifact.java @@ -18,8 +18,6 @@ import java.util.List; import java.util.Set; import org.eclipse.osee.ats.config.AtsCacheManager; import org.eclipse.osee.ats.util.AtsArtifactTypes; -import org.eclipse.osee.ats.util.AtsFolderUtil; -import org.eclipse.osee.ats.util.AtsFolderUtil.AtsFolder; import org.eclipse.osee.ats.util.AtsRelationTypes; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.framework.core.data.IArtifactType; @@ -64,7 +62,7 @@ public class ActionableItemArtifact extends Artifact { } public static ActionableItemArtifact getTopActionableItem() throws OseeCoreException { - return (ActionableItemArtifact) AtsFolderUtil.getFolder(AtsFolder.ActionableItem); + return (ActionableItemArtifact) AtsArtifactToken.get(AtsArtifactToken.TopActionableItem); } public static List getActionableItems() throws OseeCoreException { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AtsArtifactToken.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AtsArtifactToken.java new file mode 100644 index 00000000000..69980f56ec1 --- /dev/null +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AtsArtifactToken.java @@ -0,0 +1,56 @@ +/* + * Created on Feb 8, 2011 + * + * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE + */ +package org.eclipse.osee.ats.artifact; + +import org.eclipse.osee.ats.util.AtsArtifactTypes; +import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.framework.core.data.ArtifactToken; +import org.eclipse.osee.framework.core.data.IArtifactType; +import org.eclipse.osee.framework.core.data.IOseeBranch; +import org.eclipse.osee.framework.core.enums.CoreArtifactTypes; +import org.eclipse.osee.framework.core.exception.ArtifactDoesNotExist; +import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.skynet.core.artifact.Artifact; +import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery; + +public class AtsArtifactToken extends ArtifactToken { + + public static AtsArtifactToken HeadingFolder = new AtsArtifactToken("Action Tracking System", + CoreArtifactTypes.Folder, "AAABER+3yR4A8O7WYQ+Xbw"); + public static AtsArtifactToken TopTeamDefinition = new AtsArtifactToken("Teams", AtsArtifactTypes.TeamDefinition, + "AAABER+35b4A8O7WHrXTiA"); + public static AtsArtifactToken TopActionableItem = new AtsArtifactToken("Actionable Items", + AtsArtifactTypes.ActionableItem, "AAABER+37QEA8O7WSQaqJQ"); + public static AtsArtifactToken ConfigFolder = new AtsArtifactToken("Config", CoreArtifactTypes.Folder, + "AAABF4n18eYAc1ruQSSWdg"); + public static AtsArtifactToken WorkDefinitionsFolder = new AtsArtifactToken("Work Definitions", + CoreArtifactTypes.Folder, "ADTfjCLEj2DH2WYyeOgA"); + public static AtsArtifactToken WorkPagesFolder = new AtsArtifactToken("Work Pages", CoreArtifactTypes.Folder, + "AAABGnncY_gAAo+3N69ASA"); + public static AtsArtifactToken WorkRulesFolder = new AtsArtifactToken("Work Rules", CoreArtifactTypes.Folder, + "AAABGnmhCyYAoJoIciyaag"); + public static AtsArtifactToken WorkWidgetsFolder = new AtsArtifactToken("Work Widgets", CoreArtifactTypes.Folder, + "AAABGnmjk4IAoJoIa945Kg"); + public static AtsArtifactToken WorkFlowsFolder = new AtsArtifactToken("Work Flows", CoreArtifactTypes.Folder, + "AAABGnncZ_4AAo+3D0sGfw"); + + public AtsArtifactToken(String name, IArtifactType artifactType, String guid) { + this(name, artifactType, guid, AtsUtil.getAtsBranchToken()); + } + + public AtsArtifactToken(String name, IArtifactType artifactType, String guid, IOseeBranch oseeBranch) { + super(guid, name, artifactType, oseeBranch); + } + + public static Artifact get(AtsArtifactToken atsArtifactToken) throws OseeCoreException { + try { + return ArtifactQuery.getArtifactFromToken(atsArtifactToken); + } catch (ArtifactDoesNotExist ex) { + // do nothing + } + return null; + } +} diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AtsAttributeTypes.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AtsAttributeTypes.java index 6fa2a64a920..cb06402a55e 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AtsAttributeTypes.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AtsAttributeTypes.java @@ -77,6 +77,8 @@ public class AtsAttributeTypes extends NamedIdentity implements IAttributeType { public static final IAttributeType PagesChanged= new AtsAttributeTypes("AQR8yMuv4W84UwvSJAQA", "Pages Changed", "Total Pages of Changed"); public static final IAttributeType PagesReviewed = new AtsAttributeTypes("AQR9qM8TTyCMb7sf4cQA", "Pages Reviewed", "Total Pages Reviewed"); public static final IAttributeType PercentRework = new AtsAttributeTypes("AAMFEdKfjl2TII9+tuwA", "Percent Rework"); + public static final IAttributeType PercentComplete = new AtsAttributeTypes("AALLbOZiBBDN39YsRSAA", "Percent Complete"); + public static final IAttributeType Points = new AtsAttributeTypes("AY2EeqhzcDEGtXtREkAA", "Points", "Abstract value that describes risk, complexity, and size of Actions."); public static final IAttributeType PriorityType = new AtsAttributeTypes("AAMFEc8JzH1U6XGD59QA", "Priority", "1 = High; 5 = Low"); public static final IAttributeType Problem = new AtsAttributeTypes("AAMFEdQUxRyevvTu+bwA", "Problem", "Problem found during analysis."); @@ -88,6 +90,7 @@ public class AtsAttributeTypes extends NamedIdentity implements IAttributeType { public static final IAttributeType ReviewBlocks = new AtsAttributeTypes("AAMFEc6G2A8jmRWJgagA", "Review Blocks", "Review Completion will block it's parent workflow in this manner."); public static final IAttributeType ReviewDefect = new AtsAttributeTypes("AAMFEd+MSVAb8JQ6f5gA", "Review Defect"); public static final IAttributeType Role = new AtsAttributeTypes("AAMFEeCqMz0XCSBJ+IQA", "Role"); + public static final IAttributeType RuleDefinition = new AtsAttributeTypes("AEqAJNnkyW4_d5_WhpgA", "Rule Definition"); public static final IAttributeType SmaNote = new AtsAttributeTypes("AAMFEdm7ywte8qayfbAA", "SMA Note", "Notes applicable to ATS object"); public static final IAttributeType State = new AtsAttributeTypes("AAMFEdMa3wzVvp60xLQA", "State", "States of workflow state machine."); public static final IAttributeType StateNotes = new AtsAttributeTypes("AAMFEdiWPm7M_xV1EswA", "State Notes"); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TaskArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TaskArtifact.java index 719467a5225..1129f938730 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TaskArtifact.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TaskArtifact.java @@ -115,6 +115,7 @@ public class TaskArtifact extends AbstractWorkflowArtifact implements IATSStateM getStateMgr().setAssignee(UserManager.getUser()); } getStateMgr().updateMetrics(additionalHours, 100, true); + setSoleAttributeValue(AtsAttributeTypes.PercentComplete, 100); } catch (Exception ex) { OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); } @@ -133,6 +134,7 @@ public class TaskArtifact extends AbstractWorkflowArtifact implements IATSStateM Result result = transitionMgr.transition(TaskStates.InWork, toUser, transaction, transitionOption); if (getStateMgr().getPercentComplete() != percentComplete || additionalHours > 0) { getStateMgr().updateMetrics(additionalHours, percentComplete, true); + setSoleAttributeValue(AtsAttributeTypes.PercentComplete, percentComplete); } if (Collections.getAggregate(transitionOption).contains(TransitionOption.Persist)) { saveSMA(transaction); @@ -157,9 +159,11 @@ public class TaskArtifact extends AbstractWorkflowArtifact implements IATSStateM else if (percentComplete == 100 && isCompleted()) { if (additionalHours > 0) { getStateMgr().updateMetrics(TaskStates.InWork, additionalHours, percentComplete, true); + setSoleAttributeValue(AtsAttributeTypes.PercentComplete, percentComplete); } } else { getStateMgr().updateMetrics(additionalHours, percentComplete, true); + setSoleAttributeValue(AtsAttributeTypes.PercentComplete, percentComplete); } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamDefinitionArtifact.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamDefinitionArtifact.java index 6104a6ea678..43130175a8c 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamDefinitionArtifact.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/TeamDefinitionArtifact.java @@ -22,22 +22,19 @@ import org.eclipse.osee.ats.artifact.VersionArtifact.VersionReleaseType; import org.eclipse.osee.ats.config.AtsCacheManager; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsArtifactTypes; -import org.eclipse.osee.ats.util.AtsFolderUtil; -import org.eclipse.osee.ats.util.AtsFolderUtil.AtsFolder; import org.eclipse.osee.ats.util.AtsRelationTypes; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.ats.util.widgets.commit.ICommitConfigArtifact; import org.eclipse.osee.ats.workdef.RuleDefinition; +import org.eclipse.osee.ats.workdef.RuleDefinitionOption; import org.eclipse.osee.ats.workdef.WorkDefinitionFactory; import org.eclipse.osee.ats.workdef.WorkDefinitionMatch; -import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions.RuleWorkItemId; import org.eclipse.osee.framework.core.data.IArtifactType; import org.eclipse.osee.framework.core.enums.Active; import org.eclipse.osee.framework.core.enums.CoreArtifactTypes; import org.eclipse.osee.framework.core.enums.CoreAttributeTypes; import org.eclipse.osee.framework.core.enums.CoreRelationTypes; import org.eclipse.osee.framework.core.exception.BranchDoesNotExist; -import org.eclipse.osee.framework.core.exception.OseeArgumentException; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.core.model.Branch; import org.eclipse.osee.framework.jdk.core.util.Collections; @@ -109,7 +106,7 @@ public class TeamDefinitionArtifact extends Artifact implements ICommitConfigArt setSoleAttributeValue(AtsAttributeTypes.TeamUsesVersions, true); } if (teamDefOptions.contains(TeamDefinitionOptions.RequireTargetedVersion)) { - addWorkRule(RuleWorkItemId.atsRequireTargetedVersion.name()); + addRule(RuleDefinitionOption.RequireTargetedVersion); } // Relate to actionable items @@ -218,7 +215,7 @@ public class TeamDefinitionArtifact extends Artifact implements ICommitConfigArt } public static TeamDefinitionArtifact getTopTeamDefinition() throws OseeCoreException { - return (TeamDefinitionArtifact) AtsFolderUtil.getFolder(AtsFolder.Teams); + return (TeamDefinitionArtifact) AtsArtifactToken.get(AtsArtifactToken.TopTeamDefinition); } public static Set getTeamReleaseableDefinitions(Active active) throws OseeCoreException { @@ -358,7 +355,12 @@ public class TeamDefinitionArtifact extends Artifact implements ICommitConfigArt String id = art.getSoleAttributeValue(CoreAttributeTypes.WorkId, ""); if (Strings.isValid(id)) { // Note: This may skip any complex rules (more than name), but don't think teamdefs have them - workRules.add(WorkDefinitionFactory.getRuleById(id)); + RuleDefinition ruleDef = WorkDefinitionFactory.getRuleById(id); + if (ruleDef == null) { + OseeLog.log(AtsPlugin.class, Level.SEVERE, String.format("Null work rule for " + id)); + } else { + workRules.add(ruleDef); + } } } } @@ -496,24 +498,22 @@ public class TeamDefinitionArtifact extends Artifact implements ICommitConfigArt return getSoleAttributeValue(AtsAttributeTypes.Actionable, false); } - public void addWorkRule(String ruleId) throws OseeCoreException { - if (!hasWorkRule(ruleId)) { - Artifact artifact = WorkItemDefinitionFactory.getWorkItemDefinitionArtifact(ruleId); - if (artifact == null) { - throw new OseeArgumentException("Rule [%s] does not exist.", ruleId); - } else { - addRelation(CoreRelationTypes.WorkItem__Child, artifact); - } - } + public void addRule(RuleDefinitionOption option) throws OseeCoreException { + addRule(option.name()); } - public boolean hasWorkRule(String ruleId) throws OseeCoreException { - for (Artifact art : getRelatedArtifacts(CoreRelationTypes.WorkItem__Child)) { - if (art.getName().equals(ruleId)) { - return true; - } + public void addRule(String ruleId) throws OseeCoreException { + if (!hasRule(ruleId)) { + addAttribute(AtsAttributeTypes.RuleDefinition, ruleId); } - return false; + } + + public boolean hasRule(RuleDefinitionOption option) throws OseeCoreException { + return hasRule(option.name()); + } + + public boolean hasRule(String ruleId) throws OseeCoreException { + return getAttributesToStringList(AtsAttributeTypes.RuleDefinition).contains(ruleId); } /** diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsConfigManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsConfigManager.java index 38e2a3ae065..be88c9c3bc9 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsConfigManager.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsConfigManager.java @@ -20,13 +20,12 @@ import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.osee.ats.AtsOpenOption; import org.eclipse.osee.ats.artifact.ActionableItemArtifact; +import org.eclipse.osee.ats.artifact.AtsArtifactToken; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact; import org.eclipse.osee.ats.artifact.VersionArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsArtifactTypes; -import org.eclipse.osee.ats.util.AtsFolderUtil; -import org.eclipse.osee.ats.util.AtsFolderUtil.AtsFolder; import org.eclipse.osee.ats.util.AtsRelationTypes; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.ats.util.TeamState; @@ -129,7 +128,7 @@ public class AtsConfigManager extends AbstractOperation { } teamDefinition.addRelation(AtsRelationTypes.TeamLead_Lead, UserManager.getUser()); teamDefinition.addRelation(AtsRelationTypes.TeamMember_Member, UserManager.getUser()); - AtsFolderUtil.getFolder(AtsFolder.Teams).addChild(teamDefinition); + AtsArtifactToken.get(AtsArtifactToken.TopTeamDefinition).addChild(teamDefinition); teamDefinition.persist(transaction); return teamDefinition; } @@ -144,7 +143,7 @@ public class AtsConfigManager extends AbstractOperation { topAia.setSoleAttributeValue(AtsAttributeTypes.Actionable, false); topAia.persist(transaction); - AtsFolderUtil.getFolder(AtsFolder.ActionableItem).addChild(topAia); + AtsArtifactToken.get(AtsArtifactToken.TopActionableItem).addChild(topAia); teamDefinition.addRelation(AtsRelationTypes.TeamActionableItem_ActionableItem, topAia); teamDefinition.persist(transaction); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsDatabaseConfig.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsDatabaseConfig.java index 9260be8b8f2..eb2028f4e5e 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsDatabaseConfig.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsDatabaseConfig.java @@ -10,7 +10,10 @@ *******************************************************************************/ package org.eclipse.osee.ats.config; -import org.eclipse.osee.ats.util.AtsFolderUtil; +import java.util.Arrays; +import org.eclipse.osee.ats.artifact.ActionableItemArtifact; +import org.eclipse.osee.ats.artifact.AtsArtifactToken; +import org.eclipse.osee.ats.artifact.AtsAttributeTypes; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.ats.workdef.AtsWorkDefinitionSheetProviders; import org.eclipse.osee.ats.workflow.flow.DecisionWorkflowDefinition; @@ -22,6 +25,9 @@ import org.eclipse.osee.ats.workflow.flow.TeamWorkflowDefinition; import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.database.init.IDbInitializationTask; +import org.eclipse.osee.framework.skynet.core.OseeSystemArtifacts; +import org.eclipse.osee.framework.skynet.core.artifact.Artifact; +import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; import org.eclipse.osee.framework.ui.skynet.results.XResultData; import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkItemDefinition.WriteType; @@ -29,9 +35,14 @@ public class AtsDatabaseConfig implements IDbInitializationTask { @Override public void run() throws OseeCoreException { - AtsFolderUtil.createAtsFolders(); + createAtsFolders(); AtsWorkDefinitionSheetProviders.initializeDatabase(); + + Artifact topAi = ActionableItemArtifact.getTopActionableItem(); + topAi.setSoleAttributeValue(AtsAttributeTypes.Actionable, false); + topAi.persist("Set Top AI to Non Actionable"); + configWorkItemDefinitions(WriteType.New, null); AtsUtil.getAtsAdminGroup().getGroupArtifact().persist(); @@ -52,4 +63,24 @@ public class AtsDatabaseConfig implements IDbInitializationTask { } + public static void createAtsFolders() throws OseeCoreException { + SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Create ATS Folders"); + + Artifact headingArt = OseeSystemArtifacts.getOrCreateArtifact(AtsArtifactToken.HeadingFolder); + if (!headingArt.hasParent()) { + Artifact rootArt = OseeSystemArtifacts.getDefaultHierarchyRootArtifact(AtsUtil.getAtsBranch()); + rootArt.addChild(headingArt); + headingArt.persist(transaction); + } + for (AtsArtifactToken token : Arrays.asList(AtsArtifactToken.TopActionableItem, + AtsArtifactToken.TopTeamDefinition, AtsArtifactToken.ConfigFolder, // + AtsArtifactToken.WorkDefinitionsFolder, AtsArtifactToken.WorkFlowsFolder, // + AtsArtifactToken.WorkPagesFolder, AtsArtifactToken.WorkWidgetsFolder, // + AtsArtifactToken.WorkRulesFolder)) { + Artifact art = OseeSystemArtifacts.getOrCreateArtifact(token); + headingArt.addChild(art); + art.persist(transaction); + } + transaction.execute(); + } } \ No newline at end of file diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsLoadConfigArtifactsOperation.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsLoadConfigArtifactsOperation.java index 2f69c9c710b..d171b3a3c96 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsLoadConfigArtifactsOperation.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsLoadConfigArtifactsOperation.java @@ -13,9 +13,8 @@ package org.eclipse.osee.ats.config; import java.util.Collections; import java.util.logging.Level; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.osee.ats.artifact.AtsArtifactToken; import org.eclipse.osee.ats.internal.AtsPlugin; -import org.eclipse.osee.ats.util.AtsFolderUtil; -import org.eclipse.osee.ats.util.AtsFolderUtil.AtsFolder; import org.eclipse.osee.ats.util.AtsRelationTypes; import org.eclipse.osee.framework.core.enums.CoreRelationTypes; import org.eclipse.osee.framework.core.exception.OseeCoreException; @@ -44,7 +43,7 @@ public class AtsLoadConfigArtifactsOperation extends AbstractOperation { if (!loaded) { loaded = true; OseeLog.log(AtsPlugin.class, Level.INFO, "Loading ATS Configuration"); - Artifact headingArt = AtsFolderUtil.getFolder(AtsFolder.Ats_Heading); + Artifact headingArt = AtsArtifactToken.get(AtsArtifactToken.HeadingFolder); // Loading artifacts will cache them in ArtifactCache RelationManager.getRelatedArtifacts(Collections.singleton(headingArt), 8, CoreRelationTypes.Default_Hierarchical__Child, AtsRelationTypes.TeamDefinitionToVersion_Version); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditorOutlinePage.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditorOutlinePage.java index f52a5857ff8..cae83bc8cb8 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditorOutlinePage.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEditorOutlinePage.java @@ -25,6 +25,8 @@ import org.eclipse.osee.ats.AtsImage; import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; +import org.eclipse.osee.ats.editor.stateItem.AtsStateItemManager; +import org.eclipse.osee.ats.editor.stateItem.IAtsStateItem; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsArtifactTypes; import org.eclipse.osee.ats.workdef.CompositeStateItem; @@ -123,6 +125,8 @@ public class SMAEditorOutlinePage extends ContentOutlinePage { return ArtifactImageManager.getImage((AbstractWorkflowArtifact) element); } else if (element instanceof StateDefinition) { return ImageManager.getImage(AtsImage.STATE_DEFINITION); + } else if (element instanceof IAtsStateItem || element instanceof WrappedStateItems) { + return ImageManager.getImage(AtsImage.STATE_ITEM); } else if (element instanceof WrappedTrace) { return ImageManager.getImage(AtsImage.TRACE); } else if (element instanceof WorkDefinitionMatch) { @@ -131,23 +135,15 @@ public class SMAEditorOutlinePage extends ContentOutlinePage { return ImageManager.getImage(FrameworkImage.GEAR); } else if (element instanceof CompositeStateItem || element instanceof WrappedLayout) { return ImageManager.getImage(AtsImage.COMPOSITE_STATE_ITEM); - } else if (element instanceof String || element instanceof WidgetOption) { + } else if (element instanceof String || element instanceof WidgetOption || element instanceof WrappedPercentWeight) { return ImageManager.getImage(AtsImage.RIGHT_ARROW_SM); } else if (element instanceof WrappedStates || element instanceof WrappedTransitions) { return ImageManager.getImage(AtsImage.TRANSITION); - } else if (element instanceof WrappedRules) { - return ImageManager.getImage(FrameworkImage.RULE); - } else if (element instanceof RuleAndLocation) { + } else if (element instanceof WrappedRules || element instanceof RuleAndLocation) { return ImageManager.getImage(FrameworkImage.RULE); } else if (element instanceof User) { return ImageManager.getImage(FrameworkImage.USER); - } else if (element instanceof DecisionReviewDefinition) { - return ImageManager.getImage(AtsImage.REVIEW); - } else if (element instanceof PeerReviewDefinition) { - return ImageManager.getImage(AtsImage.REVIEW); - } else if (element instanceof WrappedDecisionReviews) { - return ImageManager.getImage(AtsImage.REVIEW); - } else if (element instanceof WrappedPeerReviews) { + } else if (element instanceof WrappedPeerReviews || element instanceof WrappedDecisionReviews || element instanceof DecisionReviewDefinition || element instanceof PeerReviewDefinition) { return ImageManager.getImage(AtsImage.REVIEW); } else if (element instanceof DecisionReviewOption) { return ImageManager.getImage(FrameworkImage.QUESTION); @@ -182,10 +178,13 @@ public class SMAEditorOutlinePage extends ContentOutlinePage { if (element instanceof SMAEditor) { items.add(((SMAEditor) element).getSma()); + items.add(new WrappedStateItems(AtsStateItemManager.getStateItems())); } else if (element instanceof AbstractWorkflowArtifact) { items.add(((AbstractWorkflowArtifact) element).getWorkDefinitionMatch()); } else if (element instanceof WrappedLayout) { items.addAll(((WrappedLayout) element).getStateItems()); + } else if (element instanceof WrappedPercentWeight) { + getChildrenFromWrappedPercentDefinition((WrappedPercentWeight) element, items); } else if (element instanceof WrappedTrace) { items.addAll(((WrappedTrace) element).getTrace()); } else if (element instanceof WorkDefinitionMatch) { @@ -196,6 +195,11 @@ public class SMAEditorOutlinePage extends ContentOutlinePage { items.addAll(((CompositeStateItem) element).getStateItems()); } else if (element instanceof User) { items.add("Assignee: " + ((User) element).getName()); + } else if (element instanceof WrappedStateItems) { + items.addAll(((WrappedStateItems) element).getStateItems()); + } else if (element instanceof IAtsStateItem) { + items.add("Description: " + ((IAtsStateItem) element).getDescription()); + items.add("Full Name: " + ((IAtsStateItem) element).getFullName()); } else if (element instanceof WrappedTransitions) { items.addAll(((WrappedTransitions) element).getTransitions()); } else if (element instanceof DecisionReviewDefinition) { @@ -221,6 +225,76 @@ public class SMAEditorOutlinePage extends ContentOutlinePage { return items.toArray(new Object[items.size()]); } + @Override + public Object getParent(Object element) { + if (element instanceof AbstractWorkflowArtifact) { + return editor; + } else if (element instanceof WorkDefinition) { + return editor; + } else if (element instanceof StateDefinition) { + return ((StateDefinition) element).getWorkDefinition(); + } else if (element instanceof RuleDefinition) { + return editor; + } else if (element instanceof String) { + return editor; + } + return null; + } + + @Override + public boolean hasChildren(Object element) { + if (element instanceof String) { + return false; + } else if (element instanceof AbstractWorkflowArtifact) { + return true; + } else if (element instanceof WorkDefinitionMatch) { + return true; + } else if (element instanceof StateDefinition) { + return true; + } else if (element instanceof RuleDefinition) { + return false; + } else if (element instanceof CompositeStateItem) { + return true; + } else if (element instanceof IAtsStateItem) { + return true; + } else if (element instanceof WidgetDefinition) { + return true; + } else if (element instanceof PeerReviewDefinition) { + return true; + } else if (element instanceof DecisionReviewDefinition) { + return true; + } else if (element instanceof DecisionReviewOption) { + return !((DecisionReviewOption) element).getUserIds().isEmpty(); + } else if (element instanceof WrappedTransitions) { + return true; + } else if (element instanceof WrappedPercentWeight) { + return ((WrappedPercentWeight) element).getWorkDef().isStateWeightingEnabled(); + } else if (element instanceof WrappedLayout) { + return !((WrappedLayout) element).stateItems.isEmpty(); + } else if (element instanceof WrappedDecisionReviews) { + return !((WrappedDecisionReviews) element).decReviews.isEmpty(); + } else if (element instanceof WrappedPeerReviews) { + return !((WrappedPeerReviews) element).decReviews.isEmpty(); + } else if (element instanceof WrappedTrace) { + return !((WrappedTrace) element).trace.isEmpty(); + } else if (element instanceof WrappedStateItems) { + return !((WrappedStateItems) element).stateItems.isEmpty(); + } else if (element instanceof WrappedStates) { + return !((WrappedStates) element).states.isEmpty(); + } else if (element instanceof RuleAndLocation) { + return false; + } else if (element instanceof WrappedRules) { + return !((WrappedRules) element).getRuleAndLocations().isEmpty(); + } + return false; + } + + private void getChildrenFromWrappedPercentDefinition(WrappedPercentWeight weightDef, List items) { + for (StateDefinition stateDef : weightDef.getWorkDef().getStatesOrdered()) { + items.add(String.format("State [%s]: %d", stateDef.getName(), stateDef.getStateWeight())); + } + } + private void getChildrenFromWidgetDefinition(Object element, List items) { items.add("XWidget: " + ((WidgetDefinition) element).getXWidgetName()); items.add("Attribute Name: " + ((WidgetDefinition) element).getAtrributeName()); @@ -239,6 +313,9 @@ public class SMAEditorOutlinePage extends ContentOutlinePage { } private void getChildrenFromPeerReviewDefinition(Object element, List items) { + if (Strings.isValid(((PeerReviewDefinition) element).getTitle())) { + items.add("Title: " + ((PeerReviewDefinition) element).getTitle()); + } if (Strings.isValid(((PeerReviewDefinition) element).getDescription())) { items.add("Description: " + ((PeerReviewDefinition) element).getDescription()); } @@ -248,14 +325,20 @@ public class SMAEditorOutlinePage extends ContentOutlinePage { items.add("On Event: " + ((PeerReviewDefinition) element).getStateEventType().name()); items.add("Related To State: " + ((PeerReviewDefinition) element).getRelatedToState()); items.add("Review Blocks: " + ((PeerReviewDefinition) element).getBlockingType().name()); - try { - items.addAll(UserManager.getUsersByUserId(((PeerReviewDefinition) element).getAssignees())); - } catch (OseeCoreException ex) { - OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); + for (String userId : ((PeerReviewDefinition) element).getAssignees()) { + try { + items.add(UserManager.getUserByUserId(userId)); + } catch (OseeCoreException ex) { + OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); + items.add(String.format("Exception loading user from id [%s] [%s]", userId, ex.getLocalizedMessage())); + } } } private void getChildrenFromDecisionReviewDefinition(Object element, List items) { + if (Strings.isValid(((DecisionReviewDefinition) element).getTitle())) { + items.add("Title: " + ((DecisionReviewDefinition) element).getTitle()); + } if (Strings.isValid(((DecisionReviewDefinition) element).getDescription())) { items.add("Description: " + ((DecisionReviewDefinition) element).getDescription()); } @@ -263,10 +346,13 @@ public class SMAEditorOutlinePage extends ContentOutlinePage { items.add("Related To State: " + ((DecisionReviewDefinition) element).getRelatedToState()); items.add("Review Blocks: " + ((DecisionReviewDefinition) element).getBlockingType().name()); items.add("Auto Transition to Decision: " + ((DecisionReviewDefinition) element).isAutoTransitionToDecision()); - try { - items.addAll(UserManager.getUsersByUserId(((DecisionReviewDefinition) element).getAssignees())); - } catch (OseeCoreException ex) { - OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); + for (String userId : ((DecisionReviewDefinition) element).getAssignees()) { + try { + items.add(UserManager.getUserByUserId(userId)); + } catch (OseeCoreException ex) { + OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); + items.add(String.format("Exception loading user from id [%s] [%s]", userId, ex.getLocalizedMessage())); + } } items.addAll(((DecisionReviewDefinition) element).getOptions()); } @@ -288,6 +374,7 @@ public class SMAEditorOutlinePage extends ContentOutlinePage { } items.addAll(((WorkDefinitionMatch) element).getWorkDefinition().getStatesOrdered()); items.addAll(((WorkDefinitionMatch) element).getWorkDefinition().getRules()); + items.add(new WrappedPercentWeight(((WorkDefinitionMatch) element).getWorkDefinition())); items.add(new WrappedTrace(((WorkDefinitionMatch) element).getTrace())); } @@ -312,64 +399,6 @@ public class SMAEditorOutlinePage extends ContentOutlinePage { } } - @Override - public Object getParent(Object element) { - if (element instanceof AbstractWorkflowArtifact) { - return editor; - } else if (element instanceof WorkDefinition) { - return editor; - } else if (element instanceof StateDefinition) { - return ((StateDefinition) element).getWorkDefinition(); - } else if (element instanceof RuleDefinition) { - return editor; - } else if (element instanceof String) { - return editor; - } - return null; - } - - @Override - public boolean hasChildren(Object element) { - if (element instanceof String) { - return false; - } else if (element instanceof AbstractWorkflowArtifact) { - return true; - } else if (element instanceof WorkDefinitionMatch) { - return true; - } else if (element instanceof StateDefinition) { - return true; - } else if (element instanceof RuleDefinition) { - return false; - } else if (element instanceof CompositeStateItem) { - return true; - } else if (element instanceof WidgetDefinition) { - return true; - } else if (element instanceof PeerReviewDefinition) { - return true; - } else if (element instanceof DecisionReviewDefinition) { - return true; - } else if (element instanceof DecisionReviewOption) { - return !((DecisionReviewOption) element).getUserIds().isEmpty(); - } else if (element instanceof WrappedTransitions) { - return true; - } else if (element instanceof WrappedLayout) { - return !((WrappedLayout) element).stateItems.isEmpty(); - } else if (element instanceof WrappedDecisionReviews) { - return !((WrappedDecisionReviews) element).decReviews.isEmpty(); - } else if (element instanceof WrappedPeerReviews) { - return !((WrappedPeerReviews) element).decReviews.isEmpty(); - } else if (element instanceof WrappedTrace) { - return !((WrappedTrace) element).trace.isEmpty(); - } else if (element instanceof WrappedStates) { - return !((WrappedStates) element).states.isEmpty(); - } else if (element instanceof RuleAndLocation) { - return false; - } else if (element instanceof WrappedRules) { - return !((WrappedRules) element).getRuleAndLocations().isEmpty(); - } - return false; - } - @Override public Object[] getElements(Object inputElement) { return getChildren(inputElement); @@ -451,6 +480,28 @@ public class SMAEditorOutlinePage extends ContentOutlinePage { return states; } + } + public class WrappedPercentWeight { + + private final WorkDefinition workDef; + + public WrappedPercentWeight(WorkDefinition workDef) { + this.workDef = workDef; + } + + @Override + public String toString() { + if (workDef.isStateWeightingEnabled()) { + return "Total Percent Weighting"; + } else { + return "Total Percent Weighting: Single Percent"; + } + } + + public WorkDefinition getWorkDef() { + return workDef; + } + } public class WrappedDecisionReviews { private final Collection decReviews; @@ -468,6 +519,23 @@ public class SMAEditorOutlinePage extends ContentOutlinePage { return decReviews; } + } + public class WrappedStateItems { + private final List stateItems; + + public WrappedStateItems(List stateItems) { + this.stateItems = stateItems; + } + + @Override + public String toString() { + return "State Items" + (stateItems.isEmpty() ? " (Empty)" : ""); + } + + public Collection getStateItems() { + return stateItems; + } + } public class WrappedPeerReviews { private final Collection decReviews; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEstimatedHoursHeader.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEstimatedHoursHeader.java new file mode 100644 index 00000000000..45ca9e66045 --- /dev/null +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAEstimatedHoursHeader.java @@ -0,0 +1,112 @@ +/******************************************************************************* + * Copyright (c) 2010 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.editor; + +import java.util.logging.Level; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; +import org.eclipse.osee.ats.artifact.AtsAttributeTypes; +import org.eclipse.osee.ats.internal.AtsPlugin; +import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.util.PromptChangeUtil; +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.ui.swt.ALayout; +import org.eclipse.osee.framework.ui.swt.Displays; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.forms.events.HyperlinkEvent; +import org.eclipse.ui.forms.events.IHyperlinkListener; +import org.eclipse.ui.forms.widgets.Hyperlink; + +/** + * @author Donald G. Dunne + */ +public class SMAEstimatedHoursHeader extends Composite { + + private final static String LABEL = "Estimated Hours:"; + Label valueLabel; + private final AbstractWorkflowArtifact awa; + + public SMAEstimatedHoursHeader(Composite parent, int style, final AbstractWorkflowArtifact sma, final SMAEditor editor) { + super(parent, style); + this.awa = sma; + setLayoutData(new GridData(SWT.FILL, SWT.NONE, true, false)); + setLayout(ALayout.getZeroMarginLayout(2, false)); + editor.getToolkit().adapt(this); + + try { + if (!sma.isCancelled() && !sma.isCompleted()) { + Hyperlink link = editor.getToolkit().createHyperlink(this, LABEL, SWT.NONE); + link.addHyperlinkListener(new IHyperlinkListener() { + + @Override + public void linkEntered(HyperlinkEvent e) { + // do nothing + } + + @Override + public void linkExited(HyperlinkEvent e) { + // do nothing + } + + @Override + public void linkActivated(HyperlinkEvent e) { + try { + PromptChangeUtil.promptChangeAttribute(sma, AtsAttributeTypes.EstimatedHours, true, false); + } catch (Exception ex) { + OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); + } + } + }); + } else { + Label origLabel = editor.getToolkit().createLabel(this, LABEL); + origLabel.setLayoutData(new GridData()); + } + + valueLabel = editor.getToolkit().createLabel(this, "0.0"); + valueLabel.setToolTipText(getToolTip()); + valueLabel.setLayoutData(new GridData()); + updateLabel(sma); + + } catch (OseeCoreException ex) { + Label errorLabel = editor.getToolkit().createLabel(this, "Error: " + ex.getLocalizedMessage()); + errorLabel.setForeground(Displays.getSystemColor(SWT.COLOR_RED)); + OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); + } + + } + + private String getEstHoursStr() throws OseeCoreException { + double awaEst = awa.getSoleAttributeValue(AtsAttributeTypes.EstimatedHours, 0.0); + double totalEst = awa.getEstimatedHoursTotal(); + if (awaEst != totalEst) { + return String.format("%s | %s", AtsUtil.doubleToI18nString(awaEst), AtsUtil.doubleToI18nString(totalEst)); + } else { + return AtsUtil.doubleToI18nString(awaEst); + } + } + + public void refresh() throws OseeCoreException { + updateLabel(awa); + } + + private void updateLabel(AbstractWorkflowArtifact sma) throws OseeCoreException { + valueLabel.setText(getEstHoursStr()); + valueLabel.getParent().layout(); + } + + private String getToolTip() { + return "[Workflow Estimate] | [Calculation: Sum estimated hours for workflow and all tasks and reviews]"; + } +} diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAPercentCompleteHeader.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAPercentCompleteHeader.java new file mode 100644 index 00000000000..8bf775c084c --- /dev/null +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAPercentCompleteHeader.java @@ -0,0 +1,111 @@ +/******************************************************************************* + * Copyright (c) 2010 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.editor; + +import java.util.logging.Level; +import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; +import org.eclipse.osee.ats.artifact.AtsAttributeTypes; +import org.eclipse.osee.ats.internal.AtsPlugin; +import org.eclipse.osee.ats.util.PromptChangeUtil; +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.ui.swt.ALayout; +import org.eclipse.osee.framework.ui.swt.Displays; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.forms.events.HyperlinkEvent; +import org.eclipse.ui.forms.events.IHyperlinkListener; +import org.eclipse.ui.forms.widgets.Hyperlink; + +/** + * @author Donald G. Dunne + */ +public class SMAPercentCompleteHeader extends Composite { + + private final static String PERCENT_COMPLETE = "Percent Complete:"; + Label valueLabel; + private final AbstractWorkflowArtifact awa; + + public SMAPercentCompleteHeader(Composite parent, int style, final AbstractWorkflowArtifact sma, final SMAEditor editor) { + super(parent, style); + this.awa = sma; + setLayoutData(new GridData(SWT.FILL, SWT.NONE, true, false)); + setLayout(ALayout.getZeroMarginLayout(2, false)); + editor.getToolkit().adapt(this); + + try { + if (!sma.isCancelled() && !sma.isCompleted()) { + Hyperlink link = editor.getToolkit().createHyperlink(this, PERCENT_COMPLETE, SWT.NONE); + link.addHyperlinkListener(new IHyperlinkListener() { + + @Override + public void linkEntered(HyperlinkEvent e) { + // do nothing + } + + @Override + public void linkExited(HyperlinkEvent e) { + // do nothing + } + + @Override + public void linkActivated(HyperlinkEvent e) { + try { + PromptChangeUtil.promptChangeAttribute(sma, AtsAttributeTypes.PercentComplete, true, false); + } catch (Exception ex) { + OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); + } + } + }); + } else { + Label origLabel = editor.getToolkit().createLabel(this, PERCENT_COMPLETE); + origLabel.setLayoutData(new GridData()); + } + + valueLabel = editor.getToolkit().createLabel(this, "0"); + valueLabel.setToolTipText(getToolTip()); + valueLabel.setLayoutData(new GridData()); + updateLabel(sma); + + } catch (OseeCoreException ex) { + Label errorLabel = editor.getToolkit().createLabel(this, "Error: " + ex.getLocalizedMessage()); + errorLabel.setForeground(Displays.getSystemColor(SWT.COLOR_RED)); + OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); + } + + } + + public String getPercentCompleteStr() throws OseeCoreException { + int awaPercent = awa.getSoleAttributeValue(AtsAttributeTypes.PercentComplete, 0); + int totalPecent = awa.getPercentCompleteSMATotal(); + if (awaPercent != totalPecent) { + return String.format("%d | %d", awaPercent, totalPecent); + } else { + return String.valueOf(awaPercent); + } + } + + public void refresh() throws OseeCoreException { + updateLabel(awa); + } + + private void updateLabel(AbstractWorkflowArtifact sma) throws OseeCoreException { + valueLabel.setText(getPercentCompleteStr()); + valueLabel.getParent().layout(); + } + + private String getToolTip() { + return " [Workflow Percent] | [Calculation: Sum of percent for workflow, reviews and tasks / # workflows, reviews and tasks] "; + } +} diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAPromptChangeStatus.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAPromptChangeStatus.java index 35119af53b4..9ca01f56840 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAPromptChangeStatus.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAPromptChangeStatus.java @@ -119,7 +119,12 @@ public class SMAPromptChangeStatus { if (sma instanceof TaskArtifact) { ((TaskArtifact) sma).statusPercentChanged(hours, percent, transaction); } else { - sma.getStateMgr().updateMetrics(hours, percent, true); + if (sma.getWorkDefinition().isStateWeightingEnabled()) { + sma.getStateMgr().updateMetrics(hours, percent, true); + } else { + sma.getStateMgr().updateMetrics(hours, percent, true); + sma.setSoleAttributeValue(AtsAttributeTypes.PercentComplete, percent); + } } if (persist) { sma.persist(transaction); @@ -130,5 +135,4 @@ public class SMAPromptChangeStatus { } } - } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMATargetVersionInfoComposite.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMATargetVersionInfoComposite.java index 1b29cfbdda9..4bbfead5d01 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMATargetVersionInfoComposite.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMATargetVersionInfoComposite.java @@ -18,7 +18,7 @@ import org.eclipse.osee.ats.column.TargetedVersionColumn; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.ats.util.ReadOnlyHyperlinkListener; -import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions; +import org.eclipse.osee.ats.workdef.RuleDefinitionOption; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; @@ -103,8 +103,8 @@ public class SMATargetVersionInfoComposite extends Composite { String str = ""; // Don't transition without targeted version if so configured boolean required = - sma.teamDefHasWorkRule(AtsWorkDefinitions.RuleWorkItemId.atsRequireTargetedVersion.name()) || sma.getStateDefinition().hasRule( - AtsWorkDefinitions.RuleWorkItemId.atsRequireTargetedVersion.name()); + sma.teamDefHasRule(RuleDefinitionOption.RequireTargetedVersion) || sma.getStateDefinition().hasRule( + RuleDefinitionOption.RequireTargetedVersion); if (sma.getTargetedVersion() != null) { str = sma.getTargetedVersion() + ""; diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowSection.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowSection.java index 62257b9d9e3..d703313ac8d 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowSection.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowSection.java @@ -41,12 +41,12 @@ import org.eclipse.osee.ats.util.XCancellationReasonTextWidget; import org.eclipse.osee.ats.util.widgets.ReviewManager; import org.eclipse.osee.ats.util.widgets.dialog.SMAStatusDialog; import org.eclipse.osee.ats.workdef.ReviewBlockType; +import org.eclipse.osee.ats.workdef.RuleDefinitionOption; import org.eclipse.osee.ats.workdef.StateDefinition; import org.eclipse.osee.ats.workdef.StateDefinitionLabelProvider; import org.eclipse.osee.ats.workdef.StateDefinitionViewSorter; import org.eclipse.osee.ats.workdef.StateXWidgetPage; import org.eclipse.osee.ats.workflow.TransitionManager; -import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions; import org.eclipse.osee.framework.core.data.SystemUser; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.jdk.core.util.DateUtil; @@ -202,8 +202,8 @@ public class SMAWorkFlowSection extends SectionPart { createMetricsHeader(workComp); // Add any dynamic XWidgets declared for page by IAtsStateItem extensions - for (IAtsStateItem item : AtsStateItemManager.getStateItems(statePage.getStateDefinition())) { - for (XWidget xWidget : item.getDynamicXWidgetsPreBody(sma)) { + for (IAtsStateItem item : AtsStateItemManager.getStateItems()) { + for (XWidget xWidget : item.getDynamicXWidgetsPreBody(sma, statePage.getPageName())) { xWidget.createWidgets(workComp, 2); allXWidgets.add(xWidget); allXWidgets.addAll(xWidget.getChildrenXWidgets()); @@ -231,8 +231,8 @@ public class SMAWorkFlowSection extends SectionPart { } // Add any dynamic XWidgets declared for page by IAtsStateItem extensions - for (IAtsStateItem item : AtsStateItemManager.getStateItems(statePage.getStateDefinition())) { - for (XWidget xWidget : item.getDynamicXWidgetsPostBody(sma)) { + for (IAtsStateItem item : AtsStateItemManager.getStateItems()) { + for (XWidget xWidget : item.getDynamicXWidgetsPostBody(sma, statePage.getPageName())) { xWidget.createWidgets(workComp, 2); allXWidgets.add(xWidget); allXWidgets.addAll(xWidget.getChildrenXWidgets()); @@ -249,15 +249,6 @@ public class SMAWorkFlowSection extends SectionPart { } } - // Check extension points for page creation - for (IAtsStateItem item : AtsStateItemManager.getStateItems(statePage.getStateDefinition())) { - Result result = item.pageCreated(toolkit, statePage, sma, xModListener, isEditable || isGlobalEditable); - if (result.isFalse()) { - result.popup(); - OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Error in page creation => " + result.getText()); - } - } - return workComp; } @@ -291,8 +282,10 @@ public class SMAWorkFlowSection extends SectionPart { layout.marginLeft = 2; comp.setLayout(layout); comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - allXWidgets.add(new StatePercentCompleteXWidget(getManagedForm(), statePage, sma, comp, 2, xModListener, - isCurrentState, editor)); + if (sma.getWorkDefinition().isStateWeightingEnabled()) { + allXWidgets.add(new StatePercentCompleteXWidget(getManagedForm(), statePage, sma, comp, 2, xModListener, + isCurrentState, editor)); + } allXWidgets.add(new StateHoursSpentXWidget(getManagedForm(), statePage, sma, comp, 2, xModListener, isCurrentState, editor)); } @@ -428,7 +421,7 @@ public class SMAWorkFlowSection extends SectionPart { return; } // Notify extensions of widget modified - for (IAtsStateItem item : AtsStateItemManager.getStateItems(statePage.getStateDefinition())) { + for (IAtsStateItem item : AtsStateItemManager.getStateItems()) { try { item.widgetModified(fSection, xWidget); } catch (Exception ex) { @@ -608,7 +601,7 @@ public class SMAWorkFlowSection extends SectionPart { public void updateTransitionToAssignees() throws OseeCoreException { Collection assignees = null; // Determine if the is an override set of assigness - for (IAtsStateItem item : AtsStateItemManager.getStateItems(statePage.getStateDefinition())) { + for (IAtsStateItem item : AtsStateItemManager.getStateItems()) { assignees = item.getOverrideTransitionToAssignees(this); if (assignees != null) { break; @@ -625,7 +618,7 @@ public class SMAWorkFlowSection extends SectionPart { public void updateTransitionToState() throws OseeCoreException { // Determine if there is a transitionToStateOverride for this page String transitionStateOverride = null; - for (IAtsStateItem item : AtsStateItemManager.getStateItems(statePage.getStateDefinition())) { + for (IAtsStateItem item : AtsStateItemManager.getStateItems()) { transitionStateOverride = item.getOverrideTransitionToStateName(this); if (transitionStateOverride != null) { break; @@ -758,10 +751,9 @@ public class SMAWorkFlowSection extends SectionPart { } // Don't transition without targeted version if so configured - boolean teamDefRequiresTargetedVersion = - sma.teamDefHasWorkRule(AtsWorkDefinitions.RuleWorkItemId.atsRequireTargetedVersion.name()); + boolean teamDefRequiresTargetedVersion = sma.teamDefHasRule(RuleDefinitionOption.RequireTargetedVersion); boolean pageRequiresTargetedVersion = - sma.getStateDefinition().hasRule(AtsWorkDefinitions.RuleWorkItemId.atsRequireTargetedVersion.name()); + sma.getStateDefinition().hasRule(RuleDefinitionOption.RequireTargetedVersion); // Only check this if TeamWorkflow, not for reviews if (sma instanceof TeamWorkFlowArtifact && (teamDefRequiresTargetedVersion || pageRequiresTargetedVersion) && // @@ -783,7 +775,7 @@ public class SMAWorkFlowSection extends SectionPart { } // Check extension points for valid transition - for (IAtsStateItem item : AtsStateItemManager.getStateItems(statePage.getStateDefinition())) { + for (IAtsStateItem item : AtsStateItemManager.getStateItems()) { try { result = item.transitioning(sma, sma.getStateMgr().getCurrentState(), toStateDefinition, toAssignees); if (result.isFalse()) { @@ -936,9 +928,9 @@ public class SMAWorkFlowSection extends SectionPart { // and one of these // // page is define to allow anyone to edit - (sma.getStateDefinition().hasRule(AtsWorkDefinitions.RuleWorkItemId.atsAllowEditToAll.name()) || + (sma.getStateDefinition().hasRule(RuleDefinitionOption.AllowEditToAll) || // team definition has allowed anyone to edit - sma.teamDefHasWorkRule(AtsWorkDefinitions.RuleWorkItemId.atsAllowEditToAll.name()) || + sma.teamDefHasRule(RuleDefinitionOption.AllowEditToAll) || // priviledged edit mode is on editor.isPriviledgedEditModeEnabled() || // current user is assigned diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowTab.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowTab.java index 21809d34e82..dff1266717b 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowTab.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowTab.java @@ -45,9 +45,9 @@ import org.eclipse.osee.ats.artifact.note.NoteItem; import org.eclipse.osee.ats.config.AtsBulkLoad; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.workdef.RuleDefinitionOption; import org.eclipse.osee.ats.workdef.StateXWidgetPage; import org.eclipse.osee.ats.workdef.WorkDefinitionMatch; -import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.core.operation.Operations; import org.eclipse.osee.framework.jdk.core.util.DateUtil; @@ -354,7 +354,8 @@ public class SMAWorkFlowTab extends FormPage implements IActionable { if (sma.isTeamWorkflow()) { actionableItemHeader = new SMAActionableItemHeader(headerComp, editor.getToolkit(), sma); } - workflowMetricsHeader = new SMAWorkflowMetricsHeader(headerComp, editor.getToolkit(), sma); + workflowMetricsHeader = + new SMAWorkflowMetricsHeader(headerComp, editor.getToolkit(), sma, editor, managedForm); int headerCompColumns = 4; createWorkDefHeader(headerComp, editor.getToolkit(), sma, headerCompColumns); createSMANotesHeader(headerComp, editor.getToolkit(), sma, headerCompColumns); @@ -409,9 +410,9 @@ public class SMAWorkFlowTab extends FormPage implements IActionable { (SMAWorkFlowSection.isEditable(sma, page, editor) || // // page is define to allow anyone to edit - sma.getStateDefinition().hasRule(AtsWorkDefinitions.RuleWorkItemId.atsAllowAssigneeToAll.name()) || + sma.getStateDefinition().hasRule(RuleDefinitionOption.AllowAssigneeToAll) || // team definition has allowed anyone to edit - sma.teamDefHasWorkRule(AtsWorkDefinitions.RuleWorkItemId.atsAllowAssigneeToAll.name())); + sma.teamDefHasRule(RuleDefinitionOption.AllowAssigneeToAll)); new SMAAssigneesHeader(comp, SWT.NONE, sma, editable, editor); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkflowMetricsHeader.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkflowMetricsHeader.java index 253466e2fb1..919e53c126c 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkflowMetricsHeader.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkflowMetricsHeader.java @@ -24,33 +24,42 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.forms.IManagedForm; /** * @author Donald G. Dunne */ public class SMAWorkflowMetricsHeader extends Composite { - private final AbstractWorkflowArtifact sma; - private Label percentLabel, estHoursLabel, hoursSpentLabel, remainHoursLabel; + private final AbstractWorkflowArtifact awa; + private Label percentLabel, hoursSpentLabel, remainHoursLabel; + private SMAPercentCompleteHeader totalPercentHeader; + private SMAEstimatedHoursHeader estimatedHoursHeader; - public SMAWorkflowMetricsHeader(Composite parent, XFormToolkit toolkit, AbstractWorkflowArtifact sma) { + public SMAWorkflowMetricsHeader(Composite parent, XFormToolkit toolkit, AbstractWorkflowArtifact awa, SMAEditor editor, IManagedForm managedForm) { super(parent, SWT.NONE); - this.sma = sma; + this.awa = awa; try { + int numColumns = 8; + if (!awa.getWorkDefinition().isStateWeightingEnabled()) { + numColumns = 10; + } toolkit.adapt(this); - setLayout(ALayout.getZeroMarginLayout(8, false)); + setLayout(ALayout.getZeroMarginLayout(numColumns, false)); setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - percentLabel = - FormsUtil.createLabelValue(toolkit, this, "Total Percent: ", "", - "Calculation: sum of percent for all states (including all tasks and reviews) / # statusable states"); - estHoursLabel = - FormsUtil.createLabelValue(toolkit, this, "Total Estimated Hours: ", "", - "Calculation: sum estimated hours for workflow and all tasks and reviews"); + if (awa.getWorkDefinition().isStateWeightingEnabled()) { + percentLabel = + FormsUtil.createLabelValue(toolkit, this, "Total Percent: ", "", + "Calculation: Sum of percent for all states (including all tasks and reviews) / # statusable states (if configured)"); + } else { + totalPercentHeader = new SMAPercentCompleteHeader(this, 2, awa, editor); + } + estimatedHoursHeader = new SMAEstimatedHoursHeader(this, 2, awa, editor); hoursSpentLabel = FormsUtil.createLabelValue(toolkit, this, "Total Hours Spent: ", "", - "Calculation: sum of all hours spent for all tasks, reviews and in each state"); + "Calculation: Sum of all hours spent for all tasks, reviews and in each state"); remainHoursLabel = FormsUtil.createLabelValue(toolkit, this, "Remaining Hours: ", "", RemainingHoursColumn.getInstance().getDescription()); @@ -62,32 +71,37 @@ public class SMAWorkflowMetricsHeader extends Composite { } private void refresh() { - if (percentLabel.isDisposed()) { + if (hoursSpentLabel.isDisposed()) { return; } try { - if (!percentLabel.isDisposed()) { - percentLabel.setText(String.valueOf(sma.getPercentCompleteSMATotal())); + if (totalPercentHeader != null) { + totalPercentHeader.refresh(); } - if (estHoursLabel != null && !estHoursLabel.isDisposed()) { - estHoursLabel.setText(String.valueOf(AtsUtil.doubleToI18nString(sma.getEstimatedHoursTotal()))); + if (percentLabel != null && !percentLabel.isDisposed()) { + percentLabel.setText(String.valueOf(awa.getPercentCompleteSMATotal())); + } + if (estimatedHoursHeader != null) { + estimatedHoursHeader.refresh(); } if (hoursSpentLabel != null && !hoursSpentLabel.isDisposed()) { - hoursSpentLabel.setText(String.valueOf(AtsUtil.doubleToI18nString(sma.getHoursSpentSMATotal()))); + hoursSpentLabel.setText(String.valueOf(AtsUtil.doubleToI18nString(awa.getHoursSpentSMATotal()))); } if (hoursSpentLabel != null && !hoursSpentLabel.isDisposed()) { - Result result = RemainingHoursColumn.isRemainingHoursValid(sma); + Result result = RemainingHoursColumn.isRemainingHoursValid(awa); if (result.isFalse()) { remainHoursLabel.setText("Error" + result.getText()); } else { - remainHoursLabel.setText(String.valueOf(AtsUtil.doubleToI18nString(RemainingHoursColumn.getRemainingHours(sma)))); + remainHoursLabel.setText(String.valueOf(AtsUtil.doubleToI18nString(RemainingHoursColumn.getRemainingHours(awa)))); } } } catch (Exception ex) { OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); } - percentLabel.update(); + if (percentLabel != null) { + percentLabel.update(); + } layout(); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsDecisionReviewDecisionStateItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsDecisionReviewDecisionStateItem.java index b95d60c2376..c83eef3a1f8 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsDecisionReviewDecisionStateItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsDecisionReviewDecisionStateItem.java @@ -18,9 +18,10 @@ import org.eclipse.osee.ats.artifact.AtsAttributeTypes; import org.eclipse.osee.ats.artifact.DecisionReviewArtifact; import org.eclipse.osee.ats.artifact.DecisionReviewState; import org.eclipse.osee.ats.editor.SMAWorkFlowSection; +import org.eclipse.osee.ats.util.AtsArtifactTypes; import org.eclipse.osee.ats.util.widgets.DecisionOption; import org.eclipse.osee.ats.util.widgets.XDecisionOptions; -import org.eclipse.osee.ats.workdef.StateXWidgetPage; +import org.eclipse.osee.ats.workdef.StateDefinition; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.core.exception.OseeStateException; import org.eclipse.osee.framework.skynet.core.User; @@ -36,42 +37,55 @@ import org.eclipse.ui.forms.widgets.FormToolkit; */ public class AtsDecisionReviewDecisionStateItem extends AtsStateItem { + public AtsDecisionReviewDecisionStateItem() { + super(AtsDecisionReviewDecisionStateItem.class.getSimpleName()); + } + @Override - public String getId() { - return "osee.ats.decisionReview.Decision"; + public String getDescription() { + return "Add decision options to Decision state based on prepare state's entries."; } @Override - public Result xWidgetCreating(XWidget xWidget, FormToolkit toolkit, StateXWidgetPage page, Artifact art, XModifiedListener xModListener, boolean isEditable) throws OseeCoreException { - if (xWidget == null) { - throw new OseeStateException("Can't retrieve decision review combo widget to set."); - } - if (!(art instanceof AbstractWorkflowArtifact)) { - throw new OseeCoreException( - "AtsDecisionReviewDecisionStateItem.xWidgetCreating expected a StateMachineArtifact"); - } - if (xWidget.getLabel().equals(AtsAttributeTypes.Decision.getUnqualifiedName())) { - XComboDam decisionComboDam = (XComboDam) xWidget; - List options = new ArrayList(); - XDecisionOptions xDecOptions = new XDecisionOptions((AbstractWorkflowArtifact) art); - for (DecisionOption opt : xDecOptions.getDecisionOptions()) { - options.add(opt.getName()); + public Result xWidgetCreating(XWidget xWidget, FormToolkit toolkit, StateDefinition stateDefinition, Artifact art, XModifiedListener xModListener, boolean isEditable) throws OseeCoreException { + if (art.isOfType(AtsArtifactTypes.DecisionReview) && stateDefinition.getPageName().equals( + DecisionReviewState.Decision.getPageName())) { + if (xWidget == null) { + throw new OseeStateException("Can't retrieve decision review combo widget to set."); + } + if (xWidget.getLabel().equals(AtsAttributeTypes.Decision.getUnqualifiedName())) { + XComboDam decisionComboDam = (XComboDam) xWidget; + List options = new ArrayList(); + XDecisionOptions xDecOptions = new XDecisionOptions((AbstractWorkflowArtifact) art); + for (DecisionOption opt : xDecOptions.getDecisionOptions()) { + options.add(opt.getName()); + } + decisionComboDam.setDataStrings(options.toArray(new String[options.size()])); } - decisionComboDam.setDataStrings(options.toArray(new String[options.size()])); } return Result.TrueResult; } @Override public String getOverrideTransitionToStateName(SMAWorkFlowSection section) throws OseeCoreException { - DecisionOption decisionOption = getDecisionOption(section); + if (isApplicable(section)) { + if (section.getTransitionToStateCombo() == null || section.getTransitionToStateCombo().getSelected() == null) { + return null; + } + XWidget xWidget = section.getPage().getLayoutData(AtsAttributeTypes.Decision.getName()).getXWidget(); + XComboDam decisionComboDam = (XComboDam) xWidget; + DecisionReviewArtifact decArt = (DecisionReviewArtifact) section.getSma(); + return getOverrideTransitionToStateName(decArt, decisionComboDam); + } + return null; + } + + public String getOverrideTransitionToStateName(DecisionReviewArtifact decArt, XComboDam decisionComboDam) throws OseeCoreException { + DecisionOption decisionOption = getDecisionOption(decArt, decisionComboDam); if (decisionOption == null) { return null; } boolean followUpRequired = decisionOption.isFollowupRequired(); - if (section.getTransitionToStateCombo() == null || section.getTransitionToStateCombo().getSelected() == null) { - return null; - } if (followUpRequired) { return DecisionReviewState.Followup.getPageName(); } else { @@ -81,27 +95,34 @@ public class AtsDecisionReviewDecisionStateItem extends AtsStateItem { @Override public Collection getOverrideTransitionToAssignees(SMAWorkFlowSection section) throws OseeCoreException { - DecisionOption decisionOption = getDecisionOption(section); + if (isApplicable(section)) { + XWidget xWidget = section.getPage().getLayoutData(AtsAttributeTypes.Decision.getName()).getXWidget(); + XComboDam decisionComboDam = (XComboDam) xWidget; + DecisionReviewArtifact decArt = (DecisionReviewArtifact) section.getSma(); + return getOverrideTransitionToAssignees(decArt, decisionComboDam); + } + return null; + } + + public Collection getOverrideTransitionToAssignees(DecisionReviewArtifact decArt, XComboDam decisionComboDam) throws OseeCoreException { + DecisionOption decisionOption = getDecisionOption(decArt, decisionComboDam); if (decisionOption == null) { return null; } return decisionOption.getAssignees(); } - private DecisionOption getDecisionOption(SMAWorkFlowSection section) throws OseeCoreException { - XWidget xWidget = section.getPage().getLayoutData(AtsAttributeTypes.Decision.getName()).getXWidget(); - XComboDam decisionComboDam = (XComboDam) xWidget; + private boolean isApplicable(SMAWorkFlowSection section) { + return section.getSma().isOfType(AtsArtifactTypes.DecisionReview) && section.getSma().getCurrentStateName().equals( + DecisionReviewState.Decision.getPageName()); + } + + private DecisionOption getDecisionOption(DecisionReviewArtifact decRevArt, XComboDam decisionComboDam) throws OseeCoreException { String decision = decisionComboDam.get(); if (decision.equals("")) { return null; } - DecisionReviewArtifact decArt = (DecisionReviewArtifact) section.getSma(); - return decArt.decisionOptions.getDecisionOption(decision); - } - - @Override - public String getDescription() { - return "AtsDecisionReviewDecisionStateItem - Add decision options to review state based on prepare state's entries."; + return decRevArt.decisionOptions.getDecisionOption(decision); } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsDecisionReviewPrepareStateItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsDecisionReviewPrepareStateItem.java index 51a9aa48d59..f4cd7a97ce5 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsDecisionReviewPrepareStateItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsDecisionReviewPrepareStateItem.java @@ -13,6 +13,7 @@ package org.eclipse.osee.ats.editor.stateItem; import java.util.Collection; import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.DecisionReviewState; +import org.eclipse.osee.ats.util.AtsArtifactTypes; import org.eclipse.osee.ats.util.widgets.XDecisionOptions; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.skynet.core.User; @@ -24,14 +25,19 @@ import org.eclipse.osee.framework.ui.skynet.widgets.workflow.IWorkPage; */ public class AtsDecisionReviewPrepareStateItem extends AtsStateItem { + public AtsDecisionReviewPrepareStateItem() { + super(AtsDecisionReviewPrepareStateItem.class.getSimpleName()); + } + @Override - public String getId() { - return "osee.ats.decisionReview.Prepare"; + public String getDescription() { + return "Add validation of Decision Review options prior to transitioning from Prepare to Decision."; } @Override public Result transitioning(AbstractWorkflowArtifact sma, IWorkPage fromState, IWorkPage toState, Collection toAssignees) throws OseeCoreException { - if (fromState.getPageName().equals(DecisionReviewState.Prepare.getPageName()) && toState.getPageName().equals( + if (sma.isOfType(AtsArtifactTypes.DecisionReview) && fromState.getPageName().equals( + DecisionReviewState.Prepare.getPageName()) && toState.getPageName().equals( DecisionReviewState.Decision.getPageName())) { XDecisionOptions decOptions = new XDecisionOptions(sma); return decOptions.validateDecisionOptions(); @@ -39,9 +45,4 @@ public class AtsDecisionReviewPrepareStateItem extends AtsStateItem { return Result.TrueResult; } - @Override - public String getDescription() { - return "AtsDecisionReviewPrepareStateItem - Add validation of decision options prior to transitioning."; - } - } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsForceAssigneesToTeamLeadsStateItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsForceAssigneesToTeamLeadsStateItem.java index 17db26e7128..59b5919c045 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsForceAssigneesToTeamLeadsStateItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsForceAssigneesToTeamLeadsStateItem.java @@ -11,13 +11,10 @@ package org.eclipse.osee.ats.editor.stateItem; import java.util.Collection; -import java.util.logging.Level; import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; -import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions; import org.eclipse.osee.framework.core.exception.OseeCoreException; -import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.skynet.core.User; import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; import org.eclipse.osee.framework.ui.skynet.widgets.workflow.IWorkPage; @@ -27,29 +24,24 @@ import org.eclipse.osee.framework.ui.skynet.widgets.workflow.IWorkPage; */ public class AtsForceAssigneesToTeamLeadsStateItem extends AtsStateItem { + public AtsForceAssigneesToTeamLeadsStateItem() { + super(AtsForceAssigneesToTeamLeadsStateItem.class.getSimpleName()); + } + @Override - public String getId() { - return AtsStateItem.ALL_STATE_IDS; + public String getDescription() { + return "Check if toState is configured to force assignees to leads and set leads accordingly."; } @Override public void transitioned(AbstractWorkflowArtifact sma, IWorkPage fromState, IWorkPage toState, Collection toAssignees, SkynetTransaction transaction) throws OseeCoreException { - super.transitioned(sma, fromState, toState, toAssignees, transaction); if (sma.isTeamWorkflow() && AtsWorkDefinitions.isForceAssigneesToTeamLeads(sma.getStateDefinitionByName(toState.getPageName()))) { - // Set Assignees to all user roles users - try { - Collection teamLeads = ((TeamWorkFlowArtifact) sma).getTeamDefinition().getLeads(); + Collection teamLeads = ((TeamWorkFlowArtifact) sma).getTeamDefinition().getLeads(); + if (!teamLeads.isEmpty()) { sma.getStateMgr().setAssignees(teamLeads); sma.persist(transaction); - } catch (Exception ex) { - OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); } } } - @Override - public String getDescription() { - return "AtsForceAssigneesToTeamLeadsStateItem"; - } - } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsHandleAddReviewRuleStateItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsHandleAddReviewRuleStateItem.java index 5f20b270ff7..add1bde5082 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsHandleAddReviewRuleStateItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsHandleAddReviewRuleStateItem.java @@ -16,7 +16,6 @@ import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.DecisionReviewArtifact; import org.eclipse.osee.ats.artifact.PeerToPeerReviewArtifact; import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; -import org.eclipse.osee.ats.util.AtsArtifactTypes; import org.eclipse.osee.ats.workdef.DecisionReviewDefinition; import org.eclipse.osee.ats.workdef.PeerReviewDefinition; import org.eclipse.osee.ats.workdef.StateEventType; @@ -34,25 +33,23 @@ import org.eclipse.osee.framework.ui.skynet.widgets.workflow.IWorkPage; */ public class AtsHandleAddReviewRuleStateItem extends AtsStateItem { + public AtsHandleAddReviewRuleStateItem() { + super(AtsHandleAddReviewRuleStateItem.class.getSimpleName()); + } + @Override - public String getId() { - return AtsStateItem.ALL_STATE_IDS; + public String getDescription() { + return "Create review if AddDecisionReviewRule or AddPeerToPeerReviewRule exists for this state."; } @Override public void transitioned(AbstractWorkflowArtifact sma, IWorkPage fromState, IWorkPage toState, Collection toAssignees, SkynetTransaction transaction) throws OseeCoreException { - super.transitioned(sma, fromState, toState, toAssignees, transaction); - // Create any decision or peerToPeer reviews for transitionTo and transitionFrom - runRule(sma, toState, transaction); - } - - public static void runRule(AbstractWorkflowArtifact sma, IWorkPage toState, SkynetTransaction transaction) throws OseeCoreException { - Date createdDate = new Date(); - User createdBy = UserManager.getUser(SystemUser.OseeSystem); - if (!sma.isOfType(AtsArtifactTypes.TeamWorkflow)) { + if (!sma.isTeamWorkflow()) { return; } + Date createdDate = new Date(); + User createdBy = UserManager.getUser(SystemUser.OseeSystem); TeamWorkFlowArtifact teamArt = (TeamWorkFlowArtifact) sma; for (DecisionReviewDefinition decRevDef : teamArt.getStateDefinition().getDecisionReviews()) { @@ -76,12 +73,6 @@ public class AtsHandleAddReviewRuleStateItem extends AtsStateItem { } } } - - } - - @Override - public String getDescription() { - return "AtsHandleAddReviewRuleStateItem - If AddDecisionReviewRule or AddPeerToPeerReviewRule exists for this state, create review."; } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsPeerToPeerReviewPrepareStateItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsPeerToPeerReviewPrepareStateItem.java index 776622bfd77..00dc2d17178 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsPeerToPeerReviewPrepareStateItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsPeerToPeerReviewPrepareStateItem.java @@ -13,8 +13,10 @@ package org.eclipse.osee.ats.editor.stateItem; import java.util.logging.Level; import org.eclipse.osee.ats.artifact.AbstractReviewArtifact; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; +import org.eclipse.osee.ats.artifact.PeerToPeerReviewState; import org.eclipse.osee.ats.internal.AtsPlugin; -import org.eclipse.osee.ats.workdef.StateXWidgetPage; +import org.eclipse.osee.ats.util.AtsArtifactTypes; +import org.eclipse.osee.ats.workdef.StateDefinition; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; @@ -28,17 +30,22 @@ import org.eclipse.ui.forms.widgets.FormToolkit; */ public class AtsPeerToPeerReviewPrepareStateItem extends AtsStateItem { + public AtsPeerToPeerReviewPrepareStateItem() { + super(AtsPeerToPeerReviewPrepareStateItem.class.getSimpleName()); + } + @Override - public String getId() { - return "osee.ats.peerToPeerReview.Prepare"; + public String getDescription() { + return "If stand-alone review, remove blocking review enablement and required entry."; } @Override - public void xWidgetCreated(XWidget widget, FormToolkit toolkit, StateXWidgetPage page, Artifact art, XModifiedListener modListener, boolean isEditable) throws OseeCoreException { - super.xWidgetCreated(widget, toolkit, page, art, modListener, isEditable); + public void xWidgetCreated(XWidget widget, FormToolkit toolkit, StateDefinition stateDefinition, Artifact art, XModifiedListener modListener, boolean isEditable) { try { - if (art instanceof AbstractReviewArtifact && ((AbstractReviewArtifact) art).getParentSMA() == null && widget.getLabel().equals( - AtsAttributeTypes.ReviewBlocks.getUnqualifiedName())) { + if (art.isOfType(AtsArtifactTypes.PeerToPeerReview) && // + stateDefinition.getPageName().equals(PeerToPeerReviewState.Prepare.getPageName()) && // + ((AbstractReviewArtifact) art).getParentSMA() == null && // + widget.getLabel().equals(AtsAttributeTypes.ReviewBlocks.getUnqualifiedName())) { XComboDam decisionComboDam = (XComboDam) widget; decisionComboDam.setEnabled(false); decisionComboDam.setRequiredEntry(false); @@ -48,9 +55,4 @@ public class AtsPeerToPeerReviewPrepareStateItem extends AtsStateItem { } } - @Override - public String getDescription() { - return "AtsPeerToPeerReviewPrepareStateItem - If stand-alone review, remove blocking review enablement and required entry."; - } - } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsPeerToPeerReviewReviewStateItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsPeerToPeerReviewReviewStateItem.java index 9c5ab034ecc..bc206558673 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsPeerToPeerReviewReviewStateItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsPeerToPeerReviewReviewStateItem.java @@ -16,6 +16,7 @@ import java.util.Set; import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.artifact.PeerToPeerReviewArtifact; import org.eclipse.osee.ats.artifact.PeerToPeerReviewState; +import org.eclipse.osee.ats.util.AtsArtifactTypes; import org.eclipse.osee.ats.util.widgets.role.UserRole; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.skynet.core.User; @@ -27,34 +28,32 @@ import org.eclipse.osee.framework.ui.skynet.widgets.workflow.IWorkPage; */ public class AtsPeerToPeerReviewReviewStateItem extends AtsStateItem { + public AtsPeerToPeerReviewReviewStateItem() { + super(AtsPeerToPeerReviewReviewStateItem.class.getSimpleName()); + } + @Override - public String getId() { - return "osee.ats.peerToPeerReview.Review"; + public String getDescription() { + return "Assign review state to all members of review as per role in prepare state."; } @Override public void transitioned(AbstractWorkflowArtifact sma, IWorkPage fromState, IWorkPage toState, Collection toAssignees, SkynetTransaction transaction) throws OseeCoreException { - super.transitioned(sma, fromState, toState, toAssignees, transaction); - if (!toState.getPageName().equals(PeerToPeerReviewState.Review.getPageName())) { - return; - } - // Set Assignees to all user roles users - Set assignees = new HashSet(); - PeerToPeerReviewArtifact peerArt = (PeerToPeerReviewArtifact) sma; - for (UserRole uRole : peerArt.getUserRoleManager().getUserRoles()) { - if (!uRole.isCompleted()) { - assignees.add(uRole.getUser()); + if (sma.isOfType(AtsArtifactTypes.PeerToPeerReview) && toState.getPageName().equals( + PeerToPeerReviewState.Review.getPageName())) { + // Set Assignees to all user roles users + Set assignees = new HashSet(); + PeerToPeerReviewArtifact peerArt = (PeerToPeerReviewArtifact) sma; + for (UserRole uRole : peerArt.getUserRoleManager().getUserRoles()) { + if (!uRole.isCompleted()) { + assignees.add(uRole.getUser()); + } } - } - assignees.addAll(sma.getStateMgr().getAssignees()); + assignees.addAll(sma.getStateMgr().getAssignees()); - sma.getStateMgr().setAssignees(assignees); - sma.persist(transaction); - } - - @Override - public String getDescription() { - return "AtsPeerToPeerReviewReviewStateItem - assign review state to all members of review as per role in prepare state."; + sma.getStateMgr().setAssignees(assignees); + sma.persist(transaction); + } } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsStateItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsStateItem.java index 144e9be6b1c..38a63811b15 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsStateItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsStateItem.java @@ -10,13 +10,12 @@ *******************************************************************************/ package org.eclipse.osee.ats.editor.stateItem; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.editor.SMAWorkFlowSection; -import org.eclipse.osee.ats.workdef.StateXWidgetPage; +import org.eclipse.osee.ats.workdef.StateDefinition; 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; @@ -33,6 +32,11 @@ import org.eclipse.ui.forms.widgets.FormToolkit; public abstract class AtsStateItem implements IAtsStateItem { public final static String ALL_STATE_IDS = "ALL"; + private final String name; + + public AtsStateItem(String name) { + this.name = name; + } @SuppressWarnings("unused") @Override @@ -46,17 +50,9 @@ public abstract class AtsStateItem implements IAtsStateItem { return null; } - protected String getId() { - return null; - } - - @SuppressWarnings("unused") @Override - public Collection getIds() throws OseeCoreException { - if (getId() == null) { - return Collections.emptyList(); - } - return Arrays.asList(getId()); + public String getName() { + return name; } @SuppressWarnings("unused") @@ -73,22 +69,16 @@ public abstract class AtsStateItem implements IAtsStateItem { @SuppressWarnings("unused") @Override - public List getDynamicXWidgetsPostBody(AbstractWorkflowArtifact sma) throws OseeCoreException { + public List getDynamicXWidgetsPostBody(AbstractWorkflowArtifact sma, String stateName) throws OseeCoreException { return Collections.emptyList(); } @SuppressWarnings("unused") @Override - public List getDynamicXWidgetsPreBody(AbstractWorkflowArtifact sma) throws OseeCoreException { + public List getDynamicXWidgetsPreBody(AbstractWorkflowArtifact sma, String stateName) throws OseeCoreException { return Collections.emptyList(); } - @SuppressWarnings("unused") - @Override - public Result pageCreated(FormToolkit toolkit, StateXWidgetPage page, AbstractWorkflowArtifact sma, XModifiedListener xModListener, boolean isEditable) throws OseeCoreException { - return Result.TrueResult; - } - @SuppressWarnings("unused") @Override public void transitioned(AbstractWorkflowArtifact sma, IWorkPage fromState, IWorkPage toState, Collection toAssignees, SkynetTransaction transaction) throws OseeCoreException { @@ -109,13 +99,13 @@ public abstract class AtsStateItem implements IAtsStateItem { @SuppressWarnings("unused") @Override - public void xWidgetCreated(XWidget xWidget, FormToolkit toolkit, StateXWidgetPage page, Artifact art, XModifiedListener xModListener, boolean isEditable) throws OseeCoreException { + public void xWidgetCreated(XWidget xWidget, FormToolkit toolkit, StateDefinition stateDefinition, Artifact art, XModifiedListener xModListener, boolean isEditable) throws OseeCoreException { // provided for subclass implementation } @SuppressWarnings("unused") @Override - public Result xWidgetCreating(XWidget xWidget, FormToolkit toolkit, StateXWidgetPage page, Artifact art, XModifiedListener xModListener, boolean isEditable) throws OseeCoreException { + public Result xWidgetCreating(XWidget xWidget, FormToolkit toolkit, StateDefinition stateDefinition, Artifact art, XModifiedListener xModListener, boolean isEditable) throws OseeCoreException { return Result.TrueResult; } @@ -124,4 +114,14 @@ public abstract class AtsStateItem implements IAtsStateItem { public boolean isAccessControlViaAssigneesEnabledForBranching() throws OseeCoreException { return false; } + + @Override + public String getFullName() { + return getClass().getName(); + } + + @Override + public String toString() { + return getName(); + } } \ No newline at end of file diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsStateItemManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsStateItemManager.java index 17cab9713f1..2f055656c94 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsStateItemManager.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/AtsStateItemManager.java @@ -17,10 +17,7 @@ import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExtension; import org.eclipse.core.runtime.IExtensionPoint; import org.eclipse.core.runtime.Platform; -import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.internal.AtsPlugin; -import org.eclipse.osee.ats.workdef.StateDefinition; -import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; import org.osgi.framework.Bundle; @@ -32,23 +29,9 @@ public class AtsStateItemManager { private final static List stateItems = new ArrayList(); - public static List getStateItems(StateDefinition stateDef) throws OseeCoreException { - return getStateItems(stateDef.getFullName()); - } - - private static List getStateItems(String stateId) throws OseeCoreException { + public static List getStateItems() { loadAllStateItems(); - List items = new ArrayList(); - for (IAtsStateItem item : stateItems) { - if (item.getIds().contains(AtsStateItem.ALL_STATE_IDS) || item.getIds().contains(stateId)) { - items.add(item); - } - } - return items; - } - - public static List getCurrentPageStateItems(AbstractWorkflowArtifact sma) throws OseeCoreException { - return getStateItems(sma.getStateDefinition().getFullName()); + return stateItems; } @SuppressWarnings({"rawtypes"}) diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/IAtsStateItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/IAtsStateItem.java index bbb4ee9a6da..55deb744cf6 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/IAtsStateItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/stateItem/IAtsStateItem.java @@ -14,7 +14,7 @@ import java.util.Collection; import java.util.List; import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; import org.eclipse.osee.ats.editor.SMAWorkFlowSection; -import org.eclipse.osee.ats.workdef.StateXWidgetPage; +import org.eclipse.osee.ats.workdef.StateDefinition; 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; @@ -30,11 +30,13 @@ import org.eclipse.ui.forms.widgets.FormToolkit; */ public interface IAtsStateItem { - public Result pageCreated(FormToolkit toolkit, StateXWidgetPage page, AbstractWorkflowArtifact sma, XModifiedListener xModListener, boolean isEditable) throws OseeCoreException; + public String getName(); - public Result xWidgetCreating(XWidget xWidget, FormToolkit toolkit, StateXWidgetPage page, Artifact art, XModifiedListener xModListener, boolean isEditable) throws OseeCoreException; + public String getFullName(); - public void xWidgetCreated(XWidget xWidget, FormToolkit toolkit, StateXWidgetPage page, Artifact art, XModifiedListener xModListener, boolean isEditable) throws OseeCoreException; + public Result xWidgetCreating(XWidget xWidget, FormToolkit toolkit, StateDefinition stateDefinition, Artifact art, XModifiedListener xModListener, boolean isEditable) throws OseeCoreException; + + public void xWidgetCreated(XWidget xWidget, FormToolkit toolkit, StateDefinition stateDefinition, Artifact art, XModifiedListener xModListener, boolean isEditable) throws OseeCoreException; public void widgetModified(SMAWorkFlowSection section, XWidget xWidget) throws OseeCoreException; @@ -42,14 +44,12 @@ public interface IAtsStateItem { public Collection getOverrideTransitionToAssignees(SMAWorkFlowSection section) throws OseeCoreException; - public String getDescription() throws OseeCoreException; + public String getDescription(); public String getBranchShortName(AbstractWorkflowArtifact sma) throws OseeCoreException; public boolean isAccessControlViaAssigneesEnabledForBranching() throws OseeCoreException; - public Collection getIds() throws OseeCoreException; - /** * @return Result of operation. If Result.isFalse(), transition will not continue and Result.popup will occur. */ @@ -62,8 +62,8 @@ public interface IAtsStateItem { */ public Result committing(AbstractWorkflowArtifact sma) throws OseeCoreException; - public List getDynamicXWidgetsPostBody(AbstractWorkflowArtifact sma) throws OseeCoreException; + public List getDynamicXWidgetsPostBody(AbstractWorkflowArtifact sma, String stateName) throws OseeCoreException; - public List getDynamicXWidgetsPreBody(AbstractWorkflowArtifact sma) throws OseeCoreException; + public List getDynamicXWidgetsPreBody(AbstractWorkflowArtifact sma, String stateName) throws OseeCoreException; } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateViewItems.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateViewItems.java index 095b4205302..6a0756008ae 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateViewItems.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateViewItems.java @@ -184,6 +184,8 @@ public final class AtsNavigateViewItems implements XNavigateViewItems { new ConvertAtsFor097Database(dbConvertItems); new ConvertAtsSingleFor097Database(dbConvertItems); new ConvertWorkFlowDefinitions(dbConvertItems); + new ConvertAIsAndTeamDefinitions(dbConvertItems); + new ImportAIsAndTeamDefinitions(dbConvertItems); new AtsNotificationNavigateItem(adminItems); new AtsNotificationNavigateItem(adminItems, true); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ConfigureDBForAts.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ConfigureDBForAts.java index e5808071e5c..f3b078a573d 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ConfigureDBForAts.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ConfigureDBForAts.java @@ -18,7 +18,6 @@ import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.osee.ats.internal.AtsPlugin; import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions; -import org.eclipse.osee.ats.workflow.vue.LoadAIsAndTeamsAction; import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.plugin.core.util.Jobs; import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateComposite.TableLoadOption; @@ -66,7 +65,6 @@ public class ConfigureDBForAts extends XNavigateItemAction { AtsWorkDefinitions.importWorkItemDefinitionsIntoDb(WriteType.New, null, AtsWorkDefinitions.getAtsWorkDefinitions()); monitor.subTask("Loading Actionable Items and Teams for " + pluginId); - LoadAIsAndTeamsAction.executeForAtsRuntimeConfig(false, pluginId); } catch (Exception ex) { OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); return new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, -1, ex.getMessage(), ex); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ConvertAIsAndTeamDefinitions.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ConvertAIsAndTeamDefinitions.java new file mode 100644 index 00000000000..c40cdd17509 --- /dev/null +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ConvertAIsAndTeamDefinitions.java @@ -0,0 +1,33 @@ +/******************************************************************************* + * 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.navigate; + +import org.eclipse.osee.ats.AtsImage; +import org.eclipse.osee.ats.workdef.AtsWorkDefinitionProviders; +import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateComposite.TableLoadOption; +import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItem; +import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItemAction; +import org.eclipse.osee.framework.ui.skynet.results.XResultData; + +public class ConvertAIsAndTeamDefinitions extends XNavigateItemAction { + + public ConvertAIsAndTeamDefinitions(XNavigateItem parent) { + super(parent, "Convert AIs and Team Definition to AtsDsl", AtsImage.WORK_DEFINITION); + } + + @Override + public void run(TableLoadOption... tableLoadOptions) throws Exception { + XResultData resultData = new XResultData(); + AtsWorkDefinitionProviders.convertAndOpenAIandTeamAtsDsl(resultData); + resultData.report(getName()); + } + +} diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ConvertWorkFlowDefinitions.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ConvertWorkFlowDefinitions.java index b3451fd5fbd..244a4420a46 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ConvertWorkFlowDefinitions.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ConvertWorkFlowDefinitions.java @@ -54,6 +54,7 @@ public class ConvertWorkFlowDefinitions extends XNavigateItemAction { idToName.put("lba.common.code", "WorkDef_Team_LbaCode.ats"); idToName.put("lba.common.pids.req", "WorkDef_Team_LbaPids.ats"); idToName.put("lba.common.req", "WorkDef_Team_Lba_Req.ats"); + idToName.put("lba.common.sw_ta", "WorkDef_Team_Lba_SwTechAppr.ats"); idToName.put("lba.common.sw_techappr", "WorkDef_Team_Lba_SwTechAppr.ats"); idToName.put("lba.common.swdesign", "WorkDef_Team_Lba_SwDesign.ats"); idToName.put("lba.common.test", "WorkDef_Team_Lba_Test_Default.ats"); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ImportAIsAndTeamDefinitions.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ImportAIsAndTeamDefinitions.java new file mode 100644 index 00000000000..83f7f16bd5d --- /dev/null +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ImportAIsAndTeamDefinitions.java @@ -0,0 +1,30 @@ +/******************************************************************************* + * 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.navigate; + +import org.eclipse.osee.ats.AtsImage; +import org.eclipse.osee.ats.workdef.AtsWorkDefinitionSheetProviders; +import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateComposite.TableLoadOption; +import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItem; +import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItemAction; + +public class ImportAIsAndTeamDefinitions extends XNavigateItemAction { + + public ImportAIsAndTeamDefinitions(XNavigateItem parent) { + super(parent, "Import AIs and Team Definition to DB", AtsImage.WORK_DEFINITION); + } + + @Override + public void run(TableLoadOption... tableLoadOptions) throws Exception { + AtsWorkDefinitionSheetProviders.importAIsAndTeamsToDatabase(); + } + +} diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsBranchCommitJob.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsBranchCommitJob.java index c513386c787..55e982aca26 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsBranchCommitJob.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsBranchCommitJob.java @@ -80,7 +80,7 @@ public class AtsBranchCommitJob extends Job { if (!overrideStateValidation) { adminOverride = false; // Check extension points for valid commit - for (IAtsStateItem item : AtsStateItemManager.getStateItems(teamArt.getStateDefinition())) { + for (IAtsStateItem item : AtsStateItemManager.getStateItems()) { final Result tempResult = item.committing(teamArt); if (tempResult.isFalse()) { // Allow Admin to override state validation diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsFolderUtil.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsFolderUtil.java deleted file mode 100644 index 47a7cd18dc1..00000000000 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsFolderUtil.java +++ /dev/null @@ -1,107 +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.util; - -import java.util.HashMap; -import java.util.Map; -import org.eclipse.osee.framework.core.data.IArtifactType; -import org.eclipse.osee.framework.core.enums.CoreArtifactTypes; -import org.eclipse.osee.framework.core.exception.OseeCoreException; -import org.eclipse.osee.framework.core.exception.OseeStateException; -import org.eclipse.osee.framework.skynet.core.OseeSystemArtifacts; -import org.eclipse.osee.framework.skynet.core.artifact.Artifact; -import org.eclipse.osee.framework.skynet.core.artifact.StaticIdManager; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; - -/** - * @author Donald G. Dunne - */ -public class AtsFolderUtil { - - public enum AtsFolder { - Ats_Config("Config", "ats.ConfigFolder", CoreArtifactTypes.Folder), - Ats_Heading("Action Tracking System", "ats.HeadingFolder", CoreArtifactTypes.Folder), - Teams("Teams", "osee.ats.TopTeamDefinition", AtsArtifactTypes.TeamDefinition), - ActionableItem("Actionable Items", "osee.ats.TopActionableItem", AtsArtifactTypes.ActionableItem), - WorkFlow("Work Flows", "Work Flows", CoreArtifactTypes.Folder), - WorkRules("Work Rules", "Work Rules", CoreArtifactTypes.Folder), - WorkWidgets("Work Widgets", "Work Widgets", CoreArtifactTypes.Folder), - WorkPages("Work Pages", "Work Pages", CoreArtifactTypes.Folder), - WorkDefinitions("Work Definitions", "Work Definitions", CoreArtifactTypes.Folder); - final String displayName; - final String staticId; - final IArtifactType artifactType; - - private AtsFolder(String displayName, String staticId, IArtifactType artifactType) { - this.displayName = displayName; - this.staticId = staticId; - this.artifactType = artifactType; - } - - /** - * @return the displayName - */ - public String getDisplayName() { - return displayName; - } - - /** - * @return the staticId - */ - public String getStaticId() { - return staticId; - } - } - - public static Map folderMap = new HashMap(); - - public static Artifact getFolder(AtsFolder atsFolder) throws OseeCoreException { - if (!folderMap.containsKey(atsFolder)) { - Artifact artifact = - StaticIdManager.getSingletonArtifact(atsFolder.artifactType, atsFolder.staticId, AtsUtil.getAtsBranch(), - true); - if (artifact == null) { - throw new OseeStateException("Can't retrieve Ats folder [%s]", atsFolder.displayName); - } - folderMap.put(atsFolder, artifact); - } - return folderMap.get(atsFolder); - } - - public static void createAtsFolders() throws OseeCoreException { - SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Create ATS Folders"); - - Artifact headingArt = - OseeSystemArtifacts.getOrCreateArtifact(CoreArtifactTypes.Folder, AtsFolder.Ats_Heading.displayName, - AtsUtil.getAtsBranch()); - if (!headingArt.hasParent()) { - Artifact rootArt = OseeSystemArtifacts.getDefaultHierarchyRootArtifact(AtsUtil.getAtsBranch()); - rootArt.addChild(headingArt); - StaticIdManager.setSingletonAttributeValue(headingArt, AtsFolder.Ats_Heading.staticId); - headingArt.persist(transaction); - } - - for (AtsFolder atsFolder : AtsFolder.values()) { - if (atsFolder == AtsFolder.Ats_Heading) { - continue; - } - Artifact art = - OseeSystemArtifacts.getOrCreateArtifact(atsFolder.artifactType, atsFolder.displayName, - AtsUtil.getAtsBranch()); - StaticIdManager.setSingletonAttributeValue(art, atsFolder.staticId); - headingArt.addChild(art); - art.persist(transaction); - } - - transaction.execute(); - } - -} diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsUtil.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsUtil.java index 56981b4e70e..54d6065bc67 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsUtil.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsUtil.java @@ -39,8 +39,10 @@ import org.eclipse.osee.ats.world.WorldEditorSimpleProvider; import org.eclipse.osee.ats.world.WorldEditorUISearchItemProvider; import org.eclipse.osee.ats.world.search.GroupWorldSearchItem; import org.eclipse.osee.framework.core.client.ClientSessionManager; +import org.eclipse.osee.framework.core.data.IOseeBranch; import org.eclipse.osee.framework.core.enums.Active; import org.eclipse.osee.framework.core.enums.CoreArtifactTypes; +import org.eclipse.osee.framework.core.enums.CoreBranches; import org.eclipse.osee.framework.core.exception.ArtifactDoesNotExist; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.core.model.Branch; @@ -69,6 +71,7 @@ import org.eclipse.osee.framework.ui.swt.ALayout; import org.eclipse.osee.framework.ui.swt.Displays; import org.eclipse.osee.framework.ui.swt.ImageManager; import org.eclipse.osee.framework.ui.swt.KeyedImage; +import org.eclipse.osee.support.test.util.TestUtil; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; @@ -103,7 +106,7 @@ public final class AtsUtil { } public static boolean isInTest() { - return Boolean.valueOf(System.getProperty("osee.isInTest")); + return TestUtil.isInTest(); } public static long daysTillToday(Date date) { @@ -134,6 +137,10 @@ public final class AtsUtil { return BranchManager.getCommonBranch(); } + public static IOseeBranch getAtsBranchToken() { + return CoreBranches.COMMON; + } + public static boolean isEmailEnabled() { return emailEnabled; } 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 index ee0ca7b1374..8cdff38aec4 100644 --- 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 @@ -17,8 +17,8 @@ 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.workdef.RuleDefinitionOption; import org.eclipse.osee.ats.workdef.StateDefinition; -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; @@ -56,16 +56,15 @@ public class PriviledgedUserManager { StateDefinition stateDefinition = teamArt.getStateDefinition(); // Add user if allowing privileged edit to all users - if (!users.contains(UserManager.getUser()) && (stateDefinition.hasRule(RuleWorkItemId.atsAllowPriviledgedEditToAll.name()) || teamArt.getTeamDefinition().hasWorkRule( - RuleWorkItemId.atsAllowPriviledgedEditToAll.name()))) { + if (!users.contains(UserManager.getUser()) && (stateDefinition.hasRule(RuleDefinitionOption.AllowPriviledgedEditToAll) || teamArt.getTeamDefinition().hasRule( + RuleDefinitionOption.AllowPriviledgedEditToAll))) { users.add(UserManager.getUser()); } // Add user if user is team member and rule exists - boolean workPageToTeamMember = - stateDefinition.hasRule(RuleWorkItemId.atsAllowPriviledgedEditToTeamMember.name()); + boolean workPageToTeamMember = stateDefinition.hasRule(RuleDefinitionOption.AllowPriviledgedEditToTeamMember); boolean teamDefToTeamMember = - teamArt.getTeamDefinition().hasWorkRule(RuleWorkItemId.atsAllowPriviledgedEditToTeamMember.name()); + teamArt.getTeamDefinition().hasRule(RuleDefinitionOption.AllowPriviledgedEditToTeamMember); if (!users.contains(UserManager.getUser()) && (workPageToTeamMember || teamDefToTeamMember) && // teamArt.getTeamDefinition().getMembers().contains(UserManager.getUser())) { users.add(UserManager.getUser()); @@ -73,10 +72,9 @@ public class PriviledgedUserManager { // Add user if team member is originator and rule exists boolean workPageToMemberAndOriginator = - stateDefinition.hasRule(RuleWorkItemId.atsAllowPriviledgedEditToTeamMemberAndOriginator.name()); + stateDefinition.hasRule(RuleDefinitionOption.AllowPriviledgedEditToTeamMemberAndOriginator); boolean teamDefToMemberAndOriginator = - teamArt.getTeamDefinition().hasWorkRule( - RuleWorkItemId.atsAllowPriviledgedEditToTeamMemberAndOriginator.name()); + teamArt.getTeamDefinition().hasRule(RuleDefinitionOption.AllowPriviledgedEditToTeamMemberAndOriginator); if (!users.contains(UserManager.getUser()) && (workPageToMemberAndOriginator || teamDefToMemberAndOriginator) && // teamArt.getCreatedBy().equals(UserManager.getUser()) && teamArt.getTeamDefinition().getMembers().contains( UserManager.getUser())) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/StateManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/StateManager.java index a0c55313edd..96a1224843b 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/StateManager.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/StateManager.java @@ -66,6 +66,18 @@ public class StateManager { } } + public boolean isAnyStateHavePercentEntered() throws OseeCoreException { + if (currentStateDam.getState().getPercentComplete() > 0) { + return true; + } + for (SMAState state : stateDam.getStates()) { + if (state.getPercentComplete() > 0) { + return true; + } + } + return false; + } + public boolean isInState(IWorkPage state) { return (getCurrentStateName().equals(state.getPageName())); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/ReviewManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/ReviewManager.java index 2c77e63aeab..24baed2f974 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/ReviewManager.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/ReviewManager.java @@ -35,6 +35,7 @@ import org.eclipse.osee.ats.workdef.ReviewBlockType; import org.eclipse.osee.ats.workflow.TransitionManager; import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions; import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.core.exception.OseeStateException; import org.eclipse.osee.framework.jdk.core.util.Strings; import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; @@ -113,8 +114,12 @@ public class ReviewManager { decRev.persist(transaction); TransitionManager transitionMgr = new TransitionManager(decRev); - transitionMgr.transition(DecisionReviewState.Decision, assignees, transaction, TransitionOption.Persist, - TransitionOption.OverrideAssigneeCheck); + Result result = + transitionMgr.transition(DecisionReviewState.Decision, assignees, transaction, TransitionOption.Persist, + TransitionOption.OverrideAssigneeCheck); + if (result.isFalse()) { + throw new OseeStateException("Error auto-transitioning review %s to Decision state", decRev.toStringWithId()); + } return decRev; } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/AtsWorkDefinitionProviders.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/AtsWorkDefinitionProviders.java index 42aadc5cb92..01d82a88592 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/AtsWorkDefinitionProviders.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/AtsWorkDefinitionProviders.java @@ -20,6 +20,7 @@ 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.artifact.Artifact; +import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; import org.eclipse.osee.framework.ui.skynet.results.XResultData; import org.osgi.framework.Bundle; @@ -38,11 +39,18 @@ public final class AtsWorkDefinitionProviders { return getProvider() != null; } - public static Artifact importWorkDefinitionSheetToDb(WorkDefinitionSheet sheet) throws OseeCoreException { + public static Artifact importWorkDefinitionSheetToDb(WorkDefinitionSheet sheet, SkynetTransaction transaction) throws OseeCoreException { if (!providerExists()) { return null; } - return getProvider().importWorkDefinitionSheetToDb(sheet); + return getProvider().importWorkDefinitionSheetToDb(sheet, transaction); + } + + public static void importAIsAndTeamsToDb(WorkDefinitionSheet sheet, SkynetTransaction transaction) throws OseeCoreException { + if (!providerExists()) { + return; + } + getProvider().importAIsAndTeamsToDb(sheet, transaction); } public static WorkDefinition loadWorkFlowDefinitionFromFile(WorkDefinitionSheet sheet) throws OseeCoreException { @@ -80,6 +88,13 @@ public final class AtsWorkDefinitionProviders { getProvider().convertAndOpenAtsDsl(workDef, resultData, filename); } + public static void convertAndOpenAIandTeamAtsDsl(XResultData resultData) throws OseeCoreException { + if (!providerExists()) { + return; + } + getProvider().convertAndOpenAIandTeamAtsDsl(resultData); + } + /* * due to lazy initialization, this function is non-reentrant therefore, the synchronized keyword is necessary */ diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/AtsWorkDefinitionSheetProviders.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/AtsWorkDefinitionSheetProviders.java index 1cbc77b64b1..2ca1af4e41e 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/AtsWorkDefinitionSheetProviders.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/AtsWorkDefinitionSheetProviders.java @@ -21,15 +21,19 @@ import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExtension; import org.eclipse.core.runtime.IExtensionPoint; import org.eclipse.core.runtime.Platform; +import org.eclipse.osee.ats.artifact.AtsArtifactToken; import org.eclipse.osee.ats.internal.AtsPlugin; -import org.eclipse.osee.ats.util.AtsFolderUtil; -import org.eclipse.osee.ats.util.AtsFolderUtil.AtsFolder; import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.framework.core.enums.CoreArtifactTypes; +import org.eclipse.osee.framework.core.exception.ArtifactDoesNotExist; import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.core.exception.OseeStateException; +import org.eclipse.osee.framework.jdk.core.util.Strings; import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.plugin.core.PluginUtil; 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.transaction.SkynetTransaction; import org.osgi.framework.Bundle; @@ -64,33 +68,75 @@ public final class AtsWorkDefinitionSheetProviders { public static void initializeDatabase() throws OseeCoreException { SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Import ATS Work Definitions"); - Artifact folder = AtsFolderUtil.getFolder(AtsFolder.WorkDefinitions); - folder.persist(transaction); + Artifact folder = AtsArtifactToken.get(AtsArtifactToken.WorkDefinitionsFolder); for (WorkDefinitionSheet sheet : getWorkDefinitionSheets()) { - Artifact artifact = AtsWorkDefinitionProviders.importWorkDefinitionSheetToDb(sheet); - if (artifact != null) { - folder.addChild(artifact); - artifact.persist(transaction); + if (isValidSheet(sheet)) { + String logStr = String.format("Importing ATS sheet [%s]", sheet.getName()); + System.out.println(logStr); + Artifact artifact = AtsWorkDefinitionProviders.importWorkDefinitionSheetToDb(sheet, transaction); + if (artifact != null) { + folder.addChild(artifact); + artifact.persist(transaction); + } + } + } + transaction.execute(); + } + + public static void importAIsAndTeamsToDatabase() throws OseeCoreException { + SkynetTransaction transaction = + new SkynetTransaction(AtsUtil.getAtsBranch(), "Import ATS AIs and Team Definitions"); + for (WorkDefinitionSheet sheet : getWorkDefinitionSheets()) { + if (sheet.getName().contains("AIsAndTeams") && isValidSheet(sheet)) { + String logStr = String.format("Importing ATS AIs and Teams sheet [%s]", sheet.getName()); + OseeLog.log(AtsPlugin.class, Level.INFO, logStr); + AtsWorkDefinitionProviders.importAIsAndTeamsToDb(sheet, transaction); } } transaction.execute(); } + private static boolean isValidSheet(WorkDefinitionSheet sheet) throws OseeCoreException { + if (!Strings.isValid(sheet.getLegacyOverrideId())) { + return true; + } + try { + Artifact artifact = + ArtifactQuery.getArtifactFromTypeAndName(CoreArtifactTypes.WorkFlowDefinition, sheet.getLegacyOverrideId(), + AtsUtil.getAtsBranch()); + if (artifact != null) { + throw new OseeStateException( + "WorkDefinitionSheet [%s] has legacy id that does not match an existing WorkFlowDefinition name", sheet); + } + } catch (ArtifactDoesNotExist ex) { + // do nothing; this is what we want + } + return true; + } + private static List getWorkDefinitionSheets() { List sheets = new ArrayList(); - sheets.add(new WorkDefinitionSheet("WorkDef_Team_Default", "osee.ats.teamWorkflow", - getSupportFile("support/WorkDef_Team_Default.ats"))); - sheets.add(new WorkDefinitionSheet("WorkDef_Task_Default", "osee.ats.taskWorkflow", - getSupportFile("support/WorkDef_Task_Default.ats"))); + sheets.add(new WorkDefinitionSheet("WorkDef_Team_Default", "osee.ats.teamWorkflow", getSupportFile( + AtsPlugin.PLUGIN_ID, "support/WorkDef_Team_Default.ats"))); + sheets.add(new WorkDefinitionSheet("WorkDef_Task_Default", "osee.ats.taskWorkflow", getSupportFile( + AtsPlugin.PLUGIN_ID, "support/WorkDef_Task_Default.ats"))); + sheets.add(new WorkDefinitionSheet("WorkDef_Review_Decision", "osee.ats.decisionReview", getSupportFile( + AtsPlugin.PLUGIN_ID, "support/WorkDef_Review_Decision.ats"))); + sheets.add(new WorkDefinitionSheet("WorkDef_Review_PeerToPeer", "osee.ats.peerToPeerReview", getSupportFile( + AtsPlugin.PLUGIN_ID, "support/WorkDef_Review_PeerToPeer.ats"))); + sheets.add(new WorkDefinitionSheet("WorkDef_Team_Simple", "osee.ats.simpleTeamWorkflow", getSupportFile( + AtsPlugin.PLUGIN_ID, "support/WorkDef_Team_Simple.ats"))); + sheets.add(new WorkDefinitionSheet("WorkDef_Goal", "osee.ats.goalWorkflow", getSupportFile(AtsPlugin.PLUGIN_ID, + "support/WorkDef_Goal.ats"))); for (IAtsWorkDefinitionSheetProvider provider : getProviders()) { sheets.addAll(provider.getWorkDefinitionSheets()); } return sheets; } - public static File getSupportFile(String filename) { + public static File getSupportFile(String pluginId, String filename) { try { - PluginUtil util = new PluginUtil(AtsPlugin.PLUGIN_ID); + PluginUtil util = new PluginUtil(pluginId); return util.getPluginFile(filename); } catch (IOException ex) { OseeLog.log(AtsPlugin.class, Level.SEVERE, diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/IAtsWorkDefinitionProvider.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/IAtsWorkDefinitionProvider.java index 84ef6e598b4..55fe963fc0b 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/IAtsWorkDefinitionProvider.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/IAtsWorkDefinitionProvider.java @@ -7,6 +7,7 @@ package org.eclipse.osee.ats.workdef; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; +import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; import org.eclipse.osee.framework.ui.skynet.results.XResultData; public interface IAtsWorkDefinitionProvider { @@ -15,10 +16,14 @@ public interface IAtsWorkDefinitionProvider { WorkDefinition getWorkFlowDefinition(String id) throws OseeCoreException; - Artifact importWorkDefinitionSheetToDb(WorkDefinitionSheet sheet) throws OseeCoreException; + Artifact importWorkDefinitionSheetToDb(WorkDefinitionSheet sheet, SkynetTransaction transaction) throws OseeCoreException; + + void importAIsAndTeamsToDb(WorkDefinitionSheet sheet, SkynetTransaction transaction) throws OseeCoreException; void convertAndOpenAtsDsl(WorkDefinition workDef, XResultData resultData, String filename) throws OseeCoreException; + void convertAndOpenAIandTeamAtsDsl(XResultData resultData) throws OseeCoreException; + public WorkDefinition loadTeamWorkDefFromFileOldWay(); public WorkDefinition loadTeamWorkDefFromFileNewWay(); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/RuleDefinition.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/RuleDefinition.java index f6a2bdbba2b..d5c29346b51 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/RuleDefinition.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/RuleDefinition.java @@ -11,6 +11,10 @@ public class RuleDefinition extends AbstractWorkDefItem { super(id); } + public RuleDefinition(RuleDefinitionOption ruleOption) { + super(ruleOption.name()); + } + @Override public String toString() { return String.format("[%s]", getName()); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/RuleDefinitionOption.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/RuleDefinitionOption.java new file mode 100644 index 00000000000..15503e753b9 --- /dev/null +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/RuleDefinitionOption.java @@ -0,0 +1,31 @@ +/* + * Created on Jan 26, 2011 + * + * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE + */ +package org.eclipse.osee.ats.workdef; + +public enum RuleDefinitionOption { + + RequireStateHourSpentPrompt("Work Page Option: Will popup a dialog to prompt user for time spent in this state."), + AddDecisionValidateBlockingReview("Work Page Option: Will auto-create a blocking decision review for this state requesting validation for this workflow."), + AddDecisionValidateNonBlockingReview("Work Page Option: Will auto-create a non blocking decision review requesting validation of workflow changes."), + AllowTransitionWithWorkingBranch("Work Page Option: Will allow transition to next state without committing current working branch."), + ForceAssigneesToTeamLeads("Work Page Option: Will force this state to be assigned back to the configured team leads. Useful for authorization state."), + RequireTargetedVersion("Work Page and Team Definition Option: Requires workflow to be targeted for version before transition is allowed."), + AllowPriviledgedEditToTeamMember("Work Page and Team Definition Option: Allow team member to priviledged edit workflow assigned to team."), + AllowPriviledgedEditToTeamMemberAndOriginator("Work Page and Team Definition Option: Allow team member to priviledged edit workflow assigned to team if user is originator."), + AllowPriviledgedEditToAll("Work Page and Team Definition Option: Allow anyone to priviledged edit workflow assigned to team."), + AllowEditToAll("Work Page and Team Definition Option: Allow anyone to edit workflow without being assignee."), + AllowAssigneeToAll("Work Page and Team Definition Option: Allow anyone to change workflow assignee without being assignee."); + + public final String description; + + public String getDescription() { + return description; + } + + private RuleDefinitionOption(String description) { + this.description = description; + } +} diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/StateDefinition.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/StateDefinition.java index d26be2dee75..98e81e898d4 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/StateDefinition.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/StateDefinition.java @@ -27,6 +27,7 @@ public class StateDefinition extends AbstractWorkDefItem implements IWorkPage { private final List peerReviews = new ArrayList(); private WorkDefinition workDefinition; protected TaskResolutionOptionRule taskResolutionOptions; + private int percentWeight = 0; public StateDefinition(String name) { super(name); @@ -108,6 +109,10 @@ public class StateDefinition extends AbstractWorkDefItem implements IWorkPage { this.workDefinition = workDefinition; } + public boolean hasRule(RuleDefinitionOption option) { + return hasRule(option.name()); + } + public boolean hasRule(String name) { for (RuleDefinition rule : rules) { if (rule.getName().equals(name)) { @@ -192,4 +197,18 @@ public class StateDefinition extends AbstractWorkDefItem implements IWorkPage { return peerReviews; } + public int getStateWeight() { + return percentWeight; + } + + /** + * Set how much (of 100%) this state's percent complete will contribute to the full percent complete of work + * definitions. + * + * @param percentWeight int value where all stateWeights in workdefinition == 100 + */ + public void setPercentWeight(int percentWeight) { + this.percentWeight = percentWeight; + } + } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/StateXWidgetPage.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/StateXWidgetPage.java index 388118bd029..2c4672c1900 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/StateXWidgetPage.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/StateXWidgetPage.java @@ -115,12 +115,12 @@ public class StateXWidgetPage implements IDynamicWidgetLayoutListener, IWorkPage @Override public void widgetCreated(XWidget xWidget, FormToolkit toolkit, Artifact art, DynamicXWidgetLayout dynamicXWidgetLayout, XModifiedListener xModListener, boolean isEditable) throws OseeCoreException { - widgetCreated(xWidget, toolkit, art, this, xModListener, isEditable); + widgetCreated(xWidget, toolkit, art, stateDefinition, xModListener, isEditable); } @Override public void widgetCreating(XWidget xWidget, FormToolkit toolkit, Artifact art, DynamicXWidgetLayout dynamicXWidgetLayout, XModifiedListener xModListener, boolean isEditable) throws OseeCoreException { - widgetCreating(xWidget, toolkit, art, this, xModListener, isEditable); + widgetCreating(xWidget, toolkit, art, stateDefinition, xModListener, isEditable); } public void dispose() { @@ -335,11 +335,11 @@ public class StateXWidgetPage implements IDynamicWidgetLayoutListener, IWorkPage return isCurrentState(sma) && !isCompletedOrCancelledPage(); } - public void widgetCreated(XWidget xWidget, FormToolkit toolkit, Artifact art, StateXWidgetPage page, XModifiedListener xModListener, boolean isEditable) throws OseeCoreException { + public void widgetCreated(XWidget xWidget, FormToolkit toolkit, Artifact art, StateDefinition stateDef, XModifiedListener xModListener, boolean isEditable) throws OseeCoreException { // Check extension points for page creation if (sma != null) { - for (IAtsStateItem item : AtsStateItemManager.getStateItems(page.getStateDefinition())) { - item.xWidgetCreated(xWidget, toolkit, page, art, xModListener, isEditable); + for (IAtsStateItem item : AtsStateItemManager.getStateItems()) { + item.xWidgetCreated(xWidget, toolkit, stateDef, art, xModListener, isEditable); } } } @@ -362,11 +362,11 @@ public class StateXWidgetPage implements IDynamicWidgetLayoutListener, IWorkPage } - public void widgetCreating(XWidget xWidget, FormToolkit toolkit, Artifact art, StateXWidgetPage page, XModifiedListener xModListener, boolean isEditable) throws OseeCoreException { + public void widgetCreating(XWidget xWidget, FormToolkit toolkit, Artifact art, StateDefinition stateDefinition, XModifiedListener xModListener, boolean isEditable) throws OseeCoreException { // Check extension points for page creation if (sma != null) { - for (IAtsStateItem item : AtsStateItemManager.getStateItems(page.getStateDefinition())) { - Result result = item.xWidgetCreating(xWidget, toolkit, page, art, xModListener, isEditable); + for (IAtsStateItem item : AtsStateItemManager.getStateItems()) { + Result result = item.xWidgetCreating(xWidget, toolkit, stateDefinition, art, xModListener, isEditable); if (result.isFalse()) { OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Error in page creation => " + result.getText()); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/WorkDefinition.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/WorkDefinition.java index 435a06632c7..f7e59e389d1 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/WorkDefinition.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/WorkDefinition.java @@ -10,6 +10,7 @@ import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.Set; +import org.eclipse.osee.framework.ui.plugin.util.Result; public class WorkDefinition extends AbstractWorkDefItem { @@ -175,4 +176,27 @@ public class WorkDefinition extends AbstractWorkDefItem { return ids; } + public boolean isStateWeightingEnabled() { + for (StateDefinition stateDef : getStates()) { + if (stateDef.getStateWeight() != 0) { + return true; + } + } + return false; + } + + public Result validateStateWeighting() { + if (!isStateWeightingEnabled()) { + return Result.TrueResult; + } + int total = 0; + for (StateDefinition stateDef : getStates()) { + total += stateDef.getStateWeight(); + } + if (total != 100) { + return new Result(String.format("Total weight only %d, needs to equal 100 for all states", total)); + } + return Result.TrueResult; + } + } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/WorkDefinitionFactory.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/WorkDefinitionFactory.java index a19d54f4070..560763436cd 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/WorkDefinitionFactory.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/WorkDefinitionFactory.java @@ -30,11 +30,15 @@ import org.eclipse.osee.ats.workflow.flow.PeerToPeerWorkflowDefinition; import org.eclipse.osee.ats.workflow.flow.TaskWorkflowDefinition; import org.eclipse.osee.ats.workflow.item.AtsAddDecisionReviewRule; import org.eclipse.osee.ats.workflow.item.AtsAddPeerToPeerReviewRule; +import org.eclipse.osee.ats.workflow.item.AtsStatePercentCompleteWeightRule; +import org.eclipse.osee.framework.core.enums.CoreRelationTypes; +import org.eclipse.osee.framework.core.exception.OseeArgumentException; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.jdk.core.util.Strings; import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.skynet.core.User; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; +import org.eclipse.osee.framework.ui.plugin.util.Result; import org.eclipse.osee.framework.ui.skynet.widgets.XOption; import org.eclipse.osee.framework.ui.skynet.widgets.workflow.DynamicXWidgetLayoutData; import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkFlowDefinition; @@ -67,12 +71,21 @@ public class WorkDefinitionFactory { System.err.println("skipping rule " + workItem.getName()); } else if (workItem.getName().startsWith("atsAddPeerToPeerReview")) { System.err.println("skipping rule " + workItem.getName()); + } else if (workItem.getName().startsWith(AtsStatePercentCompleteWeightRule.ID)) { + System.err.println("skipping rule " + workItem.getName()); } else { - WorkRuleDefinition workRule = (WorkRuleDefinition) workItem; - RuleDefinition ruleDef = new RuleDefinition(workRule.getId()); - ruleDef.setDescription(workRule.getDescription()); - copyKeyValuePair(ruleDef, workRule); - idToRule.put(ruleDef.getName(), ruleDef); + try { + WorkRuleDefinition workRule = (WorkRuleDefinition) workItem; + // All rules in DB should map to RuleDefinitionOption + RuleDefinitionOption ruleOption = + RuleDefinitionOption.valueOf(workRule.getName().replaceFirst("^ats", "")); + RuleDefinition ruleDef = new RuleDefinition(ruleOption); + ruleDef.setDescription(workRule.getDescription()); + copyKeyValuePair(ruleDef, workRule); + idToRule.put(ruleDef.getName(), ruleDef); + } catch (Exception ex) { + OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); + } } } } @@ -161,12 +174,13 @@ public class WorkDefinitionFactory { for (WorkPageDefinition workPage : workFlowDef.getPages()) { // not using ids anymore for states, widgets or rules StateDefinition stateDef = workDef.getOrCreateState(workPage.getPageName()); + stateDef.setWorkDefinition(workDef); stateDef.setOrdinal(workPage.getWorkPageOrdinal()); if (workPage.getId().equals(startWorkPageName)) { workDef.setStartState(stateDef); } + // TODO get rid of this?? copyKeyValuePair(stateDef, workPage); - stateDef.setWorkDefinition(workDef); stateDef.setWorkPageType(workPage.getWorkPageType()); for (WorkPageDefinition returnPageDefinition : workFlowDef.getReturnPages(workPage)) { @@ -256,8 +270,13 @@ public class WorkDefinitionFactory { } stateDef.getPeerReviews().add(peerRevDef); } else { - RuleDefinition ruleDef = getRuleById(workRule.getId()); - stateDef.addRule(ruleDef, "from related WorkItemDefintion"); + RuleDefinition ruleDef = getRuleById(workRule.getId().replaceFirst("^ats", "")); + if (ruleDef == null) { + OseeLog.log(AtsPlugin.class, Level.SEVERE, + String.format("Null work rule for " + workRule.getId())); + } else { + stateDef.addRule(ruleDef, "from related WorkItemDefintion"); + } } } else { OseeLog.log(AtsPlugin.class, Level.SEVERE, @@ -266,6 +285,40 @@ public class WorkDefinitionFactory { } } + // Process WeightDefinitions + Artifact workDefArt = workFlowDef.getArtifact(); + for (Artifact workChild : workDefArt.getRelatedArtifacts(CoreRelationTypes.WorkItem__Child)) { + if (workChild.getName().startsWith(AtsStatePercentCompleteWeightRule.ID)) { + WorkRuleDefinition ruleDefinition = new WorkRuleDefinition(workChild); + for (String stateName : ruleDefinition.getWorkDataKeyValueMap().keySet()) { + String value = ruleDefinition.getWorkDataValue(stateName); + try { + double percent = new Double(value).doubleValue(); + if (percent < 0.0 || percent > 1) { + OseeLog.log( + AtsPlugin.class, + Level.SEVERE, + "Invalid percent value \"" + value + "\" (must be 0..1) for rule " + ruleDefinition.getName(), + new OseeArgumentException("state map exception")); + } else { + percent = percent * 100; + workDef.getStateByName(stateName).setPercentWeight(new Double(percent).intValue()); + } + } catch (Exception ex) { + OseeLog.log( + AtsPlugin.class, + Level.SEVERE, + "Invalid percent value \"" + value + "\" (must be float 0..1) for rule " + ruleDefinition.getName(), + new OseeArgumentException("state map exception")); + } + } + Result result = workDef.validateStateWeighting(); + if (result.isFalse()) { + OseeLog.log(AtsPlugin.class, Level.SEVERE, + "Error translating weight definitions - " + result.getText()); + } + } + } return workDef; } catch (OseeCoreException ex) { OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); @@ -362,6 +415,21 @@ public class WorkDefinitionFactory { return new WorkDefinitionMatch(); } + /** + * Look at team def's attribute for Work Definition setting, otherwise, walk up team tree for setting + */ + private static WorkDefinitionMatch getWorkDefinitionFromTeamDefinitionAttributeInherited(TeamDefinitionArtifact teamDef) throws OseeCoreException { + WorkDefinitionMatch match = getWorkDefinitionFromArtifactsAttributeValue(teamDef); + if (match.isMatched()) { + return match; + } + Artifact parentArt = teamDef.getParent(); + if (parentArt != null && parentArt instanceof TeamDefinitionArtifact) { + return getWorkDefinitionFromTeamDefinitionAttributeInherited((TeamDefinitionArtifact) parentArt); + } + return new WorkDefinitionMatch(); + } + private static WorkDefinitionMatch getWorkDefinitionForTask(TaskArtifact taskArt) throws OseeCoreException { WorkDefinitionMatch match = new WorkDefinitionMatch(); for (IAtsTeamWorkflow provider : TeamWorkflowExtensions.getAtsTeamWorkflowExtensions()) { @@ -427,7 +495,7 @@ public class WorkDefinitionFactory { // Note: This is new. Old TeamDefs got workflow off relation if (artifact instanceof TeamWorkFlowArtifact) { TeamDefinitionArtifact teamDef = ((TeamWorkFlowArtifact) artifact).getTeamDefinition(); - match = getWorkDefinitionFromArtifactsAttributeValue(teamDef); + match = getWorkDefinitionFromTeamDefinitionAttributeInherited(teamDef); if (!match.isMatched()) { match = ((TeamWorkFlowArtifact) artifact).getTeamDefinition().getWorkDefinition(); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/TransitionManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/TransitionManager.java index 4dd736f8943..1df19f01fdb 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/TransitionManager.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/TransitionManager.java @@ -63,13 +63,15 @@ public class TransitionManager { final StateDefinition fromStateDefinition = aba.getStateDefinition(); final StateDefinition toStateDefinition = aba.getStateDefinitionByName(toState.getPageName()); if (toStateDefinition == null) { - return new Result("Invalid toState \"" + toState.getPageName() + "\""); + return new Result(String.format("Transition-To State [%s] does not exist for Work Definition [%s]", + toState.getPageName(), aba.getWorkDefinition().getName())); } // Validate transition from fromPage to toPage if (!overrideTransitionCheck && !fromStateDefinition.getToStates().contains(toStateDefinition) && !fromStateDefinition.isCompletedOrCancelledPage()) { String errStr = - "Not configured to transition to \"" + toState.getPageName() + "\" from \"" + fromStateDefinition.getPageName() + "\""; + String.format("Work Definition [%s] is not configured to transition from \"[%s]\" to \"[%s]\"", + toStateDefinition.getName(), fromStateDefinition.getPageName(), toState.getPageName()); OseeLog.log(AtsPlugin.class, Level.SEVERE, errStr); return new Result(errStr); } @@ -84,7 +86,7 @@ public class TransitionManager { } // Check extension points for valid transition - List atsStateItems = AtsStateItemManager.getStateItems(fromStateDefinition); + List atsStateItems = AtsStateItemManager.getStateItems(); for (IAtsStateItem item : atsStateItems) { Result result = item.transitioning(aba, fromStateDefinition, toState, toAssignees); if (result.isFalse()) { @@ -177,10 +179,7 @@ public class TransitionManager { aba.transitioned(fromState, toState, toAssignees, true, transaction); // Notify extension points of transition - for (IAtsStateItem item : AtsStateItemManager.getStateItems(fromState)) { - item.transitioned(aba, fromState, toState, toAssignees, transaction); - } - for (IAtsStateItem item : AtsStateItemManager.getStateItems(toState)) { + for (IAtsStateItem item : AtsStateItemManager.getStateItems()) { item.transitioned(aba, fromState, toState, toAssignees, transaction); } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsStatePercentCompleteWeightRule.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsStatePercentCompleteWeightRule.java index dbf3db7dba5..9a3fddac923 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsStatePercentCompleteWeightRule.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsStatePercentCompleteWeightRule.java @@ -10,13 +10,6 @@ *******************************************************************************/ package org.eclipse.osee.ats.workflow.item; -import java.util.HashMap; -import java.util.Map; -import java.util.logging.Level; -import org.eclipse.osee.ats.internal.AtsPlugin; -import org.eclipse.osee.ats.workdef.RuleDefinition; -import org.eclipse.osee.framework.core.exception.OseeArgumentException; -import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkRuleDefinition; /** @@ -35,25 +28,4 @@ public class AtsStatePercentCompleteWeightRule extends WorkRuleDefinition { setDescription("Work Flow Option: = Work Data attributes specify weighting given to each state in percent complete calculations. is either state name (not id) and is number from 0..1"); } - public static Map getStateWeightMap(RuleDefinition ruleDefinition) { - Map stateToWeight = new HashMap(); - for (String stateName : ruleDefinition.getWorkDataKeyValueMap().keySet()) { - String value = ruleDefinition.getWorkDataValue(stateName); - try { - double percent = new Double(value).doubleValue(); - if (percent < 0.0 || percent > 1) { - OseeLog.log(AtsPlugin.class, Level.SEVERE, - "Invalid percent value \"" + value + "\" (must be 0..1) for rule " + ruleDefinition.getName(), - new OseeArgumentException("state map exception")); - } else { - stateToWeight.put(stateName, percent); - } - } catch (Exception ex) { - OseeLog.log(AtsPlugin.class, Level.SEVERE, - "Invalid percent value \"" + value + "\" (must be float 0..1) for rule " + ruleDefinition.getName(), - new OseeArgumentException("state map exception")); - } - } - return stateToWeight; - } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsWorkDefinitions.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsWorkDefinitions.java index 7f68b3c496b..e3af3f1232e 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsWorkDefinitions.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/item/AtsWorkDefinitions.java @@ -21,6 +21,7 @@ import java.util.List; import org.eclipse.osee.ats.actions.wizard.IAtsTeamWorkflow; import org.eclipse.osee.ats.artifact.ATSAttributes; import org.eclipse.osee.ats.artifact.AbstractWorkflowArtifact; +import org.eclipse.osee.ats.artifact.AtsArtifactToken; import org.eclipse.osee.ats.artifact.AtsAttributeTypes; import org.eclipse.osee.ats.artifact.DecisionReviewArtifact; import org.eclipse.osee.ats.artifact.GoalArtifact; @@ -36,11 +37,10 @@ import org.eclipse.osee.ats.column.OperationalImpactWithWorkaroundXWidget.XOpera import org.eclipse.osee.ats.column.OperationalImpactXWidget.XOperationalImpactRequiredXWidgetWorkItem; import org.eclipse.osee.ats.column.OperationalImpactXWidget.XOperationalImpactXWidgetWorkItem; import org.eclipse.osee.ats.column.PriorityXWidget; -import org.eclipse.osee.ats.util.AtsFolderUtil; -import org.eclipse.osee.ats.util.AtsFolderUtil.AtsFolder; import org.eclipse.osee.ats.util.AtsUtil; import org.eclipse.osee.ats.util.widgets.XWorkingBranch; import org.eclipse.osee.ats.util.widgets.commit.XCommitManager; +import org.eclipse.osee.ats.workdef.RuleDefinitionOption; import org.eclipse.osee.ats.workdef.StateDefinition; import org.eclipse.osee.ats.workflow.flow.DecisionWorkflowDefinition; import org.eclipse.osee.ats.workflow.flow.GoalWorkflowDefinition; @@ -323,29 +323,29 @@ public final class AtsWorkDefinitions implements IWorkDefinitionProvider { } public static boolean isValidatePage(StateDefinition stateDefinition) { - if (stateDefinition.hasRule(AtsWorkDefinitions.RuleWorkItemId.atsAddDecisionValidateBlockingReview.name())) { + if (stateDefinition.hasRule(RuleDefinitionOption.AddDecisionValidateBlockingReview)) { return true; } - if (stateDefinition.hasRule(AtsWorkDefinitions.RuleWorkItemId.atsAddDecisionValidateNonBlockingReview.name())) { + if (stateDefinition.hasRule(RuleDefinitionOption.AddDecisionValidateNonBlockingReview)) { return true; } return false; } public static boolean isValidateReviewBlocking(StateDefinition stateDefinition) { - return stateDefinition.hasRule(AtsWorkDefinitions.RuleWorkItemId.atsAddDecisionValidateBlockingReview.name()); + return stateDefinition.hasRule(RuleDefinitionOption.AddDecisionValidateBlockingReview); } public static boolean isForceAssigneesToTeamLeads(StateDefinition stateDefinition) { - return stateDefinition.hasRule(AtsWorkDefinitions.RuleWorkItemId.atsForceAssigneesToTeamLeads.name()); + return stateDefinition.hasRule(RuleDefinitionOption.ForceAssigneesToTeamLeads); } public static boolean isAllowTransitionWithWorkingBranch(StateDefinition stateDefinition) { - return stateDefinition.hasRule(AtsWorkDefinitions.RuleWorkItemId.atsAllowTransitionWithWorkingBranch.name()); + return stateDefinition.hasRule(RuleDefinitionOption.AllowTransitionWithWorkingBranch); } public static boolean isRequireStateHoursSpentPrompt(StateDefinition stateDefinition) { - return stateDefinition.hasRule(AtsWorkDefinitions.RuleWorkItemId.atsRequireStateHourSpentPrompt.name()); + return stateDefinition.hasRule(RuleDefinitionOption.RequireStateHourSpentPrompt); } public static boolean isAllowCreateBranch(StateDefinition stateDefinition) { @@ -389,16 +389,16 @@ public final class AtsWorkDefinitions implements IWorkDefinitionProvider { // Relate if not already related if (art.getRelatedArtifacts(CoreRelationTypes.WorkItem__Parent, Artifact.class).isEmpty()) { if (art.isOfType(CoreArtifactTypes.WorkPageDefinition)) { - relateIfNotRelated(AtsFolderUtil.getFolder(AtsFolder.WorkPages), art, transaction); + relateIfNotRelated(AtsArtifactToken.get(AtsArtifactToken.WorkPagesFolder), art, transaction); } if (art.isOfType(CoreArtifactTypes.WorkRuleDefinition)) { - relateIfNotRelated(AtsFolderUtil.getFolder(AtsFolder.WorkRules), art, transaction); + relateIfNotRelated(AtsArtifactToken.get(AtsArtifactToken.WorkRulesFolder), art, transaction); } if (art.isOfType(CoreArtifactTypes.WorkWidgetDefinition)) { - relateIfNotRelated(AtsFolderUtil.getFolder(AtsFolder.WorkWidgets), art, transaction); + relateIfNotRelated(AtsArtifactToken.get(AtsArtifactToken.WorkWidgetsFolder), art, transaction); } if (art.isOfType(CoreArtifactTypes.WorkFlowDefinition)) { - relateIfNotRelated(AtsFolderUtil.getFolder(AtsFolder.WorkFlow), art, transaction); + relateIfNotRelated(AtsArtifactToken.get(AtsArtifactToken.WorkFlowsFolder), art, transaction); } } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/vue/AtsDbConfig.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/vue/AtsDbConfig.java deleted file mode 100644 index 31299a32194..00000000000 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/vue/AtsDbConfig.java +++ /dev/null @@ -1,23 +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.workflow.vue; - -import org.eclipse.osee.framework.core.exception.OseeCoreException; - -/** - * @author Roberto E. Escobar - */ -public class AtsDbConfig { - - protected void executeLoadAIsAndTeamsAction(String bundleId) throws OseeCoreException { - LoadAIsAndTeamsAction.executeForDbConfig(bundleId); - } -} diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/vue/LoadAIsAndTeamsAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/vue/LoadAIsAndTeamsAction.java deleted file mode 100644 index 59279bc3f31..00000000000 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workflow/vue/LoadAIsAndTeamsAction.java +++ /dev/null @@ -1,373 +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.workflow.vue; - -import java.net.URL; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.core.runtime.IExtension; -import org.eclipse.core.runtime.IExtensionPoint; -import org.eclipse.core.runtime.Platform; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.osee.ats.artifact.ActionableItemArtifact; -import org.eclipse.osee.ats.artifact.AtsAttributeTypes; -import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact; -import org.eclipse.osee.ats.artifact.TeamDefinitionArtifact.TeamDefinitionOptions; -import org.eclipse.osee.ats.internal.AtsPlugin; -import org.eclipse.osee.ats.util.AtsArtifactTypes; -import org.eclipse.osee.ats.util.AtsFolderUtil; -import org.eclipse.osee.ats.util.AtsFolderUtil.AtsFolder; -import org.eclipse.osee.ats.util.AtsRelationTypes; -import org.eclipse.osee.ats.util.AtsUtil; -import org.eclipse.osee.ats.workflow.vue.DiagramNode.PageType; -import org.eclipse.osee.framework.core.data.OseeUser; -import org.eclipse.osee.framework.core.enums.CoreArtifactTypes; -import org.eclipse.osee.framework.core.enums.CoreRelationTypes; -import org.eclipse.osee.framework.core.exception.OseeArgumentException; -import org.eclipse.osee.framework.core.exception.OseeCoreException; -import org.eclipse.osee.framework.jdk.core.util.Lib; -import org.eclipse.osee.framework.logging.OseeLevel; -import org.eclipse.osee.framework.logging.OseeLog; -import org.eclipse.osee.framework.skynet.core.OseeSystemArtifacts; -import org.eclipse.osee.framework.skynet.core.User; -import org.eclipse.osee.framework.skynet.core.UserManager; -import org.eclipse.osee.framework.skynet.core.artifact.Artifact; -import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager; -import org.eclipse.osee.framework.skynet.core.artifact.StaticIdManager; -import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery; -import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; -import org.eclipse.osee.framework.ui.swt.Displays; -import org.osgi.framework.Bundle; - -/** - * Retrieve "AIs and Teams.vue" extension points and configure ATS for Actionable Items and Teams from within. - */ -public class LoadAIsAndTeamsAction { - - private static final String FULL_NAME = "Full Name:"; - private static final String DESCRIPTION = "Description:"; - private static final String WORKFLOW_ID = "WorkflowId:"; - private static final String STATIC_ID = "StaticId:"; - private static final String GET_OR_CREATE = "GetOrCreate"; - private static final String NOT_ACTIONABLE = "NotActionable"; - private static final String LEAD = "Lead:"; - private static final String MEMBER = "Member:"; - - private final Map idToActionItem; - private final String bundleId; - private final boolean prompt; - private final boolean allowUserCreation; - - private LoadAIsAndTeamsAction(boolean prompt, String bundleId, boolean allowUserCreation) { - this.idToActionItem = new HashMap(); - this.prompt = prompt; - this.bundleId = bundleId; - this.allowUserCreation = allowUserCreation; - } - - /** - * This method is package private to prevent others from using it - only AtsDbConfig children are allowed access; - */ - static void executeForDbConfig(String bundleId) throws OseeCoreException { - new LoadAIsAndTeamsAction(false, bundleId, true).run(); - } - - public static void executeForAtsRuntimeConfig(boolean prompt, String bundleId) throws OseeCoreException { - new LoadAIsAndTeamsAction(false, bundleId, !AtsUtil.isProductionDb()).run(); - } - - private void run() throws OseeCoreException { - if (prompt && !MessageDialog.openQuestion(Displays.getActiveShell(), "Import ATS Config?", - "Importing ATS Config from ActionableItems.vue.\n\nAre you sure?")) { - return; - } - - for (Entry entry : loadResources().entrySet()) { - Diagram workFlow = DiagramFactory.getInstance().getWorkFlowFromFileContents(entry.getKey(), entry.getValue()); - processWorkflow(workFlow); - } - } - - private Map loadResources() { - Map resources = new HashMap(); - IExtensionPoint point = - Platform.getExtensionRegistry().getExtensionPoint("org.eclipse.osee.ats.AtsAIandTeamConfig"); - if (point == null) { - OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Can't access AtsAIandTeamConfig extension point"); - return resources; - } - IExtension[] extensions = point.getExtensions(); - for (IExtension extension : extensions) { - IConfigurationElement[] elements = extension.getConfigurationElements(); - String vueFilename = null; - String bundleName = null; - for (IConfigurationElement el : elements) { - if (el.getName().equals("AtsAIandTeamConfig")) { - vueFilename = el.getAttribute("vueFilename"); - bundleName = el.getContributor().getName(); - if ((bundleId == null || bundleId.equals(bundleName)) && vueFilename != null && bundleName != null) { - Bundle bundle = Platform.getBundle(bundleName); - try { - URL url = bundle.getEntry(vueFilename); - resources.put(bundleName + "/" + vueFilename, Lib.inputStreamToString(url.openStream())); - } catch (Exception ex) { - OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Error loading AtsStateItem extension", ex); - } - } - } - } - } - return resources; - } - - private void processWorkflow(final Diagram workFlow) throws OseeCoreException { - if (workFlow == null) { - throw new OseeArgumentException("ATS config items can't be loaded."); - } - - SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "ATS Load AIs and Teams"); - // Get or create ATS root artifact - Artifact atsHeading = AtsFolderUtil.getFolder(AtsFolder.Ats_Heading); - - // Create Actionable Items - DiagramNode workPage = workFlow.getPage("Actionable Items"); - addActionableItem(atsHeading, workPage, transaction); - - // Create Teams - workPage = workFlow.getPage("Teams"); - addTeam(atsHeading, workPage, transaction); - - atsHeading.persist(transaction); - transaction.execute(); - } - - private User getUserByName(String name, boolean create, SkynetTransaction transaction) throws OseeCoreException { - if (create && !UserManager.userExistsWithName(name)) { - return UserManager.createUser(new OseeUser(name, name, "", true), transaction); - } - return UserManager.getUserByName(name); - } - - private TeamDefinitionArtifact addTeam(Artifact parent, DiagramNode page, SkynetTransaction transaction) throws OseeCoreException { - // System.out.println("Adding Team " + page.getName()); - TeamDefinitionArtifact teamDefArt = null; - if (page.getName().equals(AtsFolder.Teams.getDisplayName())) { - teamDefArt = (TeamDefinitionArtifact) AtsFolderUtil.getFolder(AtsFolder.Teams); - } else { - - ArrayList leads = new ArrayList(); - ArrayList members = new ArrayList(); - java.util.Set staticIds = new HashSet(); - String desc = ""; - boolean getOrCreate = false; - boolean actionable = true; - String fullName = ""; - String workflowId = ""; - List teamDefinitionOptions = new ArrayList(); - for (String line : page.getInstructionStr().replaceAll("\r", "\n").split("\n")) { - if (!line.equals("")) { - if (line.startsWith(DESCRIPTION)) { - desc = line.replaceFirst(DESCRIPTION, ""); - } else if (line.startsWith(WORKFLOW_ID)) { - workflowId = line.replaceFirst(WORKFLOW_ID, ""); - } else if (line.startsWith(STATIC_ID)) { - staticIds.add(line.replaceFirst(STATIC_ID, "")); - } else if (line.startsWith(GET_OR_CREATE)) { - getOrCreate = true; - } else if (line.startsWith(NOT_ACTIONABLE)) { - actionable = false; - } else if (line.startsWith(FULL_NAME)) { - fullName = line.replaceFirst(FULL_NAME, ""); - } else if (line.contains(TeamDefinitionOptions.TeamUsesVersions.name())) { - teamDefinitionOptions.add(TeamDefinitionOptions.TeamUsesVersions); - } else if (line.contains(TeamDefinitionOptions.RequireTargetedVersion.name())) { - teamDefinitionOptions.add(TeamDefinitionOptions.RequireTargetedVersion); - } else if (line.startsWith(LEAD)) { - processLeads(transaction, leads, line); - } else if (line.startsWith(MEMBER)) { - processMembers(transaction, members, line); - } else { - throw new OseeArgumentException("Unhandled AtsConfig Line [%s] in diagram page [%s]", line, - page.getName()); - } - } - } - - ArrayList actionableItems = new ArrayList(); - createActionableItems(page, actionableItems); - - teamDefArt = - createTeamDefinition(parent, page, transaction, leads, members, staticIds, desc, getOrCreate, actionable, - fullName, workflowId, teamDefinitionOptions, actionableItems); - teamDefArt.persist(transaction); - } - - processChildren(page, transaction, teamDefArt); - return teamDefArt; - } - - private void processMembers(SkynetTransaction transaction, List members, String line) throws OseeCoreException { - String name = line.replaceFirst(MEMBER, ""); - User u = getUserByName(name, allowUserCreation, transaction); - members.add(u); - } - - private void processLeads(SkynetTransaction transaction, List leads, String line) throws OseeCoreException { - String name = line.replaceFirst(LEAD, ""); - User u = getUserByName(name, allowUserCreation, transaction); - leads.add(u); - } - - private void processChildren(DiagramNode page, SkynetTransaction transaction, TeamDefinitionArtifact teamDefArt) throws OseeCoreException { - // Handle all team children - for (DiagramNode childPage : page.getToPages()) { - if (childPage.getPageType() == PageType.Team) { - addTeam(teamDefArt, childPage, transaction); - } - } - } - - private TeamDefinitionArtifact createTeamDefinition(Artifact parent, DiagramNode page, SkynetTransaction transaction, List leads, List members, java.util.Set staticIds, String desc, boolean getOrCreate, boolean actionable, String fullName, String workflowId, List teamDefinitionOptions, List actionableItems) throws OseeCoreException, OseeArgumentException { - TeamDefinitionArtifact teamDefArt; - if (getOrCreate) { - teamDefArt = - (TeamDefinitionArtifact) OseeSystemArtifacts.getOrCreateArtifact(AtsArtifactTypes.TeamDefinition, - page.getName(), AtsUtil.getAtsBranch()); - } else { - teamDefArt = - (TeamDefinitionArtifact) ArtifactTypeManager.addArtifact(AtsArtifactTypes.TeamDefinition, - AtsUtil.getAtsBranch(), page.getName()); - } - if (!teamDefArt.isInDb()) { - teamDefArt.initialize(fullName, desc, leads, members, actionableItems, - teamDefinitionOptions.toArray(new TeamDefinitionOptions[teamDefinitionOptions.size()])); - if (parent == null) { - // Relate to team heading - parent = AtsFolderUtil.getFolder(AtsFolder.Teams); - } - parent.addChild(teamDefArt); - parent.persist(transaction); - - for (Artifact actionableItem : actionableItems) { - teamDefArt.addRelation(AtsRelationTypes.TeamActionableItem_ActionableItem, actionableItem); - } - for (String staticId : staticIds) { - StaticIdManager.setSingletonAttributeValue(teamDefArt, staticId); - } - teamDefArt.setSoleAttributeValue(AtsAttributeTypes.Actionable, actionable); - } - if (!workflowId.equals("")) { - Artifact workflowArt = - ArtifactQuery.getArtifactFromTypeAndName(CoreArtifactTypes.WorkFlowDefinition, workflowId, - AtsUtil.getAtsBranch()); - if (workflowArt != null) { - teamDefArt.addRelation(CoreRelationTypes.WorkItem__Child, workflowArt); - } else { - throw new OseeArgumentException("Can't find workflow with id \"" + workflowId + "\""); - } - } - return teamDefArt; - } - - private void createActionableItems(DiagramNode page, List actionableItems) throws OseeArgumentException { - for (DiagramNode childPage : page.getToPages()) { - if (childPage.getPageType() == PageType.ActionableItem) { - // Relate this Team Definition to the Actionable Item - ActionableItemArtifact actItem = idToActionItem.get(childPage.getId()); - if (actItem != null) { - actionableItems.add(actItem); - } else { - throw new OseeArgumentException("Can't retrieve Actionable Item [%s] with id [%s]", childPage.getName(), - childPage.getId()); - } - } - } - } - - private ActionableItemArtifact addActionableItem(Artifact parent, DiagramNode page, SkynetTransaction transaction) throws OseeCoreException { - // System.out.println("Processing page " + page.getName()); - ActionableItemArtifact aia = null; - boolean getOrCreate = false; - boolean actionable = true; - Set staticIds = new HashSet(); - for (String line : page.getInstructionStr().replaceAll("\r", "\n").split("\n")) { - if (!line.equals("")) { - if (line.startsWith(GET_OR_CREATE)) { - getOrCreate = true; - } else if (line.startsWith(NOT_ACTIONABLE)) { - actionable = false; - } else if (line.startsWith(STATIC_ID)) { - staticIds.add(line.replaceFirst(STATIC_ID, "")); - } - } - } - if (page.getName().equals(AtsFolder.ActionableItem.getDisplayName())) { - aia = (ActionableItemArtifact) AtsFolderUtil.getFolder(AtsFolder.ActionableItem); - } else { - if (getOrCreate) { - aia = - (ActionableItemArtifact) ArtifactQuery.checkArtifactFromTypeAndName(AtsArtifactTypes.ActionableItem, - page.getName(), AtsUtil.getAtsBranch()); - } - if (aia == null) { - aia = - (ActionableItemArtifact) ArtifactTypeManager.addArtifact(AtsArtifactTypes.ActionableItem, - AtsUtil.getAtsBranch()); - aia.setName(page.getName()); - for (String staticId : staticIds) { - StaticIdManager.setSingletonAttributeValue(aia, staticId); - } - - aia.persist(transaction); - idToActionItem.put(page.getId(), aia); - parent.addChild(aia); - parent.persist(transaction); - } - } - for (DiagramNode childPage : page.getToPages()) { - addActionableItem(aia, childPage, transaction); - } - aia.setSoleAttributeValue(AtsAttributeTypes.Actionable, actionable); - - aia.persist(transaction); - return aia; - } - - // /** - // * Selection in the workbench has been changed. We can change the state of the 'real' action here if we want, but - // * this can only happen after the delegate has been created. - // */ - // public void selectionChanged(IAction action, ISelection selection) { - // } - // - // /** - // * We can use this method to dispose of any system resources we previously allocated. - // * - // * @see IWorkbenchWindowActionDelegate#dispose - // */ - // public void dispose() { - // } - // - // /** - // * We will cache window object in order to be able to provide parent shell for the message dialog. - // * - // * @see IWorkbenchWindowActionDelegate#init - // */ - // public void init(IWorkbenchWindow window) { - // } -} \ No newline at end of file diff --git a/plugins/org.eclipse.osee.ats/support/WorkDef_Goal.ats b/plugins/org.eclipse.osee.ats/support/WorkDef_Goal.ats new file mode 100644 index 00000000000..093491c672d --- /dev/null +++ b/plugins/org.eclipse.osee.ats/support/WorkDef_Goal.ats @@ -0,0 +1,42 @@ +workDefinition "WorkDef_Goal" { + id "WorkDef_Goal" + startState "InWork" + + widgetDefinition "Title" { + attributeName "Name" + xWidgetName "XTextDam" + option REQUIRED_FOR_TRANSITION + } + + widgetDefinition "Description" { + attributeName "ats.Description" + xWidgetName "XTextDam" + option FILL_VERTICALLY + } + + state "Cancelled" { + type Cancelled + ordinal 3 + to "InWork" OverrideAttributeValidation + } + + state "InWork" { + type Working + ordinal 1 + to "Cancelled" + to "Completed" AsDefault + layout { + widget "Title" + widget "Description" + attributeWidget "ats.Estimated Hours" + attributeWidget "ats.Goal Order Vote" + } + } + + state "Completed" { + type Completed + ordinal 2 + to "InWork" OverrideAttributeValidation + rule AddDecisionValidateBlockingReview + } +} \ No newline at end of file diff --git a/plugins/org.eclipse.osee.ats/support/WorkDef_Review_Decision.ats b/plugins/org.eclipse.osee.ats/support/WorkDef_Review_Decision.ats new file mode 100644 index 00000000000..6b8dafbd67c --- /dev/null +++ b/plugins/org.eclipse.osee.ats/support/WorkDef_Review_Decision.ats @@ -0,0 +1,110 @@ +workDefinition "WorkDef_Review_Decision" { + id "WorkDef_Review_Decision" + startState "Prepare" + + widgetDefinition "Question" { + attributeName "Name" + xWidgetName "XLabelDam" + } + + widgetDefinition "Decision" { + attributeName "ats.Decision" + xWidgetName "XComboDam(1,2,3)" + option REQUIRED_FOR_TRANSITION + option HORIZONTAL_LABEL + } + + widgetDefinition "Description" { + attributeName "ats.Description" + xWidgetName "XTextDam" + option FILL_VERTICALLY + } + + widgetDefinition "Resolution" { + attributeName "ats.Resolution" + xWidgetName "XTextDam" + option FILL_VERTICALLY + } + + widgetDefinition "Title" { + attributeName "Name" + xWidgetName "XTextDam" + option REQUIRED_FOR_TRANSITION + } + + widgetDefinition "Decision Review Options" { + attributeName "ats.Decision Review Options" + xWidgetName "XTextDam" + option FILL_VERTICALLY + } + + widgetDefinition "Review Blocks" { + attributeName "ats.Review Blocks" + xWidgetName "XComboDam(OPTIONS_FROM_ATTRIBUTE_VALIDITY)" + option REQUIRED_FOR_TRANSITION + option HORIZONTAL_LABEL + } + + state "Decision" { + type Working + ordinal 2 + to "Followup" + to "Cancelled" + to "Completed" AsDefault + to "Prepare" OverrideAttributeValidation + layout { + widget "Question" + widget "Decision" + widget "Description" + widget "Resolution" + } + } + + state "Prepare" { + type Working + ordinal 1 + to "Cancelled" + to "Decision" AsDefault + layout { + widget "Title" + widget "Decision Review Options" + widget "Description" + attributeWidget "ats.Related To State" + widget "Review Blocks" + attributeWidget "ats.Need By" + attributeWidget "ats.Estimated Hours" + } + } + + state "Followup" { + type Working + ordinal 3 + to "Cancelled" + to "Completed" AsDefault + to "Decision" OverrideAttributeValidation + layout { + widget "Resolution" + } + } + + state "Cancelled" { + type Cancelled + ordinal 5 + to "Decision" OverrideAttributeValidation + to "Followup" OverrideAttributeValidation + to "Prepare" OverrideAttributeValidation + } + + state "Completed" { + type Completed + ordinal 4 + to "Decision" OverrideAttributeValidation + to "Followup" OverrideAttributeValidation + rule AddDecisionValidateBlockingReview + layout { + widget "Question" + widget "Decision" + widget "Resolution" + } + } +} \ No newline at end of file diff --git a/plugins/org.eclipse.osee.ats/support/WorkDef_Review_PeerToPeer.ats b/plugins/org.eclipse.osee.ats/support/WorkDef_Review_PeerToPeer.ats new file mode 100644 index 00000000000..5a7938d4239 --- /dev/null +++ b/plugins/org.eclipse.osee.ats/support/WorkDef_Review_PeerToPeer.ats @@ -0,0 +1,107 @@ +workDefinition "WorkDef_Review_PeerToPeer" { + id "WorkDef_Review_PeerToPeer" + startState "Prepare" + + widgetDefinition "Title" { + attributeName "Name" + xWidgetName "XTextDam" + option REQUIRED_FOR_TRANSITION + } + + widgetDefinition "Role" { + attributeName "ats.Role" + xWidgetName "XUserRoleViewer" + option REQUIRED_FOR_TRANSITION + } + + widgetDefinition "Location" { + attributeName "ats.Location" + xWidgetName "XTextDam" + option FILL_VERTICALLY + option REQUIRED_FOR_TRANSITION + } + + widgetDefinition "Description" { + attributeName "ats.Description" + xWidgetName "XTextDam" + option FILL_VERTICALLY + } + + widgetDefinition "Review Blocks" { + attributeName "ats.Review Blocks" + xWidgetName "XComboDam(OPTIONS_FROM_ATTRIBUTE_VALIDITY)" + option REQUIRED_FOR_TRANSITION + option HORIZONTAL_LABEL + } + + widgetDefinition "Review Defect" { + attributeName "ats.Review Defect" + xWidgetName "XDefectViewer" + } + + widgetDefinition "Resolution" { + attributeName "ats.Resolution" + xWidgetName "XTextDam" + option FILL_VERTICALLY + } + + state "Cancelled" { + type Cancelled + ordinal 4 + to "Prepare" OverrideAttributeValidation + to "Review" OverrideAttributeValidation + } + + state "Prepare" { + type Working + ordinal 1 + to "Cancelled" + to "Review" AsDefault + layout { + widget "Title" + attributeWidget "ats.Legacy PCR Id" + widget "Role" + widget "Location" + widget "Description" + attributeWidget "ats.Related To State" + widget "Review Blocks" + composite { + numColumns 8 + attributeWidget "ats.LOC Changed" + attributeWidget "ats.LOC Reviewed" + attributeWidget "ats.Pages Changed" + attributeWidget "ats.Pages Reviewed" + } + attributeWidget "ats.Need By" + attributeWidget "ats.Estimated Hours" + } + } + + state "Review" { + type Working + ordinal 2 + to "Cancelled" + to "Completed" AsDefault + to "Prepare" OverrideAttributeValidation + layout { + widget "Role" + widget "Review Defect" + composite { + numColumns 8 + attributeWidget "ats.LOC Changed" + attributeWidget "ats.LOC Reviewed" + attributeWidget "ats.Pages Changed" + attributeWidget "ats.Pages Reviewed" + } + widget "Resolution" + widget "Description" + } + } + + state "Completed" { + type Completed + ordinal 3 + to "Review" OverrideAttributeValidation + rule AddDecisionValidateBlockingReview + } +} \ No newline at end of file diff --git a/plugins/org.eclipse.osee.ats/support/WorkDef_Task_Default.ats b/plugins/org.eclipse.osee.ats/support/WorkDef_Task_Default.ats index f921d81fe7a..28286c95589 100644 --- a/plugins/org.eclipse.osee.ats/support/WorkDef_Task_Default.ats +++ b/plugins/org.eclipse.osee.ats/support/WorkDef_Task_Default.ats @@ -18,7 +18,7 @@ workDefinition "WorkDef_Task_Default" { state "InWork" { type Working ordinal 1 - to "Complete" AsDefault + to "Completed" AsDefault to "Cancelled" OverrideAttributeValidation rule RequireStateHourSpentPrompt layout { @@ -38,14 +38,14 @@ workDefinition "WorkDef_Task_Default" { } } - state "Complete" { + state "Completed" { type Completed ordinal 2 - rule AddDecisionValidateBlockingReview + to "InWork" OverrideAttributeValidation } state "Cancelled" { type Cancelled ordinal 3 } -} \ No newline at end of file +} diff --git a/plugins/org.eclipse.osee.ats/support/WorkDef_Team_Default.ats b/plugins/org.eclipse.osee.ats/support/WorkDef_Team_Default.ats index 8edd21ff65e..e17bcda8da0 100644 --- a/plugins/org.eclipse.osee.ats/support/WorkDef_Team_Default.ats +++ b/plugins/org.eclipse.osee.ats/support/WorkDef_Team_Default.ats @@ -86,8 +86,9 @@ workDefinition "WorkDef_Team_Default" { ordinal 2 to "Cancelled" to "Authorize" AsDefault - to "Endorse" OverrideAttributeValidation + to "Endorse" OverrideAttributeValidation rule RequireStateHourSpentPrompt + percentWeight 10 layout { widget "Work Package" widget "Problem" @@ -108,6 +109,7 @@ workDefinition "WorkDef_Team_Default" { to "Cancelled" to "Analyze" AsDefault rule RequireStateHourSpentPrompt + percentWeight 5 layout { widget "Title" widget "Description" @@ -139,6 +141,7 @@ workDefinition "WorkDef_Team_Default" { to "Cancelled" to "Implement" AsDefault to "Analyze" OverrideAttributeValidation + percentWeight 5 layout { widget "Work Package" widget "Estimated Completion Date" @@ -153,6 +156,7 @@ workDefinition "WorkDef_Team_Default" { to "Analyze" OverrideAttributeValidation to "Authorize" OverrideAttributeValidation rule RequireStateHourSpentPrompt + percentWeight 79 layout { widget "Work Package" widget "Estimated Completion Date" @@ -165,5 +169,6 @@ workDefinition "WorkDef_Team_Default" { ordinal 5 to "Implement" OverrideAttributeValidation rule AddDecisionValidateBlockingReview + percentWeight 1 } } \ No newline at end of file diff --git a/plugins/org.eclipse.osee.ats/support/WorkDef_Team_Simple.ats b/plugins/org.eclipse.osee.ats/support/WorkDef_Team_Simple.ats new file mode 100644 index 00000000000..70c3a12bafd --- /dev/null +++ b/plugins/org.eclipse.osee.ats/support/WorkDef_Team_Simple.ats @@ -0,0 +1,83 @@ +workDefinition "WorkDef_Team_Simple" { + id "WorkDef_Team_Simple" + startState "Endorse" + + widgetDefinition "Resolution" { + attributeName "ats.Resolution" + xWidgetName "XTextDam" + option FILL_VERTICALLY + } + + widgetDefinition "Title" { + attributeName "Name" + xWidgetName "XTextDam" + option REQUIRED_FOR_TRANSITION + } + + widgetDefinition "Description" { + attributeName "ats.Description" + xWidgetName "XTextDam" + option REQUIRED_FOR_TRANSITION + option FILL_VERTICALLY + } + + widgetDefinition "Proposed Resolution" { + attributeName "ats.Proposed Resolution" + xWidgetName "XTextDam" + option FILL_VERTICALLY + } + + widgetDefinition "User Community" { + attributeName "ats.User Community" + xWidgetName "XListDam(OPTIONS_FROM_ATTRIBUTE_VALIDITY)" + option HORIZONTAL_LABEL + } + + state "Cancelled" { + type Cancelled + ordinal 4 + to "InWork" OverrideAttributeValidation + to "Endorse" OverrideAttributeValidation + } + + state "InWork" { + type Working + ordinal 2 + to "Cancelled" + to "Completed" AsDefault + to "Endorse" OverrideAttributeValidation + rule RequireStateHourSpentPrompt + layout { + widget "Resolution" + } + } + + state "Endorse" { + type Working + ordinal 1 + to "Cancelled" + to "InWork" AsDefault + rule RequireStateHourSpentPrompt + layout { + widget "Title" + widget "Description" + widget "Proposed Resolution" + composite { + numColumns 6 + attributeWidget "ats.Change Type" + attributeWidget "ats.Priority" + attributeWidget "ats.Need By" + } + attributeWidget "ats.Validation Required" + attributeWidget "ats.Work Package" + widget "User Community" + } + } + + state "Completed" { + type Completed + ordinal 3 + to "InWork" OverrideAttributeValidation + rule AddDecisionValidateBlockingReview + } +} \ No newline at end of file diff --git a/plugins/org.eclipse.osee.client.integration.tests/MasterTestSuite_DemoDbInit.launch b/plugins/org.eclipse.osee.client.integration.tests/MasterTestSuite_DemoDbInit.launch index 284e2047c56..d220cf8a4fb 100644 --- a/plugins/org.eclipse.osee.client.integration.tests/MasterTestSuite_DemoDbInit.launch +++ b/plugins/org.eclipse.osee.client.integration.tests/MasterTestSuite_DemoDbInit.launch @@ -31,14 +31,13 @@ - + - - + + - diff --git a/plugins/org.eclipse.osee.client.integration.tests/MasterTestSuite_DemoDbTests.launch b/plugins/org.eclipse.osee.client.integration.tests/MasterTestSuite_DemoDbTests.launch index 1bfd646a231..ec7df4bbe40 100644 --- a/plugins/org.eclipse.osee.client.integration.tests/MasterTestSuite_DemoDbTests.launch +++ b/plugins/org.eclipse.osee.client.integration.tests/MasterTestSuite_DemoDbTests.launch @@ -31,12 +31,12 @@ - + - - + + diff --git a/plugins/org.eclipse.osee.client.integration.tests/src/org/eclipse/osee/client/integration/tests/suite/MasterTestSuite_DemoDbTests.java b/plugins/org.eclipse.osee.client.integration.tests/src/org/eclipse/osee/client/integration/tests/suite/MasterTestSuite_DemoDbTests.java index ec1053ee6c0..af14c0fec04 100644 --- a/plugins/org.eclipse.osee.client.integration.tests/src/org/eclipse/osee/client/integration/tests/suite/MasterTestSuite_DemoDbTests.java +++ b/plugins/org.eclipse.osee.client.integration.tests/src/org/eclipse/osee/client/integration/tests/suite/MasterTestSuite_DemoDbTests.java @@ -13,6 +13,7 @@ package org.eclipse.osee.client.integration.tests.suite; import static org.junit.Assert.assertTrue; import org.eclipse.osee.ats.test.AtsTest_Config_Suite; import org.eclipse.osee.ats.test.AtsTest_Demo_Suite; +import org.eclipse.osee.ats.test.AtsTest_Demo_StateItem_Suite; import org.eclipse.osee.coverage.test.Coverage_Db_Suite; import org.eclipse.osee.define.AllDefineTestSuite; import org.eclipse.osee.framework.core.client.ClientSessionManager; @@ -27,6 +28,7 @@ import org.junit.runners.Suite; @RunWith(Suite.class) @Suite.SuiteClasses({ + AtsTest_Demo_StateItem_Suite.class, CoreRuntimeFeatureTestsSuite.class, Coverage_Db_Suite.class, FrameworkCore_Demo_Suite.class, diff --git a/plugins/org.eclipse.osee.framework.core/src/org/eclipse/osee/framework/core/data/ArtifactToken.java b/plugins/org.eclipse.osee.framework.core/src/org/eclipse/osee/framework/core/data/ArtifactToken.java new file mode 100644 index 00000000000..8fe2e820e78 --- /dev/null +++ b/plugins/org.eclipse.osee.framework.core/src/org/eclipse/osee/framework/core/data/ArtifactToken.java @@ -0,0 +1,29 @@ +/* + * Created on Feb 8, 2011 + * + * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE + */ +package org.eclipse.osee.framework.core.data; + +public class ArtifactToken extends NamedIdentity implements IArtifactToken { + + private final IArtifactType artifactType; + private final IOseeBranch oseeBranch; + + public ArtifactToken(String guid, String name, IArtifactType artifactType, IOseeBranch oseeBranch) { + super(guid, name); + this.artifactType = artifactType; + this.oseeBranch = oseeBranch; + } + + @Override + public IArtifactType getArtifactType() { + return artifactType; + } + + @Override + public IOseeBranch getBranch() { + return oseeBranch; + } + +} diff --git a/plugins/org.eclipse.osee.framework.core/src/org/eclipse/osee/framework/core/data/IArtifactToken.java b/plugins/org.eclipse.osee.framework.core/src/org/eclipse/osee/framework/core/data/IArtifactToken.java new file mode 100644 index 00000000000..a183a8fca5d --- /dev/null +++ b/plugins/org.eclipse.osee.framework.core/src/org/eclipse/osee/framework/core/data/IArtifactToken.java @@ -0,0 +1,21 @@ +/******************************************************************************* + * 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.framework.core.data; + +/** + * @author Donald G. Dunne + */ +public interface IArtifactToken extends Identity, FullyNamed { + + public IArtifactType getArtifactType(); + + public IOseeBranch getBranch(); +} diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/OseeSystemArtifacts.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/OseeSystemArtifacts.java index 0a6195da9f6..a9670b91c80 100644 --- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/OseeSystemArtifacts.java +++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/OseeSystemArtifacts.java @@ -10,12 +10,14 @@ *******************************************************************************/ package org.eclipse.osee.framework.skynet.core; +import org.eclipse.osee.framework.core.data.IArtifactToken; import org.eclipse.osee.framework.core.data.IArtifactType; import org.eclipse.osee.framework.core.data.IOseeBranch; import org.eclipse.osee.framework.core.enums.CoreArtifactTypes; import org.eclipse.osee.framework.core.exception.ArtifactDoesNotExist; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.core.model.Branch; +import org.eclipse.osee.framework.jdk.core.util.Strings; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; import org.eclipse.osee.framework.skynet.core.artifact.ArtifactCache; import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager; @@ -50,19 +52,30 @@ public final class OseeSystemArtifacts { * accessed, and finally a new artifact is created if it can not be found */ public static Artifact getOrCreateArtifact(IArtifactType artifactType, String artifactName, Branch branch) throws OseeCoreException { - return getOrCreateCachedArtifact(artifactType, artifactName, branch, true); + return getOrCreateCachedArtifact(artifactType, artifactName, branch, null, true); + } + + public static Artifact getOrCreateArtifact(IArtifactToken artifactToken) throws OseeCoreException { + return getOrCreateCachedArtifact(artifactToken.getArtifactType(), artifactToken.getName(), + artifactToken.getBranch(), artifactToken.getGuid(), true); } public static Artifact getCachedArtifact(IArtifactType artifactType, String artifactName, IOseeBranch branch) throws OseeCoreException { - return getOrCreateCachedArtifact(artifactType, artifactName, branch, false); + return getOrCreateCachedArtifact(artifactType, artifactName, branch, null, false); } - private static Artifact getOrCreateCachedArtifact(IArtifactType artifactType, String artifactName, IOseeBranch branch, boolean create) throws OseeCoreException { + private static Artifact getOrCreateCachedArtifact(IArtifactType artifactType, String artifactName, IOseeBranch branch, String guid, boolean create) throws OseeCoreException { Artifact artifact = ArtifactCache.getByTextId(artifactType.getName() + "." + artifactName, branch); if (artifact == null) { artifact = ArtifactQuery.checkArtifactFromTypeAndName(artifactType, artifactName, branch); if (artifact == null && create) { - artifact = ArtifactTypeManager.addArtifact(artifactType, branch, artifactName); + if (Strings.isValid(guid)) { + artifact = + ArtifactTypeManager.addArtifact(artifactType, BranchManager.getBranch(branch), guid, (String) null); + artifact.setName(artifactName); + } else { + artifact = ArtifactTypeManager.addArtifact(artifactType, branch, artifactName); + } } if (artifact == null) { throw new ArtifactDoesNotExist("Artifact of type [%s] with name [%s] does not exist on branch [%s]", diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/ArtifactTypeManager.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/ArtifactTypeManager.java index 604f7a309f3..d366a84f868 100644 --- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/ArtifactTypeManager.java +++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/ArtifactTypeManager.java @@ -17,6 +17,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; +import org.eclipse.osee.framework.core.data.IArtifactToken; import org.eclipse.osee.framework.core.data.IArtifactType; import org.eclipse.osee.framework.core.data.IAttributeType; import org.eclipse.osee.framework.core.data.IOseeBranch; @@ -174,6 +175,11 @@ public class ArtifactTypeManager { return makeNewArtifact(artifactType, branch, guid, humandReadableId); } + public static Artifact addArtifact(IArtifactToken artifactToken) throws OseeCoreException { + return getFactory(artifactToken.getArtifactType()).makeNewArtifact(artifactToken.getBranch(), + artifactToken.getArtifactType(), artifactToken.getName(), artifactToken.getGuid(), null); + } + private static final String DELETE_VALID_ATTRIBUTE = "delete from osee_artifact_type_attributes where art_type_id = ?"; private static final String COUNT_ARTIFACT_OCCURRENCE = diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/search/ArtifactQuery.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/search/ArtifactQuery.java index 620ed6ac50e..889b083daa1 100644 --- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/search/ArtifactQuery.java +++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/search/ArtifactQuery.java @@ -20,6 +20,7 @@ import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; +import org.eclipse.osee.framework.core.data.IArtifactToken; import org.eclipse.osee.framework.core.data.IArtifactType; import org.eclipse.osee.framework.core.data.IAttributeType; import org.eclipse.osee.framework.core.data.IOseeBranch; @@ -51,6 +52,10 @@ import org.eclipse.osee.framework.skynet.core.event.model.EventBasicGuidArtifact */ public class ArtifactQuery { + public static Artifact getArtifactFromToken(IArtifactToken artifactToken) throws OseeCoreException { + return getArtifactFromId(artifactToken.getGuid(), BranchManager.getBranch(artifactToken.getBranch())); + } + public static Artifact getArtifactFromToken(EventBasicGuidArtifact guidArt) throws OseeCoreException { return getArtifactFromId(guidArt.getGuid(), BranchManager.getBranchByGuid(guidArt.getBranchGuid())); } diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XComboBooleanDam.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XComboBooleanDam.java index 23417810aca..7864e24c52d 100644 --- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XComboBooleanDam.java +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XComboBooleanDam.java @@ -73,8 +73,9 @@ public class XComboBooleanDam extends XCombo implements IAttributeWidget { if (isEditable()) { try { String enteredValue = get(); - boolean storedValue = artifact.getSoleAttributeValue(attributeType); - if (enteredValue.equals("yes") != storedValue) { + boolean storedValueBoolean = artifact.getSoleAttributeValue(attributeType); + String storedValue = storedValueBoolean ? "yes" : "no"; + if (!enteredValue.equals(storedValue)) { return new Result(true, attributeType + " is dirty"); } } catch (AttributeDoesNotExist ex) { diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelValueSelection.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelValueSelection.java index cc85ea77791..bac444df98d 100644 --- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelValueSelection.java +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelValueSelection.java @@ -30,7 +30,7 @@ import org.eclipse.ui.forms.widgets.Hyperlink; public abstract class XHyperlinkLabelValueSelection extends GenericXWidget { Hyperlink valueHyperlinkLabel; - Label valueLabel; + protected Label valueLabel; public XHyperlinkLabelValueSelection(String label) { super(label); diff --git a/plugins/org.eclipse.osee.support.config/launchConfig/OSEE Demo product [localhost].launch b/plugins/org.eclipse.osee.support.config/launchConfig/OSEE Demo product [localhost].launch index a40acbe846d..ca08bbaaf19 100644 --- a/plugins/org.eclipse.osee.support.config/launchConfig/OSEE Demo product [localhost].launch +++ b/plugins/org.eclipse.osee.support.config/launchConfig/OSEE Demo product [localhost].launch @@ -16,12 +16,12 @@ - + - - + + diff --git a/plugins/org.eclipse.osee.support.test.util/src/org/eclipse/osee/support/test/util/DemoUsers.java b/plugins/org.eclipse.osee.support.test.util/src/org/eclipse/osee/support/test/util/DemoUsers.java index 56ae700aa99..89cc430ceaa 100644 --- a/plugins/org.eclipse.osee.support.test.util/src/org/eclipse/osee/support/test/util/DemoUsers.java +++ b/plugins/org.eclipse.osee.support.test.util/src/org/eclipse/osee/support/test/util/DemoUsers.java @@ -27,57 +27,40 @@ import org.eclipse.osee.framework.core.data.IOseeUserInfo; * @author Donald G. Dunne */ public enum DemoUsers implements IOseeUserInfo { - Joe_Smith("Joe Smith", "Joe Smith", "Joe Smith", true), - Kay_Jones("Kay Jones", "Kay Jones", "Kay Jones", true), - Jason_Michael("Jason Michael", "Jason Michael", "Jason Michael", true), - Alex_Kay("Alex Kay", "Alex Kay", "Alex Kay", true), - Inactive_Steve("Inactive Steve", "Inactive Steve", "Inactive Steve", false); + Joe_Smith("Joe Smith"), + Kay_Jones("Kay Jones"), + Jason_Michael("Jason Michael"), + Alex_Kay("Alex Kay"), + Inactive_Steve("Inactive Steve"); private final String name; - private final String email; - private final String userID; - private final boolean active; - DemoUsers(String name, String email, String userId, boolean active) { + DemoUsers(String name) { this.name = name; - this.email = email; - this.userID = userId; - this.active = active; } - /** - * @return Returns the email. - */ @Override - public String getEmail() { - return email; + public String getName() { + return name; } - /** - * @return Returns the name. - */ @Override - public String getName() { + public String getUserID() { return name; } - /** - * @return Returns the userID. - */ @Override - public String getUserID() { - return userID; + public String getEmail() { + return name; } - /** - * @return Returns the active. - */ @Override public boolean isActive() { - return active; + return name.contains("Inactive"); } @Override public boolean isCreationRequired() { return false; } + } diff --git a/plugins/org.eclipse.osee.support.test.util/src/org/eclipse/osee/support/test/util/TestUtil.java b/plugins/org.eclipse.osee.support.test.util/src/org/eclipse/osee/support/test/util/TestUtil.java index 5043776d206..5afdc0ce960 100644 --- a/plugins/org.eclipse.osee.support.test.util/src/org/eclipse/osee/support/test/util/TestUtil.java +++ b/plugins/org.eclipse.osee.support.test.util/src/org/eclipse/osee/support/test/util/TestUtil.java @@ -30,7 +30,21 @@ public class TestUtil { private static final String DEMO_DB_TYPE = "demo"; public static final Collection ignoreLogging = Arrays.asList("No image was defined for art type", "Unable to load the image for [SAVED]"); - public static boolean isInTest = false; + private static boolean inTest = false; + + /** + * Need to match methods in OseeProperties + */ + public static boolean isInTest() { + return inTest; + } + + /** + * Need to match methods in OseeProperties + */ + public static void setIsInTest(boolean isInTest) { + inTest = isInTest; + } public static boolean isProductionDb() throws OseeCoreException { return ClientSessionManager.isProductionDataStore(); -- cgit v1.2.3